kemet-ui 5.0.0 → 5.0.2

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 (147) hide show
  1. package/README.md +1 -1
  2. package/custom-elements.json +3355 -3272
  3. package/dist/{constants-W9QKPlZP.d.ts → constants-CHvA2ed5.d.ts} +13 -0
  4. package/dist/elements/accordion/index.d.ts +1 -0
  5. package/dist/elements/accordion/index.js +5 -1
  6. package/dist/elements/accordion/index.js.map +1 -1
  7. package/dist/elements/accordion-panel/index.d.ts +1 -0
  8. package/dist/elements/accordion-panel/index.js +5 -1
  9. package/dist/elements/accordion-panel/index.js.map +1 -1
  10. package/dist/elements/alert/index.d.ts +2 -1
  11. package/dist/elements/alert/index.js +5 -1
  12. package/dist/elements/alert/index.js.map +1 -1
  13. package/dist/elements/avatar/index.d.ts +2 -1
  14. package/dist/elements/avatar/index.js +5 -1
  15. package/dist/elements/avatar/index.js.map +1 -1
  16. package/dist/elements/avatars/index.d.ts +1 -0
  17. package/dist/elements/avatars/index.js +5 -1
  18. package/dist/elements/avatars/index.js.map +1 -1
  19. package/dist/elements/badge/index.d.ts +2 -1
  20. package/dist/elements/badge/index.js +5 -1
  21. package/dist/elements/badge/index.js.map +1 -1
  22. package/dist/elements/button/index.d.ts +2 -1
  23. package/dist/elements/button/index.js +5 -1
  24. package/dist/elements/button/index.js.map +1 -1
  25. package/dist/elements/card/index.d.ts +2 -1
  26. package/dist/elements/card/index.js +5 -1
  27. package/dist/elements/card/index.js.map +1 -1
  28. package/dist/elements/checkbox/index.d.ts +2 -1
  29. package/dist/elements/checkbox/index.js +7 -1
  30. package/dist/elements/checkbox/index.js.map +1 -1
  31. package/dist/elements/combo/index.d.ts +1 -1
  32. package/dist/elements/combo/index.js +5 -1
  33. package/dist/elements/combo/index.js.map +1 -1
  34. package/dist/elements/count/index.d.ts +1 -1
  35. package/dist/elements/count/index.js +28 -1
  36. package/dist/elements/count/index.js.map +1 -1
  37. package/dist/elements/dialog/index.d.ts +2 -1
  38. package/dist/elements/dialog/index.js +5 -1
  39. package/dist/elements/dialog/index.js.map +1 -1
  40. package/dist/elements/dialog-close/index.d.ts +1 -0
  41. package/dist/elements/dialog-close/index.js +5 -1
  42. package/dist/elements/dialog-close/index.js.map +1 -1
  43. package/dist/elements/drawer/effects.js +1 -1
  44. package/dist/elements/drawer/effects.js.map +1 -1
  45. package/dist/elements/drawer/index.d.ts +1 -0
  46. package/dist/elements/drawer/index.js +6 -2
  47. package/dist/elements/drawer/index.js.map +1 -1
  48. package/dist/elements/fab/index.d.ts +2 -1
  49. package/dist/elements/fab/index.js +5 -1
  50. package/dist/elements/fab/index.js.map +1 -1
  51. package/dist/elements/field/index.d.ts +1 -1
  52. package/dist/elements/field/index.js +5 -1
  53. package/dist/elements/field/index.js.map +1 -1
  54. package/dist/elements/flipcard/index.d.ts +2 -1
  55. package/dist/elements/flipcard/index.js +5 -1
  56. package/dist/elements/flipcard/index.js.map +1 -1
  57. package/dist/elements/flipcard-trigger/index.d.ts +1 -0
  58. package/dist/elements/flipcard-trigger/index.js +5 -1
  59. package/dist/elements/flipcard-trigger/index.js.map +1 -1
  60. package/dist/elements/icon/index.d.ts +2 -1
  61. package/dist/elements/icon/index.js +8 -2
  62. package/dist/elements/icon/index.js.map +1 -1
  63. package/dist/elements/input/index.d.ts +1 -1
  64. package/dist/elements/input/index.js +9 -3
  65. package/dist/elements/input/index.js.map +1 -1
  66. package/dist/elements/input/styles.css.js +2 -2
  67. package/dist/elements/input/styles.css.js.map +1 -1
  68. package/dist/elements/input-combo/index.d.ts +2 -1
  69. package/dist/elements/input-combo/index.js +7 -1
  70. package/dist/elements/input-combo/index.js.map +1 -1
  71. package/dist/elements/input-file/index.d.ts +1 -1
  72. package/dist/elements/input-file/index.js +39 -249
  73. package/dist/elements/input-file/index.js.map +1 -1
  74. package/dist/elements/input-file/styles.css.js +8 -8
  75. package/dist/elements/input-file/styles.css.js.map +1 -1
  76. package/dist/elements/input-files/index.d.ts +1 -1
  77. package/dist/elements/input-files/index.js +29 -237
  78. package/dist/elements/input-files/index.js.map +1 -1
  79. package/dist/elements/input-files/styles.css.js +2 -2
  80. package/dist/elements/input-files/styles.css.js.map +1 -1
  81. package/dist/elements/input-otp/index.d.ts +1 -0
  82. package/dist/elements/input-otp/index.js +5 -1
  83. package/dist/elements/input-otp/index.js.map +1 -1
  84. package/dist/elements/loader/index.d.ts +1 -0
  85. package/dist/elements/loader/index.js +5 -1
  86. package/dist/elements/loader/index.js.map +1 -1
  87. package/dist/elements/password/index.d.ts +2 -2
  88. package/dist/elements/password/index.js +24 -234
  89. package/dist/elements/password/index.js.map +1 -1
  90. package/dist/elements/radio/index.d.ts +1 -0
  91. package/dist/elements/radio/index.js +7 -1
  92. package/dist/elements/radio/index.js.map +1 -1
  93. package/dist/elements/radios/index.d.ts +2 -1
  94. package/dist/elements/radios/index.js +5 -1
  95. package/dist/elements/radios/index.js.map +1 -1
  96. package/dist/elements/rotator/index.d.ts +1 -0
  97. package/dist/elements/rotator/index.js +7 -2
  98. package/dist/elements/rotator/index.js.map +1 -1
  99. package/dist/elements/select/index.d.ts +2 -1
  100. package/dist/elements/select/index.js +28 -25
  101. package/dist/elements/select/index.js.map +1 -1
  102. package/dist/elements/select-option/index.d.ts +1 -0
  103. package/dist/elements/select-option/index.js +7 -1
  104. package/dist/elements/select-option/index.js.map +1 -1
  105. package/dist/elements/sortable/index.d.ts +1 -0
  106. package/dist/elements/sortable/index.js +7 -1
  107. package/dist/elements/sortable/index.js.map +1 -1
  108. package/dist/elements/sortable-item/index.d.ts +1 -0
  109. package/dist/elements/sortable-item/index.js +5 -1
  110. package/dist/elements/sortable-item/index.js.map +1 -1
  111. package/dist/elements/tab/index.d.ts +1 -1
  112. package/dist/elements/tab/index.js +18 -228
  113. package/dist/elements/tab/index.js.map +1 -1
  114. package/dist/elements/tab-panel/index.d.ts +1 -0
  115. package/dist/elements/tab-panel/index.js +5 -1
  116. package/dist/elements/tab-panel/index.js.map +1 -1
  117. package/dist/elements/tabs/index.d.ts +3 -2
  118. package/dist/elements/tabs/index.js +44 -246
  119. package/dist/elements/tabs/index.js.map +1 -1
  120. package/dist/elements/textarea/index.d.ts +1 -1
  121. package/dist/elements/textarea/index.js +9 -3
  122. package/dist/elements/textarea/index.js.map +1 -1
  123. package/dist/elements/textarea/styles.css.js +2 -2
  124. package/dist/elements/textarea/styles.css.js.map +1 -1
  125. package/dist/elements/timer/index.d.ts +1 -0
  126. package/dist/elements/timer/index.js +11 -7
  127. package/dist/elements/timer/index.js.map +1 -1
  128. package/dist/elements/timer-display/index.d.ts +1 -1
  129. package/dist/elements/timer-display/index.js +19 -16
  130. package/dist/elements/timer-display/index.js.map +1 -1
  131. package/dist/elements/toggle/index.d.ts +1 -0
  132. package/dist/elements/toggle/index.js +5 -1
  133. package/dist/elements/toggle/index.js.map +1 -1
  134. package/dist/elements/tracker/index.d.ts +1 -2
  135. package/dist/elements/tracker/index.js +10 -19
  136. package/dist/elements/tracker/index.js.map +1 -1
  137. package/dist/elements/tracker-step/index.d.ts +1 -2
  138. package/dist/elements/tracker-step/index.js +46 -240
  139. package/dist/elements/tracker-step/index.js.map +1 -1
  140. package/dist/elements/typewriter/index.d.ts +1 -0
  141. package/dist/elements/typewriter/index.js +7 -1
  142. package/dist/elements/typewriter/index.js.map +1 -1
  143. package/dist/{index-h1DTXXCf.d.ts → index-n43o0UmE.d.ts} +13 -7
  144. package/dist/wrappers/react.d.ts +2 -2
  145. package/dist/wrappers/react.js +489 -491
  146. package/dist/wrappers/react.js.map +1 -1
  147. package/package.json +2 -3
@@ -10,8 +10,12 @@ var __decorateClass = (decorators, target, key, kind) => {
10
10
  };
11
11
 
12
12
  // src/elements/tabs/index.ts
13
- import { LitElement as LitElement2, html as html2 } from "lit";
14
- import { customElement as customElement2, property as property2, query, state as state2 } from "lit/decorators.js";
13
+ import { LitElement, html } from "lit";
14
+
15
+ // src/utilities/decorators.ts
16
+ import { property, state, query, queryAll } from "lit/decorators.js";
17
+ import { customElement as litCustomElement } from "lit/decorators.js";
18
+ var customElement = (tagName) => (classOrDescriptor) => typeof customElements !== "undefined" && !customElements.get(tagName) ? litCustomElement(tagName)(classOrDescriptor) : classOrDescriptor;
15
19
 
16
20
  // src/utilities/events.ts
17
21
  var emitEvent = (element, name, detail, bubbles = true, composed = true) => {
@@ -20,223 +24,9 @@ var emitEvent = (element, name, detail, bubbles = true, composed = true) => {
20
24
  );
21
25
  };
22
26
 
23
- // src/elements/icon/index.ts
24
- import { html, LitElement } from "lit";
25
- import { customElement, property, state } from "lit/decorators.js";
26
- import { isTemplateResult } from "lit/directive-helpers.js";
27
-
28
- // src/elements/icon/styles.css.ts
27
+ // src/elements/tabs/styles.css.ts
29
28
  import { css } from "lit";
30
29
  var styles_css_default = css`:host {
31
- display: inline-flex;
32
- align-items: center;
33
- justify-content: center;
34
- color: inherit;
35
- }
36
- `;
37
-
38
- // src/elements/icon/index.ts
39
- var CACHEABLE_ERROR = /* @__PURE__ */ Symbol();
40
- var RETRYABLE_ERROR = /* @__PURE__ */ Symbol();
41
- var parser;
42
- var iconCache = /* @__PURE__ */ new Map();
43
- var MAX_CONCURRENT_REQUESTS = 10;
44
- var requestQueue = [];
45
- var activeRequests = 0;
46
- function queueRequest(callback) {
47
- if (activeRequests < MAX_CONCURRENT_REQUESTS) {
48
- activeRequests++;
49
- callback();
50
- } else {
51
- requestQueue.push(callback);
52
- }
53
- }
54
- function requestComplete() {
55
- activeRequests--;
56
- if (requestQueue.length > 0) {
57
- const nextRequest = requestQueue.shift();
58
- if (nextRequest) {
59
- activeRequests++;
60
- nextRequest();
61
- }
62
- }
63
- }
64
- var KemetIcon = class extends LitElement {
65
- constructor() {
66
- super(...arguments);
67
- this.name = "house";
68
- this.library = "bootstrap";
69
- this.family = "regular";
70
- this.size = 16;
71
- this.dom = "initializing";
72
- this.svg = null;
73
- this.url = "https://unpkg.com/bootstrap-icons@latest/icons";
74
- /** @internal */
75
- this.isVisible = false;
76
- }
77
- connectedCallback() {
78
- super.connectedCallback();
79
- this.updateUrl();
80
- if (!this.svg) {
81
- this.isVisible = true;
82
- this.setIcon();
83
- }
84
- }
85
- updated() {
86
- this.updateUrl();
87
- this.updateSize();
88
- }
89
- firstUpdated() {
90
- emitEvent(this, "kemet-icon-mounted", {
91
- bubbles: true,
92
- composed: true,
93
- detail: {
94
- element: this
95
- }
96
- });
97
- this.dom = "mounted";
98
- }
99
- render() {
100
- if (this.svg) {
101
- return this.svg;
102
- }
103
- if (!this.isVisible) {
104
- this.isVisible = true;
105
- this.setIcon();
106
- }
107
- return html`<svg part="svg" width="${this.size}" height="${this.size}" viewBox="0 0 16 16"></svg>`;
108
- }
109
- /** Public method to force icon loading */
110
- loadIcon() {
111
- this.isVisible = true;
112
- this.setIcon();
113
- }
114
- async setIcon() {
115
- if (!this.isVisible) return;
116
- let iconResolver = iconCache.get(`${this.family}/${this.name}`);
117
- if (!iconResolver) {
118
- iconResolver = this.resolveIcon();
119
- iconCache.set(`${this.family}/${this.name}`, iconResolver);
120
- }
121
- const svg = await iconResolver;
122
- if (svg === RETRYABLE_ERROR) {
123
- iconCache.delete(`${this.family}/${this.name}`);
124
- }
125
- if (isTemplateResult(svg)) {
126
- this.svg = svg;
127
- } else if (svg instanceof SVGSVGElement) {
128
- this.svg = svg.cloneNode(true);
129
- }
130
- }
131
- updateUrl() {
132
- switch (this.library) {
133
- case "fontawesome" /* FONTAWESOME */:
134
- this.version = this.version || "7.3.1";
135
- this.url = `https://unpkg.com/@fortawesome/fontawesome-free@${this.version}/svgs`;
136
- break;
137
- case "bootstrap" /* BOOTSTRAP */:
138
- this.version = this.version || "1.11.3";
139
- this.url = `https://unpkg.com/bootstrap-icons@${this.version}/icons`;
140
- break;
141
- }
142
- }
143
- async resolveIcon() {
144
- return new Promise((resolve) => {
145
- queueRequest(async () => {
146
- let fileData;
147
- let fetchURL = `${this.url}/${this.family}/${this.name}.svg`;
148
- switch (this.library) {
149
- case "fontawesome" /* FONTAWESOME */:
150
- fetchURL = `${this.url}/${this.family}/${this.name}.svg`;
151
- break;
152
- case "bootstrap" /* BOOTSTRAP */:
153
- fetchURL = `${this.url}/${this.name}.svg`;
154
- break;
155
- }
156
- try {
157
- fileData = await fetch(fetchURL);
158
- if (!fileData.ok) {
159
- requestComplete();
160
- resolve(fileData.status === 410 ? CACHEABLE_ERROR : RETRYABLE_ERROR);
161
- return;
162
- }
163
- } catch {
164
- requestComplete();
165
- resolve(RETRYABLE_ERROR);
166
- return;
167
- }
168
- try {
169
- const div = document.createElement("div");
170
- div.innerHTML = await fileData.text();
171
- const svg = div.firstElementChild;
172
- if (svg?.tagName?.toLowerCase() !== "svg") {
173
- requestComplete();
174
- resolve(CACHEABLE_ERROR);
175
- return;
176
- }
177
- if (!parser) parser = new DOMParser();
178
- const doc = parser.parseFromString(svg.outerHTML, "text/html");
179
- const svgEl = doc.body.querySelector("svg");
180
- if (!svgEl) {
181
- requestComplete();
182
- resolve(CACHEABLE_ERROR);
183
- return;
184
- }
185
- svgEl.part.add("svg");
186
- svgEl.setAttribute("width", `${this.size}px`);
187
- svgEl.setAttribute("height", `${this.size}px`);
188
- requestComplete();
189
- resolve(document.adoptNode(svgEl));
190
- } catch {
191
- requestComplete();
192
- resolve(CACHEABLE_ERROR);
193
- }
194
- });
195
- });
196
- }
197
- updateSize() {
198
- if (this.svg) {
199
- const svg = this.svg;
200
- svg.setAttribute("width", `${this.size}px`);
201
- svg.setAttribute("height", `${this.size}px`);
202
- }
203
- }
204
- };
205
- KemetIcon.styles = [styles_css_default];
206
- __decorateClass([
207
- property({ type: String })
208
- ], KemetIcon.prototype, "name", 2);
209
- __decorateClass([
210
- property({ type: String })
211
- ], KemetIcon.prototype, "library", 2);
212
- __decorateClass([
213
- property({ type: String })
214
- ], KemetIcon.prototype, "family", 2);
215
- __decorateClass([
216
- property({ type: Number })
217
- ], KemetIcon.prototype, "size", 2);
218
- __decorateClass([
219
- property({ type: String })
220
- ], KemetIcon.prototype, "version", 2);
221
- __decorateClass([
222
- property({ type: String, reflect: true })
223
- ], KemetIcon.prototype, "polarity", 2);
224
- __decorateClass([
225
- property({ type: String, reflect: true })
226
- ], KemetIcon.prototype, "dom", 2);
227
- __decorateClass([
228
- state()
229
- ], KemetIcon.prototype, "svg", 2);
230
- __decorateClass([
231
- state()
232
- ], KemetIcon.prototype, "url", 2);
233
- KemetIcon = __decorateClass([
234
- customElement("kemet-icon")
235
- ], KemetIcon);
236
-
237
- // src/elements/tabs/styles.css.ts
238
- import { css as css2 } from "lit";
239
- var styles_css_default2 = css2`:host {
240
30
  --kemet-tabs-ink-size: 6px;
241
31
  --kemet-tabs-ink-radius: 6px;
242
32
  --kemet-tabs-divider-size: 1px;
@@ -454,7 +244,7 @@ var EnumTabsAlign = /* @__PURE__ */ ((EnumTabsAlign2) => {
454
244
  EnumTabsAlign2["End"] = "end";
455
245
  return EnumTabsAlign2;
456
246
  })(EnumTabsAlign || {});
457
- var KemetTabs = class extends LitElement2 {
247
+ var KemetTabs = class extends LitElement {
458
248
  constructor() {
459
249
  super();
460
250
  this.selectedIndex = 0;
@@ -468,9 +258,12 @@ var KemetTabs = class extends LitElement2 {
468
258
  this.hideInk = false;
469
259
  this.overflow = false;
470
260
  this.dom = "initializing";
261
+ this._handleTabKeydown = this.handleTabKeydown.bind(this);
471
262
  this.addEventListener("kemet-tab-selected", this.tabSelectedChange.bind(this));
472
263
  this.addEventListener("kemet-tab-closed", this.handleTabClose.bind(this));
473
- window.addEventListener("resize", this.handleResize.bind(this));
264
+ if (typeof window !== "undefined") {
265
+ window.addEventListener("resize", this.handleResize.bind(this));
266
+ }
474
267
  }
475
268
  firstUpdated() {
476
269
  this.tabs = [];
@@ -478,6 +271,8 @@ var KemetTabs = class extends LitElement2 {
478
271
  this.xDown = null;
479
272
  this.yDown = null;
480
273
  this.links = this.shadowRoot?.getElementById("links");
274
+ this.handleLinksSlotChange();
275
+ this.handlePanelsSlotChange();
481
276
  emitEvent(this, "kemet-tabs-mounted", {
482
277
  bubbles: true,
483
278
  composed: true,
@@ -488,7 +283,7 @@ var KemetTabs = class extends LitElement2 {
488
283
  this.dom = "mounted";
489
284
  }
490
285
  render() {
491
- return html2`
286
+ return html`
492
287
  ${this.makeLeftArrow()}
493
288
  ${this.makeRightArrow()}
494
289
  <div id="links" part="links">
@@ -519,13 +314,15 @@ var KemetTabs = class extends LitElement2 {
519
314
  }
520
315
  }
521
316
  handleLinksSlotChange() {
317
+ this.tabs?.forEach((tab) => tab.removeEventListener("keydown", this._handleTabKeydown));
318
+ this.tabs = [];
522
319
  const tabs = this.querySelectorAll("kemet-tab");
523
320
  let index = 0;
524
321
  tabs.forEach((tab) => {
525
322
  tab.index = index;
526
323
  index += 1;
527
324
  this.tabs = this.tabs.concat(tab);
528
- tab.addEventListener("keydown", (event) => this.handleTabKeydown(event));
325
+ tab.addEventListener("keydown", this._handleTabKeydown);
529
326
  });
530
327
  const firstTab = this.tabs[0];
531
328
  if (firstTab) firstTab.selected = true;
@@ -535,6 +332,7 @@ var KemetTabs = class extends LitElement2 {
535
332
  this.determineOverflow();
536
333
  }
537
334
  handlePanelsSlotChange() {
335
+ this.panels = [];
538
336
  const panels = this.querySelectorAll("kemet-tab-panel");
539
337
  const panelElement = this.shadowRoot?.getElementById("panels");
540
338
  let index = 0;
@@ -600,28 +398,28 @@ var KemetTabs = class extends LitElement2 {
600
398
  return null;
601
399
  }
602
400
  if ((this.placement === "top" || this.placement === "bottom") && this.ink && location === "links") {
603
- return html2`<div part="ink" style="width:${this.ink.width}; transform:translateX(${this.ink.positionX})"></div>`;
401
+ return html`<div part="ink" style="width:${this.ink.width}; transform:translateX(${this.ink.positionX})"></div>`;
604
402
  }
605
403
  if ((this.placement === "left" || this.placement === "right") && this.ink && location === "host") {
606
- return html2`<div part="ink" style="height:${this.ink.height}; transform:translateY(${this.ink.positionY})"></div>`;
404
+ return html`<div part="ink" style="height:${this.ink.height}; transform:translateY(${this.ink.positionY})"></div>`;
607
405
  }
608
406
  return null;
609
407
  }
610
408
  makeDivider() {
611
409
  if (this.divider) {
612
- return html2`<div part="divider"></div>`;
410
+ return html`<div part="divider"></div>`;
613
411
  }
614
412
  return null;
615
413
  }
616
414
  makeLeftArrow() {
617
415
  if (this.overflow) {
618
- return html2`<kemet-icon name='chevron-left' size="20" @click=${() => this.handleLeftArrow()}></kemet-icon>`;
416
+ return html`<kemet-icon name='chevron-left' size="20" @click=${() => this.handleLeftArrow()}></kemet-icon>`;
619
417
  }
620
418
  return null;
621
419
  }
622
420
  makeRightArrow() {
623
421
  if (this.overflow) {
624
- return html2`<kemet-icon name='chevron-right' size="20" @click=${() => this.handleRightArrow()}></kemet-icon>`;
422
+ return html`<kemet-icon name='chevron-right' size="20" @click=${() => this.handleRightArrow()}></kemet-icon>`;
625
423
  }
626
424
  return null;
627
425
  }
@@ -861,66 +659,66 @@ var KemetTabs = class extends LitElement2 {
861
659
  this.yDown = null;
862
660
  }
863
661
  };
864
- KemetTabs.styles = [styles_css_default2];
662
+ KemetTabs.styles = [styles_css_default];
865
663
  __decorateClass([
866
- property2({ type: String, reflect: true })
664
+ property({ type: String, reflect: true })
867
665
  ], KemetTabs.prototype, "selected", 2);
868
666
  __decorateClass([
869
- property2({ type: Number })
667
+ property({ type: Number, reflect: true, attribute: "selected-index" })
870
668
  ], KemetTabs.prototype, "selectedIndex", 2);
871
669
  __decorateClass([
872
- property2({ type: Number })
670
+ property({ type: Number })
873
671
  ], KemetTabs.prototype, "panelPosition", 2);
874
672
  __decorateClass([
875
- property2({ type: String, reflect: true, attribute: "panel-effect" })
673
+ property({ type: String, reflect: true, attribute: "panel-effect" })
876
674
  ], KemetTabs.prototype, "panelEffect", 2);
877
675
  __decorateClass([
878
- property2({ type: Boolean })
676
+ property({ type: Boolean })
879
677
  ], KemetTabs.prototype, "swipe", 2);
880
678
  __decorateClass([
881
- property2({ type: String, reflect: true })
679
+ property({ type: String, reflect: true })
882
680
  ], KemetTabs.prototype, "placement", 2);
883
681
  __decorateClass([
884
- property2({ type: Boolean })
682
+ property({ type: Boolean })
885
683
  ], KemetTabs.prototype, "divider", 2);
886
684
  __decorateClass([
887
- property2({ type: String, reflect: true, attribute: "tabs-align" })
685
+ property({ type: String, reflect: true, attribute: "tabs-align" })
888
686
  ], KemetTabs.prototype, "tabsAlign", 2);
889
687
  __decorateClass([
890
- property2({ type: Object })
688
+ property({ type: Object })
891
689
  ], KemetTabs.prototype, "ink", 2);
892
690
  __decorateClass([
893
- property2({ type: Boolean, attribute: "hide-ink" })
691
+ property({ type: Boolean, attribute: "hide-ink" })
894
692
  ], KemetTabs.prototype, "hideInk", 2);
895
693
  __decorateClass([
896
- property2({ type: Boolean, reflect: true })
694
+ property({ type: Boolean, reflect: true })
897
695
  ], KemetTabs.prototype, "overflow", 2);
898
696
  __decorateClass([
899
- property2({ type: String, reflect: true })
697
+ property({ type: String, reflect: true })
900
698
  ], KemetTabs.prototype, "polarity", 2);
901
699
  __decorateClass([
902
- property2({ type: String, reflect: true })
700
+ property({ type: String, reflect: true })
903
701
  ], KemetTabs.prototype, "dom", 2);
904
702
  __decorateClass([
905
- state2()
703
+ state()
906
704
  ], KemetTabs.prototype, "tabs", 2);
907
705
  __decorateClass([
908
- state2()
706
+ state()
909
707
  ], KemetTabs.prototype, "panels", 2);
910
708
  __decorateClass([
911
- state2()
709
+ state()
912
710
  ], KemetTabs.prototype, "xDown", 2);
913
711
  __decorateClass([
914
- state2()
712
+ state()
915
713
  ], KemetTabs.prototype, "yDown", 2);
916
714
  __decorateClass([
917
- state2()
715
+ state()
918
716
  ], KemetTabs.prototype, "links", 2);
919
717
  __decorateClass([
920
718
  query("#panels")
921
719
  ], KemetTabs.prototype, "panelsElement", 2);
922
720
  KemetTabs = __decorateClass([
923
- customElement2("kemet-tabs")
721
+ customElement("kemet-tabs")
924
722
  ], KemetTabs);
925
723
  export {
926
724
  EnumPanelEffect,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/tabs/index.ts","../../../src/utilities/events.ts","../../../src/elements/icon/index.ts","../../../src/elements/icon/styles.css.ts","../../../src/elements/tabs/styles.css.ts"],"sourcesContent":["/* eslint-disable no-case-declarations */\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/events';\nimport { EnumDirections } from '../../utilities/constants';\nimport type KemetTab from '../tab';\nimport type KemetTabPanel from '../tab-panel';\nimport '../icon';\nimport styles from './styles.css.ts';\n\n\ninterface InterfaceLink {\n width: string;\n height: string;\n positionX: string;\n positionY: string;\n}\n\nexport interface InterfaceTabsDetails {\n element: KemetTabs;\n selectedName: string;\n selectedIndex: number;\n}\n\nexport enum EnumPanelEffect {\n None = 'none',\n Slide = 'slide',\n Fade = 'fade',\n Stacked = 'stacked'\n}\n\n\nexport enum EnumTabsAlign {\n Center = 'center',\n Between = 'between',\n Around = 'around',\n Evenly = 'evenly',\n Start = 'start',\n End = 'end'\n}\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-tabs\n * @summary A group of tabs and panels.\n *\n * @prop {string} selected - The selected tab by name\n * @prop {number} selectedIndex - The selected tab by index\n * @prop {number} panelPosition - Positions the current panel\n * @prop {string} panelEffect - The transition effect for panels\n * @prop {boolean} swipe - Determines whether to enable swipe behavior\n * @prop {TypeDirection} placement - Places the tabs to the top, right, bottom, or left\n * @prop {boolean} divider - Determines whether to show a divider line\n * @prop {TypeTabsAlign} tabsAlign - Spacing alignment of the tabs\n * @prop {object} ink - An object that contains information about the ink\n * @prop {boolean} hideInk - Determines whether to hide the ink\n * @prop {boolean} overflow - Is true when the space of the tabs is larger than it's container\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @slot tab - Place the tabs here.\n * @slot panel - Place the panels here.\n *\n * @csspart links - The container for the tablist.\n * @csspart tablist - Contains the tabs.\n * @csspart panels - Contains the panels.\n * @csspart ink - The ink element.\n * @csspart divider - The divider element.\n *\n * @cssproperty --kemet-tabs-ink-size - The thickness of the ink.\n * @cssproperty --kemet-tabs-ink-radius - The radius on the ink.\n * @cssproperty --kemet-tabs-ink-color - The color of the ink.\n * @cssproperty --kemet-tabs-divider-size - The thickness of the divider.\n * @cssproperty --kemet-tabs-divider-color - The color of the divider.\n * @cssproperty --kemet-tabs-transition-speed - The transition speed of the panels.\n * @cssproperty --kemet-tabs-spacer - The space between tabs and panels.\n *\n * @event kemet-tabs-change - Fires when a tab is changed\n *\n * @fires kemet-tabs-mounted - Fired when the tabs are mounted to the DOM\n * @detail {HTMLElement} element - The tabs element\n *\n */\n\n@customElement('kemet-tabs')\nexport default class KemetTabs extends LitElement {\n static styles = [styles];\n\n @property({ type: String, reflect: true })\n selected?: string;\n\n @property({ type: Number })\n selectedIndex: number = 0;\n\n @property({ type: Number })\n panelPosition: number = 0;\n\n @property({ type: String, reflect: true, attribute: 'panel-effect' })\n panelEffect: EnumPanelEffect = EnumPanelEffect.None;\n\n @property({ type: Boolean })\n swipe: boolean = false;\n\n @property({ type: String, reflect: true })\n placement: EnumDirections = EnumDirections.Top;\n\n @property({ type: Boolean })\n divider: boolean = false;\n\n @property({ type: String, reflect: true, attribute: 'tabs-align' })\n tabsAlign: EnumTabsAlign = EnumTabsAlign.Center;\n\n @property({ type: Object })\n ink: InterfaceLink = { width: '0', height: '0', positionX: '0', positionY: '0' };\n\n @property({ type: Boolean, attribute: 'hide-ink' })\n hideInk: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n overflow: boolean = false;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n @state()\n tabs!: KemetTab[];\n\n @state()\n panels!: KemetTabPanel[];\n\n @state()\n xDown!: number | null;\n\n @state()\n yDown!: number | null;\n\n @state()\n links!: HTMLElement;\n\n @query('#panels')\n panelsElement!: HTMLElement;\n\n constructor() {\n super();\n\n this.addEventListener('kemet-tab-selected', this.tabSelectedChange.bind(this));\n this.addEventListener('kemet-tab-closed', this.handleTabClose.bind(this));\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n firstUpdated() {\n // standard properties\n this.tabs = [];\n this.panels = [];\n this.xDown = null;\n this.yDown = null;\n\n this.links = this.shadowRoot?.getElementById('links') as HTMLElement;\n\n emitEvent(this, 'kemet-tabs-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`\n ${this.makeLeftArrow()}\n ${this.makeRightArrow()}\n <div id=\"links\" part=\"links\">\n <div part='tablist' role=\"tablist\">\n <slot name=\"tab\" @slotchange=${() => this.handleLinksSlotChange()}></slot>\n </div>\n ${this.makeInk('links')}\n </div>\n ${this.makeInk('host')}\n ${this.makeDivider()}\n <section id=\"panels\" part=\"panels\" style=\"transform:translateX(${this.panelPosition}px);\">\n <div>\n <slot name=\"panel\" @slotchange=${() => this.handlePanelsSlotChange()}></slot>\n </div>\n </section>\n `;\n }\n\n updated(prevProps: Map<string, never>) {\n this.determineFade();\n this.determineStacked();\n\n if (prevProps.get('selected') && prevProps.get('selected') !== this.selected) {\n this.selectTab();\n this.selectPanel();\n }\n\n if (typeof prevProps.get('selectedIndex') === 'number' && prevProps.get('selectedIndex') !== this.selected) {\n this.selectTab();\n this.selectPanel();\n }\n }\n\n handleLinksSlotChange() {\n const tabs = this.querySelectorAll('kemet-tab');\n let index = 0;\n\n tabs.forEach((tab: KemetTab) => {\n // give each tab an index to select by if link/panel is not used\n tab.index = index;\n index += 1;\n\n // store the list of tabs\n this.tabs = this.tabs.concat(tab);\n\n // add keyboard support\n tab.addEventListener('keydown', event => this.handleTabKeydown(event));\n });\n\n // default to the first tab/panel selected\n const firstTab = this.tabs[0];\n if (firstTab) firstTab.selected = true;\n\n setTimeout(() => {\n this.selectTab();\n }, 1);\n this.determineOverflow();\n }\n\n handlePanelsSlotChange() {\n const panels = this.querySelectorAll('kemet-tab-panel');\n const panelElement = this.shadowRoot?.getElementById('panels');\n let index = 0;\n\n panels.forEach((panel: KemetTabPanel) => {\n // give each panel an index to select by if link/panel is not used\n panel.index = index;\n index += 1;\n\n // store the list of panels\n this.panels = this.panels.concat(panel);\n });\n\n // default to the first tab/panel selected\n if (this.panels.length > 0) {\n const firstPanel = this.panels[0];\n if (firstPanel) firstPanel.selected = true;\n }\n\n // add swipe support\n if (this.swipe) {\n panelElement?.addEventListener('touchstart', event => this.handleTouchStart(event), false);\n panelElement?.addEventListener('touchmove', event => this.handleTouchMove(event), false);\n }\n\n this.selectPanel();\n }\n\n handleLeftArrow() {\n const selectedElement = this.tabs.find(tab => tab.selected) || this.tabs[0];\n if (!selectedElement) return;\n const previousElement = selectedElement.previousElementSibling as KemetTab;\n const selectedIndex = this.tabs.findIndex(tab => tab.selected);\n\n if (this.selected) {\n this.selected = previousElement ? previousElement.link : selectedElement.link;\n } else {\n this.selectedIndex = selectedIndex > 0 ? selectedIndex - 1 : 0;\n }\n\n if (previousElement) {\n this.links.scrollLeft = previousElement.offsetLeft - 20;\n }\n\n this.selectTab();\n this.selectPanel();\n }\n\n handleRightArrow() {\n const selectedElement = this.tabs.find(tab => tab.selected) || this.tabs[this.tabs.length - 1];\n if (!selectedElement) return;\n const nextElement = selectedElement.nextElementSibling as KemetTab;\n const selectedIndex = this.tabs.findIndex(tab => tab.selected);\n\n if (this.selected) {\n this.selected = nextElement ? nextElement.link : selectedElement.link;\n } else {\n this.selectedIndex = selectedIndex < this.tabs.length - 1\n ? selectedIndex + 1\n : this.tabs.length - 1;\n }\n\n if (nextElement) {\n this.links.scrollLeft = nextElement.offsetLeft - 20;\n }\n\n this.selectTab();\n this.selectPanel();\n }\n\n handleTabClose(event: Event) {\n const tab = (event as CustomEvent).detail.element;\n const panel = this.panels[tab.index];\n\n if (this.tabs[0]) {\n this.selected = this.tabs[0].link;\n }\n this.selectedIndex = 0;\n\n panel?.remove();\n tab.remove();\n }\n\n makeInk(location: string) {\n if (this.hideInk) {\n return null;\n }\n\n if ((this.placement === 'top' || this.placement === 'bottom') && this.ink && location === 'links') {\n return html`<div part=\"ink\" style=\"width:${this.ink.width}; transform:translateX(${this.ink.positionX})\"></div>`;\n }\n\n if ((this.placement === 'left' || this.placement === 'right') && this.ink && location === 'host') {\n return html`<div part=\"ink\" style=\"height:${this.ink.height}; transform:translateY(${this.ink.positionY})\"></div>`;\n }\n\n return null;\n }\n\n makeDivider() {\n if (this.divider) {\n return html`<div part=\"divider\"></div>`;\n }\n\n return null;\n }\n\n makeLeftArrow() {\n if (this.overflow) {\n return html`<kemet-icon name='chevron-left' size=\"20\" @click=${() => this.handleLeftArrow()}></kemet-icon>`;\n }\n\n return null;\n }\n\n makeRightArrow() {\n if (this.overflow) {\n return html`<kemet-icon name='chevron-right' size=\"20\" @click=${() => this.handleRightArrow()}></kemet-icon>`;\n }\n\n return null;\n }\n\n selectTab() {\n const marginLeft = this.links ? parseInt(window.getComputedStyle(this.links).marginLeft.replace('px', ''), 10) : 0;\n const overflowOffset = this.overflow ? marginLeft : 0;\n\n // if the user uses the selected attribute select by it\n if (this.selected) {\n this.tabs.forEach((tab) => {\n const tabName = tab.getAttribute('link');\n\n if (tabName === this.selected) {\n tab.selected = true;\n this.selected = tabName;\n\n this.ink = {\n width: `${tab.offsetWidth}px`,\n height: `${tab.offsetHeight}px`,\n positionX: `${tab.offsetLeft - overflowOffset}px`,\n positionY: `${tab.offsetTop}px`,\n };\n\n this.links.scrollLeft = tab.offsetLeft - overflowOffset;\n } else {\n tab.selected = false;\n }\n });\n\n // otherwise select by index\n } else {\n this.tabs.forEach((tab) => {\n if (this.selectedIndex === tab.index) {\n tab.selected = true;\n\n this.ink = {\n width: `${tab.offsetWidth}px`,\n height: `${tab.offsetHeight}px`,\n positionX: `${tab.offsetLeft - overflowOffset}px`,\n positionY: `${tab.offsetTop}px`,\n };\n\n this.links.scrollLeft = tab.offsetLeft - overflowOffset;\n } else {\n tab.selected = false;\n }\n });\n }\n }\n\n selectPanel() {\n // if the user uses the selected attribute select by it\n if (this.selected) {\n this.panels.forEach((panel) => {\n const panelName = panel.getAttribute('panel');\n\n if (this.panelEffect === 'fade' && panel.index !== 0) {\n panel.classList.add('push');\n }\n\n if (this.placement === 'left' || this.placement === 'right') {\n panel.classList.add('vertical');\n }\n\n if (panelName === this.selected) {\n panel.selected = true;\n this.animatePanel(panelName, null);\n } else {\n panel.selected = false;\n }\n });\n\n // otherwise select by index\n } else {\n this.panels.forEach((panel) => {\n if (this.panelEffect === 'fade' && panel.index !== 0) {\n panel.classList.add('push');\n }\n\n if (this.placement === 'left' || this.placement === 'right') {\n panel.classList.add('vertical');\n }\n\n if (this.selectedIndex === panel.index) {\n panel.selected = true;\n this.animatePanel(null, panel.index);\n } else {\n panel.selected = false;\n }\n });\n }\n }\n\n dispatchTabChange() {\n emitEvent(this, 'kemet-tabs-change', {\n element: this,\n selectedName: this.selected,\n selectedIndex: this.selectedIndex\n });\n }\n\n tabSelectedChange(event: Event) {\n if (this.selected) {\n // if selected has been set, use the string attribute\n this.selected = (event as CustomEvent).detail.element.getAttribute('link');\n } else {\n // otherwise use the generated index\n this.selectedIndex = (event as CustomEvent).detail.element.index;\n }\n\n this.selectTab();\n this.selectPanel();\n this.dispatchTabChange();\n }\n\n determineFade() {\n this.panels.forEach((panel) => {\n // add fade class if panel effect is fade\n if (this.panelEffect === 'fade') panel.classList.add('fade');\n });\n }\n\n determineStacked() {\n this.panels.forEach((panel) => {\n // add fade class if panel effect is fade\n if (this.panelEffect === 'stacked') panel.classList.add('stacked');\n });\n }\n\n determineOverflow() {\n const tabsContainerWidth = this.offsetWidth;\n const tabElements = this.querySelectorAll('kemet-tab');\n\n let totalTabsWidth = 0;\n\n tabElements.forEach((tab) => {\n totalTabsWidth += tab.offsetWidth;\n });\n\n this.overflow = totalTabsWidth > tabsContainerWidth && (this.placement === 'top' || this.placement === 'bottom');\n }\n\n handleResize() {\n if (this.tabs && this.panels) {\n const marginLeft = this.links ? parseInt(window.getComputedStyle(this.links).marginLeft.replace('px', ''), 10) : 0;\n const overflowOffset = this.overflow ? marginLeft : 0;\n const selectedElement = this.tabs.find(tab => tab.selected);\n\n if (selectedElement) {\n this.ink = {\n width: `${selectedElement.offsetWidth}px`,\n height: `${selectedElement.offsetHeight}px`,\n positionX: `${selectedElement.offsetLeft - overflowOffset}px`,\n positionY: `${selectedElement.offsetTop}px`,\n };\n }\n\n this.determineOverflow();\n\n if (this.selected) {\n this.animatePanel(this.selected, null);\n } else {\n this.animatePanel(null, this.selectedIndex);\n }\n }\n }\n\n animatePanel(panelName: string | null, panelIndex: number | null) {\n if (panelName) {\n const selectedPanel = this.querySelector(`[panel=\"${panelName}\"]`) as KemetTabPanel;\n if (selectedPanel) this.panelPosition = selectedPanel.offsetLeft * -1;\n } else {\n if (panelIndex !== null && this.panels[panelIndex]) this.panelPosition = this.panels[panelIndex].offsetLeft * -1;\n }\n }\n\n handleTabKeydown(event: KeyboardEvent) {\n if (this.selected) {\n switch (event.key) {\n case 'Home':\n if (this.tabs[0]) {\n this.selected = this.tabs[0].getAttribute('link') ?? undefined;\n }\n break;\n case 'End':\n const lastTab = this.tabs[this.tabs.length - 1];\n if (lastTab) {\n this.selected = lastTab.getAttribute('link') ?? undefined;\n }\n break;\n case 'ArrowRight':\n const nextLinkElement = this.querySelector('kemet-tab[selected]')?.nextElementSibling;\n const nextLink = nextLinkElement ? nextLinkElement.getAttribute('link') : false;\n\n if (nextLink) {\n this.selected = nextLink;\n }\n break;\n case 'ArrowLeft':\n const previousLinkElement = this.querySelector('kemet-tab[selected]')?.previousElementSibling;\n const previousLink = previousLinkElement ? previousLinkElement.getAttribute('link') : false;\n\n if (previousLink) {\n this.selected = previousLink;\n }\n break;\n default: break;\n }\n\n const tabToFocus = this.tabs.find(tab => tab.link === this.selected);\n if (tabToFocus) tabToFocus.focus();\n } else {\n switch (event.key) {\n case 'Home':\n this.selectedIndex = 0;\n break;\n case 'End':\n this.selectedIndex = this.tabs.length - 1;\n break;\n case 'ArrowRight':\n if (this.selectedIndex < this.tabs.length - 1) {\n this.selectedIndex += 1;\n } else {\n this.selectedIndex = this.tabs.length - 1;\n }\n break;\n case 'ArrowLeft':\n if (this.selectedIndex < 1) {\n this.selectedIndex = 0;\n } else {\n this.selectedIndex -= 1;\n }\n break;\n default: break;\n }\n\n if (this.tabs[this.selectedIndex]) {\n this.tabs[this.selectedIndex]?.focus();\n }\n }\n }\n\n handleTouchStart(event: TouchEvent) {\n this.xDown = event.touches[0]?.clientX ?? 0;\n this.yDown = event.touches[0]?.clientY ?? 0;\n }\n\n handleTouchMove(event: TouchEvent) {\n if (!this.xDown || !this.yDown) {\n return;\n }\n\n const xUp = event.touches[0]?.clientX ?? 0;\n const yUp = event.touches[0]?.clientY ?? 0;\n const xDiff = this.xDown - xUp;\n const yDiff = this.yDown - yUp;\n\n const nextElement = this.querySelector('kemet-tab-panel[selected]')?.nextElementSibling;\n const next = nextElement ? nextElement.getAttribute('panel') : false;\n const previousElement = this.querySelector('kemet-tab-panel[selected]')?.previousElementSibling;\n const previous = previousElement ? previousElement.getAttribute('panel') : false;\n\n if (Math.abs(xDiff) > Math.abs(yDiff)) {\n if (xDiff > 0) {\n if (this.selected) {\n if (next) this.selected = next;\n } else {\n if (this.selectedIndex < this.tabs.length) this.selectedIndex += 1;\n }\n } else {\n if (this.selected) {\n if (previous) this.selected = previous;\n } else {\n if (this.selectedIndex > 0) this.selectedIndex -= 1;\n }\n }\n\n this.selectTab();\n this.selectPanel();\n }\n\n this.xDown = null;\n this.yDown = null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tabs': KemetTabs\n }\n}\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n","import { html, HTMLTemplateResult, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { isTemplateResult } from 'lit/directive-helpers.js';\nimport { emitEvent } from '../../utilities/events';\nimport styles from './styles.css.ts';\n\nconst CACHEABLE_ERROR = Symbol();\nconst RETRYABLE_ERROR = Symbol();\ntype SVGResult = HTMLTemplateResult | SVGSVGElement | typeof RETRYABLE_ERROR | typeof CACHEABLE_ERROR;\n\nlet parser: DOMParser;\nconst iconCache = new Map<string, Promise<SVGResult>>();\n\n// Request queue with concurrency limit\nconst MAX_CONCURRENT_REQUESTS = 10;\nconst requestQueue: Array<() => void> = [];\nlet activeRequests = 0;\n\nfunction queueRequest(callback: () => void) {\n if (activeRequests < MAX_CONCURRENT_REQUESTS) {\n activeRequests++;\n callback();\n } else {\n requestQueue.push(callback);\n }\n}\n\nfunction requestComplete() {\n activeRequests--;\n if (requestQueue.length > 0) {\n const nextRequest = requestQueue.shift();\n if (nextRequest) {\n activeRequests++;\n nextRequest();\n }\n }\n}\n\nexport enum EnumLibrary {\n FONTAWESOME = 'fontawesome',\n BOOTSTRAP = 'bootstrap',\n}\n\n/**\n * @since 5.0.0\n * @status stable\n *\n * @tagname kemet-icon\n * @summary An element that represents an icon from a predefined set of open sourced icons.\n *\n * @prop {string} name - The name of the icon to reference.\n * @prop {string} library - The library of icons to use. Values include: (bootstrap | fontawesome)\n * @prop {string} family - The family of icons to use. The family is relative to the library being used. Font awesome values include: (regular | solid | brand)\n * @prop {string} version - The version of the icon library to use. Use latest to grab the most recent version.\n * @prop {number} size - The width and height of the icon in pixels.\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @fires kemet-icon-mounted - Fired when the icon is mounted to the DOM\n * @detail {HTMLElement} element - The icon element\n *\n */\n\n@customElement('kemet-icon')\nexport default class KemetIcon extends LitElement {\n static styles = [styles];\n\n @property({ type: String })\n name: string = 'house';\n\n @property({ type: String })\n library: string = 'bootstrap';\n\n @property({ type: String })\n family: string = 'regular';\n\n @property({ type: Number })\n size: number = 16;\n\n @property({ type: String })\n version?: string;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n /** @internal */\n @state()\n private svg: SVGElement | HTMLTemplateResult | null = null;\n\n /** @internal */\n @state()\n private url: string = 'https://unpkg.com/bootstrap-icons@latest/icons';\n\n /** @internal */\n private isVisible: boolean = false;\n\n connectedCallback() {\n super.connectedCallback();\n // Load icon when connected to DOM\n this.updateUrl();\n if (!this.svg) {\n this.isVisible = true;\n this.setIcon();\n }\n }\n\n updated() {\n this.updateUrl();\n this.updateSize();\n }\n\n firstUpdated() {\n emitEvent(this, 'kemet-icon-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n // Return the svg if it's loaded, otherwise show placeholder\n if (this.svg) {\n return this.svg;\n }\n\n // If not loaded, trigger loading\n if (!this.isVisible) {\n this.isVisible = true;\n this.setIcon();\n }\n\n return html`<svg part=\"svg\" width=\"${this.size}\" height=\"${this.size}\" viewBox=\"0 0 16 16\"></svg>`;\n }\n\n /** Public method to force icon loading */\n public loadIcon() {\n this.isVisible = true;\n this.setIcon();\n }\n\n async setIcon() {\n if (!this.isVisible) return;\n\n let iconResolver = iconCache.get(`${this.family}/${this.name}`);\n\n if (!iconResolver) {\n iconResolver = this.resolveIcon();\n iconCache.set(`${this.family}/${this.name}`, iconResolver);\n }\n\n const svg = await iconResolver;\n\n if (svg === RETRYABLE_ERROR) {\n iconCache.delete(`${this.family}/${this.name}`);\n }\n\n if (isTemplateResult(svg)) {\n this.svg = svg;\n } else if (svg instanceof SVGSVGElement) {\n // Clone the SVG so each icon instance gets its own copy\n this.svg = svg.cloneNode(true) as SVGSVGElement;\n }\n }\n\n private updateUrl() {\n switch (this.library) {\n case EnumLibrary.FONTAWESOME:\n this.version = this.version || '7.3.1';\n this.url = `https://unpkg.com/@fortawesome/fontawesome-free@${this.version}/svgs`;\n break;\n case EnumLibrary.BOOTSTRAP:\n this.version = this.version || '1.11.3';\n this.url = `https://unpkg.com/bootstrap-icons@${this.version}/icons`;\n break;\n }\n }\n\n private async resolveIcon(): Promise<SVGResult> {\n return new Promise((resolve) => {\n queueRequest(async () => {\n let fileData: Response;\n let fetchURL: string = `${this.url}/${this.family}/${this.name}.svg`;\n\n switch (this.library) {\n case EnumLibrary.FONTAWESOME:\n fetchURL = `${this.url}/${this.family}/${this.name}.svg`;\n break;\n case EnumLibrary.BOOTSTRAP:\n fetchURL = `${this.url}/${this.name}.svg`;\n break;\n }\n\n try {\n fileData = await fetch(fetchURL);\n if (!fileData.ok) {\n requestComplete();\n resolve(fileData.status === 410 ? CACHEABLE_ERROR : RETRYABLE_ERROR);\n return;\n }\n } catch {\n requestComplete();\n resolve(RETRYABLE_ERROR);\n return;\n }\n\n try {\n const div = document.createElement('div');\n div.innerHTML = await fileData.text();\n\n const svg = div.firstElementChild;\n if (svg?.tagName?.toLowerCase() !== 'svg') {\n requestComplete();\n resolve(CACHEABLE_ERROR);\n return;\n }\n\n if (!parser) parser = new DOMParser();\n const doc = parser.parseFromString(svg.outerHTML, 'text/html');\n\n const svgEl = doc.body.querySelector('svg');\n if (!svgEl) {\n requestComplete();\n resolve(CACHEABLE_ERROR);\n return;\n }\n\n svgEl.part.add('svg');\n svgEl.setAttribute('width', `${this.size}px`);\n svgEl.setAttribute('height', `${this.size}px`);\n\n requestComplete();\n resolve(document.adoptNode(svgEl));\n } catch {\n requestComplete();\n resolve(CACHEABLE_ERROR);\n }\n });\n });\n }\n\n private updateSize() {\n if (this.svg) {\n const svg = this.svg as SVGElement;\n svg.setAttribute('width', `${this.size}px`);\n svg.setAttribute('height', `${this.size}px`);\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-icon': KemetIcon\n }\n}\n","import { css } from 'lit';\n\nexport default css`:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n}\n`;\n","import { css } from 'lit';\n\nexport default css`:host {\n --kemet-tabs-ink-size: 6px;\n --kemet-tabs-ink-radius: 6px;\n --kemet-tabs-divider-size: 1px;\n --kemet-tabs-spacer: 1rem;\n --kemet-tabs-transition-speed: 0.5s;\n --kemet-tabs-divider-color: var(--kemet-color-font-base);\n --kemet-tabs-ink-color: var(--kemet-color-font-active);\n\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n}\n\n:host([placement='bottom']) {\n flex-direction: column-reverse;\n}\n\n:host([placement='left']) {\n flex-direction: row;\n}\n\n:host([placement='right']) {\n flex-direction: row-reverse;\n}\n\n:host([placement='left']),\n:host([placement='right']) {\n overflow: unset;\n}\n\n/* panels */\n\n[part='panels'] > div {\n display: flex;\n}\n\n:host([panel-effect='slide']) [part='panels'] {\n transition: transform var(--kemet-tabs-transition-speed) linear;\n}\n\n:host([panel-effect='fade']) [part='panels'] {\n transform: none !important;\n}\n\n:host([panel-effect='fade']) [part='panels'] > div {\n flex-flow: row nowrap;\n}\n\n:host([placement='left']) [part='panels'],\n:host([placement='right']) [part='panels'] {\n transform: none !important;\n position: relative;\n width: 100%;\n}\n\n:host([placement='top']) [part='panels'] > div {\n margin-top: var(--kemet-tabs-spacer);\n}\n\n:host([placement='right']) [part='panels'] > div {\n margin-right: var(--kemet-tabs-spacer);\n}\n\n:host([placement='bottom']) [part='panels'] > div {\n margin-bottom: var(--kemet-tabs-spacer);\n}\n\n:host([placement='left']) [part='panels'] > div {\n margin-left: var(--kemet-tabs-spacer);\n}\n\n/* tablist */\n\n[part='tablist'] {\n display: flex;\n}\n\n:host([placement='left']) [part='tablist'],\n:host([placement='right']) [part='tablist'] {\n display: flex;\n flex-direction: column;\n align-items: start;\n}\n\n:host([tabs-align='center']) [part='tablist'] {\n justify-content: center;\n}\n\n:host([tabs-align='between']) [part='tablist'] {\n justify-content: space-between;\n}\n\n:host([tabs-align='evenly']) [part='tablist'] {\n justify-content: space-evenly;\n}\n\n:host([tabs-align='around']) [part='tablist'] {\n justify-content: space-around\n}\n\n:host([tabs-align='start']) [part='tablist'] {\n justify-content: flex-start;\n}\n\n:host([tabs-align='end']) [part='tablist'] {\n justify-content: flex-end;\n}\n\n:host([overflow]) [part='tablist'] {\n justify-content: start;\n}\n\n/* divider */\n\n[part='divider'] {\n height: var(--kemet-tabs-divider-size);\n background-color: var(--kemet-tabs-divider-color);\n}\n\n:host([placement='left']) [part='divider'],\n:host([placement='right']) [part='divider'] {\n width: var(--kemet-tabs-divider-size);\n height: auto;\n}\n\n/* ink */\n\n[part='ink'] {\n height: var(--kemet-tabs-ink-size);\n border-top-left-radius: var(--kemet-tabs-ink-radius);\n border-top-right-radius: var(--kemet-tabs-ink-radius);\n transition: all 300ms ease;\n background-color: var(--kemet-tabs-ink-color);\n}\n\n:host([placement='right']) [part='ink'] {\n width: var(--kemet-tabs-ink-size);\n border-top-right-radius: var(--kemet-tabs-ink-radius);\n border-bottom-right-radius: var(--kemet-tabs-ink-radius);\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n:host([placement='left']) [part='ink'] {\n width: var(--kemet-tabs-ink-size);\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n border-top-left-radius: var(--kemet-tabs-ink-radius);\n border-bottom-left-radius: var(--kemet-tabs-ink-radius);\n}\n\n:host([placement='bottom']) [part='ink'] {\n border-top-right-radius: 0px;\n border-bottom-right-radius: var(--kemet-tabs-ink-radius);\n border-top-left-radius: 0px;\n border-bottom-left-radius: var(--kemet-tabs-ink-radius);\n}\n\n/* links */\n\n:host([overflow]) [part='links'] {\n overflow-x: auto;\n margin: 0 2rem;\n scroll-behavior: smooth;\n}\n\n:host([overflow]) [part='links']::-webkit-scrollbar {\n display: none;\n width: 0;\n background: transparent;\n}\n\n:host([placement='bottom']) [part='links'] {\n display: flex;\n flex-direction: column-reverse;\n}\n\n/* icon */\n\n[icon*='chevron'] {\n cursor: pointer;\n position: absolute;\n top: 1rem;\n}\n\n[icon='chevron-left'] {\n left: 0;\n}\n\n[icon='chevron-right'] {\n right: 0;\n}\n\n:host([placement='bottom']) [icon*='chevron'] {\n top: auto;\n bottom: 1rem;\n}\n`;\n"],"mappings":"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","names":["LitElement","html","customElement","property","state","css","styles_css_default","EnumPanelEffect","EnumTabsAlign","LitElement","html","styles_css_default","property","state","customElement"]}
1
+ {"version":3,"sources":["../../../src/elements/tabs/index.ts","../../../src/utilities/decorators.ts","../../../src/utilities/events.ts","../../../src/elements/tabs/styles.css.ts"],"sourcesContent":["/* eslint-disable no-case-declarations */\nimport { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, query, state } from '../../utilities/decorators';\nimport { emitEvent } from '../../utilities/events';\nimport { EnumDirections } from '../../utilities/constants';\nimport type KemetTab from '../tab';\nimport type KemetTabPanel from '../tab-panel';\nimport styles from './styles.css.ts';\n\n\ninterface InterfaceLink {\n width: string;\n height: string;\n positionX: string;\n positionY: string;\n}\n\nexport interface InterfaceTabsDetails {\n element: KemetTabs;\n selectedName: string;\n selectedIndex: number;\n}\n\nexport enum EnumPanelEffect {\n None = 'none',\n Slide = 'slide',\n Fade = 'fade',\n Stacked = 'stacked'\n}\n\n\nexport enum EnumTabsAlign {\n Center = 'center',\n Between = 'between',\n Around = 'around',\n Evenly = 'evenly',\n Start = 'start',\n End = 'end'\n}\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-tabs\n * @summary A group of tabs and panels.\n * @ssrsafe yes\n *\n * @prop {string} selected - The selected tab by name\n * @prop {number} selectedIndex - The selected tab by index\n * @prop {number} panelPosition - Positions the current panel\n * @prop {string} panelEffect - The transition effect for panels\n * @prop {boolean} swipe - Determines whether to enable swipe behavior\n * @prop {TypeDirection} placement - Places the tabs to the top, right, bottom, or left\n * @prop {boolean} divider - Determines whether to show a divider line\n * @prop {TypeTabsAlign} tabsAlign - Spacing alignment of the tabs\n * @prop {object} ink - An object that contains information about the ink\n * @prop {boolean} hideInk - Determines whether to hide the ink\n * @prop {boolean} overflow - Is true when the space of the tabs is larger than it's container\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @slot tab - Place the tabs here.\n * @slot panel - Place the panels here.\n *\n * @csspart links - The container for the tablist.\n * @csspart tablist - Contains the tabs.\n * @csspart panels - Contains the panels.\n * @csspart ink - The ink element.\n * @csspart divider - The divider element.\n *\n * @cssproperty --kemet-tabs-ink-size - The thickness of the ink.\n * @cssproperty --kemet-tabs-ink-radius - The radius on the ink.\n * @cssproperty --kemet-tabs-ink-color - The color of the ink.\n * @cssproperty --kemet-tabs-divider-size - The thickness of the divider.\n * @cssproperty --kemet-tabs-divider-color - The color of the divider.\n * @cssproperty --kemet-tabs-transition-speed - The transition speed of the panels.\n * @cssproperty --kemet-tabs-spacer - The space between tabs and panels.\n *\n * @event kemet-tabs-change - Fires when a tab is changed\n *\n * @fires kemet-tabs-mounted - Fired when the tabs are mounted to the DOM\n * @detail {HTMLElement} element - The tabs element\n *\n */\n\n@customElement('kemet-tabs')\nexport default class KemetTabs extends LitElement {\n static styles = [styles];\n\n @property({ type: String, reflect: true })\n selected?: string;\n\n @property({ type: Number, reflect: true, attribute: 'selected-index' })\n selectedIndex: number = 0;\n\n @property({ type: Number })\n panelPosition: number = 0;\n\n @property({ type: String, reflect: true, attribute: 'panel-effect' })\n panelEffect: EnumPanelEffect = EnumPanelEffect.None;\n\n @property({ type: Boolean })\n swipe: boolean = false;\n\n @property({ type: String, reflect: true })\n placement: EnumDirections = EnumDirections.Top;\n\n @property({ type: Boolean })\n divider: boolean = false;\n\n @property({ type: String, reflect: true, attribute: 'tabs-align' })\n tabsAlign: EnumTabsAlign = EnumTabsAlign.Center;\n\n @property({ type: Object })\n ink: InterfaceLink = { width: '0', height: '0', positionX: '0', positionY: '0' };\n\n @property({ type: Boolean, attribute: 'hide-ink' })\n hideInk: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n overflow: boolean = false;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n @state()\n tabs!: KemetTab[];\n\n @state()\n panels!: KemetTabPanel[];\n\n @state()\n xDown!: number | null;\n\n @state()\n yDown!: number | null;\n\n @state()\n links!: HTMLElement;\n\n @query('#panels')\n panelsElement!: HTMLElement;\n\n private _handleTabKeydown = this.handleTabKeydown.bind(this);\n\n constructor() {\n super();\n\n this.addEventListener('kemet-tab-selected', this.tabSelectedChange.bind(this));\n this.addEventListener('kemet-tab-closed', this.handleTabClose.bind(this));\n\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n }\n\n firstUpdated() {\n // standard properties\n this.tabs = [];\n this.panels = [];\n this.xDown = null;\n this.yDown = null;\n\n this.links = this.shadowRoot?.getElementById('links') as HTMLElement;\n\n this.handleLinksSlotChange();\n this.handlePanelsSlotChange();\n\n emitEvent(this, 'kemet-tabs-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`\n ${this.makeLeftArrow()}\n ${this.makeRightArrow()}\n <div id=\"links\" part=\"links\">\n <div part='tablist' role=\"tablist\">\n <slot name=\"tab\" @slotchange=${() => this.handleLinksSlotChange()}></slot>\n </div>\n ${this.makeInk('links')}\n </div>\n ${this.makeInk('host')}\n ${this.makeDivider()}\n <section id=\"panels\" part=\"panels\" style=\"transform:translateX(${this.panelPosition}px);\">\n <div>\n <slot name=\"panel\" @slotchange=${() => this.handlePanelsSlotChange()}></slot>\n </div>\n </section>\n `;\n }\n\n updated(prevProps: Map<string, never>) {\n this.determineFade();\n this.determineStacked();\n\n if (prevProps.get('selected') && prevProps.get('selected') !== this.selected) {\n this.selectTab();\n this.selectPanel();\n }\n\n if (typeof prevProps.get('selectedIndex') === 'number' && prevProps.get('selectedIndex') !== this.selected) {\n this.selectTab();\n this.selectPanel();\n }\n }\n\n handleLinksSlotChange() {\n this.tabs?.forEach((tab) => tab.removeEventListener('keydown', this._handleTabKeydown));\n this.tabs = [];\n\n const tabs = this.querySelectorAll('kemet-tab');\n let index = 0;\n\n tabs.forEach((tab: KemetTab) => {\n // give each tab an index to select by if link/panel is not used\n tab.index = index;\n index += 1;\n\n // store the list of tabs\n this.tabs = this.tabs.concat(tab);\n\n // add keyboard support\n tab.addEventListener('keydown', this._handleTabKeydown);\n });\n\n // default to the first tab/panel selected\n const firstTab = this.tabs[0];\n if (firstTab) firstTab.selected = true;\n\n setTimeout(() => {\n this.selectTab();\n }, 1);\n this.determineOverflow();\n }\n\n handlePanelsSlotChange() {\n this.panels = [];\n\n const panels = this.querySelectorAll('kemet-tab-panel');\n const panelElement = this.shadowRoot?.getElementById('panels');\n let index = 0;\n\n panels.forEach((panel: KemetTabPanel) => {\n // give each panel an index to select by if link/panel is not used\n panel.index = index;\n index += 1;\n\n // store the list of panels\n this.panels = this.panels.concat(panel);\n });\n\n // default to the first tab/panel selected\n if (this.panels.length > 0) {\n const firstPanel = this.panels[0];\n if (firstPanel) firstPanel.selected = true;\n }\n\n // add swipe support\n if (this.swipe) {\n panelElement?.addEventListener('touchstart', event => this.handleTouchStart(event), false);\n panelElement?.addEventListener('touchmove', event => this.handleTouchMove(event), false);\n }\n\n this.selectPanel();\n }\n\n handleLeftArrow() {\n const selectedElement = this.tabs.find(tab => tab.selected) || this.tabs[0];\n if (!selectedElement) return;\n const previousElement = selectedElement.previousElementSibling as KemetTab;\n const selectedIndex = this.tabs.findIndex(tab => tab.selected);\n\n if (this.selected) {\n this.selected = previousElement ? previousElement.link : selectedElement.link;\n } else {\n this.selectedIndex = selectedIndex > 0 ? selectedIndex - 1 : 0;\n }\n\n if (previousElement) {\n this.links.scrollLeft = previousElement.offsetLeft - 20;\n }\n\n this.selectTab();\n this.selectPanel();\n }\n\n handleRightArrow() {\n const selectedElement = this.tabs.find(tab => tab.selected) || this.tabs[this.tabs.length - 1];\n if (!selectedElement) return;\n const nextElement = selectedElement.nextElementSibling as KemetTab;\n const selectedIndex = this.tabs.findIndex(tab => tab.selected);\n\n if (this.selected) {\n this.selected = nextElement ? nextElement.link : selectedElement.link;\n } else {\n this.selectedIndex = selectedIndex < this.tabs.length - 1\n ? selectedIndex + 1\n : this.tabs.length - 1;\n }\n\n if (nextElement) {\n this.links.scrollLeft = nextElement.offsetLeft - 20;\n }\n\n this.selectTab();\n this.selectPanel();\n }\n\n handleTabClose(event: Event) {\n const tab = (event as CustomEvent).detail.element;\n const panel = this.panels[tab.index];\n\n if (this.tabs[0]) {\n this.selected = this.tabs[0].link;\n }\n this.selectedIndex = 0;\n\n panel?.remove();\n tab.remove();\n }\n\n makeInk(location: string) {\n if (this.hideInk) {\n return null;\n }\n\n if ((this.placement === 'top' || this.placement === 'bottom') && this.ink && location === 'links') {\n return html`<div part=\"ink\" style=\"width:${this.ink.width}; transform:translateX(${this.ink.positionX})\"></div>`;\n }\n\n if ((this.placement === 'left' || this.placement === 'right') && this.ink && location === 'host') {\n return html`<div part=\"ink\" style=\"height:${this.ink.height}; transform:translateY(${this.ink.positionY})\"></div>`;\n }\n\n return null;\n }\n\n makeDivider() {\n if (this.divider) {\n return html`<div part=\"divider\"></div>`;\n }\n\n return null;\n }\n\n makeLeftArrow() {\n if (this.overflow) {\n return html`<kemet-icon name='chevron-left' size=\"20\" @click=${() => this.handleLeftArrow()}></kemet-icon>`;\n }\n\n return null;\n }\n\n makeRightArrow() {\n if (this.overflow) {\n return html`<kemet-icon name='chevron-right' size=\"20\" @click=${() => this.handleRightArrow()}></kemet-icon>`;\n }\n\n return null;\n }\n\n selectTab() {\n const marginLeft = this.links ? parseInt(window.getComputedStyle(this.links).marginLeft.replace('px', ''), 10) : 0;\n const overflowOffset = this.overflow ? marginLeft : 0;\n\n // if the user uses the selected attribute select by it\n if (this.selected) {\n this.tabs.forEach((tab) => {\n const tabName = tab.getAttribute('link');\n\n if (tabName === this.selected) {\n tab.selected = true;\n this.selected = tabName;\n\n this.ink = {\n width: `${tab.offsetWidth}px`,\n height: `${tab.offsetHeight}px`,\n positionX: `${tab.offsetLeft - overflowOffset}px`,\n positionY: `${tab.offsetTop}px`,\n };\n\n this.links.scrollLeft = tab.offsetLeft - overflowOffset;\n } else {\n tab.selected = false;\n }\n });\n\n // otherwise select by index\n } else {\n this.tabs.forEach((tab) => {\n if (this.selectedIndex === tab.index) {\n tab.selected = true;\n\n this.ink = {\n width: `${tab.offsetWidth}px`,\n height: `${tab.offsetHeight}px`,\n positionX: `${tab.offsetLeft - overflowOffset}px`,\n positionY: `${tab.offsetTop}px`,\n };\n\n this.links.scrollLeft = tab.offsetLeft - overflowOffset;\n } else {\n tab.selected = false;\n }\n });\n }\n }\n\n selectPanel() {\n // if the user uses the selected attribute select by it\n if (this.selected) {\n this.panels.forEach((panel) => {\n const panelName = panel.getAttribute('panel');\n\n if (this.panelEffect === 'fade' && panel.index !== 0) {\n panel.classList.add('push');\n }\n\n if (this.placement === 'left' || this.placement === 'right') {\n panel.classList.add('vertical');\n }\n\n if (panelName === this.selected) {\n panel.selected = true;\n this.animatePanel(panelName, null);\n } else {\n panel.selected = false;\n }\n });\n\n // otherwise select by index\n } else {\n this.panels.forEach((panel) => {\n if (this.panelEffect === 'fade' && panel.index !== 0) {\n panel.classList.add('push');\n }\n\n if (this.placement === 'left' || this.placement === 'right') {\n panel.classList.add('vertical');\n }\n\n if (this.selectedIndex === panel.index) {\n panel.selected = true;\n this.animatePanel(null, panel.index);\n } else {\n panel.selected = false;\n }\n });\n }\n }\n\n dispatchTabChange() {\n emitEvent(this, 'kemet-tabs-change', {\n element: this,\n selectedName: this.selected,\n selectedIndex: this.selectedIndex\n });\n }\n\n tabSelectedChange(event: Event) {\n if (this.selected) {\n // if selected has been set, use the string attribute\n this.selected = (event as CustomEvent).detail.element.getAttribute('link');\n } else {\n // otherwise use the generated index\n this.selectedIndex = (event as CustomEvent).detail.element.index;\n }\n\n this.selectTab();\n this.selectPanel();\n this.dispatchTabChange();\n }\n\n determineFade() {\n this.panels.forEach((panel) => {\n // add fade class if panel effect is fade\n if (this.panelEffect === 'fade') panel.classList.add('fade');\n });\n }\n\n determineStacked() {\n this.panels.forEach((panel) => {\n // add fade class if panel effect is fade\n if (this.panelEffect === 'stacked') panel.classList.add('stacked');\n });\n }\n\n determineOverflow() {\n const tabsContainerWidth = this.offsetWidth;\n const tabElements = this.querySelectorAll('kemet-tab');\n\n let totalTabsWidth = 0;\n\n tabElements.forEach((tab) => {\n totalTabsWidth += tab.offsetWidth;\n });\n\n this.overflow = totalTabsWidth > tabsContainerWidth && (this.placement === 'top' || this.placement === 'bottom');\n }\n\n handleResize() {\n if (this.tabs && this.panels) {\n const marginLeft = this.links ? parseInt(window.getComputedStyle(this.links).marginLeft.replace('px', ''), 10) : 0;\n const overflowOffset = this.overflow ? marginLeft : 0;\n const selectedElement = this.tabs.find(tab => tab.selected);\n\n if (selectedElement) {\n this.ink = {\n width: `${selectedElement.offsetWidth}px`,\n height: `${selectedElement.offsetHeight}px`,\n positionX: `${selectedElement.offsetLeft - overflowOffset}px`,\n positionY: `${selectedElement.offsetTop}px`,\n };\n }\n\n this.determineOverflow();\n\n if (this.selected) {\n this.animatePanel(this.selected, null);\n } else {\n this.animatePanel(null, this.selectedIndex);\n }\n }\n }\n\n animatePanel(panelName: string | null, panelIndex: number | null) {\n if (panelName) {\n const selectedPanel = this.querySelector(`[panel=\"${panelName}\"]`) as KemetTabPanel;\n if (selectedPanel) this.panelPosition = selectedPanel.offsetLeft * -1;\n } else {\n if (panelIndex !== null && this.panels[panelIndex]) this.panelPosition = this.panels[panelIndex].offsetLeft * -1;\n }\n }\n\n handleTabKeydown(event: KeyboardEvent) {\n if (this.selected) {\n switch (event.key) {\n case 'Home':\n if (this.tabs[0]) {\n this.selected = this.tabs[0].getAttribute('link') ?? undefined;\n }\n break;\n case 'End':\n const lastTab = this.tabs[this.tabs.length - 1];\n if (lastTab) {\n this.selected = lastTab.getAttribute('link') ?? undefined;\n }\n break;\n case 'ArrowRight':\n const nextLinkElement = this.querySelector('kemet-tab[selected]')?.nextElementSibling;\n const nextLink = nextLinkElement ? nextLinkElement.getAttribute('link') : false;\n\n if (nextLink) {\n this.selected = nextLink;\n }\n break;\n case 'ArrowLeft':\n const previousLinkElement = this.querySelector('kemet-tab[selected]')?.previousElementSibling;\n const previousLink = previousLinkElement ? previousLinkElement.getAttribute('link') : false;\n\n if (previousLink) {\n this.selected = previousLink;\n }\n break;\n default: break;\n }\n\n const tabToFocus = this.tabs.find(tab => tab.link === this.selected);\n if (tabToFocus) tabToFocus.focus();\n } else {\n switch (event.key) {\n case 'Home':\n this.selectedIndex = 0;\n break;\n case 'End':\n this.selectedIndex = this.tabs.length - 1;\n break;\n case 'ArrowRight':\n if (this.selectedIndex < this.tabs.length - 1) {\n this.selectedIndex += 1;\n } else {\n this.selectedIndex = this.tabs.length - 1;\n }\n break;\n case 'ArrowLeft':\n if (this.selectedIndex < 1) {\n this.selectedIndex = 0;\n } else {\n this.selectedIndex -= 1;\n }\n break;\n default: break;\n }\n\n if (this.tabs[this.selectedIndex]) {\n this.tabs[this.selectedIndex]?.focus();\n }\n }\n }\n\n handleTouchStart(event: TouchEvent) {\n this.xDown = event.touches[0]?.clientX ?? 0;\n this.yDown = event.touches[0]?.clientY ?? 0;\n }\n\n handleTouchMove(event: TouchEvent) {\n if (!this.xDown || !this.yDown) {\n return;\n }\n\n const xUp = event.touches[0]?.clientX ?? 0;\n const yUp = event.touches[0]?.clientY ?? 0;\n const xDiff = this.xDown - xUp;\n const yDiff = this.yDown - yUp;\n\n const nextElement = this.querySelector('kemet-tab-panel[selected]')?.nextElementSibling;\n const next = nextElement ? nextElement.getAttribute('panel') : false;\n const previousElement = this.querySelector('kemet-tab-panel[selected]')?.previousElementSibling;\n const previous = previousElement ? previousElement.getAttribute('panel') : false;\n\n if (Math.abs(xDiff) > Math.abs(yDiff)) {\n if (xDiff > 0) {\n if (this.selected) {\n if (next) this.selected = next;\n } else {\n if (this.selectedIndex < this.tabs.length) this.selectedIndex += 1;\n }\n } else {\n if (this.selected) {\n if (previous) this.selected = previous;\n } else {\n if (this.selectedIndex > 0) this.selectedIndex -= 1;\n }\n }\n\n this.selectTab();\n this.selectPanel();\n }\n\n this.xDown = null;\n this.yDown = null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tabs': KemetTabs\n }\n}\n","export { property, state, query, queryAll } from 'lit/decorators.js';\nimport { customElement as litCustomElement } from 'lit/decorators.js';\n\n/**\n * A drop-in replacement for lit's `customElement` decorator that is safe under\n * hot-module-replacement / live-reload environments where the module may be\n * re-evaluated.\n */\nexport const customElement = (tagName: string) => (classOrDescriptor: any) =>\n typeof customElements !== 'undefined' && !customElements.get(tagName)\n ? litCustomElement(tagName)(classOrDescriptor)\n : classOrDescriptor;\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n","import { css } from 'lit';\n\nexport default css`:host {\n --kemet-tabs-ink-size: 6px;\n --kemet-tabs-ink-radius: 6px;\n --kemet-tabs-divider-size: 1px;\n --kemet-tabs-spacer: 1rem;\n --kemet-tabs-transition-speed: 0.5s;\n --kemet-tabs-divider-color: var(--kemet-color-font-base);\n --kemet-tabs-ink-color: var(--kemet-color-font-active);\n\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n}\n\n:host([placement='bottom']) {\n flex-direction: column-reverse;\n}\n\n:host([placement='left']) {\n flex-direction: row;\n}\n\n:host([placement='right']) {\n flex-direction: row-reverse;\n}\n\n:host([placement='left']),\n:host([placement='right']) {\n overflow: unset;\n}\n\n/* panels */\n\n[part='panels'] > div {\n display: flex;\n}\n\n:host([panel-effect='slide']) [part='panels'] {\n transition: transform var(--kemet-tabs-transition-speed) linear;\n}\n\n:host([panel-effect='fade']) [part='panels'] {\n transform: none !important;\n}\n\n:host([panel-effect='fade']) [part='panels'] > div {\n flex-flow: row nowrap;\n}\n\n:host([placement='left']) [part='panels'],\n:host([placement='right']) [part='panels'] {\n transform: none !important;\n position: relative;\n width: 100%;\n}\n\n:host([placement='top']) [part='panels'] > div {\n margin-top: var(--kemet-tabs-spacer);\n}\n\n:host([placement='right']) [part='panels'] > div {\n margin-right: var(--kemet-tabs-spacer);\n}\n\n:host([placement='bottom']) [part='panels'] > div {\n margin-bottom: var(--kemet-tabs-spacer);\n}\n\n:host([placement='left']) [part='panels'] > div {\n margin-left: var(--kemet-tabs-spacer);\n}\n\n/* tablist */\n\n[part='tablist'] {\n display: flex;\n}\n\n:host([placement='left']) [part='tablist'],\n:host([placement='right']) [part='tablist'] {\n display: flex;\n flex-direction: column;\n align-items: start;\n}\n\n:host([tabs-align='center']) [part='tablist'] {\n justify-content: center;\n}\n\n:host([tabs-align='between']) [part='tablist'] {\n justify-content: space-between;\n}\n\n:host([tabs-align='evenly']) [part='tablist'] {\n justify-content: space-evenly;\n}\n\n:host([tabs-align='around']) [part='tablist'] {\n justify-content: space-around\n}\n\n:host([tabs-align='start']) [part='tablist'] {\n justify-content: flex-start;\n}\n\n:host([tabs-align='end']) [part='tablist'] {\n justify-content: flex-end;\n}\n\n:host([overflow]) [part='tablist'] {\n justify-content: start;\n}\n\n/* divider */\n\n[part='divider'] {\n height: var(--kemet-tabs-divider-size);\n background-color: var(--kemet-tabs-divider-color);\n}\n\n:host([placement='left']) [part='divider'],\n:host([placement='right']) [part='divider'] {\n width: var(--kemet-tabs-divider-size);\n height: auto;\n}\n\n/* ink */\n\n[part='ink'] {\n height: var(--kemet-tabs-ink-size);\n border-top-left-radius: var(--kemet-tabs-ink-radius);\n border-top-right-radius: var(--kemet-tabs-ink-radius);\n transition: all 300ms ease;\n background-color: var(--kemet-tabs-ink-color);\n}\n\n:host([placement='right']) [part='ink'] {\n width: var(--kemet-tabs-ink-size);\n border-top-right-radius: var(--kemet-tabs-ink-radius);\n border-bottom-right-radius: var(--kemet-tabs-ink-radius);\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n\n:host([placement='left']) [part='ink'] {\n width: var(--kemet-tabs-ink-size);\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n border-top-left-radius: var(--kemet-tabs-ink-radius);\n border-bottom-left-radius: var(--kemet-tabs-ink-radius);\n}\n\n:host([placement='bottom']) [part='ink'] {\n border-top-right-radius: 0px;\n border-bottom-right-radius: var(--kemet-tabs-ink-radius);\n border-top-left-radius: 0px;\n border-bottom-left-radius: var(--kemet-tabs-ink-radius);\n}\n\n/* links */\n\n:host([overflow]) [part='links'] {\n overflow-x: auto;\n margin: 0 2rem;\n scroll-behavior: smooth;\n}\n\n:host([overflow]) [part='links']::-webkit-scrollbar {\n display: none;\n width: 0;\n background: transparent;\n}\n\n:host([placement='bottom']) [part='links'] {\n display: flex;\n flex-direction: column-reverse;\n}\n\n/* icon */\n\n[icon*='chevron'] {\n cursor: pointer;\n position: absolute;\n top: 1rem;\n}\n\n[icon='chevron-left'] {\n left: 0;\n}\n\n[icon='chevron-right'] {\n right: 0;\n}\n\n:host([placement='bottom']) [icon*='chevron'] {\n top: auto;\n bottom: 1rem;\n}\n`;\n"],"mappings":"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","names":["EnumPanelEffect","EnumTabsAlign"]}
@@ -1,4 +1,4 @@
1
1
  import 'lit-html';
2
2
  import 'lit';
3
3
  import '../../form-controller-3q581XcZ.js';
4
- export { f as default } from '../../constants-W9QKPlZP.js';
4
+ export { f as default } from '../../constants-CHvA2ed5.js';