progress.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
  2. function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
  3. function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
  4. function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
  5. function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
  6. function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
  7. function _possibleConstructorReturn(t, e) { if (e && ("object" == typeof e || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
  8. function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
  9. function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
  10. function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }
  11. function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }
  12. function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
  13. function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } }
  14. function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
  15. function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
  16. function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
  17. function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
  18. function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
  19. export function isProgressSupported() {
  20. return "customElements" in self && !!HTMLElement.prototype.attachShadow;
  21. }
  22. export function defineProgressElement() {
  23. var _WebpackDevServerProgress;
  24. if (customElements.get("wds-progress")) {
  25. return;
  26. }
  27. var _WebpackDevServerProgress_brand = /*#__PURE__*/new WeakSet();
  28. var WebpackDevServerProgress = /*#__PURE__*/function (_HTMLElement) {
  29. function WebpackDevServerProgress() {
  30. var _this;
  31. _classCallCheck(this, WebpackDevServerProgress);
  32. _this = _callSuper(this, WebpackDevServerProgress);
  33. _classPrivateMethodInitSpec(_this, _WebpackDevServerProgress_brand);
  34. _this.attachShadow({
  35. mode: "open"
  36. });
  37. _this.maxDashOffset = -219.99078369140625;
  38. _this.animationTimer = null;
  39. return _this;
  40. }
  41. _inherits(WebpackDevServerProgress, _HTMLElement);
  42. return _createClass(WebpackDevServerProgress, [{
  43. key: "connectedCallback",
  44. value: function connectedCallback() {
  45. _assertClassBrand(_WebpackDevServerProgress_brand, this, _reset).call(this);
  46. }
  47. }, {
  48. key: "attributeChangedCallback",
  49. value: function attributeChangedCallback(name, oldValue, newValue) {
  50. if (name === "progress") {
  51. _assertClassBrand(_WebpackDevServerProgress_brand, this, _update).call(this, Number(newValue));
  52. } else if (name === "type") {
  53. _assertClassBrand(_WebpackDevServerProgress_brand, this, _reset).call(this);
  54. }
  55. }
  56. }], [{
  57. key: "observedAttributes",
  58. get: function get() {
  59. return ["progress", "type"];
  60. }
  61. }]);
  62. }(/*#__PURE__*/_wrapNativeSuper(HTMLElement));
  63. _WebpackDevServerProgress = WebpackDevServerProgress;
  64. function _reset() {
  65. var _this$getAttribute, _Number;
  66. clearTimeout(this.animationTimer);
  67. this.animationTimer = null;
  68. var typeAttr = (_this$getAttribute = this.getAttribute("type")) === null || _this$getAttribute === void 0 ? void 0 : _this$getAttribute.toLowerCase();
  69. this.type = typeAttr === "circular" ? "circular" : "linear";
  70. var innerHTML = this.type === "circular" ? _circularTemplate.call(_WebpackDevServerProgress) : _linearTemplate.call(_WebpackDevServerProgress);
  71. this.shadowRoot.innerHTML = innerHTML;
  72. this.initialProgress = (_Number = Number(this.getAttribute("progress"))) !== null && _Number !== void 0 ? _Number : 0;
  73. _assertClassBrand(_WebpackDevServerProgress_brand, this, _update).call(this, this.initialProgress);
  74. }
  75. function _circularTemplate() {
  76. return "\n <style>\n :host {\n width: 200px;\n height: 200px;\n position: fixed;\n right: 5%;\n top: 5%;\n transition: opacity .25s ease-in-out;\n z-index: 2147483645;\n }\n\n circle {\n fill: #282d35;\n }\n\n path {\n fill: rgba(0, 0, 0, 0);\n stroke: rgb(186, 223, 172);\n stroke-dasharray: 219.99078369140625;\n stroke-dashoffset: -219.99078369140625;\n stroke-width: 10;\n transform: rotate(90deg) translate(0px, -80px);\n }\n\n text {\n font-family: 'Open Sans', sans-serif;\n font-size: 18px;\n fill: #ffffff;\n dominant-baseline: middle;\n text-anchor: middle;\n }\n\n tspan#percent-super {\n fill: #bdc3c7;\n font-size: 0.45em;\n baseline-shift: 10%;\n }\n\n @keyframes fade {\n 0% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0; transform: scale(0); }\n }\n\n .disappear {\n animation: fade 0.3s;\n animation-fill-mode: forwards;\n animation-delay: 0.5s;\n }\n\n .hidden {\n display: none;\n }\n </style>\n <svg id=\"progress\" class=\"hidden noselect\" viewBox=\"0 0 80 80\">\n <circle cx=\"50%\" cy=\"50%\" r=\"35\"></circle>\n <path d=\"M5,40a35,35 0 1,0 70,0a35,35 0 1,0 -70,0\"></path>\n <text x=\"50%\" y=\"51%\">\n <tspan id=\"percent-value\">0</tspan>\n <tspan id=\"percent-super\">%</tspan>\n </text>\n </svg>\n ";
  77. }
  78. function _linearTemplate() {
  79. return "\n <style>\n :host {\n position: fixed;\n top: 0;\n left: 0;\n height: 4px;\n width: 100vw;\n z-index: 2147483645;\n }\n\n #bar {\n width: 0%;\n height: 4px;\n background-color: rgb(186, 223, 172);\n }\n\n @keyframes fade {\n 0% { opacity: 1; }\n 100% { opacity: 0; }\n }\n\n .disappear {\n animation: fade 0.3s;\n animation-fill-mode: forwards;\n animation-delay: 0.5s;\n }\n\n .hidden {\n display: none;\n }\n </style>\n <div id=\"progress\"></div>\n ";
  80. }
  81. function _update(percent) {
  82. var element = this.shadowRoot.querySelector("#progress");
  83. if (this.type === "circular") {
  84. var path = this.shadowRoot.querySelector("path");
  85. var value = this.shadowRoot.querySelector("#percent-value");
  86. var offset = (100 - percent) / 100 * this.maxDashOffset;
  87. path.style.strokeDashoffset = offset;
  88. value.textContent = percent;
  89. } else {
  90. element.style.width = "".concat(percent, "%");
  91. }
  92. if (percent >= 100) {
  93. _assertClassBrand(_WebpackDevServerProgress_brand, this, _hide).call(this);
  94. } else if (percent > 0) {
  95. _assertClassBrand(_WebpackDevServerProgress_brand, this, _show).call(this);
  96. }
  97. }
  98. function _show() {
  99. var element = this.shadowRoot.querySelector("#progress");
  100. element.classList.remove("hidden");
  101. }
  102. function _hide() {
  103. var _this2 = this;
  104. var element = this.shadowRoot.querySelector("#progress");
  105. if (this.type === "circular") {
  106. element.classList.add("disappear");
  107. element.addEventListener("animationend", function () {
  108. element.classList.add("hidden");
  109. _assertClassBrand(_WebpackDevServerProgress_brand, _this2, _update).call(_this2, 0);
  110. }, {
  111. once: true
  112. });
  113. } else if (this.type === "linear") {
  114. element.classList.add("disappear");
  115. this.animationTimer = setTimeout(function () {
  116. element.classList.remove("disappear");
  117. element.classList.add("hidden");
  118. element.style.width = "0%";
  119. _this2.animationTimer = null;
  120. }, 800);
  121. }
  122. }
  123. customElements.define("wds-progress", WebpackDevServerProgress);
  124. }