@sekiui/elements 0.0.88 → 0.1.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 (211) hide show
  1. package/dist/cdn/p-C9-yH6MD.js +33 -0
  2. package/dist/cdn/p-CQQRfw1L.js +18 -0
  3. package/dist/cdn/seki-carousel-dots.js +7 -3
  4. package/dist/cdn/seki-carousel-next.js +8 -6
  5. package/dist/cdn/seki-carousel-previous.js +8 -6
  6. package/dist/cdn/seki-carousel.js +15 -1
  7. package/dist/cdn/seki-date-picker.js +71 -36
  8. package/dist/cdn/seki-drawer.js +76 -32
  9. package/dist/cdn/seki-hover-card-content.js +2 -2
  10. package/dist/cdn/seki-hover-card-trigger.js +3 -3
  11. package/dist/cdn/seki-hover-card.js +59 -4
  12. package/dist/cdn/seki-resizable-handle.js +11 -2
  13. package/dist/cdn/seki-resizable-panel-group.js +9 -3
  14. package/dist/cdn/seki-resizable-panel.js +42 -20
  15. package/dist/cdn/seki-select-content.js +21 -13
  16. package/dist/cdn/seki-select-group.js +3 -4
  17. package/dist/cdn/seki-select-option.js +33 -15
  18. package/dist/cdn/seki-select-trigger.js +6 -4
  19. package/dist/cdn/seki-select.js +2 -2
  20. package/dist/cdn/seki-sheet.js +71 -30
  21. package/dist/cdn/seki-sidebar-footer.js +3 -1
  22. package/dist/cdn/seki-sidebar-header.js +3 -1
  23. package/dist/cdn/seki-sidebar-menu-button.js +3 -1
  24. package/dist/cdn/seki-sidebar-rail.js +3 -1
  25. package/dist/cdn/seki-sidebar-trigger.js +6 -1
  26. package/dist/cdn/seki-sidebar.js +5 -2
  27. package/dist/cdn/seki-tooltip.js +47 -2
  28. package/dist/cjs/loader.cjs.js +1 -1
  29. package/dist/cjs/option-id-wIa73qWK.js +20 -0
  30. package/dist/cjs/seki-carousel-dots.cjs.entry.js +7 -3
  31. package/dist/cjs/seki-carousel-next.cjs.entry.js +8 -6
  32. package/dist/cjs/seki-carousel-previous.cjs.entry.js +8 -6
  33. package/dist/cjs/seki-carousel.cjs.entry.js +15 -1
  34. package/dist/cjs/seki-date-picker.cjs.entry.js +64 -32
  35. package/dist/cjs/seki-drawer.cjs.entry.js +67 -27
  36. package/dist/cjs/seki-hover-card-content.cjs.entry.js +2 -2
  37. package/dist/cjs/seki-hover-card-trigger.cjs.entry.js +3 -3
  38. package/dist/cjs/seki-hover-card.cjs.entry.js +53 -3
  39. package/dist/cjs/seki-resizable-handle.cjs.entry.js +11 -2
  40. package/dist/cjs/seki-resizable-panel-group.cjs.entry.js +9 -3
  41. package/dist/cjs/seki-resizable-panel.cjs.entry.js +42 -20
  42. package/dist/cjs/seki-select-content.cjs.entry.js +20 -11
  43. package/dist/cjs/seki-select-group.cjs.entry.js +2 -2
  44. package/dist/cjs/seki-select-option.cjs.entry.js +32 -13
  45. package/dist/cjs/seki-select-trigger.cjs.entry.js +5 -2
  46. package/dist/cjs/seki-select.cjs.entry.js +2 -2
  47. package/dist/cjs/seki-sheet.cjs.entry.js +62 -25
  48. package/dist/cjs/seki-sidebar-footer.cjs.entry.js +3 -1
  49. package/dist/cjs/seki-sidebar-header.cjs.entry.js +3 -1
  50. package/dist/cjs/seki-sidebar-menu-button.cjs.entry.js +3 -1
  51. package/dist/cjs/seki-sidebar-rail.cjs.entry.js +3 -1
  52. package/dist/cjs/seki-sidebar-trigger.cjs.entry.js +6 -1
  53. package/dist/cjs/seki-sidebar.cjs.entry.js +5 -2
  54. package/dist/cjs/seki-tooltip.cjs.entry.js +43 -2
  55. package/dist/cjs/sekiui.cjs.js +1 -1
  56. package/dist/cjs/when-defined-B2Lkz6uR.js +36 -0
  57. package/dist/collection/components/carousel/seki-carousel-dots.js +7 -3
  58. package/dist/collection/components/carousel/seki-carousel-next.js +8 -6
  59. package/dist/collection/components/carousel/seki-carousel-previous.js +8 -6
  60. package/dist/collection/components/carousel/seki-carousel.js +15 -1
  61. package/dist/collection/components/date-picker/seki-date-picker.js +124 -36
  62. package/dist/collection/components/drawer/seki-drawer.js +132 -31
  63. package/dist/collection/components/hover-card/seki-hover-card-content.js +2 -2
  64. package/dist/collection/components/hover-card/seki-hover-card-trigger.js +3 -3
  65. package/dist/collection/components/hover-card/seki-hover-card.js +142 -6
  66. package/dist/collection/components/resizable/seki-resizable-handle.js +11 -2
  67. package/dist/collection/components/resizable/seki-resizable-panel-group.js +23 -3
  68. package/dist/collection/components/resizable/seki-resizable-panel.js +42 -20
  69. package/dist/collection/components/select/seki-select.js +6 -12
  70. package/dist/collection/components/select-content/seki-select-content.css +8 -0
  71. package/dist/collection/components/select-content/seki-select-content.js +20 -11
  72. package/dist/collection/components/select-group/seki-select-group.js +2 -2
  73. package/dist/collection/components/select-option/seki-select-option.js +32 -13
  74. package/dist/collection/components/select-trigger/seki-select-trigger.js +5 -2
  75. package/dist/collection/components/sheet/seki-sheet.js +127 -29
  76. package/dist/collection/components/sidebar/seki-sidebar-footer.js +3 -1
  77. package/dist/collection/components/sidebar/seki-sidebar-header.js +3 -1
  78. package/dist/collection/components/sidebar/seki-sidebar-menu-button.js +3 -1
  79. package/dist/collection/components/sidebar/seki-sidebar-rail.js +3 -1
  80. package/dist/collection/components/sidebar/seki-sidebar-trigger.js +6 -1
  81. package/dist/collection/components/sidebar/seki-sidebar.js +5 -2
  82. package/dist/collection/components/tooltip/seki-tooltip.js +92 -2
  83. package/dist/collection/utils/select/index.js +1 -0
  84. package/dist/collection/utils/select/option-id.js +16 -0
  85. package/dist/collection/utils/when-defined.js +31 -0
  86. package/dist/components/p-C9-yH6MD.js +33 -0
  87. package/dist/components/p-CQQRfw1L.js +18 -0
  88. package/dist/components/seki-carousel-dots.js +7 -3
  89. package/dist/components/seki-carousel-next.js +8 -6
  90. package/dist/components/seki-carousel-previous.js +8 -6
  91. package/dist/components/seki-carousel.js +15 -1
  92. package/dist/components/seki-date-picker.js +71 -36
  93. package/dist/components/seki-drawer.js +76 -32
  94. package/dist/components/seki-hover-card-content.js +2 -2
  95. package/dist/components/seki-hover-card-trigger.js +3 -3
  96. package/dist/components/seki-hover-card.js +59 -4
  97. package/dist/components/seki-resizable-handle.js +11 -2
  98. package/dist/components/seki-resizable-panel-group.js +9 -3
  99. package/dist/components/seki-resizable-panel.js +42 -20
  100. package/dist/components/seki-select-content.js +21 -13
  101. package/dist/components/seki-select-group.js +3 -4
  102. package/dist/components/seki-select-option.js +33 -15
  103. package/dist/components/seki-select-trigger.js +6 -4
  104. package/dist/components/seki-select.js +2 -2
  105. package/dist/components/seki-sheet.js +71 -30
  106. package/dist/components/seki-sidebar-footer.js +3 -1
  107. package/dist/components/seki-sidebar-header.js +3 -1
  108. package/dist/components/seki-sidebar-menu-button.js +3 -1
  109. package/dist/components/seki-sidebar-rail.js +3 -1
  110. package/dist/components/seki-sidebar-trigger.js +6 -1
  111. package/dist/components/seki-sidebar.js +5 -2
  112. package/dist/components/seki-tooltip.js +47 -2
  113. package/dist/esm/loader.js +1 -1
  114. package/dist/esm/option-id-CQQRfw1L.js +18 -0
  115. package/dist/esm/seki-carousel-dots.entry.js +7 -3
  116. package/dist/esm/seki-carousel-next.entry.js +8 -6
  117. package/dist/esm/seki-carousel-previous.entry.js +8 -6
  118. package/dist/esm/seki-carousel.entry.js +15 -1
  119. package/dist/esm/seki-date-picker.entry.js +64 -32
  120. package/dist/esm/seki-drawer.entry.js +67 -27
  121. package/dist/esm/seki-hover-card-content.entry.js +2 -2
  122. package/dist/esm/seki-hover-card-trigger.entry.js +3 -3
  123. package/dist/esm/seki-hover-card.entry.js +53 -3
  124. package/dist/esm/seki-resizable-handle.entry.js +11 -2
  125. package/dist/esm/seki-resizable-panel-group.entry.js +9 -3
  126. package/dist/esm/seki-resizable-panel.entry.js +42 -20
  127. package/dist/esm/seki-select-content.entry.js +20 -11
  128. package/dist/esm/seki-select-group.entry.js +2 -2
  129. package/dist/esm/seki-select-option.entry.js +32 -13
  130. package/dist/esm/seki-select-trigger.entry.js +5 -2
  131. package/dist/esm/seki-select.entry.js +2 -2
  132. package/dist/esm/seki-sheet.entry.js +62 -25
  133. package/dist/esm/seki-sidebar-footer.entry.js +3 -1
  134. package/dist/esm/seki-sidebar-header.entry.js +3 -1
  135. package/dist/esm/seki-sidebar-menu-button.entry.js +3 -1
  136. package/dist/esm/seki-sidebar-rail.entry.js +3 -1
  137. package/dist/esm/seki-sidebar-trigger.entry.js +6 -1
  138. package/dist/esm/seki-sidebar.entry.js +5 -2
  139. package/dist/esm/seki-tooltip.entry.js +43 -2
  140. package/dist/esm/sekiui.js +1 -1
  141. package/dist/esm/when-defined-C9-yH6MD.js +33 -0
  142. package/dist/sekiui/p-02f1728e.entry.js +1 -0
  143. package/dist/sekiui/p-05b33a61.entry.js +1 -0
  144. package/dist/sekiui/p-12e36a4f.entry.js +1 -0
  145. package/dist/sekiui/p-1cd6b3e6.entry.js +1 -0
  146. package/dist/sekiui/p-1e24698b.entry.js +1 -0
  147. package/dist/sekiui/p-26bb17cb.entry.js +1 -0
  148. package/dist/sekiui/p-26d433ff.entry.js +1 -0
  149. package/dist/sekiui/p-26f96e2d.entry.js +1 -0
  150. package/dist/sekiui/p-29b22c0f.entry.js +1 -0
  151. package/dist/sekiui/p-30fafcc6.entry.js +1 -0
  152. package/dist/sekiui/p-3de5878b.entry.js +1 -0
  153. package/dist/sekiui/p-649dbdf0.entry.js +1 -0
  154. package/dist/sekiui/p-71656184.entry.js +1 -0
  155. package/dist/sekiui/p-7926c04a.entry.js +1 -0
  156. package/dist/sekiui/p-9f4149b9.entry.js +1 -0
  157. package/dist/sekiui/p-C9-yH6MD.js +1 -0
  158. package/dist/sekiui/p-CQQRfw1L.js +1 -0
  159. package/dist/sekiui/p-ae87ca35.entry.js +1 -0
  160. package/dist/sekiui/p-b82c2267.entry.js +1 -0
  161. package/dist/sekiui/p-bf151423.entry.js +1 -0
  162. package/dist/sekiui/{p-219c8350.entry.js → p-c0f21b6a.entry.js} +1 -1
  163. package/dist/sekiui/p-c3ef507f.entry.js +1 -0
  164. package/dist/sekiui/p-d10a186d.entry.js +1 -0
  165. package/dist/sekiui/p-d1c72c91.entry.js +1 -0
  166. package/dist/sekiui/p-d1d3ae40.entry.js +1 -0
  167. package/dist/sekiui/p-fba3fa73.entry.js +1 -0
  168. package/dist/sekiui/p-fe3e661d.entry.js +1 -0
  169. package/dist/sekiui/sekiui.esm.js +1 -1
  170. package/dist/types/components/carousel/seki-carousel.d.ts +1 -0
  171. package/dist/types/components/date-picker/seki-date-picker.d.ts +21 -5
  172. package/dist/types/components/drawer/seki-drawer.d.ts +22 -6
  173. package/dist/types/components/hover-card/seki-hover-card.d.ts +24 -4
  174. package/dist/types/components/resizable/seki-resizable-handle.d.ts +1 -0
  175. package/dist/types/components/resizable/seki-resizable-panel-group.d.ts +6 -0
  176. package/dist/types/components/resizable/seki-resizable-panel.d.ts +9 -0
  177. package/dist/types/components/select/seki-select.d.ts +3 -3
  178. package/dist/types/components/select-content/seki-select-content.d.ts +8 -5
  179. package/dist/types/components/select-option/seki-select-option.d.ts +6 -4
  180. package/dist/types/components/sheet/seki-sheet.d.ts +22 -6
  181. package/dist/types/components/tooltip/seki-tooltip.d.ts +13 -0
  182. package/dist/types/components.d.ts +145 -17
  183. package/dist/types/utils/select/index.d.ts +1 -0
  184. package/dist/types/utils/select/option-id.d.ts +14 -0
  185. package/dist/types/utils/select/types.d.ts +0 -7
  186. package/dist/types/utils/when-defined.d.ts +19 -0
  187. package/package.json +3 -1
  188. package/dist/sekiui/p-01f26bec.entry.js +0 -1
  189. package/dist/sekiui/p-117b6f5a.entry.js +0 -1
  190. package/dist/sekiui/p-1250cad1.entry.js +0 -1
  191. package/dist/sekiui/p-1866201e.entry.js +0 -1
  192. package/dist/sekiui/p-2e18933c.entry.js +0 -1
  193. package/dist/sekiui/p-2e2e7d0b.entry.js +0 -1
  194. package/dist/sekiui/p-346cc18f.entry.js +0 -1
  195. package/dist/sekiui/p-6311a4d8.entry.js +0 -1
  196. package/dist/sekiui/p-69843ed8.entry.js +0 -1
  197. package/dist/sekiui/p-779764c0.entry.js +0 -1
  198. package/dist/sekiui/p-786c153b.entry.js +0 -1
  199. package/dist/sekiui/p-87bcbb66.entry.js +0 -1
  200. package/dist/sekiui/p-88dd3e1f.entry.js +0 -1
  201. package/dist/sekiui/p-944c70a1.entry.js +0 -1
  202. package/dist/sekiui/p-9820cd16.entry.js +0 -1
  203. package/dist/sekiui/p-9abfa3a5.entry.js +0 -1
  204. package/dist/sekiui/p-ac7bd611.entry.js +0 -1
  205. package/dist/sekiui/p-b45e11d8.entry.js +0 -1
  206. package/dist/sekiui/p-c62c4ad7.entry.js +0 -1
  207. package/dist/sekiui/p-caa51bdf.entry.js +0 -1
  208. package/dist/sekiui/p-ce986fde.entry.js +0 -1
  209. package/dist/sekiui/p-e45e6992.entry.js +0 -1
  210. package/dist/sekiui/p-ede4bb0c.entry.js +0 -1
  211. package/dist/sekiui/p-f4abd9a2.entry.js +0 -1
@@ -1,5 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-BwKLEihM.js';
2
2
  import { s as syncTheme } from './theme-sync-QPMexJR6.js';
3
+ import { i as isDefined, w as whenDefined } from './when-defined-C9-yH6MD.js';
3
4
 
4
5
  const sekiCarouselCss = ":host{--seki-carousel-gap:1rem;--seki-carousel-arrow-size:2.5rem;--seki-carousel-arrow-bg:rgba(255, 255, 255, 0.8);--seki-carousel-arrow-bg-hover:rgba(255, 255, 255, 0.95);--seki-carousel-arrow-color:var(--seki-foreground, #0f172a);--seki-carousel-dot-size:0.5rem;--seki-carousel-dot-active-size:0.625rem;--seki-carousel-dot-gap:0.5rem;--seki-carousel-dot-color:var(--seki-muted, #94a3b8);--seki-carousel-dot-active-color:var(--seki-primary, #0f172a);display:block;position:relative;width:100%}:host(:focus){outline:none}:host(:focus-visible){outline:2px solid var(--seki-ring, #3b82f6);outline-offset:2px;border-radius:var(--seki-radius-md, 0.375rem)}.carousel__container{position:relative;width:100%}.carousel__live-region{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}:host([data-theme='dark']){--seki-carousel-arrow-bg:rgba(30, 41, 59, 0.8);--seki-carousel-arrow-bg-hover:rgba(30, 41, 59, 0.95);--seki-carousel-dot-color:var(--seki-muted-foreground, hsl(0, 0%, 63.9%));--seki-carousel-dot-active-color:var(--seki-foreground, hsl(0, 0%, 98%))}@media (prefers-reduced-motion: reduce){:host *{transition:none !important;animation:none !important}}";
5
6
 
@@ -59,6 +60,7 @@ const SekiCarousel = class {
59
60
  this.viewportEl = null;
60
61
  this.initRafId = null;
61
62
  this.initRetries = 0;
63
+ this.waitedForContentDefinition = false;
62
64
  this.handleSelect = () => {
63
65
  this.updateState();
64
66
  this.slideChange.emit({
@@ -206,6 +208,18 @@ const SekiCarousel = class {
206
208
  // Get the inner container (seki-carousel-content uses shadow: false)
207
209
  const containerEl = this.viewportEl.querySelector('.carousel-content');
208
210
  if (!containerEl) {
211
+ // In the per-tag custom-elements build <seki-carousel-content> may not be
212
+ // *defined* yet, let alone rendered — over a CDN that can take longer than
213
+ // the whole rAF budget below. Wait for its definition once, then retry.
214
+ if (!this.waitedForContentDefinition && !isDefined('seki-carousel-content')) {
215
+ this.waitedForContentDefinition = true;
216
+ await whenDefined('seki-carousel-content');
217
+ if (!this.el.isConnected)
218
+ return;
219
+ this.initRetries = 0;
220
+ this.initRafId = requestAnimationFrame(() => this.initEmbla());
221
+ return;
222
+ }
209
223
  // Content child hasn't rendered yet. Retry next frame, but bail if the
210
224
  // carousel was disconnected or we've exhausted the retry budget so this
211
225
  // can never become an unbounded, uncancellable rAF loop.
@@ -298,7 +312,7 @@ const SekiCarousel = class {
298
312
  // Render
299
313
  // =========================================================================
300
314
  render() {
301
- return (h(Host, { key: 'f11290fbc2f9803384306bcf1e6dd9d4fef6b77c', class: "carousel", role: "region", "aria-roledescription": "carousel", "aria-label": this.ariaLabel, tabindex: "0", onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, onFocusIn: this.handleFocusIn, onFocusOut: this.handleFocusOut, onKeyDown: this.handleKeyDown }, h("div", { key: 'edba4db0fc620ee679748b57b3feb106c4ed6bb9', class: "carousel__container" }, h("slot", { key: '0af58b5565e27ca1f6f91075eee9d6d0fbddecac' })), h("div", { key: 'b20a2c430bfbe43a4c819a6de49b9e0cdf6b6271', class: "carousel__live-region", "aria-live": "polite", "aria-atomic": "true" }, `Slide ${this.selectedIndex + 1} of ${this.scrollSnapCount}`)));
315
+ return (h(Host, { key: '383dfb248902b441e188b071e501a69684ac794d', class: "carousel", role: "region", "aria-roledescription": "carousel", "aria-label": this.ariaLabel, tabindex: "0", onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, onFocusIn: this.handleFocusIn, onFocusOut: this.handleFocusOut, onKeyDown: this.handleKeyDown }, h("div", { key: '2ea52063f017b1ae57d67ed53d38b3c8df35970d', class: "carousel__container" }, h("slot", { key: '280467c5fcf61258eed5aa42982757ce1a6f8e99' })), h("div", { key: '8a4286587ba79dcdbf453403f96ab293908359f4', class: "carousel__live-region", "aria-live": "polite", "aria-atomic": "true" }, `Slide ${this.selectedIndex + 1} of ${this.scrollSnapCount}`)));
302
316
  }
303
317
  get el() { return getElement(this); }
304
318
  static get watchers() { return {
@@ -10,6 +10,7 @@ const SekiDatePicker = class {
10
10
  this.sekiChange = createEvent(this, "sekiChange");
11
11
  this.sekiOpen = createEvent(this, "sekiOpen");
12
12
  this.sekiClose = createEvent(this, "sekiClose");
13
+ this.sekiOpenChange = createEvent(this, "sekiOpenChange");
13
14
  /**
14
15
  * Selection mode: single date or date range
15
16
  * @default 'single'
@@ -33,27 +34,25 @@ const SekiDatePicker = class {
33
34
  */
34
35
  this.required = false;
35
36
  /**
36
- * Whether the popover is open
37
+ * Controlled open state of the popover. Also readable/writable as the `open`
38
+ * attribute, so `<seki-date-picker open>` renders open with no script involved.
37
39
  */
38
- this.isOpen = false;
40
+ this.open = false;
41
+ /**
42
+ * Initial open state for uncontrolled usage
43
+ */
44
+ this.defaultOpen = false;
45
+ /**
46
+ * Internal state for whether the popover is open
47
+ */
48
+ this._isOpen = false;
39
49
  this.handleTriggerClick = () => {
40
- if (this.disabled)
41
- return;
42
- this.isOpen = !this.isOpen;
43
- if (this.isOpen) {
44
- this.sekiOpen.emit();
45
- requestAnimationFrame(() => {
46
- this.positionPopover();
47
- });
48
- }
49
- else {
50
- this.sekiClose.emit();
51
- }
50
+ this.toggleDatePicker();
52
51
  };
53
52
  this.handleDateSelect = (e) => {
54
53
  this.value = e.detail;
55
54
  this.sekiChange.emit(e.detail);
56
- this.close();
55
+ this.closeDatePicker();
57
56
  };
58
57
  this.handleRangeSelect = (e) => {
59
58
  var _a, _b;
@@ -61,16 +60,37 @@ const SekiDatePicker = class {
61
60
  this.rangeTo = (_b = e.detail.to) !== null && _b !== void 0 ? _b : undefined;
62
61
  if (e.detail.from && e.detail.to) {
63
62
  this.sekiChange.emit(e.detail);
64
- this.close();
63
+ this.closeDatePicker();
65
64
  }
66
65
  };
67
66
  }
68
67
  componentWillLoad() {
68
+ this._isOpen = (this.open || this.defaultOpen) && !this.disabled;
69
+ this.open = this._isOpen;
69
70
  if ('attachInternals' in HTMLElement.prototype) {
70
71
  this.internals = this.el.attachInternals();
71
72
  }
72
73
  this.updateFormValue();
73
74
  }
75
+ componentDidLoad() {
76
+ if (this._isOpen) {
77
+ requestAnimationFrame(() => {
78
+ this.positionPopover();
79
+ });
80
+ }
81
+ }
82
+ handleOpenPropChange(newValue) {
83
+ // An outside assignment (`picker.open = true`) has to win after first render;
84
+ // `open` is only read once in componentWillLoad otherwise.
85
+ if (newValue === this._isOpen)
86
+ return;
87
+ if (newValue) {
88
+ this.openDatePicker();
89
+ }
90
+ else {
91
+ this.closeDatePicker();
92
+ }
93
+ }
74
94
  updateFormValue() {
75
95
  if (this.internals && typeof this.internals.setFormValue === 'function') {
76
96
  const value = this.parseDate(this.value);
@@ -135,28 +155,35 @@ const SekiDatePicker = class {
135
155
  }
136
156
  handleKeyDown(event) {
137
157
  var _a;
138
- if (event.key === 'Escape' && this.isOpen) {
158
+ if (event.key === 'Escape' && this._isOpen) {
139
159
  event.preventDefault();
140
- this.close();
160
+ this.closeDatePicker();
141
161
  (_a = this.triggerRef) === null || _a === void 0 ? void 0 : _a.focus();
142
162
  }
143
163
  }
144
164
  handleDocumentClick(event) {
145
- if (!this.isOpen)
165
+ if (!this._isOpen)
146
166
  return;
147
167
  const target = event.target;
148
168
  if (!this.el.contains(target)) {
149
- this.close();
169
+ this.closeDatePicker();
150
170
  }
151
171
  }
152
172
  /**
153
173
  * Open the date picker popover
154
174
  */
155
- async open() {
156
- if (this.disabled)
175
+ async openDatePicker() {
176
+ if (this.disabled) {
177
+ // Keep the reflected prop honest when an open request is refused.
178
+ this.open = false;
179
+ return;
180
+ }
181
+ if (this._isOpen)
157
182
  return;
158
- this.isOpen = true;
183
+ this._isOpen = true;
184
+ this.open = true;
159
185
  this.sekiOpen.emit();
186
+ this.sekiOpenChange.emit(true);
160
187
  requestAnimationFrame(() => {
161
188
  this.positionPopover();
162
189
  });
@@ -164,19 +191,23 @@ const SekiDatePicker = class {
164
191
  /**
165
192
  * Close the date picker popover
166
193
  */
167
- async close() {
168
- this.isOpen = false;
194
+ async closeDatePicker() {
195
+ if (!this._isOpen)
196
+ return;
197
+ this._isOpen = false;
198
+ this.open = false;
169
199
  this.sekiClose.emit();
200
+ this.sekiOpenChange.emit(false);
170
201
  }
171
202
  /**
172
203
  * Toggle the date picker popover
173
204
  */
174
- async toggle() {
175
- if (this.isOpen) {
176
- await this.close();
205
+ async toggleDatePicker() {
206
+ if (this._isOpen) {
207
+ await this.closeDatePicker();
177
208
  }
178
209
  else {
179
- await this.open();
210
+ await this.openDatePicker();
180
211
  }
181
212
  }
182
213
  connectedCallback() {
@@ -188,16 +219,17 @@ const SekiDatePicker = class {
188
219
  const selectedDate = this.parseDate(this.value);
189
220
  const rangeFrom = this.parseDate(this.rangeFrom);
190
221
  const rangeTo = this.parseDate(this.rangeTo);
191
- return (h("div", { key: 'a3d95b5462a9acf744d73e4572b42ad0d64372a0', class: "seki-date-picker" }, h("button", { key: '75df88046597e51a5c1126d2c2a24575fb94bd80', type: "button", ref: el => (this.triggerRef = el), class: {
222
+ return (h("div", { key: '79b9eec6c71d77d2af7f006ee03f6a836f5405df', class: "seki-date-picker" }, h("button", { key: '54460e6603c806d24eb0c36baa1b5dbdd7aeb90d', type: "button", ref: el => (this.triggerRef = el), class: {
192
223
  'seki-date-picker__trigger': true,
193
- 'seki-date-picker__trigger--open': this.isOpen,
224
+ 'seki-date-picker__trigger--open': this._isOpen,
194
225
  'seki-date-picker__trigger--disabled': this.disabled,
195
226
  'seki-date-picker__trigger--has-value': hasValue,
196
- }, disabled: this.disabled, "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-label": this.ariaLabel || this.placeholder, onClick: this.handleTriggerClick }, h("svg", { key: '51d3e52e4ff4fe0ff6607f1accddb3b2307e3ad9', class: "seki-date-picker__icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("rect", { key: 'a0682b1fe6eb713698f34f0af5faff55e2f53191', x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), h("line", { key: 'f18a51a0b1f98743dab69923ee12e6565716e141', x1: "16", y1: "2", x2: "16", y2: "6" }), h("line", { key: 'd3488713bec1c91106d9a5987788cc1d49548275', x1: "8", y1: "2", x2: "8", y2: "6" }), h("line", { key: 'e6275d8fd1a8fd664771f908735b62d8a8278ca9', x1: "3", y1: "10", x2: "21", y2: "10" })), h("span", { key: 'b7f5ddea3a0332f29aac7cfe9fcb6a895a3e1226', class: "seki-date-picker__value" }, hasValue ? displayValue : this.placeholder)), this.isOpen && (h("div", { key: 'eded3f27883fd65ac76e860d23e3009693fea06f', ref: el => (this.popoverRef = el), class: "seki-date-picker__popover", role: "dialog", "aria-modal": "true", "aria-label": "Choose date" }, h("seki-calendar", { key: '5013ae98d89933c8051d3699981a38817fc0e49e', mode: this.mode, selected: selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.toISOString(), "range-from": rangeFrom === null || rangeFrom === void 0 ? void 0 : rangeFrom.toISOString(), "range-to": rangeTo === null || rangeTo === void 0 ? void 0 : rangeTo.toISOString(), "min-date": this.minDate, "max-date": this.maxDate, onSekiSelect: this.handleDateSelect, onSekiRangeSelect: this.handleRangeSelect })))));
227
+ }, disabled: this.disabled, "aria-haspopup": "dialog", "aria-expanded": this._isOpen ? 'true' : 'false', "aria-label": this.ariaLabel || this.placeholder, onClick: this.handleTriggerClick }, h("svg", { key: 'b65b7e82e5ad5485f5f2dd5934fb00fe7a2df0e4', class: "seki-date-picker__icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("rect", { key: 'be93574c133eb04d61d765fa0d4d893dfd18de5b', x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), h("line", { key: 'f60deabd7d2c3061b08b8245650935a85068937a', x1: "16", y1: "2", x2: "16", y2: "6" }), h("line", { key: 'e6dba2b6b7501a6e2de21a29edcafe1927f1ad4d', x1: "8", y1: "2", x2: "8", y2: "6" }), h("line", { key: '4ca41a9af0155298fcaf2f1273f3833ba1df379a', x1: "3", y1: "10", x2: "21", y2: "10" })), h("span", { key: 'f9ef3166165413282928920a7a1b726b1edc4d54', class: "seki-date-picker__value" }, hasValue ? displayValue : this.placeholder)), this._isOpen && (h("div", { key: '561b160f14e86b0a7c043a30ed6e315465d6160b', ref: el => (this.popoverRef = el), class: "seki-date-picker__popover", role: "dialog", "aria-modal": "true", "aria-label": "Choose date" }, h("seki-calendar", { key: '96688e161b3a3814ed27135905de95df437c8bbc', mode: this.mode, selected: selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.toISOString(), "range-from": rangeFrom === null || rangeFrom === void 0 ? void 0 : rangeFrom.toISOString(), "range-to": rangeTo === null || rangeTo === void 0 ? void 0 : rangeTo.toISOString(), "min-date": this.minDate, "max-date": this.maxDate, onSekiSelect: this.handleDateSelect, onSekiRangeSelect: this.handleRangeSelect })))));
197
228
  }
198
229
  static get formAssociated() { return true; }
199
230
  get el() { return getElement(this); }
200
231
  static get watchers() { return {
232
+ "open": ["handleOpenPropChange"],
201
233
  "value": ["updateFormValue"],
202
234
  "rangeFrom": ["updateFormValue"],
203
235
  "rangeTo": ["updateFormValue"]
@@ -9,51 +9,76 @@ const SekiDrawer = class {
9
9
  this.drawerOpen = createEvent(this, "drawerOpen");
10
10
  this.drawerClose = createEvent(this, "drawerClose");
11
11
  this.drawerSnap = createEvent(this, "drawerSnap");
12
+ this.sekiOpenChange = createEvent(this, "sekiOpenChange");
13
+ /**
14
+ * Controlled open state. Also readable/writable as the `open` attribute, so
15
+ * `<seki-drawer open>` renders open with no script involved.
16
+ */
17
+ this.open = false;
18
+ /**
19
+ * Initial open state for uncontrolled usage
20
+ */
21
+ this.defaultOpen = false;
12
22
  /**
13
23
  * Internal state for drawer open/closed
14
24
  */
15
- this.isOpen = false;
25
+ this._isOpen = false;
16
26
  /**
17
27
  * Current snap point (0-1)
18
28
  */
19
29
  this.currentSnapPoint = 1;
20
30
  }
31
+ componentWillLoad() {
32
+ this._isOpen = this.open || this.defaultOpen;
33
+ this.open = this._isOpen;
34
+ this.currentSnapPoint = this._isOpen ? 1 : 0;
35
+ }
36
+ componentDidLoad() {
37
+ this.updateContext();
38
+ }
39
+ handleOpenPropChange(newValue) {
40
+ // An outside assignment (`drawer.open = true`) has to win after first render;
41
+ // `open` is only read once in componentWillLoad otherwise.
42
+ if (newValue === this._isOpen)
43
+ return;
44
+ if (newValue) {
45
+ this.openDrawer();
46
+ }
47
+ else {
48
+ this.closeDrawer();
49
+ }
50
+ }
21
51
  /**
22
52
  * Opens the drawer
23
53
  */
24
- async open() {
25
- this.isOpen = true;
54
+ async openDrawer() {
55
+ this._isOpen = true;
56
+ this.open = true;
26
57
  this.currentSnapPoint = 1;
27
58
  this.updateContext();
28
59
  this.drawerOpen.emit();
60
+ this.sekiOpenChange.emit(true);
29
61
  }
30
62
  /**
31
63
  * Closes the drawer
32
64
  */
33
- async close() {
34
- this.isOpen = false;
65
+ async closeDrawer() {
66
+ this._isOpen = false;
67
+ this.open = false;
35
68
  this.currentSnapPoint = 0;
36
69
  this.updateContext();
37
70
  this.drawerClose.emit();
38
- }
39
- updateContext() {
40
- // seki-drawer-content has no other way to know this drawer's open state —
41
- // it reads this off the host element via closest('seki-drawer').
42
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
- this.el._drawerContext = { isOpen: this.isOpen };
44
- }
45
- componentDidLoad() {
46
- this.updateContext();
71
+ this.sekiOpenChange.emit(false);
47
72
  }
48
73
  /**
49
74
  * Toggles the drawer
50
75
  */
51
- async toggle() {
52
- if (this.isOpen) {
53
- await this.close();
76
+ async toggleDrawer() {
77
+ if (this._isOpen) {
78
+ await this.closeDrawer();
54
79
  }
55
80
  else {
56
- await this.open();
81
+ await this.openDrawer();
57
82
  }
58
83
  }
59
84
  /**
@@ -61,39 +86,54 @@ const SekiDrawer = class {
61
86
  */
62
87
  async snapTo(point) {
63
88
  if (point <= 0) {
64
- await this.close();
89
+ await this.closeDrawer();
65
90
  }
66
91
  else {
67
92
  this.currentSnapPoint = point;
68
- this.isOpen = true;
93
+ const wasOpen = this._isOpen;
94
+ this._isOpen = true;
95
+ this.open = true;
69
96
  this.updateContext();
97
+ if (!wasOpen) {
98
+ this.drawerOpen.emit();
99
+ this.sekiOpenChange.emit(true);
100
+ }
70
101
  this.drawerSnap.emit({ point });
71
102
  }
72
103
  }
104
+ updateContext() {
105
+ // seki-drawer-content has no other way to know this drawer's open state —
106
+ // it reads this off the host element via closest('seki-drawer').
107
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
+ this.el._drawerContext = { isOpen: this._isOpen };
109
+ }
73
110
  handleTriggerClick() {
74
- this.toggle();
111
+ this.toggleDrawer();
75
112
  }
76
113
  handleRequestClose() {
77
- this.close();
114
+ this.closeDrawer();
78
115
  }
79
116
  handleRequestSnap(event) {
80
117
  this.snapTo(event.detail.point);
81
118
  }
82
119
  handleKeydown(ev) {
83
- if (this.isOpen && ev.key === 'Escape') {
84
- this.close();
120
+ if (this._isOpen && ev.key === 'Escape') {
121
+ this.closeDrawer();
85
122
  }
86
123
  }
87
124
  connectedCallback() {
88
125
  syncTheme(this.el);
89
126
  }
90
127
  render() {
91
- return (h("div", { key: '7ae3c36bf05c4e2d9957083912da105b559a47e6', class: {
128
+ return (h("div", { key: '824d218c42cd41a0a79bef604e940f6c95a64470', class: {
92
129
  'seki-drawer': true,
93
- 'seki-drawer--open': this.isOpen,
94
- }, "data-snap-point": this.currentSnapPoint, part: "drawer" }, h("slot", { key: '6ef97e42496716b572d85d460dc25b63fdb8ff56' }), this.isOpen && (h("div", { key: 'fd17a0aa91fbd193a47ac1449eb85e6b972fe586', class: "seki-drawer-overlay", part: "overlay", onClick: () => this.close() }))));
130
+ 'seki-drawer--open': this._isOpen,
131
+ }, "data-snap-point": this.currentSnapPoint, part: "drawer" }, h("slot", { key: '26982c14006c01915390898306d79fa665e30463' }), this._isOpen && (h("div", { key: 'a0f90520c0deaa5c320bbc027ca5b6a4edc4d9ff', class: "seki-drawer-overlay", part: "overlay", onClick: () => this.closeDrawer() }))));
95
132
  }
96
133
  get el() { return getElement(this); }
134
+ static get watchers() { return {
135
+ "open": ["handleOpenPropChange"]
136
+ }; }
97
137
  };
98
138
  SekiDrawer.style = sekiDrawerCss;
99
139
 
@@ -87,8 +87,8 @@ const SekiHoverCardContent = class {
87
87
  const hoverCard = this.el.closest('seki-hover-card');
88
88
  if (hoverCard) {
89
89
  this.openChangeHandler = (e) => {
90
- const detail = e.detail;
91
- this._isOpen = detail.open;
90
+ const open = e.detail;
91
+ this._isOpen = open;
92
92
  if (this._isOpen) {
93
93
  requestAnimationFrame(() => this.updatePosition());
94
94
  // Setup click-outside listener for touch devices
@@ -98,8 +98,8 @@ const SekiHoverCardTrigger = class {
98
98
  const hoverCard = this.el.closest('seki-hover-card');
99
99
  if (hoverCard) {
100
100
  this.openChangeHandler = (e) => {
101
- const detail = e.detail;
102
- this.isOpen = detail.open;
101
+ const open = e.detail;
102
+ this.isOpen = open;
103
103
  };
104
104
  hoverCard.addEventListener('sekiOpenChange', this.openChangeHandler);
105
105
  }
@@ -118,7 +118,7 @@ const SekiHoverCardTrigger = class {
118
118
  }
119
119
  }
120
120
  render() {
121
- return (h(Host, { key: '6dc1ea9ef0cdcfa026c5596a5fa11436c02381fd' }, h("span", { key: '18cc4b8b6eaddd5b62e2a8b1913b330ae8eaf418', part: "trigger", class: "hover-card-trigger", "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.handleClick }, h("slot", { key: '75567a11e77bb2fae4b37a23f07b0fd26992f3ec' }))));
121
+ return (h(Host, { key: '8a9157aafd7dfc90a83570479ee34079892cb14c' }, h("span", { key: '7fbf401f8f560ca4b8f88f477964d2464f85c001', part: "trigger", class: "hover-card-trigger", "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.handleClick }, h("slot", { key: 'ebedc058cb447bd2c5be2b8588b779d04d7f7778' }))));
122
122
  }
123
123
  get el() { return getElement(this); }
124
124
  };
@@ -32,6 +32,17 @@ const SekiHoverCard = class {
32
32
  * @default false
33
33
  */
34
34
  this.disabled = false;
35
+ /**
36
+ * Controlled open state. Reflects to the `open` attribute, so
37
+ * `<seki-hover-card open>` renders open with no script involved.
38
+ * @default false
39
+ */
40
+ this.open = false;
41
+ /**
42
+ * Initial open state for uncontrolled usage
43
+ * @default false
44
+ */
45
+ this.defaultOpen = false;
35
46
  /**
36
47
  * Internal open state
37
48
  */
@@ -92,6 +103,20 @@ const SekiHoverCard = class {
92
103
  }
93
104
  };
94
105
  }
106
+ componentWillLoad() {
107
+ // `disabled` wins over a requested initial open state.
108
+ this._isOpen = (this.open || this.defaultOpen) && !this.disabled;
109
+ this.open = this._isOpen;
110
+ }
111
+ openChanged(newValue) {
112
+ // An outside assignment (`card.open = true`) has to win after first render;
113
+ // `open` is only read once in componentWillLoad otherwise.
114
+ if (newValue === this._isOpen)
115
+ return;
116
+ this.cancelOpen();
117
+ this.cancelClose();
118
+ this.setOpen(newValue);
119
+ }
95
120
  disabledChanged(newValue) {
96
121
  if (newValue && this._isOpen) {
97
122
  this.setOpen(false);
@@ -101,11 +126,19 @@ const SekiHoverCard = class {
101
126
  * Set the open state and emit change event
102
127
  */
103
128
  setOpen(open) {
104
- if (this._isOpen === open)
129
+ if (open && this.disabled) {
130
+ // Keep the reflected prop honest when an open request is refused.
131
+ this.open = false;
132
+ return;
133
+ }
134
+ if (this._isOpen === open) {
135
+ this.open = open;
105
136
  return;
137
+ }
106
138
  this._isOpen = open;
139
+ this.open = open;
107
140
  this.updateContext();
108
- this.sekiOpenChange.emit({ open });
141
+ this.sekiOpenChange.emit(open);
109
142
  if (open) {
110
143
  this.setupScrollListener();
111
144
  }
@@ -113,6 +146,22 @@ const SekiHoverCard = class {
113
146
  this.removeScrollListener();
114
147
  }
115
148
  }
149
+ /**
150
+ * Open the hover card immediately, skipping `openDelay`
151
+ */
152
+ async openHoverCard() {
153
+ this.cancelOpen();
154
+ this.cancelClose();
155
+ this.setOpen(true);
156
+ }
157
+ /**
158
+ * Close the hover card immediately, skipping `closeDelay`
159
+ */
160
+ async closeHoverCard() {
161
+ this.cancelOpen();
162
+ this.cancelClose();
163
+ this.setOpen(false);
164
+ }
116
165
  /**
117
166
  * Close the hover card immediately and focus the trigger
118
167
  */
@@ -211,10 +260,11 @@ const SekiHoverCard = class {
211
260
  this.removeScrollListener();
212
261
  }
213
262
  render() {
214
- return (h(Host, { key: '228ce747491865bdc97fdef9b6da751f5833c588', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: '777dade24e948b0e8ed21ebfa9595beb33fdf7a9', class: "hover-card" }, h("slot", { key: 'e5db3d1887de0241a95a7529aa3c5cb8d9c79ed2' }))));
263
+ return (h(Host, { key: '23c73aa997f26586621e616361279663c7d6f52a', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: 'beb5e0101353f32b2e706edd6b2caa8c9526c35f', class: "hover-card" }, h("slot", { key: 'e61dfec60b816e957d30e9d6504fb2f905cfb9e3' }))));
215
264
  }
216
265
  get el() { return getElement(this); }
217
266
  static get watchers() { return {
267
+ "open": ["openChanged"],
218
268
  "disabled": ["disabledChanged"]
219
269
  }; }
220
270
  };
@@ -1,5 +1,6 @@
1
1
  import { r as registerInstance, h, H as Host, a as getElement } from './index-BwKLEihM.js';
2
2
  import { s as syncTheme } from './theme-sync-QPMexJR6.js';
3
+ import { s as subscribeToContextChange } from './context-bridge-DJMgrCw3.js';
3
4
 
4
5
  const sekiResizableHandleCss = ":host{--seki-neutral-50:hsl(0, 0%, 98%);--seki-neutral-100:hsl(0, 0%, 96.1%);--seki-neutral-200:hsl(0, 0%, 89.8%);--seki-neutral-300:hsl(0, 0%, 83.1%);--seki-neutral-400:hsl(0, 0%, 63.9%);--seki-neutral-500:hsl(0, 0%, 45.1%);--seki-neutral-600:hsl(0, 0%, 32.2%);--seki-neutral-700:hsl(0, 0%, 25.1%);--seki-neutral-800:hsl(0, 0%, 14.9%);--seki-neutral-900:hsl(0, 0%, 9%);--seki-neutral-950:hsl(0, 0%, 3.9%);--seki-primary-50:hsl(210, 100%, 97%);--seki-primary-100:hsl(210, 95%, 93%);--seki-primary-200:hsl(210, 95%, 85%);--seki-primary-300:hsl(210, 90%, 73%);--seki-primary-400:hsl(210, 85%, 58%);--seki-primary-500:hsl(210, 80%, 48%);--seki-primary-600:hsl(210, 75%, 40%);--seki-primary-700:hsl(210, 70%, 32%);--seki-primary-800:hsl(210, 65%, 25%);--seki-primary-900:hsl(210, 60%, 18%);--seki-primary-950:hsl(210, 55%, 10%);--seki-success-500:hsl(142, 71%, 45%);--seki-success-600:hsl(142, 71%, 35%);--seki-warning-500:hsl(38, 92%, 50%);--seki-warning-600:hsl(38, 92%, 40%);--seki-destructive-500:hsl(0, 84.2%, 60.2%);--seki-destructive-600:hsl(0, 72%, 41%);--seki-chart-1:hsl(12, 76%, 61%);--seki-chart-2:hsl(173, 58%, 39%);--seki-chart-3:hsl(197, 37%, 24%);--seki-chart-4:hsl(43, 74%, 66%);--seki-chart-5:hsl(27, 87%, 67%)}:host{--seki-background:hsl(0, 0%, 100%);--seki-foreground:hsl(0, 0%, 3.9%);--seki-muted:hsl(0, 0%, 96.1%);--seki-muted-foreground:hsl(0, 0%, 42%);--seki-card:hsl(0, 0%, 100%);--seki-card-foreground:hsl(0, 0%, 3.9%);--seki-popover:hsl(0, 0%, 100%);--seki-popover-foreground:hsl(0, 0%, 3.9%);--seki-border:hsl(0, 0%, 89.8%);--seki-input:hsl(0, 0%, 89.8%);--seki-primary:hsl(0, 0%, 9%);--seki-primary-foreground:hsl(0, 0%, 98%);--seki-primary-tint:hsl(0, 0%, 9%, 0.06);--seki-primary-tint-foreground:var(--seki-foreground);--seki-secondary:hsl(0, 0%, 96.1%);--seki-secondary-foreground:hsl(0, 0%, 9%);--seki-accent:hsl(0, 0%, 96.1%);--seki-accent-foreground:hsl(0, 0%, 9%);--seki-destructive:hsl(0, 84.2%, 60.2%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-destructive-bg:hsl(0, 86%, 97%);--seki-destructive-soft-foreground:hsl(0, 63%, 31%);--seki-success:hsl(142, 71%, 45%);--seki-success-foreground:hsl(142, 64%, 24%);--seki-success-bg:hsl(142, 76%, 97%);--seki-warning:hsl(38, 92%, 50%);--seki-warning-foreground:hsl(21, 77%, 27%);--seki-warning-bg:hsl(48, 96%, 96%);--seki-info:hsl(217, 91%, 60%);--seki-info-foreground:hsl(224, 64%, 33%);--seki-info-bg:hsl(214, 100%, 97%);--seki-ring:hsl(0, 0%, 3.9%);--seki-ring-shadow:hsl(0, 0%, 3.9%, 0.1);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-400);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-300)}:host([data-theme='dark']){--seki-background:hsl(0, 0%, 3.9%);--seki-foreground:hsl(0, 0%, 98%);--seki-muted:hsl(0, 0%, 14.9%);--seki-muted-foreground:hsl(0, 0%, 63.9%);--seki-card:hsl(0, 0%, 3.9%);--seki-card-foreground:hsl(0, 0%, 98%);--seki-popover:hsl(0, 0%, 3.9%);--seki-popover-foreground:hsl(0, 0%, 98%);--seki-border:hsl(0, 0%, 14.9%);--seki-input:hsl(0, 0%, 14.9%);--seki-primary:hsl(0, 0%, 98%);--seki-primary-foreground:hsl(0, 0%, 9%);--seki-primary-tint:hsl(0, 0%, 98%, 0.1);--seki-primary-tint-foreground:var(--seki-foreground);--seki-secondary:hsl(0, 0%, 14.9%);--seki-secondary-foreground:hsl(0, 0%, 98%);--seki-accent:hsl(0, 0%, 14.9%);--seki-accent-foreground:hsl(0, 0%, 98%);--seki-destructive:hsl(0, 62.8%, 30.6%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-destructive-bg:rgba(239, 68, 68, 0.1);--seki-destructive-soft-foreground:hsl(0, 91%, 71%);--seki-success:hsl(142, 69%, 58%);--seki-success-foreground:hsl(142, 69%, 58%);--seki-success-bg:rgba(34, 197, 94, 0.1);--seki-warning:hsl(43, 96%, 56%);--seki-warning-foreground:hsl(43, 96%, 56%);--seki-warning-bg:rgba(245, 158, 11, 0.1);--seki-info:hsl(217, 92%, 68%);--seki-info-foreground:hsl(217, 92%, 68%);--seki-info-bg:rgba(59, 130, 246, 0.1);--seki-ring:hsl(0, 0%, 83.1%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-600);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-700);--seki-button-primary-hover-bg:hsl(0, 0%, 98%, 0.9);--seki-button-secondary-hover-bg:hsl(0, 0%, 14.9%, 0.8)}:host{--seki-button-primary-bg:var(--seki-primary);--seki-button-primary-text:var(--seki-primary-foreground);--seki-button-primary-border:transparent;--seki-button-primary-hover-bg:hsl(0, 0%, 9%, 0.9);--seki-button-primary-hover-text:var(--seki-primary-foreground);--seki-button-primary-hover-border:transparent;--seki-button-secondary-bg:var(--seki-secondary);--seki-button-secondary-text:var(--seki-secondary-foreground);--seki-button-secondary-border:transparent;--seki-button-secondary-hover-bg:hsl(0, 0%, 96.1%, 0.8);--seki-button-secondary-hover-text:var(--seki-secondary-foreground);--seki-button-secondary-hover-border:transparent;--seki-button-outline-bg:transparent;--seki-button-outline-text:var(--seki-foreground);--seki-button-outline-border:var(--seki-input);--seki-button-outline-hover-bg:var(--seki-accent);--seki-button-outline-hover-text:var(--seki-accent-foreground);--seki-button-outline-hover-border:var(--seki-input);--seki-button-ghost-bg:transparent;--seki-button-ghost-text:var(--seki-foreground);--seki-button-ghost-border:transparent;--seki-button-ghost-hover-bg:var(--seki-accent);--seki-button-ghost-hover-text:var(--seki-accent-foreground);--seki-button-ghost-hover-border:transparent;--seki-button-destructive-bg:var(--seki-destructive);--seki-button-destructive-text:var(--seki-destructive-foreground);--seki-button-destructive-border:transparent;--seki-button-destructive-hover-bg:hsl(0, 84.2%, 60.2%, 0.9);--seki-button-destructive-hover-border:transparent;--seki-button-sm-padding-x:var(--seki-spacing-3, 0.75rem);--seki-button-sm-padding-y:0.375rem;--seki-button-sm-font-size:var(--seki-text-sm, 0.875rem);--seki-button-sm-height:2.25rem;--seki-button-md-padding-x:var(--seki-spacing-4, 1rem);--seki-button-md-padding-y:var(--seki-spacing-2, 0.5rem);--seki-button-md-font-size:var(--seki-text-base, 1rem);--seki-button-md-height:2.5rem;--seki-button-lg-padding-x:2rem;--seki-button-lg-padding-y:0.5rem;--seki-button-lg-font-size:1rem;--seki-button-lg-height:2.75rem;--seki-button-icon-sm-size:2rem;--seki-button-icon-size:2.5rem;--seki-button-icon-lg-size:3rem;--seki-button-icon-gap:0.5rem;--seki-button-link-bg:transparent;--seki-button-link-text:var(--seki-primary);--seki-button-link-border:transparent;--seki-button-link-hover-bg:transparent;--seki-button-link-hover-text:var(--seki-primary);--seki-button-link-hover-border:transparent;--seki-button-radius:var(--seki-radius-md, 0.375rem);--seki-button-font-weight:var(--seki-font-medium, 500);--seki-button-transition-duration:150ms;--seki-button-transition-timing:ease-in-out;--seki-button-shadow:var(--seki-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));--seki-button-shadow-hover:var(--seki-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));--seki-button-disabled-opacity:0.5;--seki-input-bg:var(--seki-background);--seki-input-border:var(--seki-border);--seki-input-text:var(--seki-foreground);--seki-input-placeholder:var(--seki-muted-foreground);--seki-input-ring:var(--seki-ring);--seki-input-invalid-border:var(--seki-destructive);--seki-input-invalid-ring:var(--seki-destructive);--seki-input-disabled-opacity:0.5;--seki-input-radius:var(--seki-radius-md);--seki-input-ring-offset:2px;--seki-select-trigger-bg:var(--seki-background);--seki-select-trigger-border:1px solid var(--seki-border);--seki-select-trigger-bg-hover:var(--seki-muted);--seki-select-trigger-radius:var(--seki-radius-md);--seki-select-trigger-min-height:2.5rem;--seki-select-trigger-padding:0.5rem 0.75rem;--seki-select-trigger-gap:0.5rem;--seki-select-content-bg:var(--seki-popover);--seki-select-content-border:1px solid var(--seki-border);--seki-select-content-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1);--seki-select-content-radius:var(--seki-radius-md);--seki-select-content-padding:0.5rem 0;--seki-select-option-padding:0.5rem 0.75rem;--seki-select-option-gap:0.5rem;--seki-select-option-radius:var(--seki-radius-sm);--seki-select-option-bg-hover:var(--seki-muted);--seki-select-option-bg-selected:var(--seki-muted);--seki-select-group-label-padding:0.5rem 0.75rem;--seki-select-group-label-font-size:var(--seki-font-size-xs);--seki-select-group-label-font-weight:var(--seki-font-semibold);--seki-select-group-label-color:var(--seki-muted-foreground);--seki-select-group-separator:1px solid var(--seki-border)}:host{--seki-spacing-0:0;--seki-spacing-0-5:0.125rem;--seki-spacing-1:0.25rem;--seki-spacing-1-5:0.375rem;--seki-spacing-2:0.5rem;--seki-spacing-2-5:0.625rem;--seki-spacing-3:0.75rem;--seki-spacing-3-5:0.875rem;--seki-spacing-4:1rem;--seki-spacing-5:1.25rem;--seki-spacing-6:1.5rem;--seki-spacing-8:2rem;--seki-spacing-10:2.5rem;--seki-spacing-12:3rem;--seki-spacing-16:4rem;--seki-spacing-20:5rem;--seki-spacing-24:6rem;--seki-input-height-sm:2rem;--seki-input-height-md:2.5rem;--seki-input-height-lg:3rem;--seki-input-padding-x:0.75rem;--seki-input-padding-y:0.5rem;--seki-input-font-size:0.875rem;--seki-input-ring-offset:2px}:host{--seki-shadow-sm:0 1px 2px 0 rgb(0 0 0 / 0.05);--seki-shadow-md:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--seki-shadow-lg:0 10px 15px -3px rgb(0 0 0 / 0.15), 0 4px 6px -4px rgb(0 0 0 / 0.1);--seki-shadow-xl:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)}:host{--seki-font-sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;--seki-font-mono:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;--seki-text-xs:0.75rem;--seki-text-sm:0.875rem;--seki-text-base:1rem;--seki-text-lg:1.125rem;--seki-text-xl:1.25rem;--seki-text-2xl:1.5rem;--seki-text-3xl:1.875rem;--seki-text-4xl:2.25rem;--seki-font-normal:400;--seki-font-medium:500;--seki-font-semibold:600;--seki-font-bold:700;--seki-leading-none:1;--seki-leading-tight:1.25;--seki-leading-normal:1.5;--seki-leading-relaxed:1.75}:host{--seki-radius-sm:0.25rem;--seki-radius-md:0.375rem;--seki-radius-lg:0.5rem;--seki-radius-xl:1rem;--seki-radius-full:9999px;}:host{--seki-sidebar-width:16rem;--seki-sidebar-width-icon:3rem;--seki-sidebar-width-mobile:18rem;--seki-sidebar-background:hsl(0, 0%, 98%);--seki-sidebar-foreground:hsl(240, 5.3%, 26.1%);--seki-sidebar-primary:hsl(240, 5.9%, 10%);--seki-sidebar-primary-foreground:hsl(0, 0%, 98%);--seki-sidebar-accent:hsl(240, 4.8%, 95.9%);--seki-sidebar-accent-foreground:hsl(240, 5.9%, 10%);--seki-sidebar-border:hsl(220, 13%, 91%);--seki-sidebar-ring:hsl(217.2, 91.2%, 59.8%);--seki-sidebar-muted-foreground:hsl(240, 3.8%, 46.1%);--seki-sidebar-menu-button-height:2rem;--seki-sidebar-menu-button-height-lg:3rem;--seki-sidebar-menu-button-padding:0.5rem;--seki-sidebar-menu-button-gap:0.5rem;--seki-sidebar-menu-button-radius:var(--seki-radius-md, 0.375rem);--seki-sidebar-menu-sub-padding-left:1.75rem;--seki-sidebar-menu-sub-border-width:1px;--seki-sidebar-group-padding:0.5rem;--seki-sidebar-group-label-height:2rem;--seki-sidebar-group-label-padding:0.5rem;--seki-sidebar-header-height:auto;--seki-sidebar-footer-height:auto;--seki-sidebar-header-padding:0.5rem;--seki-sidebar-footer-padding:0.5rem;--seki-sidebar-content-padding:0.5rem;--seki-sidebar-rail-width:1rem;--seki-sidebar-transition-duration:200ms;--seki-sidebar-transition-timing:ease-in-out;--seki-sidebar-mobile-breakpoint:768px;--seki-sidebar-overlay-bg:hsla(0, 0%, 0%, 0.8)}:host([data-theme='dark']){--seki-sidebar-background:hsl(240, 5.9%, 10%);--seki-sidebar-foreground:hsl(240, 4.8%, 95.9%);--seki-sidebar-primary:hsl(0, 0%, 98%);--seki-sidebar-primary-foreground:hsl(240, 5.9%, 10%);--seki-sidebar-accent:hsl(240, 3.7%, 15.9%);--seki-sidebar-accent-foreground:hsl(240, 4.8%, 95.9%);--seki-sidebar-border:hsl(240, 3.7%, 15.9%);--seki-sidebar-ring:hsl(217.2, 91.2%, 59.8%);--seki-sidebar-muted-foreground:hsl(240, 5%, 64.9%)}:host{--seki-animation-fast:150ms;--seki-animation-normal:200ms;--seki-animation-slow:300ms;--seki-ease-in:cubic-bezier(0.4, 0, 1, 1);--seki-ease-out:cubic-bezier(0, 0, 0.2, 1);--seki-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--seki-accordion-content-height:auto}@keyframes seki-fade-in{from{opacity:0}to{opacity:1}}@keyframes seki-fade-out{from{opacity:1}to{opacity:0}}@keyframes seki-scale-in{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}@keyframes seki-scale-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.95)}}@keyframes seki-slide-in-from-top{from{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes seki-slide-out-to-top{from{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes seki-slide-in-from-bottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes seki-slide-out-to-bottom{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes seki-slide-in-from-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes seki-slide-out-to-left{from{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes seki-slide-in-from-right{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes seki-slide-out-to-right{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes seki-accordion-down{from{height:0;opacity:0}to{height:var(--seki-accordion-content-height);opacity:1}}@keyframes seki-accordion-up{from{height:var(--seki-accordion-content-height);opacity:1}to{height:0;opacity:0}}@keyframes seki-zoom-in{from{opacity:0;transform:scale(0.96)}to{opacity:1;transform:scale(1)}}@keyframes seki-zoom-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.96)}}@keyframes seki-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes seki-pulse{0%,100%{opacity:1}50%{opacity:0.5}}@keyframes seki-bounce{0%,100%{transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8, 0, 1, 1)}50%{transform:translateY(0);animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}}@keyframes seki-collapsible-open{from{height:0;overflow:hidden}to{height:var(--seki-collapsible-content-height, auto)}}@keyframes seki-collapsible-close{from{height:var(--seki-collapsible-content-height, auto)}to{height:0;overflow:hidden}}@keyframes seki-toast-slide-in-right{from{transform:translateX(calc(100% + 1rem))}to{transform:translateX(0)}}@keyframes seki-toast-slide-out-right{from{transform:translateX(0)}to{transform:translateX(calc(100% + 1rem))}}@keyframes seki-toast-swipe-out{from{transform:translateX(var(--seki-toast-swipe-end-x, 0))}to{transform:translateX(calc(100% + 1rem))}}.seki-animate-fade-in{animation:seki-fade-in var(--seki-animation-normal) var(--seki-ease-out)}.seki-animate-fade-out{animation:seki-fade-out var(--seki-animation-normal) var(--seki-ease-in)}.seki-animate-scale-in{animation:seki-scale-in var(--seki-animation-normal) var(--seki-ease-out)}.seki-animate-scale-out{animation:seki-scale-out var(--seki-animation-normal) var(--seki-ease-in)}.seki-animate-spin{animation:seki-spin 1s linear infinite}.seki-animate-pulse{animation:seki-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.seki-animate-bounce{animation:seki-bounce 1s infinite}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}}:host{display:flex;align-items:center;justify-content:center;flex-shrink:0}.resizable-handle{position:relative;display:flex;align-items:center;justify-content:center;background:var(--seki-border, hsl(240 5.9% 90%));transition:background-color var(--seki-animation-fast, 150ms) ease;outline:none}.resizable-handle--horizontal{width:1px;height:100%;cursor:col-resize}.resizable-handle--vertical{height:1px;width:100%;cursor:row-resize}.resizable-handle:hover:not(.resizable-handle--disabled),.resizable-handle:focus-visible:not(.resizable-handle--disabled){background:var(--seki-primary, hsl(240 5.9% 10%))}.resizable-handle:focus-visible{outline:2px solid var(--seki-ring, hsl(240 5% 64.9%));outline-offset:2px}.resizable-handle--disabled{cursor:default;pointer-events:none;opacity:0.5}.resizable-handle--dragging{background:var(--seki-primary, hsl(240 5.9% 10%))}.resizable-handle__grip{position:absolute;display:flex;align-items:center;justify-content:center;z-index:10;border-radius:var(--seki-radius-sm, 0.25rem);background:var(--seki-border, hsl(240 5.9% 90%));border:1px solid var(--seki-border, hsl(240 5.9% 90%))}.resizable-handle--horizontal .resizable-handle__grip{width:12px;height:24px}.resizable-handle--vertical .resizable-handle__grip{width:24px;height:12px}.resizable-handle__grip-icon{color:var(--seki-muted-foreground, hsl(240 3.8% 46.1%))}.resizable-handle--horizontal .resizable-handle__grip-icon{width:8px;height:16px}.resizable-handle--vertical .resizable-handle__grip-icon{width:16px;height:8px}:host([data-theme='dark']) .resizable-handle{background:var(--seki-border, hsl(240 3.7% 15.9%))}:host([data-theme='dark']) .resizable-handle:hover:not(.resizable-handle--disabled),:host([data-theme='dark']) .resizable-handle:focus-visible:not(.resizable-handle--disabled){background:var(--seki-primary, hsl(0 0% 98%))}:host([data-theme='dark']) .resizable-handle__grip{background:var(--seki-border, hsl(240 3.7% 15.9%));border-color:var(--seki-border, hsl(240 3.7% 15.9%))}@media (prefers-reduced-motion: reduce){.resizable-handle{transition:none}}";
5
6
 
@@ -18,6 +19,7 @@ const SekiResizableHandle = class {
18
19
  this._direction = 'horizontal';
19
20
  this.startPosition = 0;
20
21
  this.groupElement = null;
22
+ this.contextSubscription = null;
21
23
  this.handleDirectionChange = () => {
22
24
  const context = this.getContext();
23
25
  if (context) {
@@ -79,14 +81,21 @@ const SekiResizableHandle = class {
79
81
  this.groupElement = group;
80
82
  group.addEventListener('sekiDirectionChange', this.handleDirectionChange);
81
83
  }
84
+ // Pick up the direction once the group publishes its context, which may be
85
+ // after this handle loaded in the per-tag custom-elements build.
86
+ this.contextSubscription = subscribeToContextChange(this.el, 'seki-resizable-panel-group', this.handleDirectionChange);
87
+ this.handleDirectionChange();
82
88
  }
83
89
  connectedCallback() {
84
90
  syncTheme(this.el);
85
91
  }
86
92
  disconnectedCallback() {
93
+ var _a;
87
94
  if (this.groupElement) {
88
95
  this.groupElement.removeEventListener('sekiDirectionChange', this.handleDirectionChange);
89
96
  }
97
+ (_a = this.contextSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
98
+ this.contextSubscription = null;
90
99
  }
91
100
  handleKeyDown(event) {
92
101
  if (this.disabled)
@@ -154,13 +163,13 @@ const SekiResizableHandle = class {
154
163
  }
155
164
  render() {
156
165
  const isHorizontal = this._direction === 'horizontal';
157
- return (h(Host, { key: 'f57bd8dbeadc3b60bfe1b949e5b0eaa64cabf8e3' }, h("div", { key: '7e753102f4e9f175e23aa2539d2bd61a44e7a0e0', part: "handle", role: "separator", tabindex: this.disabled ? -1 : 0, "aria-valuenow": this.getAriaValue(), "aria-valuemin": 0, "aria-valuemax": 100, "aria-orientation": isHorizontal ? 'vertical' : 'horizontal', "aria-label": "Resize handle", class: {
166
+ return (h(Host, { key: '567e976a7d1d4b1fedf048ff9a7596c2f91c1872' }, h("div", { key: 'ec73f064616fd898f17cbf01b99af34788c7530f', part: "handle", role: "separator", tabindex: this.disabled ? -1 : 0, "aria-valuenow": this.getAriaValue(), "aria-valuemin": 0, "aria-valuemax": 100, "aria-orientation": isHorizontal ? 'vertical' : 'horizontal', "aria-label": "Resize handle", class: {
158
167
  'resizable-handle': true,
159
168
  'resizable-handle--horizontal': isHorizontal,
160
169
  'resizable-handle--vertical': !isHorizontal,
161
170
  'resizable-handle--disabled': this.disabled,
162
171
  'resizable-handle--dragging': this._isDragging,
163
- }, onPointerDown: this.handlePointerDown, onPointerMove: this.handlePointerMove, onPointerUp: this.handlePointerUp }, this.withHandle && (h("div", { key: 'b2481ae202d7c569c94b4ebbadb2e970f00350fc', part: "grip", class: "resizable-handle__grip" }, h("svg", { key: '88d2b6c7169b11809053b63c1983245ca268fc27', class: "resizable-handle__grip-icon", viewBox: "0 0 6 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("circle", { key: '7af4ef76e00f3b7ebf3b0f8ec25c1949254ce4b3', cx: "1.5", cy: "2", r: "1", fill: "currentColor" }), h("circle", { key: 'a52a1f74aba04567eca82dd84a1d289d093b960e', cx: "4.5", cy: "2", r: "1", fill: "currentColor" }), h("circle", { key: 'a5db8c4c9f72a9f3ce1940e3c336f36bedc503c2', cx: "1.5", cy: "6", r: "1", fill: "currentColor" }), h("circle", { key: '34e4356b00d9aec99f4d5da29036352e5e43f013', cx: "4.5", cy: "6", r: "1", fill: "currentColor" }), h("circle", { key: '17ce1db6add8788fead03b9c97113a262b725c17', cx: "1.5", cy: "10", r: "1", fill: "currentColor" }), h("circle", { key: 'edccbc8dad1a053a55cba85cf8a0b939d319a6b8', cx: "4.5", cy: "10", r: "1", fill: "currentColor" }), h("circle", { key: '5d95d8b187d2992bc9d55a08fe3dd034fda9474a', cx: "1.5", cy: "14", r: "1", fill: "currentColor" }), h("circle", { key: '149ff3d7f9ba53b1715ec4867b72ad4d941a3972', cx: "4.5", cy: "14", r: "1", fill: "currentColor" })))))));
172
+ }, onPointerDown: this.handlePointerDown, onPointerMove: this.handlePointerMove, onPointerUp: this.handlePointerUp }, this.withHandle && (h("div", { key: 'e3054a34cbc71079c006864adb10fce7fa338507', part: "grip", class: "resizable-handle__grip" }, h("svg", { key: 'de3899676f375377fb558dea1bb645f0d0e70388', class: "resizable-handle__grip-icon", viewBox: "0 0 6 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("circle", { key: 'e9c55beb3bc0039c9cd6562aa8e936d4dcfafdb2', cx: "1.5", cy: "2", r: "1", fill: "currentColor" }), h("circle", { key: 'f7ebf6269df4d7e88b2c903ec922666a06a594d7', cx: "4.5", cy: "2", r: "1", fill: "currentColor" }), h("circle", { key: 'beedd6149812012e9d5b32f3dd77f120aa0e0859', cx: "1.5", cy: "6", r: "1", fill: "currentColor" }), h("circle", { key: '9b42b8fb2e0e502e8195b520a08a760dc27a9eaa', cx: "4.5", cy: "6", r: "1", fill: "currentColor" }), h("circle", { key: '12d0dd2597037340c94792be04f82e5745ba20de', cx: "1.5", cy: "10", r: "1", fill: "currentColor" }), h("circle", { key: '12227cd7aed5dd71c26133e57e4dd9bb72efb88b', cx: "4.5", cy: "10", r: "1", fill: "currentColor" }), h("circle", { key: 'f0951f2f445e06af2419f6f4d56d008aed9c5316', cx: "1.5", cy: "14", r: "1", fill: "currentColor" }), h("circle", { key: '57e3b554bab80ce435e77722957fae11e4c29192', cx: "4.5", cy: "14", r: "1", fill: "currentColor" })))))));
164
173
  }
165
174
  get el() { return getElement(this); }
166
175
  };