@maggioli-design-system/mds-paginator-item 2.7.3 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/cjs/{index-96b46685.js → index-29fd42e7.js} +28 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/mds-paginator-item.cjs.entry.js +29 -24
  4. package/dist/cjs/mds-paginator-item.cjs.js +2 -2
  5. package/dist/collection/collection-manifest.json +2 -2
  6. package/dist/collection/common/file.js +48 -0
  7. package/dist/collection/common/icon.js +15 -0
  8. package/dist/collection/common/keyboard-manager.js +16 -11
  9. package/dist/collection/common/unit.js +15 -3
  10. package/dist/collection/common/yugop/core.js +16 -0
  11. package/dist/collection/common/yugop/index.js +3 -0
  12. package/dist/collection/common/yugop/random-text.js +59 -0
  13. package/dist/collection/common/yugop/utils/math.js +11 -0
  14. package/dist/collection/common/yugop/utils/noop.js +1 -0
  15. package/dist/collection/common/yugop/utils/prng.js +21 -0
  16. package/dist/collection/common/yugop/utils/string.js +2 -0
  17. package/dist/collection/components/mds-paginator-item/mds-paginator-item.css +125 -2
  18. package/dist/collection/components/mds-paginator-item/mds-paginator-item.js +11 -11
  19. package/dist/collection/dictionary/file-extensions.js +64 -0
  20. package/dist/collection/dictionary/icon.js +6 -1
  21. package/dist/collection/dictionary/text.js +6 -0
  22. package/dist/collection/dictionary/variant.js +18 -1
  23. package/dist/collection/fixtures/filenames.js +57 -0
  24. package/dist/collection/type/file-types.js +1 -0
  25. package/dist/collection/type/text.js +1 -0
  26. package/dist/collection/type/variant-file-format.js +111 -0
  27. package/dist/components/mds-paginator-item.js +28 -23
  28. package/dist/documentation.json +3 -3
  29. package/dist/esm/{index-d5935a07.js → index-1bfe34b4.js} +28 -0
  30. package/dist/esm/loader.js +2 -2
  31. package/dist/esm/mds-paginator-item.entry.js +29 -24
  32. package/dist/esm/mds-paginator-item.js +3 -3
  33. package/dist/esm-es5/index-1bfe34b4.js +1 -0
  34. package/dist/esm-es5/loader.js +1 -1
  35. package/dist/esm-es5/mds-paginator-item.entry.js +1 -1
  36. package/dist/esm-es5/mds-paginator-item.js +1 -1
  37. package/dist/mds-paginator-item/mds-paginator-item.esm.js +1 -1
  38. package/dist/mds-paginator-item/mds-paginator-item.js +1 -1
  39. package/dist/mds-paginator-item/p-10819660.entry.js +1 -0
  40. package/dist/mds-paginator-item/p-4b042873.system.entry.js +1 -0
  41. package/dist/mds-paginator-item/p-76f1815c.js +2 -0
  42. package/dist/mds-paginator-item/{p-c45df86b.system.js → p-ba0d92c9.system.js} +1 -1
  43. package/dist/mds-paginator-item/p-c408e54f.system.js +2 -0
  44. package/dist/stats.json +73 -34
  45. package/dist/types/common/file.d.ts +12 -0
  46. package/dist/types/common/icon.d.ts +5 -0
  47. package/dist/types/common/keyboard-manager.d.ts +2 -1
  48. package/dist/types/common/unit.d.ts +2 -1
  49. package/dist/types/common/yugop/core.d.ts +10 -0
  50. package/dist/types/common/yugop/index.d.ts +1 -0
  51. package/dist/types/common/yugop/random-text.d.ts +31 -0
  52. package/dist/types/common/yugop/utils/math.d.ts +3 -0
  53. package/dist/types/common/yugop/utils/noop.d.ts +1 -0
  54. package/dist/types/common/yugop/utils/prng.d.ts +8 -0
  55. package/dist/types/common/yugop/utils/string.d.ts +1 -0
  56. package/dist/types/dictionary/file-extensions.d.ts +11 -0
  57. package/dist/types/dictionary/icon.d.ts +2 -1
  58. package/dist/types/dictionary/text.d.ts +2 -0
  59. package/dist/types/dictionary/variant.d.ts +2 -1
  60. package/dist/types/fixtures/filenames.d.ts +2 -0
  61. package/dist/types/type/file-types.d.ts +1 -0
  62. package/dist/types/type/text.d.ts +1 -0
  63. package/dist/types/type/variant-file-format.d.ts +11 -0
  64. package/dist/types/type/variant.d.ts +1 -0
  65. package/documentation.json +55 -15
  66. package/package.json +3 -3
  67. package/src/common/file.ts +63 -0
  68. package/src/common/icon.ts +25 -0
  69. package/src/common/keyboard-manager.ts +16 -12
  70. package/src/common/unit.ts +21 -2
  71. package/src/common/yugop/core.ts +47 -0
  72. package/src/common/yugop/index.ts +4 -0
  73. package/src/common/yugop/random-text.ts +95 -0
  74. package/src/common/yugop/utils/math.ts +21 -0
  75. package/src/common/yugop/utils/noop.ts +1 -0
  76. package/src/common/yugop/utils/prng.ts +35 -0
  77. package/src/common/yugop/utils/string.ts +4 -0
  78. package/src/components/mds-paginator-item/mds-paginator-item.tsx +2 -2
  79. package/src/dictionary/file-extensions.ts +81 -0
  80. package/src/dictionary/icon.ts +6 -0
  81. package/src/dictionary/text.ts +9 -0
  82. package/src/dictionary/variant.ts +19 -0
  83. package/src/fixtures/filenames.ts +60 -0
  84. package/src/fixtures/icons.json +11 -0
  85. package/src/fixtures/iconsauce.json +4 -0
  86. package/src/type/file-types.ts +55 -0
  87. package/src/type/text.ts +4 -0
  88. package/src/type/variant-file-format.ts +128 -0
  89. package/src/type/variant.ts +17 -0
  90. package/www/build/mds-paginator-item.esm.js +1 -1
  91. package/www/build/mds-paginator-item.js +1 -1
  92. package/www/build/p-10819660.entry.js +1 -0
  93. package/www/build/p-4b042873.system.entry.js +1 -0
  94. package/www/build/p-76f1815c.js +2 -0
  95. package/www/build/{p-c45df86b.system.js → p-ba0d92c9.system.js} +1 -1
  96. package/www/build/p-c408e54f.system.js +2 -0
  97. package/dist/esm-es5/index-d5935a07.js +0 -1
  98. package/dist/mds-paginator-item/p-703ec1c4.system.js +0 -2
  99. package/dist/mds-paginator-item/p-9448defc.system.entry.js +0 -1
  100. package/dist/mds-paginator-item/p-e3623d7a.entry.js +0 -1
  101. package/dist/mds-paginator-item/p-e9044500.js +0 -2
  102. package/www/build/p-703ec1c4.system.js +0 -2
  103. package/www/build/p-9448defc.system.entry.js +0 -1
  104. package/www/build/p-e3623d7a.entry.js +0 -1
  105. package/www/build/p-e9044500.js +0 -2
@@ -995,6 +995,7 @@ const postUpdateComponent = (hostRef) => {
995
995
  const tagName = hostRef.$cmpMeta$.$tagName$;
996
996
  const elm = hostRef.$hostElement$;
997
997
  const endPostUpdate = createTime('postUpdate', tagName);
998
+ const instance = hostRef.$lazyInstance$ ;
998
999
  const ancestorComponent = hostRef.$ancestorComponent$;
999
1000
  if (!(hostRef.$flags$ & 64 /* HOST_FLAGS.hasLoadedComponent */)) {
1000
1001
  hostRef.$flags$ |= 64 /* HOST_FLAGS.hasLoadedComponent */;
@@ -1002,6 +1003,9 @@ const postUpdateComponent = (hostRef) => {
1002
1003
  // DOM WRITE!
1003
1004
  addHydratedFlag(elm);
1004
1005
  }
1006
+ {
1007
+ safeCall(instance, 'componentDidLoad');
1008
+ }
1005
1009
  endPostUpdate();
1006
1010
  {
1007
1011
  hostRef.$onReadyResolve$(elm);
@@ -1011,6 +1015,9 @@ const postUpdateComponent = (hostRef) => {
1011
1015
  }
1012
1016
  }
1013
1017
  else {
1018
+ {
1019
+ safeCall(instance, 'componentDidUpdate');
1020
+ }
1014
1021
  endPostUpdate();
1015
1022
  }
1016
1023
  // load events fire from bottom to top
@@ -1037,6 +1044,27 @@ const appDidLoad = (who) => {
1037
1044
  }
1038
1045
  nextTick(() => emitEvent(win, 'appload', { detail: { namespace: NAMESPACE } }));
1039
1046
  };
1047
+ /**
1048
+ * Allows to safely call a method, e.g. `componentDidLoad`, on an instance,
1049
+ * e.g. custom element node. If a build figures out that e.g. no component
1050
+ * has a `componentDidLoad` method, the instance method gets removed from the
1051
+ * output bundle and this function returns `undefined`.
1052
+ * @param instance any object that may or may not contain methods
1053
+ * @param method method name
1054
+ * @param arg single arbitrary argument
1055
+ * @returns result of method call if it exists, otherwise `undefined`
1056
+ */
1057
+ const safeCall = (instance, method, arg) => {
1058
+ if (instance && instance[method]) {
1059
+ try {
1060
+ return instance[method](arg);
1061
+ }
1062
+ catch (e) {
1063
+ consoleError(e);
1064
+ }
1065
+ }
1066
+ return undefined;
1067
+ };
1040
1068
  const addHydratedFlag = (elm) => elm.setAttribute('hydrated', '')
1041
1069
  ;
1042
1070
  const getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-96b46685.js');
5
+ const index = require('./index-29fd42e7.js');
6
6
 
7
7
  const defineCustomElements = (win, options) => {
8
8
  if (typeof window === 'undefined') return undefined;
@@ -2,13 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-96b46685.js');
5
+ const index = require('./index-29fd42e7.js');
6
6
 
7
7
  class KeyboardManager {
8
8
  constructor() {
9
- this.elements = [];
9
+ this.elements = new Map();
10
10
  this.handleClickBehaviorDispatchEvent = (event) => {
11
- if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {
11
+ if (event.code === 'Enter' || event.code === 'NumpadEnter') {
12
12
  event.target.click();
13
13
  }
14
14
  };
@@ -18,20 +18,25 @@ class KeyboardManager {
18
18
  }
19
19
  };
20
20
  this.addElement = (el, name = 'element') => {
21
- this.elements[name] = el;
21
+ if (!el) {
22
+ throw Error(`Passed an ${el} element parameter to KeyboardManager.addElement`);
23
+ }
24
+ this.elements.set(name, el);
25
+ };
26
+ this.removeElement = (name = 'element') => {
27
+ this.detachClickBehavior(name);
28
+ this.elements.delete(name);
22
29
  };
23
30
  this.attachClickBehavior = (name = 'element') => {
24
- if (this.elements[name]) {
25
- this.elements[name].addEventListener('keydown', this.handleClickBehaviorDispatchEvent);
26
- }
31
+ var _a;
32
+ (_a = this.elements.get(name)) === null || _a === void 0 ? void 0 : _a.addEventListener('keydown', this.handleClickBehaviorDispatchEvent);
27
33
  };
28
34
  this.detachClickBehavior = (name = 'element') => {
29
- if (this.elements[name]) {
30
- this.elements[name].removeEventListener('keydown', this.handleClickBehaviorDispatchEvent);
31
- }
35
+ var _a;
36
+ (_a = this.elements.get(name)) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', this.handleClickBehaviorDispatchEvent);
32
37
  };
33
- this.attachEscapeBehavior = (callBack) => {
34
- this.escapeCallback = callBack;
38
+ this.attachEscapeBehavior = (callback) => {
39
+ this.escapeCallback = callback;
35
40
  if (window !== undefined) {
36
41
  window.addEventListener('keydown', this.handleEscapeBehaviorDispatchEvent.bind(this));
37
42
  }
@@ -45,23 +50,12 @@ class KeyboardManager {
45
50
  }
46
51
  }
47
52
 
48
- const mdsPaginatorItemCss = "@-webkit-keyframes focus-bounce{0%,75%,100%{outline-offset:var(--magma-outline-focus-offset)}50%{outline-offset:var(--magma-outline-blur-offset)}}@keyframes focus-bounce{0%,75%,100%{outline-offset:var(--magma-outline-focus-offset)}50%{outline-offset:var(--magma-outline-blur-offset)}}@tailwind components; .fixed{position:fixed}.absolute{position:absolute}.border{border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}:host{--mds-paginator-item-background-disabled:rgb(var(--tone-neutral-09));--mds-paginator-item-background-hover:rgb(var(--tone-neutral-08));--mds-paginator-item-background-selected:rgb(var(--brand-maggioli-03));--mds-paginator-item-background:transparent;--mds-paginator-item-color-disabled:rgb(var(--tone-neutral-06));--mds-paginator-item-color-hover:rgb(var(--tone-neutral-02));--mds-paginator-item-color-selected:rgb(var(--tone-neutral));--mds-paginator-item-color:rgb(var(--tone-neutral-02));--mds-paginator-item-radius:200px;--mds-paginator-item-shadow-disabled:none;--mds-paginator-item-shadow-hover:none;--mds-paginator-item-shadow-selected:0 0 1px 1px rgb(0 0 0 / 0.06), 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -1px rgb(0 0 0 / 0.06);--mds-paginator-item-shadow:none;--mds-paginator-item-size:2.25rem;-webkit-animation-duration:var(--magma-outline-animation-duration, 1s);animation-duration:var(--magma-outline-animation-duration, 1s);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:focus-bounce;animation-name:focus-bounce;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-timing-function:cubic-bezier(0, 0, 0.2, 1);animation-timing-function:cubic-bezier(0, 0, 0.2, 1);outline:var(--magma-outline-blur);-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-transition-property:background-color, border-color, color, fill, outline, outline-offset, -webkit-box-shadow, -webkit-transform;transition-property:background-color, border-color, color, fill, outline, outline-offset, -webkit-box-shadow, -webkit-transform;transition-property:background-color, border-color, box-shadow, color, fill, outline, outline-offset, transform;transition-property:background-color, border-color, box-shadow, color, fill, outline, outline-offset, transform, -webkit-box-shadow, -webkit-transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}:host:focus-visible{--magma-outline-blur:var(--magma-outline-focus);-webkit-animation-play-state:running;animation-play-state:running}:host{padding-left:0.75rem;padding-right:0.75rem;-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-timing-function:cubic-bezier(0, 0, 0.2, 1);-ms-flex-align:center;align-items:center;background-color:var(--mds-paginator-item-background);border-radius:var(--mds-paginator-item-radius);-webkit-box-shadow:var(--mds-paginator-item-shadow);box-shadow:var(--mds-paginator-item-shadow);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--mds-paginator-item-color);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0;height:var(--mds-paginator-item-size);-ms-flex-pack:center;justify-content:center;min-width:var(--mds-paginator-item-size);-webkit-transition-property:background-color, color, outline, outline-offset, -webkit-box-shadow;transition-property:background-color, color, outline, outline-offset, -webkit-box-shadow;transition-property:background-color, box-shadow, color, outline, outline-offset;transition-property:background-color, box-shadow, color, outline, outline-offset, -webkit-box-shadow;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(:focus-visible){--magma-outline-blur:var(--magma-outline-focus);-webkit-animation-play-state:running;animation-play-state:running}:host(:hover){background-color:var(--mds-paginator-item-background-hover);-webkit-box-shadow:var(--mds-paginator-item-shadow-hover);box-shadow:var(--mds-paginator-item-shadow-hover);color:var(--mds-paginator-item-color-hover);fill:var(--mds-paginator-item-color-hover)}:host([icon]){padding:0rem}:host([selected]){background-color:var(--mds-paginator-item-background-selected);-webkit-box-shadow:var(--mds-paginator-item-shadow-selected);box-shadow:var(--mds-paginator-item-shadow-selected);color:var(--mds-paginator-item-color-selected);fill:var(--mds-paginator-item-color-selected);pointer-events:none}:host([disabled]){background-color:var(--mds-paginator-item-background-disabled);-webkit-box-shadow:var(--mds-paginator-item-shadow-disabled);box-shadow:var(--mds-paginator-item-shadow-disabled);color:var(--mds-paginator-item-color-disabled);fill:var(--mds-paginator-item-color-disabled);pointer-events:none}.icon{padding-left:0rem;padding-right:0rem}";
53
+ const mdsPaginatorItemCss = "@-webkit-keyframes focus-bounce{0%,75%,100%{outline-offset:var(--magma-outline-focus-offset, 6px)}50%{outline-offset:var(--magma-outline-blur-offset, 2px)}}@keyframes focus-bounce{0%,75%,100%{outline-offset:var(--magma-outline-focus-offset, 6px)}50%{outline-offset:var(--magma-outline-blur-offset, 2px)}}@tailwind components; .svg{display:-ms-flexbox;display:flex}.svg svg{aspect-ratio:1/1;height:100%;width:100%}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.border{border-width:1px}.bg-label-amaranth-10{--tw-bg-opacity:1;background-color:rgb(var(--label-amaranth-10) / var(--tw-bg-opacity))}.bg-label-aqua-10{--tw-bg-opacity:1;background-color:rgb(var(--label-aqua-10) / var(--tw-bg-opacity))}.bg-label-blue-10{--tw-bg-opacity:1;background-color:rgb(var(--label-blue-10) / var(--tw-bg-opacity))}.bg-label-green-10{--tw-bg-opacity:1;background-color:rgb(var(--label-green-10) / var(--tw-bg-opacity))}.bg-label-lime-10{--tw-bg-opacity:1;background-color:rgb(var(--label-lime-10) / var(--tw-bg-opacity))}.bg-label-orange-10{--tw-bg-opacity:1;background-color:rgb(var(--label-orange-10) / var(--tw-bg-opacity))}.bg-label-orchid-10{--tw-bg-opacity:1;background-color:rgb(var(--label-orchid-10) / var(--tw-bg-opacity))}.bg-label-violet-10{--tw-bg-opacity:1;background-color:rgb(var(--label-violet-10) / var(--tw-bg-opacity))}.bg-label-yellow-10{--tw-bg-opacity:1;background-color:rgb(var(--label-yellow-10) / var(--tw-bg-opacity))}.bg-tone-neutral-10{--tw-bg-opacity:1;background-color:rgb(var(--tone-neutral-10) / var(--tw-bg-opacity))}.fill-label-amaranth-04{fill:rgb(var(--label-amaranth-04))}.fill-label-aqua-04{fill:rgb(var(--label-aqua-04))}.fill-label-blue-04{fill:rgb(var(--label-blue-04))}.fill-label-green-04{fill:rgb(var(--label-green-04))}.fill-label-lime-04{fill:rgb(var(--label-lime-04))}.fill-label-orange-04{fill:rgb(var(--label-orange-04))}.fill-label-orchid-04{fill:rgb(var(--label-orchid-04))}.fill-label-violet-04{fill:rgb(var(--label-violet-04))}.fill-label-yellow-04{fill:rgb(var(--label-yellow-04))}.fill-tone-neutral-04{fill:rgb(var(--tone-neutral-04))}.text-label-amaranth-04{--tw-text-opacity:1;color:rgb(var(--label-amaranth-04) / var(--tw-text-opacity))}.text-label-aqua-04{--tw-text-opacity:1;color:rgb(var(--label-aqua-04) / var(--tw-text-opacity))}.text-label-blue-04{--tw-text-opacity:1;color:rgb(var(--label-blue-04) / var(--tw-text-opacity))}.text-label-green-04{--tw-text-opacity:1;color:rgb(var(--label-green-04) / var(--tw-text-opacity))}.text-label-lime-04{--tw-text-opacity:1;color:rgb(var(--label-lime-04) / var(--tw-text-opacity))}.text-label-orange-04{--tw-text-opacity:1;color:rgb(var(--label-orange-04) / var(--tw-text-opacity))}.text-label-orchid-04{--tw-text-opacity:1;color:rgb(var(--label-orchid-04) / var(--tw-text-opacity))}.text-label-violet-04{--tw-text-opacity:1;color:rgb(var(--label-violet-04) / var(--tw-text-opacity))}.text-label-yellow-04{--tw-text-opacity:1;color:rgb(var(--label-yellow-04) / var(--tw-text-opacity))}.text-tone-neutral-04{--tw-text-opacity:1;color:rgb(var(--tone-neutral-04) / var(--tw-text-opacity))}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}:host{--mds-paginator-item-background-disabled:rgb(var(--tone-neutral-09));--mds-paginator-item-background-hover:rgb(var(--tone-neutral-08));--mds-paginator-item-background-selected:rgb(var(--brand-maggioli-03));--mds-paginator-item-background:transparent;--mds-paginator-item-color-disabled:rgb(var(--tone-neutral-06));--mds-paginator-item-color-hover:rgb(var(--tone-neutral-02));--mds-paginator-item-color-selected:rgb(var(--tone-neutral));--mds-paginator-item-color:rgb(var(--tone-neutral-02));--mds-paginator-item-radius:200px;--mds-paginator-item-shadow-disabled:none;--mds-paginator-item-shadow-hover:none;--mds-paginator-item-shadow-selected:0 0 1px 1px rgb(0 0 0 / 0.06), 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -1px rgb(0 0 0 / 0.06);--mds-paginator-item-shadow:none;--mds-paginator-item-size:2.25rem;-webkit-animation-duration:var(--magma-outline-animation-duration, 1s);animation-duration:var(--magma-outline-animation-duration, 1s);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:focus-bounce;animation-name:focus-bounce;-webkit-animation-play-state:paused;animation-play-state:paused;-webkit-animation-timing-function:cubic-bezier(0, 0, 0.2, 1);animation-timing-function:cubic-bezier(0, 0, 0.2, 1);outline:var(--magma-outline-blur);-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-transition-property:background-color, border-color, color, fill, outline, outline-offset, -webkit-box-shadow, -webkit-transform;transition-property:background-color, border-color, color, fill, outline, outline-offset, -webkit-box-shadow, -webkit-transform;transition-property:background-color, border-color, box-shadow, color, fill, outline, outline-offset, transform;transition-property:background-color, border-color, box-shadow, color, fill, outline, outline-offset, transform, -webkit-box-shadow, -webkit-transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}:host:focus-visible{--magma-outline-blur:var(--magma-outline-focus);-webkit-animation-play-state:running;animation-play-state:running}:host{padding-left:0.75rem;padding-right:0.75rem;-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-timing-function:cubic-bezier(0, 0, 0.2, 1);-ms-flex-align:center;align-items:center;background-color:var(--mds-paginator-item-background);border-radius:var(--mds-paginator-item-radius);-webkit-box-shadow:var(--mds-paginator-item-shadow);box-shadow:var(--mds-paginator-item-shadow);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--mds-paginator-item-color);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0;height:var(--mds-paginator-item-size);-ms-flex-pack:center;justify-content:center;min-width:var(--mds-paginator-item-size);-webkit-transition-property:background-color, color, outline, outline-offset, -webkit-box-shadow;transition-property:background-color, color, outline, outline-offset, -webkit-box-shadow;transition-property:background-color, box-shadow, color, outline, outline-offset;transition-property:background-color, box-shadow, color, outline, outline-offset, -webkit-box-shadow;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(:focus-visible){--magma-outline-blur:var(--magma-outline-focus);-webkit-animation-play-state:running;animation-play-state:running}:host(:hover){background-color:var(--mds-paginator-item-background-hover);-webkit-box-shadow:var(--mds-paginator-item-shadow-hover);box-shadow:var(--mds-paginator-item-shadow-hover);color:var(--mds-paginator-item-color-hover);fill:var(--mds-paginator-item-color-hover)}:host([icon]){padding:0rem}:host([selected]){background-color:var(--mds-paginator-item-background-selected);-webkit-box-shadow:var(--mds-paginator-item-shadow-selected);box-shadow:var(--mds-paginator-item-shadow-selected);color:var(--mds-paginator-item-color-selected);fill:var(--mds-paginator-item-color-selected);pointer-events:none}:host([disabled]){background-color:var(--mds-paginator-item-background-disabled);-webkit-box-shadow:var(--mds-paginator-item-shadow-disabled);box-shadow:var(--mds-paginator-item-shadow-disabled);color:var(--mds-paginator-item-color-disabled);fill:var(--mds-paginator-item-color-disabled);pointer-events:none}.icon{padding-left:0rem;padding-right:0rem}";
49
54
 
50
55
  const MdsPaginatorItem = class {
51
56
  constructor(hostRef) {
52
57
  index.registerInstance(this, hostRef);
53
58
  this.km = new KeyboardManager();
54
- this.componentDidLoad = () => {
55
- this.km.addElement(this.host);
56
- this.km.attachClickBehavior();
57
- };
58
- this.componentDidUpdate = () => {
59
- if (!this.disabled && !this.selected) {
60
- this.km.attachClickBehavior();
61
- return;
62
- }
63
- this.km.detachClickBehavior();
64
- };
65
59
  this.disconnectedCallback = () => {
66
60
  this.km.detachClickBehavior();
67
61
  };
@@ -69,6 +63,17 @@ const MdsPaginatorItem = class {
69
63
  this.selected = undefined;
70
64
  this.disabled = undefined;
71
65
  }
66
+ componentDidLoad() {
67
+ this.km.addElement(this.host);
68
+ this.km.attachClickBehavior();
69
+ }
70
+ componentDidUpdate() {
71
+ if (!this.disabled && !this.selected) {
72
+ this.km.attachClickBehavior();
73
+ return;
74
+ }
75
+ this.km.detachClickBehavior();
76
+ }
72
77
  render() {
73
78
  return (index.h(index.Host, { tabindex: "0" }, this.icon !== undefined
74
79
  ? index.h("mds-icon", { name: this.icon })
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-96b46685.js');
5
+ const index = require('./index-29fd42e7.js');
6
6
 
7
7
  /*
8
- Stencil Client Patch Browser v4.9.1 | MIT Licensed | https://stenciljs.com
8
+ Stencil Client Patch Browser v4.10.0 | MIT Licensed | https://stenciljs.com
9
9
  */
10
10
  const patchBrowser = () => {
11
11
  const importMeta = (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('mds-paginator-item.cjs.js', document.baseURI).href));
@@ -4,8 +4,8 @@
4
4
  ],
5
5
  "compiler": {
6
6
  "name": "@stencil/core",
7
- "version": "4.9.1",
8
- "typescriptVersion": "5.2.2"
7
+ "version": "4.10.0",
8
+ "typescriptVersion": "5.3.3"
9
9
  },
10
10
  "collections": [],
11
11
  "bundles": []
@@ -0,0 +1,48 @@
1
+ import { fileExtensionsDictionary } from "../dictionary/file-extensions";
2
+ import { fileFormatsVariant } from "../type/variant-file-format";
3
+ const sanitizeFilename = (filename, error = 'Attribute "filename" is undefined.') => {
4
+ var _a;
5
+ if (filename === undefined) {
6
+ throw console.error(error);
7
+ }
8
+ if (filename.includes('/')) {
9
+ return (_a = filename.split('/').pop()) !== null && _a !== void 0 ? _a : '';
10
+ }
11
+ return filename;
12
+ };
13
+ const sanitizeSuffix = (rawFilename) => {
14
+ var _a;
15
+ const filename = sanitizeFilename(rawFilename);
16
+ if (filename.includes('.')) {
17
+ return (_a = filename.split('.').pop()) !== null && _a !== void 0 ? _a : '';
18
+ }
19
+ return filename;
20
+ };
21
+ const getName = (rawFilename) => {
22
+ var _a;
23
+ const filename = sanitizeFilename(rawFilename);
24
+ if (filename.includes('.')) {
25
+ return (_a = filename.split('.')[0]) !== null && _a !== void 0 ? _a : '';
26
+ }
27
+ return filename;
28
+ };
29
+ const getSuffix = (rawFilename, suffixOverride) => {
30
+ const suffix = sanitizeSuffix(rawFilename);
31
+ const filename = sanitizeFilename(rawFilename);
32
+ if (suffixOverride !== null && suffixOverride !== undefined) {
33
+ return suffixOverride.toLowerCase();
34
+ }
35
+ if (suffix !== filename) {
36
+ return suffix;
37
+ }
38
+ return 'default';
39
+ };
40
+ const getExtensionInfos = (rawFilename, suffixOverride) => {
41
+ var _a;
42
+ const suffix = getSuffix(rawFilename, suffixOverride).toLocaleLowerCase();
43
+ return (_a = fileExtensionsDictionary[suffix]) !== null && _a !== void 0 ? _a : fileExtensionsDictionary.default;
44
+ };
45
+ const getFormatsVariant = (rawFilename, suffixOverride) => {
46
+ return fileFormatsVariant[getExtensionInfos(rawFilename, suffixOverride).format];
47
+ };
48
+ export { getExtensionInfos, getFormatsVariant, getSuffix, getName, };
@@ -0,0 +1,15 @@
1
+ const BASE64_SVG_ICON = 'data:image/svg+xml;base64,';
2
+ const MARKUP_SVG_ICON = '<svg ';
3
+ const isIconFormatIsBase64 = (icon) => {
4
+ if (!icon) {
5
+ return false;
6
+ }
7
+ return icon.startsWith(BASE64_SVG_ICON);
8
+ };
9
+ const isIconFormatIsSVG = (icon) => {
10
+ if (!icon) {
11
+ return false;
12
+ }
13
+ return icon.startsWith(MARKUP_SVG_ICON);
14
+ };
15
+ export { isIconFormatIsBase64, isIconFormatIsSVG, BASE64_SVG_ICON, MARKUP_SVG_ICON, };
@@ -1,8 +1,8 @@
1
1
  export class KeyboardManager {
2
2
  constructor() {
3
- this.elements = [];
3
+ this.elements = new Map();
4
4
  this.handleClickBehaviorDispatchEvent = (event) => {
5
- if (event.code === 'Space' || event.code === 'Enter' || event.code === 'NumpadEnter') {
5
+ if (event.code === 'Enter' || event.code === 'NumpadEnter') {
6
6
  event.target.click();
7
7
  }
8
8
  };
@@ -12,20 +12,25 @@ export class KeyboardManager {
12
12
  }
13
13
  };
14
14
  this.addElement = (el, name = 'element') => {
15
- this.elements[name] = el;
15
+ if (!el) {
16
+ throw Error(`Passed an ${el} element parameter to KeyboardManager.addElement`);
17
+ }
18
+ this.elements.set(name, el);
19
+ };
20
+ this.removeElement = (name = 'element') => {
21
+ this.detachClickBehavior(name);
22
+ this.elements.delete(name);
16
23
  };
17
24
  this.attachClickBehavior = (name = 'element') => {
18
- if (this.elements[name]) {
19
- this.elements[name].addEventListener('keydown', this.handleClickBehaviorDispatchEvent);
20
- }
25
+ var _a;
26
+ (_a = this.elements.get(name)) === null || _a === void 0 ? void 0 : _a.addEventListener('keydown', this.handleClickBehaviorDispatchEvent);
21
27
  };
22
28
  this.detachClickBehavior = (name = 'element') => {
23
- if (this.elements[name]) {
24
- this.elements[name].removeEventListener('keydown', this.handleClickBehaviorDispatchEvent);
25
- }
29
+ var _a;
30
+ (_a = this.elements.get(name)) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', this.handleClickBehaviorDispatchEvent);
26
31
  };
27
- this.attachEscapeBehavior = (callBack) => {
28
- this.escapeCallback = callBack;
32
+ this.attachEscapeBehavior = (callback) => {
33
+ this.escapeCallback = callback;
29
34
  if (window !== undefined) {
30
35
  window.addEventListener('keydown', this.handleEscapeBehaviorDispatchEvent.bind(this));
31
36
  }
@@ -1,10 +1,22 @@
1
1
  const cssDurationToMilliseconds = (duration, defaultValue = 1000) => {
2
+ if (duration.includes('ms')) {
3
+ return Number(duration.replace('ms', ''));
4
+ }
2
5
  if (duration.includes('s')) {
3
6
  return Number(duration.replace('s', '')) * 1000;
4
7
  }
5
- if (duration.includes('ms')) {
6
- return Number(duration.replace('s', ''));
8
+ return defaultValue;
9
+ };
10
+ const cssSizeToNumber = (size, defaultValue = 0) => {
11
+ if (size.includes('px')) {
12
+ return Number(size.replace('px', ''));
13
+ }
14
+ if (size.includes('rem')) {
15
+ return Number(size.replace('rem', '')) * 16;
16
+ }
17
+ if (size.includes('em')) {
18
+ return Number(size.replace('em', '')) * 16;
7
19
  }
8
20
  return defaultValue;
9
21
  };
10
- export { cssDurationToMilliseconds, };
22
+ export { cssDurationToMilliseconds, cssSizeToNumber, };
@@ -0,0 +1,16 @@
1
+ import { generator } from "./utils/prng";
2
+ import { strToCharCodeArray } from "./utils/string";
3
+ import { randomSign, minMaxLooped } from "./utils/math";
4
+ const rand = generator();
5
+ const random = (base, offset) => () => (base + rand.range(0, offset)) * randomSign();
6
+ export const generateRandomCharCodeArray = (base, offset) => str => strToCharCodeArray(str).map(random(base, offset));
7
+ export const charCodeArrayToString = ({ str, minCharCode, maxCharCode, placeholderChar, charStep, }) => charCodes => charCodes.reduce((acc, item, index) => {
8
+ if (item !== 0) {
9
+ if (Math.abs(item) > charStep) {
10
+ return acc + placeholderChar;
11
+ }
12
+ return (acc +
13
+ String.fromCharCode(minMaxLooped(minCharCode, maxCharCode)(str.charCodeAt(index) + item)));
14
+ }
15
+ return acc + str.charAt(index);
16
+ }, '');
@@ -0,0 +1,3 @@
1
+ // taken from https://github.com/zenoplex/random-text
2
+ // @flow
3
+ export { default } from './random-text';
@@ -0,0 +1,59 @@
1
+ import { generateRandomCharCodeArray, charCodeArrayToString } from "./core";
2
+ import { noop } from "./utils/noop";
3
+ class RandomText {
4
+ constructor(options) {
5
+ this.start = () => {
6
+ const { frameOffset, charOffset, str, speed } = this;
7
+ const randoms = generateRandomCharCodeArray(frameOffset, charOffset)(str);
8
+ this.stop();
9
+ this.rafId = requestAnimationFrame(() => {
10
+ this.step(randoms, speed, speed);
11
+ });
12
+ };
13
+ Object.assign(this, Object.assign(Object.assign({}, RandomText.defaults), options));
14
+ }
15
+ stop() {
16
+ cancelAnimationFrame(this.rafId);
17
+ }
18
+ step(randoms, stepCount, speed) {
19
+ const { str, charStep, minCharCode, maxCharCode, placeholderChar, onProgress, onComplete, } = this;
20
+ const stepArray = randoms.slice(0, stepCount);
21
+ const steppedArray = stepArray.map(item => {
22
+ if (item > 0)
23
+ return item - 1;
24
+ if (item < 0)
25
+ return item + 1;
26
+ return 0;
27
+ });
28
+ const output = charCodeArrayToString({
29
+ str,
30
+ minCharCode,
31
+ maxCharCode,
32
+ placeholderChar,
33
+ charStep,
34
+ })(steppedArray);
35
+ const updatedRandoms = [...steppedArray, ...randoms.slice(stepCount)];
36
+ onProgress(output);
37
+ if (output !== str) {
38
+ this.rafId = requestAnimationFrame(() => {
39
+ this.step(updatedRandoms, stepCount + speed, speed);
40
+ });
41
+ }
42
+ else {
43
+ onComplete(output);
44
+ }
45
+ }
46
+ }
47
+ RandomText.defaults = {
48
+ str: '',
49
+ speed: 2,
50
+ placeholderChar: '_',
51
+ frameOffset: 30,
52
+ charOffset: 20,
53
+ charStep: 10,
54
+ minCharCode: 32,
55
+ maxCharCode: 122,
56
+ onProgress: noop,
57
+ onComplete: noop,
58
+ };
59
+ export default RandomText;
@@ -0,0 +1,11 @@
1
+ import { generator } from "./prng";
2
+ const rand = generator();
3
+ export const randomSign = () => (Math.round(Math.random()) - 0.5) * 2;
4
+ export const generateRandomNumbers = base => charOffset => length => [...Array(length)].map(() => (base + rand.range(0, charOffset)) * randomSign());
5
+ export const minMaxLooped = (min, max) => value => {
6
+ if (value > max)
7
+ return min + (value - max);
8
+ if (value < min)
9
+ return max + (value - min);
10
+ return value;
11
+ };
@@ -0,0 +1 @@
1
+ export const noop = () => { };
@@ -0,0 +1,21 @@
1
+ const int32 = 2147483647;
2
+ const gen = v => (v * 16807) % int32;
3
+ const randomFloat = v => gen(v) / int32;
4
+ const randomInt = v => gen(v);
5
+ export const generator = (seed = 1) => {
6
+ let value = seed < 1 ? 1 : seed;
7
+ const next = () => {
8
+ value = randomInt(value);
9
+ return value;
10
+ };
11
+ return {
12
+ random: () => next(),
13
+ randomFloat: () => randomFloat(next()),
14
+ range: (min, max) => {
15
+ const minimum = min - 0.4999;
16
+ const maximum = max + 0.4999;
17
+ return Math.round(minimum + (maximum - minimum) * randomFloat(next()));
18
+ },
19
+ rangeFloat: (min, max) => min + (max - min) * randomFloat(next()),
20
+ };
21
+ };
@@ -0,0 +1,2 @@
1
+ // export const strToCharCodeArray: string => number[] = str => str.split('').map(item => item.charCodeAt(0));
2
+ export const strToCharCodeArray = str => str.split('').map(item => item.charCodeAt(0));
@@ -1,14 +1,27 @@
1
1
  @keyframes focus-bounce {
2
2
  0%, 75%, 100% {
3
- outline-offset: var(--magma-outline-focus-offset);
3
+ outline-offset: var(--magma-outline-focus-offset, 6px);
4
4
  }
5
5
 
6
6
  50% {
7
- outline-offset: var(--magma-outline-blur-offset);
7
+ outline-offset: var(--magma-outline-blur-offset, 2px);
8
8
  }
9
9
  }
10
10
  /* included for focus effect */
11
11
  @tailwind components;
12
+
13
+ .svg {
14
+ display: flex;
15
+ }
16
+
17
+ .svg svg {
18
+ aspect-ratio: 1/1;
19
+ height: 100%;
20
+ width: 100%;
21
+ }
22
+ .static {
23
+ position: static;
24
+ }
12
25
  .fixed {
13
26
  position: fixed;
14
27
  }
@@ -18,6 +31,116 @@
18
31
  .border {
19
32
  border-width: 1px;
20
33
  }
34
+ .bg-label-amaranth-10 {
35
+ --tw-bg-opacity: 1;
36
+ background-color: rgb(var(--label-amaranth-10) / var(--tw-bg-opacity));
37
+ }
38
+ .bg-label-aqua-10 {
39
+ --tw-bg-opacity: 1;
40
+ background-color: rgb(var(--label-aqua-10) / var(--tw-bg-opacity));
41
+ }
42
+ .bg-label-blue-10 {
43
+ --tw-bg-opacity: 1;
44
+ background-color: rgb(var(--label-blue-10) / var(--tw-bg-opacity));
45
+ }
46
+ .bg-label-green-10 {
47
+ --tw-bg-opacity: 1;
48
+ background-color: rgb(var(--label-green-10) / var(--tw-bg-opacity));
49
+ }
50
+ .bg-label-lime-10 {
51
+ --tw-bg-opacity: 1;
52
+ background-color: rgb(var(--label-lime-10) / var(--tw-bg-opacity));
53
+ }
54
+ .bg-label-orange-10 {
55
+ --tw-bg-opacity: 1;
56
+ background-color: rgb(var(--label-orange-10) / var(--tw-bg-opacity));
57
+ }
58
+ .bg-label-orchid-10 {
59
+ --tw-bg-opacity: 1;
60
+ background-color: rgb(var(--label-orchid-10) / var(--tw-bg-opacity));
61
+ }
62
+ .bg-label-violet-10 {
63
+ --tw-bg-opacity: 1;
64
+ background-color: rgb(var(--label-violet-10) / var(--tw-bg-opacity));
65
+ }
66
+ .bg-label-yellow-10 {
67
+ --tw-bg-opacity: 1;
68
+ background-color: rgb(var(--label-yellow-10) / var(--tw-bg-opacity));
69
+ }
70
+ .bg-tone-neutral-10 {
71
+ --tw-bg-opacity: 1;
72
+ background-color: rgb(var(--tone-neutral-10) / var(--tw-bg-opacity));
73
+ }
74
+ .fill-label-amaranth-04 {
75
+ fill: rgb(var(--label-amaranth-04));
76
+ }
77
+ .fill-label-aqua-04 {
78
+ fill: rgb(var(--label-aqua-04));
79
+ }
80
+ .fill-label-blue-04 {
81
+ fill: rgb(var(--label-blue-04));
82
+ }
83
+ .fill-label-green-04 {
84
+ fill: rgb(var(--label-green-04));
85
+ }
86
+ .fill-label-lime-04 {
87
+ fill: rgb(var(--label-lime-04));
88
+ }
89
+ .fill-label-orange-04 {
90
+ fill: rgb(var(--label-orange-04));
91
+ }
92
+ .fill-label-orchid-04 {
93
+ fill: rgb(var(--label-orchid-04));
94
+ }
95
+ .fill-label-violet-04 {
96
+ fill: rgb(var(--label-violet-04));
97
+ }
98
+ .fill-label-yellow-04 {
99
+ fill: rgb(var(--label-yellow-04));
100
+ }
101
+ .fill-tone-neutral-04 {
102
+ fill: rgb(var(--tone-neutral-04));
103
+ }
104
+ .text-label-amaranth-04 {
105
+ --tw-text-opacity: 1;
106
+ color: rgb(var(--label-amaranth-04) / var(--tw-text-opacity));
107
+ }
108
+ .text-label-aqua-04 {
109
+ --tw-text-opacity: 1;
110
+ color: rgb(var(--label-aqua-04) / var(--tw-text-opacity));
111
+ }
112
+ .text-label-blue-04 {
113
+ --tw-text-opacity: 1;
114
+ color: rgb(var(--label-blue-04) / var(--tw-text-opacity));
115
+ }
116
+ .text-label-green-04 {
117
+ --tw-text-opacity: 1;
118
+ color: rgb(var(--label-green-04) / var(--tw-text-opacity));
119
+ }
120
+ .text-label-lime-04 {
121
+ --tw-text-opacity: 1;
122
+ color: rgb(var(--label-lime-04) / var(--tw-text-opacity));
123
+ }
124
+ .text-label-orange-04 {
125
+ --tw-text-opacity: 1;
126
+ color: rgb(var(--label-orange-04) / var(--tw-text-opacity));
127
+ }
128
+ .text-label-orchid-04 {
129
+ --tw-text-opacity: 1;
130
+ color: rgb(var(--label-orchid-04) / var(--tw-text-opacity));
131
+ }
132
+ .text-label-violet-04 {
133
+ --tw-text-opacity: 1;
134
+ color: rgb(var(--label-violet-04) / var(--tw-text-opacity));
135
+ }
136
+ .text-label-yellow-04 {
137
+ --tw-text-opacity: 1;
138
+ color: rgb(var(--label-yellow-04) / var(--tw-text-opacity));
139
+ }
140
+ .text-tone-neutral-04 {
141
+ --tw-text-opacity: 1;
142
+ color: rgb(var(--tone-neutral-04) / var(--tw-text-opacity));
143
+ }
21
144
  .shadow {
22
145
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
23
146
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@@ -6,17 +6,6 @@ import { KeyboardManager } from "../../common/keyboard-manager";
6
6
  export class MdsPaginatorItem {
7
7
  constructor() {
8
8
  this.km = new KeyboardManager();
9
- this.componentDidLoad = () => {
10
- this.km.addElement(this.host);
11
- this.km.attachClickBehavior();
12
- };
13
- this.componentDidUpdate = () => {
14
- if (!this.disabled && !this.selected) {
15
- this.km.attachClickBehavior();
16
- return;
17
- }
18
- this.km.detachClickBehavior();
19
- };
20
9
  this.disconnectedCallback = () => {
21
10
  this.km.detachClickBehavior();
22
11
  };
@@ -24,6 +13,17 @@ export class MdsPaginatorItem {
24
13
  this.selected = undefined;
25
14
  this.disabled = undefined;
26
15
  }
16
+ componentDidLoad() {
17
+ this.km.addElement(this.host);
18
+ this.km.attachClickBehavior();
19
+ }
20
+ componentDidUpdate() {
21
+ if (!this.disabled && !this.selected) {
22
+ this.km.attachClickBehavior();
23
+ return;
24
+ }
25
+ this.km.detachClickBehavior();
26
+ }
27
27
  render() {
28
28
  return (h(Host, { tabindex: "0" }, this.icon !== undefined
29
29
  ? h("mds-icon", { name: this.icon })