@threadlabs/looma 0.1.28 → 0.2.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 (210) hide show
  1. package/dist/{chunk-G5AWV77V.js → chunk-WW7Y67EW.js} +32 -33
  2. package/dist/{chunk-M7FPK6GN.js → chunk-Z4W5W53T.js} +19 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/looma.cjs.js +1 -1
  5. package/dist/cjs/{positioning-D5q9DM-0.js → positioning-BiPpyC-_.js} +26 -0
  6. package/dist/cjs/ui-affordance-scope.cjs.entry.js +1 -1
  7. package/dist/cjs/ui-chip_2.cjs.entry.js +190 -498
  8. package/dist/cjs/ui-combobox.cjs.entry.js +708 -0
  9. package/dist/cjs/ui-context-menu.cjs.entry.js +2 -2
  10. package/dist/cjs/ui-dialog.cjs.entry.js +1 -1
  11. package/dist/cjs/ui-disclosure.cjs.entry.js +1 -1
  12. package/dist/cjs/ui-editable.cjs.entry.js +3 -3
  13. package/dist/cjs/ui-floating-action-button.cjs.entry.js +1 -1
  14. package/dist/cjs/ui-form-field.cjs.entry.js +1 -1
  15. package/dist/cjs/ui-icon-button.cjs.entry.js +1 -1
  16. package/dist/cjs/ui-input.cjs.entry.js +1 -1
  17. package/dist/cjs/ui-menu-item.cjs.entry.js +1 -1
  18. package/dist/cjs/ui-menu.cjs.entry.js +2 -2
  19. package/dist/cjs/ui-popover.cjs.entry.js +2 -2
  20. package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
  21. package/dist/cjs/ui-radio.cjs.entry.js +1 -1
  22. package/dist/cjs/ui-search-result-row.cjs.entry.js +1 -1
  23. package/dist/cjs/ui-search-shell.cjs.entry.js +1 -1
  24. package/dist/cjs/ui-select.cjs.entry.js +1 -1
  25. package/dist/cjs/ui-switch.cjs.entry.js +2 -2
  26. package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
  27. package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
  28. package/dist/cjs/ui-toast-region.cjs.entry.js +2 -2
  29. package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
  30. package/dist/cjs/ui-tree-item.cjs.entry.js +2 -2
  31. package/dist/cjs/ui-tree.cjs.entry.js +1 -1
  32. package/dist/collection/collection-manifest.json +0 -1
  33. package/dist/collection/components/ui-combobox/ui-combobox.css +23 -0
  34. package/dist/collection/components/ui-combobox/ui-combobox.js +298 -21
  35. package/dist/collection/components/ui-context-menu/ui-context-menu.js +1 -1
  36. package/dist/collection/components/ui-dialog/ui-dialog.js +1 -1
  37. package/dist/collection/components/ui-disclosure/ui-disclosure.js +1 -1
  38. package/dist/collection/components/ui-editable/ui-editable.js +3 -3
  39. package/dist/collection/components/ui-floating-action-button/ui-floating-action-button.js +1 -1
  40. package/dist/collection/components/ui-form-field/ui-form-field.js +1 -1
  41. package/dist/collection/components/ui-icon-button/ui-icon-button.js +1 -1
  42. package/dist/collection/components/ui-input/ui-input.js +1 -1
  43. package/dist/collection/components/ui-menu/ui-menu.js +1 -1
  44. package/dist/collection/components/ui-menu-item/ui-menu-item.js +1 -1
  45. package/dist/collection/components/ui-popover/ui-popover.js +1 -1
  46. package/dist/collection/components/ui-radio/ui-radio.js +1 -1
  47. package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
  48. package/dist/collection/components/ui-search-result-row/ui-search-result-row.js +1 -1
  49. package/dist/collection/components/ui-search-shell/ui-search-shell.js +1 -1
  50. package/dist/collection/components/ui-select/ui-select.js +1 -1
  51. package/dist/collection/components/ui-switch/ui-switch.js +2 -2
  52. package/dist/collection/components/ui-tabs/ui-tabs.js +1 -1
  53. package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
  54. package/dist/collection/components/ui-toast-region/ui-toast-region.js +1 -1
  55. package/dist/collection/components/ui-tooltip/ui-tooltip.js +1 -1
  56. package/dist/collection/components/ui-top-bar/ui-top-bar.js +1 -1
  57. package/dist/collection/components/ui-tree/ui-tree.js +1 -1
  58. package/dist/collection/components/ui-tree-item/ui-tree-item.js +2 -2
  59. package/dist/collection/overlay/positioning.js +26 -0
  60. package/dist/components/index.d.ts +0 -2
  61. package/dist/components/index.js +1 -1
  62. package/dist/components/p-BOC_l2hE.js +1 -0
  63. package/dist/components/{p-B1macZOS.js → p-Btk_75st.js} +1 -1
  64. package/dist/components/p-biKnomFl.js +1 -0
  65. package/dist/components/ui-affordance-scope.js +1 -1
  66. package/dist/components/ui-combobox.js +1 -1
  67. package/dist/components/ui-context-menu.js +1 -1
  68. package/dist/components/ui-dialog.js +1 -1
  69. package/dist/components/ui-disclosure.js +1 -1
  70. package/dist/components/ui-editable.js +1 -1
  71. package/dist/components/ui-floating-action-button.js +1 -1
  72. package/dist/components/ui-form-field.js +1 -1
  73. package/dist/components/ui-icon-button.js +1 -1
  74. package/dist/components/ui-input.js +1 -1
  75. package/dist/components/ui-menu-item.js +1 -1
  76. package/dist/components/ui-menu.js +1 -1
  77. package/dist/components/ui-popover.js +1 -1
  78. package/dist/components/ui-radio-group.js +1 -1
  79. package/dist/components/ui-radio.js +1 -1
  80. package/dist/components/ui-search-result-row.js +1 -1
  81. package/dist/components/ui-search-shell.js +1 -1
  82. package/dist/components/ui-select.js +1 -1
  83. package/dist/components/ui-switch.js +1 -1
  84. package/dist/components/ui-tabs.js +1 -1
  85. package/dist/components/ui-textarea.js +1 -1
  86. package/dist/components/ui-toast-region.js +1 -1
  87. package/dist/components/ui-tooltip.js +1 -1
  88. package/dist/components/ui-top-bar.js +1 -1
  89. package/dist/components/ui-tree-item.js +1 -1
  90. package/dist/components/ui-tree.js +1 -1
  91. package/dist/esm/loader.js +1 -1
  92. package/dist/esm/looma.js +1 -1
  93. package/dist/esm/{positioning-Drmwg-C1.js → positioning-Ig1jYhE1.js} +26 -0
  94. package/dist/esm/ui-affordance-scope.entry.js +1 -1
  95. package/dist/esm/ui-chip_2.entry.js +193 -501
  96. package/dist/esm/ui-combobox.entry.js +706 -0
  97. package/dist/esm/ui-context-menu.entry.js +2 -2
  98. package/dist/esm/ui-dialog.entry.js +1 -1
  99. package/dist/esm/ui-disclosure.entry.js +1 -1
  100. package/dist/esm/ui-editable.entry.js +3 -3
  101. package/dist/esm/ui-floating-action-button.entry.js +1 -1
  102. package/dist/esm/ui-form-field.entry.js +1 -1
  103. package/dist/esm/ui-icon-button.entry.js +1 -1
  104. package/dist/esm/ui-input.entry.js +1 -1
  105. package/dist/esm/ui-menu-item.entry.js +1 -1
  106. package/dist/esm/ui-menu.entry.js +2 -2
  107. package/dist/esm/ui-popover.entry.js +2 -2
  108. package/dist/esm/ui-radio-group.entry.js +1 -1
  109. package/dist/esm/ui-radio.entry.js +1 -1
  110. package/dist/esm/ui-search-result-row.entry.js +1 -1
  111. package/dist/esm/ui-search-shell.entry.js +1 -1
  112. package/dist/esm/ui-select.entry.js +1 -1
  113. package/dist/esm/ui-switch.entry.js +2 -2
  114. package/dist/esm/ui-tabs.entry.js +1 -1
  115. package/dist/esm/ui-textarea.entry.js +1 -1
  116. package/dist/esm/ui-toast-region.entry.js +2 -2
  117. package/dist/esm/ui-top-bar.entry.js +1 -1
  118. package/dist/esm/ui-tree-item.entry.js +2 -2
  119. package/dist/esm/ui-tree.entry.js +1 -1
  120. package/dist/index.cjs +516 -524
  121. package/dist/index.js +19 -2
  122. package/dist/looma/looma.esm.js +1 -1
  123. package/dist/looma/{p-32c85198.entry.js → p-08c9e253.entry.js} +1 -1
  124. package/dist/looma/{p-88e61cab.entry.js → p-0fa7062f.entry.js} +1 -1
  125. package/dist/looma/{p-9a82c523.entry.js → p-1249a806.entry.js} +1 -1
  126. package/dist/looma/p-172d67ff.entry.js +1 -0
  127. package/dist/looma/p-1c00670f.entry.js +1 -0
  128. package/dist/looma/p-22842f8c.entry.js +1 -0
  129. package/dist/looma/{p-1e1de77f.entry.js → p-2915d5c0.entry.js} +1 -1
  130. package/dist/looma/{p-2f3c1b57.entry.js → p-3b2961a6.entry.js} +1 -1
  131. package/dist/looma/{p-e07e6ac2.entry.js → p-3f60f4c8.entry.js} +1 -1
  132. package/dist/looma/p-3fba3edd.entry.js +1 -0
  133. package/dist/looma/{p-9551ebf6.entry.js → p-424d6719.entry.js} +1 -1
  134. package/dist/looma/p-4354f48f.entry.js +1 -0
  135. package/dist/looma/{p-6cc3180b.entry.js → p-4caccfce.entry.js} +1 -1
  136. package/dist/looma/{p-f431dc13.entry.js → p-6f20d470.entry.js} +1 -1
  137. package/dist/looma/{p-b68762f2.entry.js → p-7c0b5364.entry.js} +1 -1
  138. package/dist/looma/p-7ebbe74e.entry.js +1 -0
  139. package/dist/looma/{p-e82f104c.entry.js → p-8bdd9495.entry.js} +1 -1
  140. package/dist/looma/{p-df696cca.entry.js → p-9cfbf722.entry.js} +1 -1
  141. package/dist/looma/p-Ig1jYhE1.js +1 -0
  142. package/dist/looma/{p-607c3056.entry.js → p-b6ede6bb.entry.js} +1 -1
  143. package/dist/looma/{p-da6e2d01.entry.js → p-b76e2111.entry.js} +1 -1
  144. package/dist/looma/{p-1a12eb5c.entry.js → p-d372b0db.entry.js} +1 -1
  145. package/dist/looma/{p-20387ffa.entry.js → p-d4825822.entry.js} +1 -1
  146. package/dist/looma/{p-8a5e3fe1.entry.js → p-d5c3954f.entry.js} +1 -1
  147. package/dist/looma/{p-4f68f939.entry.js → p-e604e906.entry.js} +1 -1
  148. package/dist/looma/p-ec1c02e5.entry.js +1 -0
  149. package/dist/looma/{p-e406656e.entry.js → p-f1f7c5cb.entry.js} +1 -1
  150. package/dist/types/components/ui-combobox/ui-combobox.d.ts +35 -4
  151. package/dist/types/components.d.ts +56 -153
  152. package/dist/{ui-affordance-scope.entry-X5526PRP.js → ui-affordance-scope.entry-FENYADN3.js} +2 -2
  153. package/dist/{ui-avatar-group.entry-U72MPB5K.js → ui-avatar-group.entry-K7D6QKDP.js} +1 -1
  154. package/dist/{ui-avatar.entry-OC4J3LTV.js → ui-avatar.entry-WCYFUQZT.js} +1 -1
  155. package/dist/{ui-badge.entry-4MSUQRQV.js → ui-badge.entry-VZC4LONR.js} +1 -1
  156. package/dist/{ui-button.entry-22DESWN4.js → ui-button.entry-7E2KMPRF.js} +1 -1
  157. package/dist/{ui-callout.entry-LOGODDM5.js → ui-callout.entry-7WXQ47S6.js} +1 -1
  158. package/dist/{ui-checkbox.entry-XAGW3BW4.js → ui-checkbox.entry-GTSEB7ZS.js} +1 -1
  159. package/dist/{ui-tooltip.entry-AQ6UPBUP.js → ui-chip_2.entry-PG24H67I.js} +19 -4
  160. package/dist/{ui-chip_2.entry-JCPHPXAG.js → ui-combobox.entry-NTCOCZOH.js} +170 -31
  161. package/dist/{ui-context-menu.entry-24YOHF7L.js → ui-context-menu.entry-7GSDWHTP.js} +3 -3
  162. package/dist/{ui-dialog.entry-XKNYDWOQ.js → ui-dialog.entry-F53O6FBQ.js} +2 -2
  163. package/dist/{ui-disclosure.entry-2AWCGZ4C.js → ui-disclosure.entry-YWJA42GQ.js} +2 -2
  164. package/dist/{ui-editable.entry-HLEWO7BN.js → ui-editable.entry-3QPCWDPM.js} +3 -3
  165. package/dist/{ui-floating-action-button.entry-2NJDB4YN.js → ui-floating-action-button.entry-L4UC6RFM.js} +2 -2
  166. package/dist/{ui-form-field.entry-FJ5HYCTN.js → ui-form-field.entry-2VCITLQA.js} +2 -2
  167. package/dist/{ui-icon-button.entry-YZHJQ5YR.js → ui-icon-button.entry-MRRA6NVP.js} +2 -2
  168. package/dist/{ui-input.entry-JMBLMNP6.js → ui-input.entry-7LYLUJNT.js} +2 -2
  169. package/dist/{ui-menu-item.entry-VBGXM66D.js → ui-menu-item.entry-YHSIKO5W.js} +2 -2
  170. package/dist/{ui-menu.entry-I2N5H3YC.js → ui-menu.entry-ZQBF7B4T.js} +3 -3
  171. package/dist/{ui-popover.entry-7JRSJM5S.js → ui-popover.entry-2HG5ZWQX.js} +3 -3
  172. package/dist/{ui-radio-group.entry-Q2XB7P3B.js → ui-radio-group.entry-A6LI3KHW.js} +2 -2
  173. package/dist/{ui-radio.entry-NJO4NA4M.js → ui-radio.entry-WBCZZG5D.js} +2 -2
  174. package/dist/{ui-search-result-row.entry-RPMNDSRN.js → ui-search-result-row.entry-P25POOYP.js} +2 -2
  175. package/dist/{ui-search-shell.entry-FMIMYD3B.js → ui-search-shell.entry-R6IVRPSW.js} +2 -2
  176. package/dist/{ui-select.entry-7NDBWNAU.js → ui-select.entry-CAAGCELJ.js} +2 -2
  177. package/dist/{ui-switch.entry-YUCPIZE4.js → ui-switch.entry-SKU445KH.js} +3 -3
  178. package/dist/{ui-tabs.entry-FXZWV665.js → ui-tabs.entry-7BQPZEH3.js} +2 -2
  179. package/dist/{ui-textarea.entry-HHLQR5GG.js → ui-textarea.entry-OFC4YUU7.js} +2 -2
  180. package/dist/{ui-toast-region.entry-PIIBHNYA.js → ui-toast-region.entry-7VNTFVDO.js} +3 -3
  181. package/dist/{ui-top-bar.entry-S2L7ZM4U.js → ui-top-bar.entry-2N3EKMVF.js} +2 -2
  182. package/dist/{ui-tree-item.entry-UID7IJPA.js → ui-tree-item.entry-SLHAE42A.js} +3 -3
  183. package/dist/{ui-tree.entry-UMD3DNG5.js → ui-tree.entry-LF45JUC4.js} +2 -2
  184. package/package.json +1 -1
  185. package/vue/{chunk-2DDIBSFD.js → chunk-ROMBQS2L.js} +32 -89
  186. package/vue/editor/index.js +1 -1
  187. package/vue/index.d.ts +30 -107
  188. package/vue/index.js +1 -3
  189. package/dist/cjs/ui-multi-combobox.cjs.entry.js +0 -190
  190. package/dist/cjs/ui-tooltip.cjs.entry.js +0 -241
  191. package/dist/collection/components/ui-multi-combobox/ui-multi-combobox.css +0 -33
  192. package/dist/collection/components/ui-multi-combobox/ui-multi-combobox.js +0 -553
  193. package/dist/components/p-DiyiodGX.js +0 -1
  194. package/dist/components/p-Drw41pSY.js +0 -1
  195. package/dist/components/p-d5fk1vBI.js +0 -1
  196. package/dist/components/ui-multi-combobox.d.ts +0 -11
  197. package/dist/components/ui-multi-combobox.js +0 -1
  198. package/dist/esm/ui-multi-combobox.entry.js +0 -188
  199. package/dist/esm/ui-tooltip.entry.js +0 -239
  200. package/dist/looma/p-071c139c.entry.js +0 -1
  201. package/dist/looma/p-311e54d4.entry.js +0 -1
  202. package/dist/looma/p-3957f7ef.entry.js +0 -1
  203. package/dist/looma/p-4a10a875.entry.js +0 -1
  204. package/dist/looma/p-4fc9917f.entry.js +0 -1
  205. package/dist/looma/p-63a9159f.entry.js +0 -1
  206. package/dist/looma/p-82de1112.entry.js +0 -1
  207. package/dist/looma/p-Drmwg-C1.js +0 -1
  208. package/dist/looma/p-caa37be2.entry.js +0 -1
  209. package/dist/types/components/ui-multi-combobox/ui-multi-combobox.d.ts +0 -51
  210. package/dist/ui-multi-combobox.entry-MEX7MU7P.js +0 -196
package/dist/index.cjs CHANGED
@@ -24,7 +24,7 @@ var __copyProps = (to, from, except, desc) => {
24
24
  };
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
26
 
27
- // dist/esm/positioning-Drmwg-C1.js
27
+ // dist/esm/positioning-Ig1jYhE1.js
28
28
  function bindAnchorName(anchor, name) {
29
29
  const binding = anchorBindings.get(anchor) ?? {
30
30
  original: anchor.style.getPropertyValue("anchor-name"),
@@ -129,6 +129,18 @@ function createAnchoredSurface(surface, options = {}) {
129
129
  let open = false;
130
130
  let frame = null;
131
131
  let listenerAbort = null;
132
+ let sizeObserver = null;
133
+ const ResizeObserverImpl = owner.ResizeObserver;
134
+ const observeSurfaceSize = () => {
135
+ if (sizeObserver || typeof ResizeObserverImpl !== "function")
136
+ return;
137
+ sizeObserver = new ResizeObserverImpl(() => schedule());
138
+ sizeObserver.observe(surface);
139
+ };
140
+ const stopObservingSurfaceSize = () => {
141
+ sizeObserver?.disconnect();
142
+ sizeObserver = null;
143
+ };
132
144
  surface.setAttribute("popover", "manual");
133
145
  surface.dataset.uiPositioning = nativeAnchor ? "anchor" : "fallback";
134
146
  surface.style.position = "fixed";
@@ -214,6 +226,8 @@ function createAnchoredSurface(surface, options = {}) {
214
226
  syncFallbackListeners();
215
227
  showInTopLayer(surface);
216
228
  position();
229
+ schedule();
230
+ observeSurfaceSize();
217
231
  },
218
232
  showAtPoint(nextPoint) {
219
233
  point = nextPoint;
@@ -221,11 +235,14 @@ function createAnchoredSurface(surface, options = {}) {
221
235
  syncFallbackListeners();
222
236
  showInTopLayer(surface);
223
237
  position();
238
+ schedule();
239
+ observeSurfaceSize();
224
240
  },
225
241
  hide() {
226
242
  open = false;
227
243
  point = null;
228
244
  syncFallbackListeners();
245
+ stopObservingSurfaceSize();
229
246
  if (frame !== null)
230
247
  owner.cancelAnimationFrame(frame);
231
248
  frame = null;
@@ -236,6 +253,7 @@ function createAnchoredSurface(surface, options = {}) {
236
253
  open = false;
237
254
  listenerAbort?.abort();
238
255
  listenerAbort = null;
256
+ stopObservingSurfaceSize();
239
257
  if (frame !== null)
240
258
  owner.cancelAnimationFrame(frame);
241
259
  frame = null;
@@ -361,8 +379,8 @@ function createProximityCoordinator(scope, options = {}) {
361
379
  };
362
380
  }
363
381
  var DEFAULT_AFFORDANCE_NEAR_RADIUS, anchorSequence, anchorBindings;
364
- var init_positioning_Drmwg_C1 = __esm({
365
- "dist/esm/positioning-Drmwg-C1.js"() {
382
+ var init_positioning_Ig1jYhE1 = __esm({
383
+ "dist/esm/positioning-Ig1jYhE1.js"() {
366
384
  DEFAULT_AFFORDANCE_NEAR_RADIUS = 16;
367
385
  anchorSequence = 0;
368
386
  anchorBindings = /* @__PURE__ */ new WeakMap();
@@ -378,7 +396,7 @@ var uiAffordanceScopeCss, UIAffordanceScope;
378
396
  var init_ui_affordance_scope_entry = __esm({
379
397
  "dist/esm/ui-affordance-scope.entry.js"() {
380
398
  init_index_8BGiMGQ0();
381
- init_positioning_Drmwg_C1();
399
+ init_positioning_Ig1jYhE1();
382
400
  uiAffordanceScopeCss = () => `:host{display:contents;--ui-affordance-scope-engaged:0}:host([data-ui-interaction='engaged']){--ui-affordance-scope-engaged:1}`;
383
401
  UIAffordanceScope = class {
384
402
  constructor(hostRef) {
@@ -1211,6 +1229,267 @@ var init_manager_C_0syqXZ = __esm({
1211
1229
  var ui_chip_2_entry_exports = {};
1212
1230
  __export(ui_chip_2_entry_exports, {
1213
1231
  ui_chip: () => UIChip,
1232
+ ui_tooltip: () => UITooltip
1233
+ });
1234
+ var uiChipCss, UIChip, uiTooltipCss, UITooltip;
1235
+ var init_ui_chip_2_entry = __esm({
1236
+ "dist/esm/ui-chip_2.entry.js"() {
1237
+ init_index_8BGiMGQ0();
1238
+ init_manager_C_0syqXZ();
1239
+ init_events_JwSoedEO();
1240
+ init_controlled_state_BnGhGgTH();
1241
+ init_positioning_Ig1jYhE1();
1242
+ uiChipCss = () => `:host{--ui-chip-surface:var(--ui-surface-subtle);--ui-chip-text:var(--ui-text-secondary);--ui-chip-border:var(--ui-border-default);--ui-chip-font-size:var(--ui-font-size-xs);--ui-chip-font-weight:var(--ui-font-normal);--ui-chip-line-height:var(--ui-line-height-tight);--ui-chip-padding-block:var(--ui-space-0-5);--ui-chip-padding-inline:var(--ui-space-2);--ui-chip-notch:var(--ui-space-1);display:inline-flex;min-width:0;max-width:100%}:host([data-size='sm']){--ui-chip-font-size:var(--ui-font-size-sm)}.chip__surface{display:inline-flex;align-items:center;box-sizing:border-box;min-width:0;max-width:100%;padding:var(--ui-chip-padding-block) var(--ui-chip-padding-inline);border:1px solid var(--ui-chip-border);background:var(--ui-chip-surface);color:var(--ui-chip-text) !important;font-family:var(--ui-font-family-sans) !important;font-size:var(--ui-chip-font-size) !important;font-weight:var(--ui-chip-font-weight) !important;line-height:var(--ui-chip-line-height) !important}.chip__label{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([data-appearance='pill']) .chip__surface{border-radius:var(--ui-radius-round)}:host([data-appearance='tag']) .chip__surface{border:0;padding-inline-end:calc(var(--ui-chip-padding-inline) + var(--ui-chip-notch));clip-path:polygon(0 0, calc(100% - var(--ui-chip-notch)) 0, 100% 50%, calc(100% - var(--ui-chip-notch)) 100%, 0 100%)}`;
1243
+ UIChip = class {
1244
+ constructor(hostRef) {
1245
+ registerInstance(this, hostRef);
1246
+ }
1247
+ /** `tag` has a square leading edge and an angled trailing edge; `pill` is fully rounded. */
1248
+ appearance = "tag";
1249
+ /** Compact typography size. */
1250
+ size = "xs";
1251
+ render() {
1252
+ return h(Host, { key: "970cb48cf8d70c47feaab90fe428c09f0d052a03", "data-appearance": this.appearance, "data-size": this.size }, h("span", { key: "6d8c6104d2869520097a2a61bd2a887b363b4912", class: "chip__surface" }, h("span", { key: "638fb68ff5dffa629576c9e1079bb3169f2adb4f", class: "chip__label" }, h("slot", { key: "8b31f2130e202e18d7717aee6add6bc6e7f119b5" }))));
1253
+ }
1254
+ };
1255
+ UIChip.style = uiChipCss();
1256
+ uiTooltipCss = () => `:host{position:fixed;inset:auto;margin:0;display:inline-block;box-sizing:border-box;padding:0;border:0;border-radius:0;background:transparent;opacity:0;transform:translateY(4px);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}.tooltip__surface{box-sizing:border-box;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-2);background:var(--ui-surface-elevated);color:var(--ui-text-primary);padding:var(--ui-space-2) var(--ui-space-3);font-size:var(--ui-font-size-sm);box-shadow:var(--ui-shadow-md)}:host(:popover-open){opacity:1;transform:translateY(0)}@starting-style{:host(:popover-open){opacity:0;transform:translateY(4px)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host{transition:none}}`;
1257
+ UITooltip = class {
1258
+ constructor(hostRef) {
1259
+ registerInstance(this, hostRef);
1260
+ this.opened = createEvent(this, "open");
1261
+ this.closed = createEvent(this, "close");
1262
+ }
1263
+ get host() {
1264
+ return getElement(this);
1265
+ }
1266
+ for = "";
1267
+ /** Controlled open state. Omit it to use defaultOpen and local interaction state. */
1268
+ open;
1269
+ defaultOpen = false;
1270
+ placement = "top-start";
1271
+ /** Pointer hover intent delay in milliseconds. Keyboard focus is immediate. */
1272
+ showDelay = 500;
1273
+ /** Pointer leave grace period in milliseconds. */
1274
+ hideDelay = 100;
1275
+ /** Click or tap pins the description; activate again to dismiss. */
1276
+ toggleOnClick = false;
1277
+ pinned = false;
1278
+ focused = false;
1279
+ opened;
1280
+ closed;
1281
+ internalOpen = false;
1282
+ overlayId = `ui-tooltip-${Math.random().toString(36).slice(2, 11)}`;
1283
+ trigger = null;
1284
+ surface = null;
1285
+ showTimer = null;
1286
+ hideTimer = null;
1287
+ syncFromProp() {
1288
+ this.clearTimers();
1289
+ if (isControlled(this.open))
1290
+ this.internalOpen = this.open;
1291
+ }
1292
+ resetSurface() {
1293
+ this.syncTrigger();
1294
+ this.setupSurface();
1295
+ this.syncOverlay();
1296
+ }
1297
+ syncOverlay() {
1298
+ if (this.internalOpen) {
1299
+ this.surface?.show();
1300
+ openOverlay({
1301
+ id: this.overlayId,
1302
+ modal: false,
1303
+ element: this.host,
1304
+ relatedElements: this.trigger ? [this.trigger] : void 0,
1305
+ dismissible: true,
1306
+ requestClose: (reason, trigger) => this.handleRequestClose(reason, trigger)
1307
+ });
1308
+ } else {
1309
+ this.surface?.hide();
1310
+ closeOverlay(this.overlayId);
1311
+ }
1312
+ }
1313
+ componentDidLoad() {
1314
+ if (!this.host.id)
1315
+ this.host.id = this.overlayId;
1316
+ this.internalOpen = controlledOrDefault(this.open, this.defaultOpen);
1317
+ this.syncTrigger();
1318
+ this.setupSurface();
1319
+ this.host.addEventListener("pointerenter", this.onSurfaceEnter);
1320
+ this.host.addEventListener("pointerleave", this.onTriggerLeave);
1321
+ this.syncOverlay();
1322
+ }
1323
+ componentDidUpdate() {
1324
+ this.syncTrigger();
1325
+ }
1326
+ disconnectedCallback() {
1327
+ this.clearTimers();
1328
+ this.detachTriggerListeners();
1329
+ this.surface?.destroy();
1330
+ this.surface = null;
1331
+ this.host.removeEventListener("pointerenter", this.onSurfaceEnter);
1332
+ this.host.removeEventListener("pointerleave", this.onTriggerLeave);
1333
+ closeOverlay(this.overlayId);
1334
+ }
1335
+ syncTrigger() {
1336
+ const next = this.for ? this.host.getRootNode().getElementById(this.for) : this.host.previousElementSibling;
1337
+ if (next === this.trigger)
1338
+ return;
1339
+ this.detachTriggerListeners();
1340
+ this.trigger = next;
1341
+ this.attachTriggerListeners();
1342
+ this.surface?.setAnchor(next);
1343
+ }
1344
+ setupSurface() {
1345
+ this.surface?.destroy();
1346
+ this.surface = createAnchoredSurface(this.host, {
1347
+ anchor: this.trigger,
1348
+ placement: this.placement
1349
+ });
1350
+ }
1351
+ attachTriggerListeners() {
1352
+ this.detachTriggerListeners();
1353
+ if (!this.trigger)
1354
+ return;
1355
+ const ids = new Set((this.trigger.getAttribute("aria-describedby") || "").split(/\s+/).filter(Boolean));
1356
+ ids.add(this.host.id);
1357
+ this.trigger.setAttribute("aria-describedby", [...ids].join(" "));
1358
+ this.trigger.addEventListener("click", this.onTriggerClick);
1359
+ this.trigger.addEventListener("keydown", this.onTriggerKeydown);
1360
+ this.trigger.addEventListener("pointerenter", this.onTriggerEnter);
1361
+ this.trigger.addEventListener("pointerleave", this.onTriggerLeave);
1362
+ this.trigger.addEventListener("focusin", this.onTriggerFocusIn);
1363
+ this.trigger.addEventListener("focusout", this.onTriggerFocusOut);
1364
+ }
1365
+ detachTriggerListeners() {
1366
+ if (!this.trigger)
1367
+ return;
1368
+ const ids = (this.trigger.getAttribute("aria-describedby") || "").split(/\s+/).filter((id) => id && id !== this.host.id);
1369
+ if (ids.length)
1370
+ this.trigger.setAttribute("aria-describedby", ids.join(" "));
1371
+ else
1372
+ this.trigger.removeAttribute("aria-describedby");
1373
+ this.trigger.removeEventListener("click", this.onTriggerClick);
1374
+ this.trigger.removeEventListener("keydown", this.onTriggerKeydown);
1375
+ this.trigger.removeEventListener("pointerenter", this.onTriggerEnter);
1376
+ this.trigger.removeEventListener("pointerleave", this.onTriggerLeave);
1377
+ this.trigger.removeEventListener("focusin", this.onTriggerFocusIn);
1378
+ this.trigger.removeEventListener("focusout", this.onTriggerFocusOut);
1379
+ }
1380
+ clearShowTimer() {
1381
+ if (this.showTimer === null)
1382
+ return;
1383
+ clearTimeout(this.showTimer);
1384
+ this.showTimer = null;
1385
+ }
1386
+ clearHideTimer() {
1387
+ if (this.hideTimer === null)
1388
+ return;
1389
+ clearTimeout(this.hideTimer);
1390
+ this.hideTimer = null;
1391
+ }
1392
+ clearTimers() {
1393
+ this.clearShowTimer();
1394
+ this.clearHideTimer();
1395
+ }
1396
+ setInteractionOpen(nextOpen, trigger) {
1397
+ if (this.internalOpen === nextOpen)
1398
+ return;
1399
+ if (!isControlled(this.open))
1400
+ this.internalOpen = nextOpen;
1401
+ dispatchDetail(this.host, nextOpen ? "open" : "close", {
1402
+ open: nextOpen,
1403
+ reason: "action",
1404
+ trigger
1405
+ });
1406
+ }
1407
+ onSurfaceEnter = () => this.clearHideTimer();
1408
+ onTriggerClick = (event) => {
1409
+ if (!this.toggleOnClick)
1410
+ return;
1411
+ this.clearTimers();
1412
+ this.pinned = !this.pinned;
1413
+ this.setInteractionOpen(this.pinned, event.detail === 0 ? "keyboard" : "pointer");
1414
+ };
1415
+ onTriggerKeydown = (event) => {
1416
+ if (event.key === "Escape")
1417
+ this.clearTimers();
1418
+ };
1419
+ onTriggerEnter = (event) => {
1420
+ if (event.pointerType === "touch")
1421
+ return;
1422
+ this.clearHideTimer();
1423
+ if (this.internalOpen || this.showTimer !== null)
1424
+ return;
1425
+ this.showTimer = setTimeout(() => {
1426
+ this.showTimer = null;
1427
+ this.setInteractionOpen(true, "pointer");
1428
+ }, Math.max(0, this.showDelay));
1429
+ };
1430
+ onTriggerLeave = () => {
1431
+ this.clearShowTimer();
1432
+ if (this.focused || this.pinned || !this.internalOpen || this.hideTimer !== null)
1433
+ return;
1434
+ this.hideTimer = setTimeout(() => {
1435
+ this.hideTimer = null;
1436
+ this.setInteractionOpen(false, "pointer");
1437
+ }, Math.max(0, this.hideDelay));
1438
+ };
1439
+ onTriggerFocusIn = () => {
1440
+ this.focused = true;
1441
+ this.clearTimers();
1442
+ this.setInteractionOpen(true, "keyboard");
1443
+ };
1444
+ onTriggerFocusOut = (e) => {
1445
+ const related = e.relatedTarget;
1446
+ if (related && this.host.contains(related))
1447
+ return;
1448
+ this.focused = false;
1449
+ this.pinned = false;
1450
+ this.clearTimers();
1451
+ this.setInteractionOpen(false, "keyboard");
1452
+ };
1453
+ handleRequestClose(reason, trigger) {
1454
+ if (reason === "escape" || reason === "light-dismiss" && this.toggleOnClick) {
1455
+ this.pinned = false;
1456
+ this.clearTimers();
1457
+ if (!isControlled(this.open))
1458
+ this.internalOpen = false;
1459
+ dispatchDetail(this.host, "close", {
1460
+ open: false,
1461
+ reason,
1462
+ trigger
1463
+ });
1464
+ }
1465
+ }
1466
+ render() {
1467
+ return h(Host, { key: "fd4d81febd147b846aca66e94f25d56f14b171dc", role: "tooltip", hidden: !this.internalOpen, "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "d31ac8c0e087becd7e60459f2cd894a9b15e95fa", class: "tooltip__surface" }, h("slot", { key: "06e7aac9b6992a9cf0f92c9d356b97d18fb2da8b" })));
1468
+ }
1469
+ static get watchers() {
1470
+ return {
1471
+ "open": [{
1472
+ "syncFromProp": 0
1473
+ }],
1474
+ "for": [{
1475
+ "resetSurface": 0
1476
+ }],
1477
+ "placement": [{
1478
+ "resetSurface": 0
1479
+ }],
1480
+ "internalOpen": [{
1481
+ "syncOverlay": 0
1482
+ }]
1483
+ };
1484
+ }
1485
+ };
1486
+ UITooltip.style = uiTooltipCss();
1487
+ }
1488
+ });
1489
+
1490
+ // dist/esm/ui-combobox.entry.js
1491
+ var ui_combobox_entry_exports = {};
1492
+ __export(ui_combobox_entry_exports, {
1214
1493
  ui_combobox: () => UICombobox
1215
1494
  });
1216
1495
  function formatEditingValue(raw, selection, format) {
@@ -1270,27 +1549,13 @@ async function validateField(request, config) {
1270
1549
  issues = [...issues, ...config.issues ?? []];
1271
1550
  return { output: issues.some((issue) => issue.severity !== "warning") ? void 0 : output, issues };
1272
1551
  }
1273
- var uiChipCss, UIChip, uiComboboxCss, UICombobox;
1274
- var init_ui_chip_2_entry = __esm({
1275
- "dist/esm/ui-chip_2.entry.js"() {
1552
+ var uiComboboxCss, UICombobox;
1553
+ var init_ui_combobox_entry = __esm({
1554
+ "dist/esm/ui-combobox.entry.js"() {
1276
1555
  init_index_8BGiMGQ0();
1277
- init_positioning_Drmwg_C1();
1556
+ init_positioning_Ig1jYhE1();
1278
1557
  init_manager_C_0syqXZ();
1279
- uiChipCss = () => `:host{--ui-chip-surface:var(--ui-surface-subtle);--ui-chip-text:var(--ui-text-secondary);--ui-chip-border:var(--ui-border-default);--ui-chip-font-size:var(--ui-font-size-xs);--ui-chip-font-weight:var(--ui-font-normal);--ui-chip-line-height:var(--ui-line-height-tight);--ui-chip-padding-block:var(--ui-space-0-5);--ui-chip-padding-inline:var(--ui-space-2);--ui-chip-notch:var(--ui-space-1);display:inline-flex;min-width:0;max-width:100%}:host([data-size='sm']){--ui-chip-font-size:var(--ui-font-size-sm)}.chip__surface{display:inline-flex;align-items:center;box-sizing:border-box;min-width:0;max-width:100%;padding:var(--ui-chip-padding-block) var(--ui-chip-padding-inline);border:1px solid var(--ui-chip-border);background:var(--ui-chip-surface);color:var(--ui-chip-text) !important;font-family:var(--ui-font-family-sans) !important;font-size:var(--ui-chip-font-size) !important;font-weight:var(--ui-chip-font-weight) !important;line-height:var(--ui-chip-line-height) !important}.chip__label{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([data-appearance='pill']) .chip__surface{border-radius:var(--ui-radius-round)}:host([data-appearance='tag']) .chip__surface{border:0;padding-inline-end:calc(var(--ui-chip-padding-inline) + var(--ui-chip-notch));clip-path:polygon(0 0, calc(100% - var(--ui-chip-notch)) 0, 100% 50%, calc(100% - var(--ui-chip-notch)) 100%, 0 100%)}`;
1280
- UIChip = class {
1281
- constructor(hostRef) {
1282
- registerInstance(this, hostRef);
1283
- }
1284
- /** `tag` has a square leading edge and an angled trailing edge; `pill` is fully rounded. */
1285
- appearance = "tag";
1286
- /** Compact typography size. */
1287
- size = "xs";
1288
- render() {
1289
- return h(Host, { key: "970cb48cf8d70c47feaab90fe428c09f0d052a03", "data-appearance": this.appearance, "data-size": this.size }, h("span", { key: "6d8c6104d2869520097a2a61bd2a887b363b4912", class: "chip__surface" }, h("span", { key: "638fb68ff5dffa629576c9e1079bb3169f2adb4f", class: "chip__label" }, h("slot", { key: "8b31f2130e202e18d7717aee6add6bc6e7f119b5" }))));
1290
- }
1291
- };
1292
- UIChip.style = uiChipCss();
1293
- uiComboboxCss = () => `:host{display:grid;gap:var(--ui-space-1);min-inline-size:0;color:var(--ui-text-primary);font:inherit}label{color:var(--ui-field-label-color, var(--ui-text-primary));font-size:var(--ui-field-label-size, 0.875rem);font-weight:var(--ui-field-label-weight, 500)}.field{display:flex;min-inline-size:0;border:1px solid var(--ui-control-border, var(--ui-border-default));border-radius:var(--ui-radius-2);background:var(--ui-control-surface, var(--ui-surface-default))}.field:focus-within{border-color:var(--ui-control-focus, var(--ui-focus-ring));outline:2px solid var(--ui-control-focus, var(--ui-focus-ring));outline-offset:1px}input{appearance:none;width:100%;min-inline-size:0;min-block-size:var(--ui-control-min-block-size, 2.75rem);box-sizing:border-box;border:0;border-radius:inherit;background:transparent;color:inherit;font:inherit;line-height:var(--ui-line-height-md);padding:var(--ui-space-2) var(--ui-space-3);margin:0;outline:none}:host([data-size='sm']) input{min-block-size:var(--ui-field-compact-size, 2rem);padding:var(--ui-space-1) var(--ui-space-2)}button{appearance:none;border:0;border-radius:var(--ui-radius-2);background:transparent;color:var(--ui-field-affordance-color, var(--ui-text-secondary));font:inherit;font-weight:var(--ui-field-affordance-weight, 400);min-inline-size:2rem;padding:var(--ui-space-1);cursor:pointer}button:hover:enabled{background:var(--ui-surface-muted);color:var(--ui-text-primary)}button:focus-visible{outline:2px solid var(--ui-focus-ring);outline-offset:-3px}input:disabled,button:disabled{color:var(--ui-text-muted);cursor:not-allowed}.field:has(input:disabled){background:var(--ui-control-surface-disabled, var(--ui-surface-muted))}:host([data-validation='error']) .field{border-color:var(--ui-danger-solid, var(--ui-accent-active))}.popup{box-sizing:border-box;min-inline-size:12rem;max-inline-size:calc(100vw - 1rem);max-block-size:var(--ui-combobox-max-block-size, 18rem);overflow:auto;margin:0;padding:var(--ui-space-1);border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-2);background:var(--ui-surface-elevated);color:var(--ui-text-primary);box-shadow:var(--ui-shadow-md)}[hidden]{display:none !important}.option{padding:var(--ui-space-2) var(--ui-space-3);border-radius:var(--ui-radius-1);cursor:pointer;overflow-wrap:anywhere}.option:hover,.option[data-active]{background:var(--ui-surface-muted);outline:1px solid var(--ui-focus-ring);outline-offset:-1px}.option[aria-disabled='true']{color:var(--ui-text-muted);cursor:not-allowed}.primary{display:block;color:var(--ui-option-primary-color, var(--ui-text-primary));font-weight:var(--ui-option-primary-weight, 500)}.secondary{display:block;color:var(--ui-option-secondary-color, var(--ui-text-secondary));font-weight:var(--ui-option-secondary-weight, 400);font-size:var(--ui-font-size-sm)}.message,.group{color:var(--ui-field-message-color, var(--ui-text-secondary));font-weight:var(--ui-field-message-weight, 400);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-md);overflow-wrap:anywhere}.group,.popup .message{padding:var(--ui-space-2) var(--ui-space-3)}.sr-only{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (pointer: coarse){button{min-inline-size:2.75rem;min-block-size:2.75rem}}@media (forced-colors: active){.field,.popup{border-color:CanvasText}.option[data-active]{outline-color:Highlight}}`;
1558
+ uiComboboxCss = () => `:host{display:grid;gap:var(--ui-space-1);min-inline-size:0;color:var(--ui-text-primary);font:inherit}label{color:var(--ui-field-label-color, var(--ui-text-primary));font-size:var(--ui-field-label-size, 0.875rem);font-weight:var(--ui-field-label-weight, 500)}.field{display:flex;min-inline-size:0;border:1px solid var(--ui-control-border, var(--ui-border-default));border-radius:var(--ui-radius-2);background:var(--ui-control-surface, var(--ui-surface-default))}.field:focus-within{border-color:var(--ui-control-focus, var(--ui-focus-ring));outline:2px solid var(--ui-control-focus, var(--ui-focus-ring));outline-offset:1px}input{appearance:none;width:100%;min-inline-size:0;min-block-size:var(--ui-control-min-block-size, 2.75rem);box-sizing:border-box;border:0;border-radius:inherit;background:transparent;color:inherit;font:inherit;line-height:var(--ui-line-height-md);padding:var(--ui-space-2) var(--ui-space-3);margin:0;outline:none}:host([data-size='sm']) input{min-block-size:var(--ui-field-compact-size, 2rem);padding:var(--ui-space-1) var(--ui-space-2)}button{appearance:none;border:0;border-radius:var(--ui-radius-2);background:transparent;color:var(--ui-field-affordance-color, var(--ui-text-secondary));font:inherit;font-weight:var(--ui-field-affordance-weight, 400);min-inline-size:2rem;padding:var(--ui-space-1);cursor:pointer}button:hover:enabled{background:var(--ui-surface-muted);color:var(--ui-text-primary)}button:focus-visible{outline:2px solid var(--ui-focus-ring);outline-offset:-3px}input:disabled,button:disabled{color:var(--ui-text-muted);cursor:not-allowed}.field:has(input:disabled){background:var(--ui-control-surface-disabled, var(--ui-surface-muted))}:host([data-validation='error']) .field{border-color:var(--ui-danger-solid, var(--ui-accent-active))}.popup{box-sizing:border-box;min-inline-size:12rem;max-inline-size:calc(100vw - 1rem);max-block-size:var(--ui-combobox-max-block-size, 18rem);overflow:auto;margin:0;padding:var(--ui-space-1);border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-2);background:var(--ui-surface-elevated);color:var(--ui-text-primary);box-shadow:var(--ui-shadow-md)}[hidden]{display:none !important}.option{padding:var(--ui-space-2) var(--ui-space-3);border-radius:var(--ui-radius-1);cursor:pointer;overflow-wrap:anywhere}.option:hover,.option[data-active]{background:var(--ui-surface-muted);outline:1px solid var(--ui-focus-ring);outline-offset:-1px}.option[aria-disabled='true']{color:var(--ui-text-muted);cursor:not-allowed}.primary{display:block;color:var(--ui-option-primary-color, var(--ui-text-primary));font-weight:var(--ui-option-primary-weight, 500)}.secondary{display:block;color:var(--ui-option-secondary-color, var(--ui-text-secondary));font-weight:var(--ui-option-secondary-weight, 400);font-size:var(--ui-font-size-sm)}.message,.group{color:var(--ui-field-message-color, var(--ui-text-secondary));font-weight:var(--ui-field-message-weight, 400);font-size:var(--ui-font-size-sm);line-height:var(--ui-line-height-md);overflow-wrap:anywhere}.group,.popup .message{padding:var(--ui-space-2) var(--ui-space-3)}.sr-only{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (pointer: coarse){button{min-inline-size:2.75rem;min-block-size:2.75rem}}@media (forced-colors: active){.field,.popup{border-color:CanvasText}.option[data-active]{outline-color:Highlight}}:host([multiple]) .field{flex-wrap:wrap;align-items:center;gap:var(--ui-space-1);min-block-size:var(--ui-multi-combobox-min-block-size, 2.5rem);padding:var(--ui-space-1)}:host([multiple]) input{flex:1 0 var(--ui-multi-combobox-input-min-inline-size, 5rem);width:auto;min-block-size:1.75rem;padding:var(--ui-space-0-5) var(--ui-space-1)}.items{display:contents}.item{appearance:none;display:inline-flex;min-inline-size:0;max-inline-size:min(100%, var(--ui-multi-combobox-item-max-inline-size, 12rem));overflow:hidden;padding:0;border:0;border-radius:var(--ui-radius-1);background:transparent;color:inherit;font:inherit;cursor:default}.item>slot{display:block;min-inline-size:0;max-inline-size:100%;overflow:hidden}.item>slot::slotted(*){min-inline-size:0;max-inline-size:100%}.item:focus-visible{outline:2px solid var(--ui-focus-ring);outline-offset:1px}.item:disabled{opacity:.6}`;
1294
1559
  UICombobox = class {
1295
1560
  constructor(hostRef) {
1296
1561
  registerInstance(this, hostRef);
@@ -1301,6 +1566,9 @@ var init_ui_chip_2_entry = __esm({
1301
1566
  this.dependencyInvalidate = createEvent(this, "dependency-invalidate");
1302
1567
  this.validationChange = createEvent(this, "validation-change");
1303
1568
  this.optionsChange = createEvent(this, "options-change");
1569
+ this.addItem = createEvent(this, "add-item");
1570
+ this.removeItem = createEvent(this, "remove-item");
1571
+ this.createItem = createEvent(this, "create-item");
1304
1572
  }
1305
1573
  get host() {
1306
1574
  return getElement(this);
@@ -1309,9 +1577,16 @@ var init_ui_chip_2_entry = __esm({
1309
1577
  label = "";
1310
1578
  placeholder = "";
1311
1579
  name = "";
1312
- /** Controlled canonical value. Undefined selects uncontrolled mode; null means no selection. */
1580
+ /**
1581
+ * Controlled canonical value. Undefined selects uncontrolled mode; null means no selection.
1582
+ * With `multiple`, this is the controlled list of selected items instead.
1583
+ */
1313
1584
  value;
1314
1585
  defaultValue;
1586
+ /** Render selected values as removable chips before the cursor. `value` becomes the item list. */
1587
+ multiple = false;
1588
+ /** Characters that commit the current query and leave the input ready for the next item (multiple only). */
1589
+ tokenSeparators = [];
1315
1590
  /** Controlled raw editing text; independent of canonical selection. */
1316
1591
  query;
1317
1592
  defaultQuery = "";
@@ -1328,6 +1603,7 @@ var init_ui_chip_2_entry = __esm({
1328
1603
  /** Optional description shown by the connected question-mark button. */
1329
1604
  help = "";
1330
1605
  queryChange;
1606
+ /** Single mode: the ComboboxChange. Multiple mode: the full current item list on any change. */
1331
1607
  valueChange;
1332
1608
  freeEntry;
1333
1609
  createEntry;
@@ -1335,6 +1611,12 @@ var init_ui_chip_2_entry = __esm({
1335
1611
  validationChange;
1336
1612
  /** Supplies the current result rows for framework-owned rich slots. */
1337
1613
  optionsChange;
1614
+ /** Multiple mode: a suggestion or exact-match token was committed as a new item. */
1615
+ addItem;
1616
+ /** Multiple mode: a selected item was removed via chip keyboard controls. */
1617
+ removeItem;
1618
+ /** Multiple mode: an unmatched query was submitted for creation. */
1619
+ createItem;
1338
1620
  raw = "";
1339
1621
  display = "";
1340
1622
  selected = null;
@@ -1362,7 +1644,22 @@ var init_ui_chip_2_entry = __esm({
1362
1644
  proposedChange;
1363
1645
  formattedRaw;
1364
1646
  formattedWith;
1647
+ /** Multiple mode: the controlled selected items (from `value`). Empty otherwise. */
1648
+ get items() {
1649
+ return this.multiple && Array.isArray(this.value) ? this.value : [];
1650
+ }
1651
+ get selectedValues() {
1652
+ return new Set(this.items.map((item) => item.value));
1653
+ }
1365
1654
  componentWillLoad() {
1655
+ if (this.multiple) {
1656
+ this.selected = null;
1657
+ this.raw = this.query ?? this.defaultQuery;
1658
+ this.display = this.raw;
1659
+ this.initialRaw = this.raw;
1660
+ this.applyServerIssues();
1661
+ return;
1662
+ }
1366
1663
  this.selected = this.value !== void 0 ? this.value : this.defaultValue ?? null;
1367
1664
  this.raw = this.query ?? this.defaultQuery;
1368
1665
  if (this.query === void 0 && !this.raw && this.selected !== null) {
@@ -1399,7 +1696,7 @@ var init_ui_chip_2_entry = __esm({
1399
1696
  this.surface = createAnchoredSurface(this.popup, { anchor: this.field, placement: "bottom-start" });
1400
1697
  }
1401
1698
  syncValue() {
1402
- if (this.value === void 0)
1699
+ if (this.multiple || this.value === void 0)
1403
1700
  return;
1404
1701
  this.selected = this.value;
1405
1702
  if (this.query === void 0) {
@@ -1441,9 +1738,14 @@ var init_ui_chip_2_entry = __esm({
1441
1738
  if (next.context !== previous?.context) {
1442
1739
  this.close();
1443
1740
  const policy = next.invalidation ?? "retain-query";
1444
- const value = policy === "retain" ? this.selected : null;
1445
- const query = policy === "clear" ? "" : this.raw;
1446
- this.commit(value, query, null, "invalidation", "programmatic");
1741
+ if (this.multiple) {
1742
+ if (policy === "clear")
1743
+ this.setMultiQuery("", "programmatic");
1744
+ } else {
1745
+ const value = policy === "retain" ? this.selected : null;
1746
+ const query = policy === "clear" ? "" : this.raw;
1747
+ this.commit(value, query, null, "invalidation", "programmatic");
1748
+ }
1447
1749
  this.validation = { status: "pristine", touched: false, dirty: this.raw !== this.initialRaw, issues: [] };
1448
1750
  }
1449
1751
  this.applyServerIssues();
@@ -1514,11 +1816,16 @@ var init_ui_chip_2_entry = __esm({
1514
1816
  this.resetValidation();
1515
1817
  }
1516
1818
  const ids = /* @__PURE__ */ new Set();
1819
+ const selected = this.multiple ? this.selectedValues : void 0;
1517
1820
  this.rows = options.filter((option) => {
1518
1821
  if (ids.has(option.id))
1519
1822
  return false;
1520
1823
  ids.add(option.id);
1521
- return this.fullSet || (config.filter ? config.filter(option, query, config.context) : config.provider ? true : option.label.toLocaleLowerCase().includes(query.toLocaleLowerCase()));
1824
+ if (this.fullSet)
1825
+ return true;
1826
+ if (selected)
1827
+ return !selected.has(option.value) && (config.filter ? config.filter(option, query, config.context) : option.label.toLocaleLowerCase().includes(query.toLocaleLowerCase()));
1828
+ return config.filter ? config.filter(option, query, config.context) : config.provider ? true : option.label.toLocaleLowerCase().includes(query.toLocaleLowerCase());
1522
1829
  });
1523
1830
  const groups = /* @__PURE__ */ new Map();
1524
1831
  for (const row of this.rows) {
@@ -1632,6 +1939,18 @@ var init_ui_chip_2_entry = __esm({
1632
1939
  const option = this.rows[index];
1633
1940
  if (option?.disabled)
1634
1941
  return;
1942
+ if (this.multiple) {
1943
+ if (option)
1944
+ this.addSelectedItem(option, trigger);
1945
+ else if (this.canCreate && index === this.rows.length)
1946
+ this.createSelectedItem(this.raw.trim(), trigger);
1947
+ else
1948
+ return;
1949
+ this.setMultiQuery("", trigger);
1950
+ this.close();
1951
+ this.input?.focus();
1952
+ return;
1953
+ }
1635
1954
  if (option)
1636
1955
  this.commit(option.value, option.label, option, "selection", trigger);
1637
1956
  else if (this.canCreate && index === this.rows.length)
@@ -1643,6 +1962,104 @@ var init_ui_chip_2_entry = __esm({
1643
1962
  if (this.config.validateOn !== "submit")
1644
1963
  queueMicrotask(() => void this.validate());
1645
1964
  }
1965
+ // --- Multiple-mode helpers ---------------------------------------------
1966
+ emitItems(items) {
1967
+ this.valueChange.emit(items);
1968
+ }
1969
+ setMultiQuery(query, trigger) {
1970
+ if (this.query === void 0) {
1971
+ this.raw = query;
1972
+ this.display = query;
1973
+ this.formattedRaw = void 0;
1974
+ }
1975
+ if (this.input)
1976
+ this.input.value = query;
1977
+ this.queryChange.emit({ query, display: query, trigger });
1978
+ }
1979
+ addSelectedItem(option, trigger) {
1980
+ this.addItem.emit({ item: option, index: this.items.length, trigger });
1981
+ this.emitItems([...this.items, option]);
1982
+ }
1983
+ createSelectedItem(query, trigger) {
1984
+ if (!query)
1985
+ return;
1986
+ this.createItem.emit({ query, trigger });
1987
+ }
1988
+ commitQuery(trigger) {
1989
+ const query = this.raw.trim();
1990
+ if (!query)
1991
+ return;
1992
+ const normalized = query.toLocaleLowerCase();
1993
+ const option = this.rows.find((row) => row.label.trim().toLocaleLowerCase() === normalized);
1994
+ if (option) {
1995
+ this.setMultiQuery("", trigger);
1996
+ this.addSelectedItem(option, trigger);
1997
+ } else if (this.config.allowCreate) {
1998
+ this.setMultiQuery("", trigger);
1999
+ this.createSelectedItem(query, trigger);
2000
+ }
2001
+ }
2002
+ removeItemAt(index, trigger) {
2003
+ const item = this.items[index];
2004
+ if (!item || item.disabled || this.disabled || this.readOnly)
2005
+ return;
2006
+ this.removeItem.emit({ item, index, trigger });
2007
+ this.emitItems(this.items.filter((_, position) => position !== index));
2008
+ requestAnimationFrame(() => {
2009
+ const buttons = this.host.shadowRoot?.querySelectorAll('[part="item"]') ?? [];
2010
+ const next = buttons[Math.min(index, buttons.length - 1)] ?? buttons[index - 1];
2011
+ if (next && next.dataset.value !== item.value)
2012
+ next.focus();
2013
+ else
2014
+ void this.focusInput();
2015
+ });
2016
+ }
2017
+ focusItem(index) {
2018
+ this.host.shadowRoot?.querySelectorAll('[part="item"]')[index]?.focus();
2019
+ }
2020
+ onItemKeyDown = (event, index) => {
2021
+ if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
2022
+ return;
2023
+ if (event.key === "ArrowLeft") {
2024
+ event.preventDefault();
2025
+ event.stopPropagation();
2026
+ this.focusItem(Math.max(0, index - 1));
2027
+ } else if (event.key === "ArrowRight") {
2028
+ event.preventDefault();
2029
+ event.stopPropagation();
2030
+ if (index === this.items.length - 1)
2031
+ void this.focusInput();
2032
+ else
2033
+ this.focusItem(index + 1);
2034
+ } else if (event.key === "Backspace" || event.key === "Delete") {
2035
+ event.preventDefault();
2036
+ event.stopPropagation();
2037
+ this.removeItemAt(index, "keyboard");
2038
+ }
2039
+ };
2040
+ handleMultipleKeydown(event) {
2041
+ if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
2042
+ return false;
2043
+ if (this.tokenSeparators.includes(event.key)) {
2044
+ event.preventDefault();
2045
+ event.stopPropagation();
2046
+ this.commitQuery("keyboard");
2047
+ return true;
2048
+ }
2049
+ if (this.raw || (this.input?.selectionStart ?? 0) > 0)
2050
+ return false;
2051
+ if (event.key === "ArrowLeft" && this.items.length) {
2052
+ event.preventDefault();
2053
+ this.focusItem(this.items.length - 1);
2054
+ return true;
2055
+ }
2056
+ if (event.key === "Backspace" && this.items.length) {
2057
+ event.preventDefault();
2058
+ this.removeItemAt(this.items.length - 1, "keyboard");
2059
+ return true;
2060
+ }
2061
+ return false;
2062
+ }
1646
2063
  move(key) {
1647
2064
  const indices = this.rows.flatMap((row, index) => row.disabled ? [] : [index]);
1648
2065
  if (this.canCreate)
@@ -1657,6 +2074,8 @@ var init_ui_chip_2_entry = __esm({
1657
2074
  onKeydown = (event) => {
1658
2075
  if (this.composing || event.isComposing || this.disabled || this.readOnly)
1659
2076
  return;
2077
+ if (this.multiple && this.handleMultipleKeydown(event))
2078
+ return;
1660
2079
  if (event.key === "Escape" && this.expanded) {
1661
2080
  event.preventDefault();
1662
2081
  event.stopPropagation();
@@ -1694,7 +2113,7 @@ var init_ui_chip_2_entry = __esm({
1694
2113
  this.close();
1695
2114
  this.format("blur");
1696
2115
  this.validation = { ...this.validation, touched: true };
1697
- if (this.config.allowFreeText && this.selected === null)
2116
+ if (!this.multiple && this.config.allowFreeText && this.selected === null)
1698
2117
  this.commit(null, this.raw, null, "free-entry", "keyboard");
1699
2118
  if ((this.config.validateOn ?? "blur") === "blur")
1700
2119
  void this.validate();
@@ -1738,23 +2157,23 @@ var init_ui_chip_2_entry = __esm({
1738
2157
  const description = [this.helpOpen ? "help-text" : "", this.validation.issues.length ? "validation" : ""].filter(Boolean).join(" ") || void 0;
1739
2158
  const status = this.loading ? "Loading suggestions\u2026" : this.lookupError || (this.expanded ? `${this.rows.length} suggestions available.` : "");
1740
2159
  const groups = [...new Set(this.rows.map((row) => row.group ?? ""))];
1741
- return h(Host, { key: "1f00d9a83729d9c2147ced7e5006b928d1b5e51d", "data-size": this.size, "data-validation": this.validation.status, onFocusout: this.onFocusOut }, h("label", { key: "10353b147cc68ef1d67be0988849af1527fcf9ba", htmlFor: "input", part: "label", class: this.labelVisibility === "sr-only" ? "sr-only" : void 0 }, this.label, this.required ? " *" : ""), h("div", { key: "74bb53137d9343add37c22f3ac503eccf41807a9", class: "field", part: "field", ref: (element) => this.field = element, onClick: (event) => {
2160
+ return h(Host, { key: "fc4c0192d3be88d8c0199ae1bcca44232bd22351", "data-size": this.size, "data-validation": this.validation.status, onFocusout: this.onFocusOut }, h("label", { key: "bdd0d244c6ef448978fa77aac3a2d3b71d713553", htmlFor: "input", part: "label", class: this.labelVisibility === "sr-only" ? "sr-only" : void 0 }, this.label, this.required ? " *" : ""), h("div", { key: "afb3972aab52171a3b25ede863c31059e56f5d91", class: "field", part: "field", ref: (element) => this.field = element, onClick: (event) => {
1742
2161
  if (!event.composedPath().some((node) => node instanceof HTMLButtonElement))
1743
2162
  this.input?.focus();
1744
- } }, h("slot", { key: "24c26916365013faa4a78bd4fe0d01f6c129c703", name: "start" }), h("input", { key: "835d19e66ec4a24c1a83f43bbc256fa2a9e3332f", id: "input", ref: (element) => this.input = element, role: "combobox", "aria-autocomplete": "list", "aria-expanded": String(this.expanded), "aria-controls": "listbox", "aria-activedescendant": this.expanded && this.active >= 0 ? `option-${this.active}` : void 0, "aria-describedby": description, "aria-invalid": String(this.validation.status === "error"), "aria-busy": String(this.validation.status === "pending"), value: this.display, placeholder: this.placeholder, name: this.name || void 0, disabled: this.disabled, readOnly: this.readOnly, required: this.required, autoComplete: "off", part: "input", onInput: this.onInput, onKeyDown: this.onKeydown, onCompositionstart: () => this.composing = true, onCompositionend: () => {
2163
+ } }, h("slot", { key: "65e4e201d6c11cd2638e392e1298662de7ba4d57", name: "start" }), this.multiple && h("div", { key: "b80b5b85fa0540139b9756fcc494aef9df245c15", class: "items", role: "group", "aria-label": `Selected ${this.label}` }, this.items.map((item, index) => h("button", { type: "button", part: "item", class: "item", "data-value": item.value, tabIndex: -1, disabled: this.disabled || this.readOnly || item.disabled, "aria-label": `${item.label}, press Delete or Backspace to remove`, onKeyDown: (event) => this.onItemKeyDown(event, index) }, h("slot", { name: `item-${item.id}` }, h("ui-chip", { appearance: "pill" }, item.label))))), h("input", { key: "64f76055ae412cc87119270eec10c69000a72563", id: "input", ref: (element) => this.input = element, role: "combobox", "aria-autocomplete": "list", "aria-expanded": String(this.expanded), "aria-controls": "listbox", "aria-activedescendant": this.expanded && this.active >= 0 ? `option-${this.active}` : void 0, "aria-describedby": description, "aria-invalid": String(this.validation.status === "error"), "aria-busy": String(this.validation.status === "pending"), value: this.display, placeholder: this.placeholder, name: this.name || void 0, disabled: this.disabled, readOnly: this.readOnly, required: this.required, autoComplete: "off", part: "input", onInput: this.onInput, onKeyDown: this.onKeydown, onCompositionstart: () => this.composing = true, onCompositionend: () => {
1745
2164
  this.composing = false;
1746
2165
  this.onInput(new InputEvent("input"));
1747
- } }), this.clearable && h("button", { key: "326c1e24d3c417c3a72acd8234a53937b388ba79", type: "button", part: "affordance", "aria-label": `Clear ${this.label}`, disabled: this.disabled || this.readOnly, onClick: () => {
2166
+ } }), this.clearable && h("button", { key: "eac4c18dadcea92065af4ecd871d925ef1248d47", type: "button", part: "affordance", "aria-label": `Clear ${this.label}`, disabled: this.disabled || this.readOnly, onClick: () => {
1748
2167
  this.commit(null, "", null, "clear", "pointer");
1749
2168
  this.close();
1750
2169
  this.input?.focus();
1751
- } }, "\xD7"), this.help && h("button", { key: "6aeb62dc2935eb95670caa1d2028c0931dc362b2", id: "help", type: "button", part: "affordance", "aria-label": `Help for ${this.label}`, disabled: this.disabled }, h("span", { key: "9317be0fbb0c1bbb91061be69f38037a97a4c36b", "aria-hidden": "true" }, "?")), this.disclosure && h("button", { key: "1cd2a0ea92df1144ff2297fcf64df7b3d0f4713a", type: "button", part: "affordance", "aria-label": `Suggestions for ${this.label}`, "aria-controls": "listbox", "aria-expanded": String(this.expanded), disabled: this.disabled || this.readOnly, onClick: () => {
2170
+ } }, "\xD7"), this.help && h("button", { key: "9a559d49a495ead3dbf159f170c594e0aaa0d0d0", id: "help", type: "button", part: "affordance", "aria-label": `Help for ${this.label}`, disabled: this.disabled }, h("span", { key: "73940e568b976f85399d5baa5e247a4a606d0039", "aria-hidden": "true" }, "?")), this.disclosure && h("button", { key: "30dd6746ffb121888a4c4fb6df54720906badf78", type: "button", part: "affordance", "aria-label": `Suggestions for ${this.label}`, "aria-controls": "listbox", "aria-expanded": String(this.expanded), disabled: this.disabled || this.readOnly, onClick: () => {
1752
2171
  if (this.expanded)
1753
2172
  this.close();
1754
2173
  else
1755
2174
  this.open("disclosure");
1756
2175
  this.input?.focus();
1757
- } }, h("span", { key: "0188b2d0e8cc7b7ff4d1a2175a0ff0b47d9c7d98", "aria-hidden": "true" }, "\u2304"))), this.help && h("ui-tooltip", { key: "e09fd35274c3e1fa6e408850d72f7a07c2bb4baf", id: "help-text", for: "help", toggleOnClick: true, onOpen: () => this.helpOpen = true, onClose: () => this.helpOpen = false }, this.help), h("div", { key: "ddf83a5944dd03fc7eb580b81fcf291e06c03601", class: "popup", part: "popup", hidden: !this.expanded, ref: (element) => this.popup = element }, h("div", { key: "1d73de1dabb6eaa95af12f2af88dac74e3f163ea", id: "listbox", role: "listbox", "aria-label": `${this.label} suggestions`, "aria-busy": String(this.loading) }, groups.map((group) => h("div", { role: group ? "group" : "presentation", "aria-label": group || void 0 }, group && h("div", { class: "group", part: "group" }, group), this.rows.map((row, index) => (row.group ?? "") !== group ? null : h("div", { id: `option-${index}`, role: "option", "aria-selected": String(this.selected === row.value), "aria-disabled": String(Boolean(row.disabled)), "data-active": this.active === index ? "" : void 0, part: "option", class: "option", onPointerDown: (event) => event.preventDefault(), onClick: () => this.choose(index, "pointer") }, h("slot", { name: `option-${row.id}` }, h("span", { class: "primary", part: "option-primary" }, row.label), row.description && h("span", { class: "secondary", part: "option-secondary" }, row.description)))))), this.canCreate && h("div", { key: "a0aaafa2f4ff79efa954ed780f3a7bd81d4b2ecd", id: `option-${this.rows.length}`, role: "option", "aria-selected": "false", class: "option", part: "option", "data-active": this.active === this.rows.length ? "" : void 0, onPointerDown: (event) => event.preventDefault(), onClick: () => this.choose(this.rows.length, "pointer") }, h("slot", { key: "53a6706fc2c26097948b08cf0a7ee6040e37fe57", name: "create" }, "Create \u201C", this.raw, "\u201D"))), this.loading ? h("div", { class: "message" }, h("slot", { name: "loading" }, "Loading suggestions\u2026")) : this.lookupError ? h("div", { class: "message" }, h("slot", { name: "error" }, this.lookupError)) : !this.rows.length && !this.canCreate ? h("div", { class: "message" }, h("slot", { name: "empty" }, "No suggestions.")) : null, h("slot", { key: "7997a0233a3c1a560b820c846645405ec4ceec1d", name: "footer" })), h("div", { key: "9143eb79141f5f3660a63f7a2471d1eecd8e9332", id: "validation", class: "message", part: "validation", hidden: !this.validation.issues.length }, this.validation.issues.map((issue) => h("div", null, issue.message))), h("div", { key: "21f310613b058f528f8c4df329864fd8a2a94b55", class: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true" }, status, " ", this.validation.status === "pending" ? "Checking value\u2026" : this.validation.issues.map((issue) => issue.message).join(" ")));
2176
+ } }, h("span", { key: "7d3b10a765ee0a6c40d7b0b49e98c676a5837944", "aria-hidden": "true" }, "\u2304"))), this.help && h("ui-tooltip", { key: "efff00f45dc281b727789eb2aa84ff772bb5c925", id: "help-text", for: "help", toggleOnClick: true, onOpen: () => this.helpOpen = true, onClose: () => this.helpOpen = false }, this.help), h("div", { key: "770bc12b873026b571bd3ae2a80416e8af52b8d4", class: "popup", part: "popup", hidden: !this.expanded, ref: (element) => this.popup = element }, h("div", { key: "ed48c8dd8b672a577d567ca5e795b8a53fde2761", id: "listbox", role: "listbox", "aria-label": `${this.label} suggestions`, "aria-busy": String(this.loading) }, groups.map((group) => h("div", { role: group ? "group" : "presentation", "aria-label": group || void 0 }, group && h("div", { class: "group", part: "group" }, group), this.rows.map((row, index) => (row.group ?? "") !== group ? null : h("div", { id: `option-${index}`, role: "option", "aria-selected": String(this.selected === row.value), "aria-disabled": String(Boolean(row.disabled)), "data-active": this.active === index ? "" : void 0, part: "option", class: "option", onPointerDown: (event) => event.preventDefault(), onClick: () => this.choose(index, "pointer") }, h("slot", { name: `option-${row.id}` }, h("span", { class: "primary", part: "option-primary" }, row.label), row.description && h("span", { class: "secondary", part: "option-secondary" }, row.description)))))), this.canCreate && h("div", { key: "43215f449bbccde407ef818cee473f69870f6f8c", id: `option-${this.rows.length}`, role: "option", "aria-selected": "false", class: "option", part: "option", "data-active": this.active === this.rows.length ? "" : void 0, onPointerDown: (event) => event.preventDefault(), onClick: () => this.choose(this.rows.length, "pointer") }, h("slot", { key: "3ff70ff3ab8e24afc369a26e8474e7d1220ed6eb", name: "create" }, "Create \u201C", this.raw, "\u201D"))), this.loading ? h("div", { class: "message" }, h("slot", { name: "loading" }, "Loading suggestions\u2026")) : this.lookupError ? h("div", { class: "message" }, h("slot", { name: "error" }, this.lookupError)) : !this.rows.length && !this.canCreate ? h("div", { class: "message" }, h("slot", { name: "empty" }, "No suggestions.")) : null, h("slot", { key: "8b1fbd4f5c372393d294d8c218ae1785e6b0334f", name: "footer" })), h("div", { key: "18e68687f04e35535edee363683523ce6bbb0291", id: "validation", class: "message", part: "validation", hidden: !this.validation.issues.length }, this.validation.issues.map((issue) => h("div", null, issue.message))), h("div", { key: "e4a7db06abcfaf08b8ac592107531a13ef3a5897", class: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true" }, status, " ", this.validation.status === "pending" ? "Checking value\u2026" : this.validation.issues.map((issue) => issue.message).join(" ")));
1758
2177
  }
1759
2178
  static get watchers() {
1760
2179
  return {
@@ -1791,7 +2210,7 @@ var init_ui_context_menu_entry = __esm({
1791
2210
  init_index_8BGiMGQ0();
1792
2211
  init_manager_C_0syqXZ();
1793
2212
  init_events_JwSoedEO();
1794
- init_positioning_Drmwg_C1();
2213
+ init_positioning_Ig1jYhE1();
1795
2214
  uiContextMenuCss = () => `:host{display:contents}:host([data-focus-trigger='pointer']) ::slotted(ui-menu-item:focus){outline:none}.menu{position:fixed;inset:auto;margin:0;z-index:var(--ui-z-overlay, 1000);min-width:12rem;opacity:0;transform:translateY(-4px) scale(0.99);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}.menu:popover-open{opacity:1;transform:translateY(0) scale(1)}@starting-style{.menu:popover-open{opacity:0;transform:translateY(-4px) scale(0.99)}}.menu[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){.menu{transition:none}}`;
1796
2215
  UIContextMenu = class {
1797
2216
  constructor(hostRef) {
@@ -2001,7 +2420,7 @@ var init_ui_context_menu_entry = __esm({
2001
2420
  this.closeMenu("action", "pointer");
2002
2421
  };
2003
2422
  render() {
2004
- return h(Host, { key: "292937da8010dc741e3e845b6f7fd0fef6b8bda3", "data-open": this.internalOpen ? "" : void 0, "data-focus-trigger": this.internalOpen ? this.focusTrigger : void 0, onKeyDown: this.onKeydown, onClick: this.onItemClick }, h("slot", { key: "4f08876237d1919803200226d956e67de35fffab", name: "trigger" }), h("div", { key: "c2cc0218165d02cc4c7fd11bdc52a51d39897546", class: "menu", "data-open": this.internalOpen ? "" : void 0 }, h("ui-menu", { key: "1c2c6e62c86f3a38f014976843f3354d312d0744", open: this.internalOpen }, h("slot", { key: "baeca960ac6d2277a60dc567f6e4110904d67b5e" }))));
2423
+ return h(Host, { key: "aaf9f27402b0c88cede3847ee9c8f61ac844f889", "data-open": this.internalOpen ? "" : void 0, "data-focus-trigger": this.internalOpen ? this.focusTrigger : void 0, onKeyDown: this.onKeydown, onClick: this.onItemClick }, h("slot", { key: "d801d564ec2ee073e517cb991c26efc61d3e499d", name: "trigger" }), h("div", { key: "4febcc5d76c79c2e5361db7b203e971582197fd2", class: "menu", "data-open": this.internalOpen ? "" : void 0 }, h("ui-menu", { key: "7aace2479a8014a20da35f69bd3ed57b402f9ef2", open: this.internalOpen }, h("slot", { key: "a31d703c437cf5d9ab82e5f7793caa093a312dfd" }))));
2005
2424
  }
2006
2425
  static get watchers() {
2007
2426
  return {
@@ -2139,7 +2558,7 @@ var init_ui_dialog_entry = __esm({
2139
2558
  this.accessibleLabel = nextLabel;
2140
2559
  };
2141
2560
  render() {
2142
- return h(Host, { key: "f5b4441f54505e40851dd239d12cf8ed09daabfe", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("dialog", { key: "6896de6166cc085d9bd581dc053705fbce6328d8", ref: (el) => this.dialogRef = el, open: this.internalOpen, "aria-label": this.accessibleLabel }, h("slot", { key: "07515a7b8da25ccbd18bcde226129a569c999af7" })));
2561
+ return h(Host, { key: "b606ef8c95728b5538047a7134030455fedf69e4", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("dialog", { key: "85531d82c36e79230cbb22c105ff3821f1f35f58", ref: (el) => this.dialogRef = el, open: this.internalOpen, "aria-label": this.accessibleLabel }, h("slot", { key: "8216096bc94e8261680664398691b8ea877daa0f" })));
2143
2562
  }
2144
2563
  static get watchers() {
2145
2564
  return {
@@ -2272,7 +2691,7 @@ var init_ui_disclosure_entry = __esm({
2272
2691
  this.setOpen(!this.internalOpen, { reason: "action", trigger: "keyboard" });
2273
2692
  };
2274
2693
  render() {
2275
- return h(Host, { key: "5c49c41703850437e8b3a1476f3333da83a4f133" }, h("slot", { key: "9a4856ad2ab237331b8485f6c3a423a43ddceb8d" }));
2694
+ return h(Host, { key: "91d1df53268f18c8c15192fb66b67baa7053fe93" }, h("slot", { key: "578c99f8fd09415c5e63e9f6a860fe204471da2f" }));
2276
2695
  }
2277
2696
  static get watchers() {
2278
2697
  return {
@@ -2341,7 +2760,7 @@ var init_ui_editable_entry = __esm({
2341
2760
  }
2342
2761
  focusEditor() {
2343
2762
  const editRoot = this.host.querySelector('[slot="edit"]');
2344
- const candidate = editRoot?.matches("input, textarea, select, button, [tabindex], ui-combobox, ui-multi-combobox") ? editRoot : editRoot?.querySelector("input, textarea, select, button, [tabindex], ui-combobox, ui-multi-combobox");
2763
+ const candidate = editRoot?.matches("input, textarea, select, button, [tabindex], ui-combobox") ? editRoot : editRoot?.querySelector("input, textarea, select, button, [tabindex], ui-combobox");
2345
2764
  const focusInput = candidate?.focusInput;
2346
2765
  if (typeof focusInput === "function")
2347
2766
  void focusInput.call(candidate);
@@ -2382,7 +2801,7 @@ var init_ui_editable_entry = __esm({
2382
2801
  this.requestEdit(false, "light-dismiss", "pointer");
2383
2802
  };
2384
2803
  render() {
2385
- return h(Host, { key: "7f0c77aa06281c94407af1f060f5f2b2c34af394", "data-edit": this.internalEdit ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, onClick: this.onClick, onKeyDown: this.onKeyDown }, h("div", { key: "4dc13c26dc4080ed0ad972aa677d9e844a0e7597", part: "preview", hidden: this.internalEdit }, h("slot", { key: "8332efed99f05173030d379088e8e97746f32ce6", name: "preview" })), h("div", { key: "ec3e11ec9218077da5f17a0c724cfab17d56fb17", part: "edit", hidden: !this.internalEdit }, h("slot", { key: "46a4618614c6e55c0015d97e687a0f28e05eef38", name: "edit" })));
2804
+ return h(Host, { key: "c11babe81053ecc0fb6390507f74d5094c551f48", "data-edit": this.internalEdit ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, onClick: this.onClick, onKeyDown: this.onKeyDown }, h("div", { key: "fbb13fda25a177ff62f4bbb16b8fa7a8d1bfefb6", part: "preview", hidden: this.internalEdit }, h("slot", { key: "29537eed3c19da07a61b0236a563912eec332572", name: "preview" })), h("div", { key: "a8cdb53c61041361ff97762bdf1e8e6992706751", part: "edit", hidden: !this.internalEdit }, h("slot", { key: "466c6bf07d44ab07ccab1fd138412e43a291dcca", name: "edit" })));
2386
2805
  }
2387
2806
  static get watchers() {
2388
2807
  return {
@@ -2414,7 +2833,7 @@ var init_ui_floating_action_button_entry = __esm({
2414
2833
  mobileOnly = false;
2415
2834
  label = "";
2416
2835
  render() {
2417
- return h(Host, { key: "86f7c100efe7fdf900de7abbcc1a01c475b0da1d", "data-disabled": this.disabled ? "" : void 0 }, h("button", { key: "91398faeb693dcbe11d58e59a183391ce6e4876c", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "d11b6f638b045d6835279f3381442983b40472d9" })));
2836
+ return h(Host, { key: "54f6284109397d15e2b3ef92f68e9bd4cf91fbae", "data-disabled": this.disabled ? "" : void 0 }, h("button", { key: "9ebad7e3bbc2bf18d4d5a04f37a9f2d77011ad34", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "222c6807ae4639eb20dc25be08fe5f4e91c638de" })));
2418
2837
  }
2419
2838
  };
2420
2839
  UIFloatingActionButton.style = uiFloatingActionButtonCss();
@@ -2533,7 +2952,7 @@ var init_ui_form_field_entry = __esm({
2533
2952
  input.setAttribute("aria-invalid", this.invalid ? "true" : "false");
2534
2953
  }
2535
2954
  render() {
2536
- return h(Host, { key: "3d331f3506c3853d751395569e87614c52ce0076", "data-invalid": this.invalid ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-required": this.required ? "" : void 0 }, h("slot", { key: "1b582b4961a767230b19efa314943f8a5426270e", onSlotchange: this.scheduleWire }));
2955
+ return h(Host, { key: "f052dbf0ba289bf187ea78c458260110fbfa059a", "data-invalid": this.invalid ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-required": this.required ? "" : void 0 }, h("slot", { key: "f26f48581b5781e8c3d7830ddd3707ea4fb04420", onSlotchange: this.scheduleWire }));
2537
2956
  }
2538
2957
  };
2539
2958
  UIFormField.style = uiFormFieldCss();
@@ -2561,7 +2980,7 @@ var init_ui_icon_button_entry = __esm({
2561
2980
  /** Reveals this control through a surrounding ui-affordance-scope. */
2562
2981
  anticipatory = false;
2563
2982
  render() {
2564
- return h(Host, { key: "9e8ee3ff8c9f9ab5113a7635e49755e0eb998898", "data-disabled": this.disabled ? "" : void 0, "data-ui-affordance": this.anticipatory ? "button" : void 0 }, h("button", { key: "7f6dd5ae40b595634ba91834c2bb113687ee5cb8", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "c7a94d7fb54fbff44e372bf4f67bb29a40bfc45b" })));
2983
+ return h(Host, { key: "8d0f84c9d3aaa69f47430369b511bb4160de5cc8", "data-disabled": this.disabled ? "" : void 0, "data-ui-affordance": this.anticipatory ? "button" : void 0 }, h("button", { key: "b896cdb091e9733b2b8625463f1324819c23965c", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "76ab5e5f4d34e3f0850287b4552dde060b3798e7" })));
2565
2984
  }
2566
2985
  };
2567
2986
  UIIconButton.style = uiIconButtonCss();
@@ -2651,7 +3070,7 @@ var init_ui_input_entry = __esm({
2651
3070
  });
2652
3071
  };
2653
3072
  render() {
2654
- return h(Host, { key: "90597a900e0504f0e729990dd8cbc84c35d8162f", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "1c8ac0ad7e4d3a5a9b913c2687021ef7037ccfa7", ref: (el) => this.slotRef = el }));
3073
+ return h(Host, { key: "92505de6b1245569a6d4746418a70f8d7bc4eed9", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "d5743dc62037b5d7722cfbb64a582592327c75e5", ref: (el) => this.slotRef = el }));
2655
3074
  }
2656
3075
  static get watchers() {
2657
3076
  return {
@@ -2697,7 +3116,7 @@ var init_ui_menu_item_entry = __esm({
2697
3116
  disabled = false;
2698
3117
  value = "";
2699
3118
  render() {
2700
- return h(Host, { key: "856cf07264b2eb8e3e51305408855156e11d9a8b", role: "menuitem", tabIndex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? "true" : void 0, "data-value": this.value || void 0 }, h("span", { key: "a56401f9b910175eb5683d1748f323dce0d55a9c", class: "menu-item__surface" }, h("slot", { key: "4ee22fd4cdb10ec822e4485e48ed8000a10512ae" })));
3119
+ return h(Host, { key: "d0f0886b18ebd01c0c2e20a2c1b1ecfd57eeb3e3", role: "menuitem", tabIndex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? "true" : void 0, "data-value": this.value || void 0 }, h("span", { key: "7fc584fb670b5b8ce0bbd3be1fea08f87de4a298", class: "menu-item__surface" }, h("slot", { key: "066fb08bc22996d439f3216e401a93a084e3e299" })));
2701
3120
  }
2702
3121
  };
2703
3122
  UIMenuItem.style = uiMenuItemCss();
@@ -2716,7 +3135,7 @@ var init_ui_menu_entry = __esm({
2716
3135
  init_events_JwSoedEO();
2717
3136
  init_manager_C_0syqXZ();
2718
3137
  init_controlled_state_BnGhGgTH();
2719
- init_positioning_Drmwg_C1();
3138
+ init_positioning_Ig1jYhE1();
2720
3139
  uiMenuCss = () => `:host{--ui-menu-viewport-gap:var(--ui-space-2, 0.5rem);display:flex;flex-direction:column;box-sizing:border-box;inline-size:max-content;min-inline-size:min(12rem, calc(100vw - (var(--ui-menu-viewport-gap) * 2)));max-inline-size:calc(100vw - (var(--ui-menu-viewport-gap) * 2));padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.menu__surface{display:flex;flex-direction:column;box-sizing:border-box;max-inline-size:inherit;padding:var(--ui-space-1);background:var(--ui-surface-elevated);border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-3);box-shadow:var(--ui-shadow-lg);max-block-size:inherit;overflow:auto}:host(:not([data-open])){display:none}:host([popover]){position:fixed;inset:auto;margin:0;overflow:visible;max-block-size:calc(100dvh - (var(--ui-menu-viewport-gap) * 2));opacity:0;transform:translateY(-4px) scale(0.99);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}:host([popover]:popover-open){opacity:1;transform:translateY(0) scale(1)}@starting-style{:host([popover]:popover-open){opacity:0;transform:translateY(-4px) scale(0.99)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host([popover]){transition:none}}::slotted(ui-menu-item){display:block;width:100%}`;
2721
3140
  UIMenu = class {
2722
3141
  constructor(hostRef) {
@@ -2862,222 +3281,26 @@ var init_ui_menu_entry = __esm({
2862
3281
  }
2863
3282
  };
2864
3283
  render() {
2865
- return h(Host, { key: "22689ca1b0514bb27a76bfb9a702c0d4ce49d136", role: "menu", "aria-orientation": "vertical", "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "cff891a33348f077631f1b92f1167285aafd25f1", class: "menu__surface" }, h("slot", { key: "3a0e9ff4f36b1afbe5f879e0e51ff4943279b5b5" })));
3284
+ return h(Host, { key: "5b64cc53ca56ea04a63013c8cb61231c9b1045cc", role: "menu", "aria-orientation": "vertical", "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "6410a56cc5efcffd0673c9abdf8f8aa45295c516", class: "menu__surface" }, h("slot", { key: "7e7f9d3b19bbf3024d61ecf44cd8b103748ef966" })));
2866
3285
  }
2867
3286
  static get watchers() {
2868
- return {
2869
- "open": [{
2870
- "syncFromProp": 0
2871
- }],
2872
- "for": [{
2873
- "resetSurface": 0
2874
- }],
2875
- "placement": [{
2876
- "resetSurface": 0
2877
- }],
2878
- "internalOpen": [{
2879
- "syncSurface": 0
2880
- }]
2881
- };
2882
- }
2883
- };
2884
- UIMenu.style = uiMenuCss();
2885
- }
2886
- });
2887
-
2888
- // dist/esm/ui-multi-combobox.entry.js
2889
- var ui_multi_combobox_entry_exports = {};
2890
- __export(ui_multi_combobox_entry_exports, {
2891
- ui_multi_combobox: () => UIMultiCombobox
2892
- });
2893
- var uiMultiComboboxCss, UIMultiCombobox;
2894
- var init_ui_multi_combobox_entry = __esm({
2895
- "dist/esm/ui-multi-combobox.entry.js"() {
2896
- init_index_8BGiMGQ0();
2897
- uiMultiComboboxCss = () => `:host{display:block;min-inline-size:0;color:var(--ui-text-primary);font:inherit}ui-combobox::part(field){flex-wrap:wrap;align-items:center;gap:var(--ui-space-1);min-block-size:var(--ui-multi-combobox-min-block-size, 2.5rem);padding:var(--ui-space-1)}ui-combobox::part(input){flex:1 0 var(--ui-multi-combobox-input-min-inline-size, 5rem);width:auto;min-block-size:1.75rem;padding:var(--ui-space-0-5) var(--ui-space-1)}.items{display:contents}.item{appearance:none;display:inline-flex;min-inline-size:0;max-inline-size:min(100%, var(--ui-multi-combobox-item-max-inline-size, 12rem));overflow:hidden;padding:0;border:0;border-radius:var(--ui-radius-1);background:transparent;color:inherit;font:inherit;cursor:default}.item>slot{display:block;min-inline-size:0;max-inline-size:100%;overflow:hidden}.item>slot::slotted(*){min-inline-size:0;max-inline-size:100%}.item:focus-visible{outline:2px solid var(--ui-focus-ring);outline-offset:1px}.item:disabled{opacity:.6}`;
2898
- UIMultiCombobox = class {
2899
- constructor(hostRef) {
2900
- registerInstance(this, hostRef);
2901
- this.queryChange = createEvent(this, "query-change");
2902
- this.addItem = createEvent(this, "add-item");
2903
- this.removeItem = createEvent(this, "remove-item");
2904
- this.createItem = createEvent(this, "create-item");
2905
- this.optionsChange = createEvent(this, "options-change");
2906
- }
2907
- get host() {
2908
- return getElement(this);
2909
- }
2910
- label = "";
2911
- placeholder = "";
2912
- items = [];
2913
- config = {};
2914
- query;
2915
- defaultQuery = "";
2916
- /** Characters that commit the current query and leave the input ready for the next item. */
2917
- tokenSeparators = [];
2918
- disabled = false;
2919
- readOnly = false;
2920
- required = false;
2921
- name = "";
2922
- queryChange;
2923
- addItem;
2924
- removeItem;
2925
- createItem;
2926
- optionsChange;
2927
- raw = "";
2928
- rows = [];
2929
- combobox;
2930
- filteredConfig;
2931
- filteredConfigSource;
2932
- filteredSelection = "";
2933
- componentWillLoad() {
2934
- this.raw = this.query ?? this.defaultQuery;
2935
- }
2936
- syncQuery() {
2937
- if (this.query !== void 0)
2938
- this.raw = this.query;
2939
- }
2940
- get selectedValues() {
2941
- return new Set(this.items.map((item) => item.value));
2942
- }
2943
- get comboboxConfig() {
2944
- const selectionKey = this.items.map((item) => item.value).join("\0");
2945
- if (this.filteredConfig && this.filteredConfigSource === this.config && this.filteredSelection === selectionKey) {
2946
- return this.filteredConfig;
2947
- }
2948
- const ownerFilter = this.config.filter;
2949
- const selected = this.selectedValues;
2950
- this.filteredConfigSource = this.config;
2951
- this.filteredSelection = selectionKey;
2952
- this.filteredConfig = {
2953
- ...this.config,
2954
- filter: (option, query, context) => !selected.has(option.value) && (ownerFilter ? ownerFilter(option, query, context) : option.label.toLocaleLowerCase().includes(query.toLocaleLowerCase()))
2955
- };
2956
- return this.filteredConfig;
2957
- }
2958
- setQuery(query, trigger) {
2959
- if (this.query === void 0)
2960
- this.raw = query;
2961
- this.queryChange.emit({ query, display: query, trigger });
2962
- }
2963
- clearCommittedQuery(input, trigger) {
2964
- input.value = "";
2965
- this.raw = "";
2966
- this.setQuery("", trigger);
2967
- }
2968
- onQueryChange = (event) => {
2969
- event.stopPropagation();
2970
- this.setQuery(event.detail.query, event.detail.trigger);
2971
- };
2972
- onOptionsChange = (event) => {
2973
- event.stopPropagation();
2974
- this.rows = event.detail;
2975
- this.optionsChange.emit(event.detail);
2976
- };
2977
- onValueChange = (event) => {
2978
- event.stopPropagation();
2979
- if (event.detail.kind !== "selection" || !event.detail.option)
2980
- return;
2981
- const item = event.detail.option;
2982
- this.addItem.emit({ item, index: this.items.length, trigger: event.detail.trigger });
2983
- queueMicrotask(() => this.setQuery("", event.detail.trigger));
2984
- };
2985
- onCreateEntry = (event) => {
2986
- event.stopPropagation();
2987
- const query = event.detail.query.trim();
2988
- if (!query)
2989
- return;
2990
- this.setQuery("", event.detail.trigger);
2991
- this.createItem.emit({ query, trigger: event.detail.trigger });
2992
- };
2993
- commitQuery(input, trigger) {
2994
- const query = this.raw.trim();
2995
- if (!query)
2996
- return;
2997
- const normalizedQuery = query.toLocaleLowerCase();
2998
- const option = this.rows.find((row) => row.label.trim().toLocaleLowerCase() === normalizedQuery);
2999
- if (option) {
3000
- this.clearCommittedQuery(input, trigger);
3001
- this.addItem.emit({ item: option, index: this.items.length, trigger });
3002
- } else if (this.config.allowCreate) {
3003
- this.clearCommittedQuery(input, trigger);
3004
- this.createItem.emit({ query, trigger });
3005
- }
3006
- }
3007
- remove(index, trigger) {
3008
- const item = this.items[index];
3009
- if (!item || item.disabled || this.disabled || this.readOnly)
3010
- return;
3011
- this.removeItem.emit({ item, index, trigger });
3012
- requestAnimationFrame(() => {
3013
- const buttons = this.host.shadowRoot?.querySelectorAll('[part="item"]') ?? [];
3014
- const next = buttons[Math.min(index, buttons.length - 1)] ?? buttons[index - 1];
3015
- if (next && next.dataset.value !== item.value)
3016
- next.focus();
3017
- else
3018
- void this.focusInput();
3019
- });
3020
- }
3021
- focusItem(index) {
3022
- this.host.shadowRoot?.querySelectorAll('[part="item"]')[index]?.focus();
3023
- }
3024
- onItemKeyDown = (event, index) => {
3025
- if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
3026
- return;
3027
- if (event.key === "ArrowLeft") {
3028
- event.preventDefault();
3029
- event.stopPropagation();
3030
- this.focusItem(Math.max(0, index - 1));
3031
- } else if (event.key === "ArrowRight") {
3032
- event.preventDefault();
3033
- event.stopPropagation();
3034
- if (index === this.items.length - 1)
3035
- void this.focusInput();
3036
- else
3037
- this.focusItem(index + 1);
3038
- } else if (event.key === "Backspace" || event.key === "Delete") {
3039
- event.preventDefault();
3040
- event.stopPropagation();
3041
- this.remove(index, "keyboard");
3042
- }
3043
- };
3044
- onKeyDown = (event) => {
3045
- if (event.defaultPrevented || event.isComposing || this.disabled || this.readOnly || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
3046
- return;
3047
- const input = event.composedPath().find((node) => node instanceof HTMLInputElement);
3048
- if (!input)
3049
- return;
3050
- if (this.tokenSeparators.includes(event.key)) {
3051
- event.preventDefault();
3052
- event.stopPropagation();
3053
- this.commitQuery(input, "keyboard");
3054
- return;
3055
- }
3056
- if (this.raw || (input.selectionStart ?? 0) > 0)
3057
- return;
3058
- if (event.key === "ArrowLeft" && this.items.length) {
3059
- event.preventDefault();
3060
- this.focusItem(this.items.length - 1);
3061
- } else if (event.key === "Backspace" && this.items.length) {
3062
- event.preventDefault();
3063
- this.remove(this.items.length - 1, "keyboard");
3064
- }
3065
- };
3066
- async focusInput() {
3067
- await this.combobox?.focusInput();
3068
- }
3069
- render() {
3070
- return h(Host, { key: "ba4db0fdca6cae344fe6b0bf06c933a9a90d2d3f", onKeyDown: this.onKeyDown }, h("ui-combobox", { key: "f5901b0b078b479425114d998618828cc458e7dd", ref: (element) => this.combobox = element, label: this.label, "label-visibility": "sr-only", placeholder: this.placeholder, name: this.name, value: null, query: this.raw, config: this.comboboxConfig, size: "sm", disabled: this.disabled, readOnly: this.readOnly, required: this.required, "onQuery-change": this.onQueryChange, "onValue-change": this.onValueChange, "onCreate-entry": this.onCreateEntry, "onOptions-change": this.onOptionsChange }, h("div", { key: "374c80862302d5c36f4849f42e5ed13222addd1c", slot: "start", class: "items", role: "group", "aria-label": `Selected ${this.label}` }, this.items.map((item, index) => h("button", { type: "button", part: "item", class: "item", "data-value": item.value, tabIndex: -1, disabled: this.disabled || this.readOnly || item.disabled, "aria-label": `${item.label}, press Delete or Backspace to remove`, onKeyDown: (event) => this.onItemKeyDown(event, index) }, h("slot", { name: `item-${item.id}` }, h("ui-chip", { appearance: "pill" }, item.label))))), this.rows.map((option) => h("span", { slot: `option-${option.id}` }, h("slot", { name: `option-${option.id}` }, option.label))), h("span", { key: "a23781c153e154cdff7066868c2da956e26b7d52", slot: "create" }, h("slot", { key: "e3bde0d1e549e785fff877a1a7aac10df308f7a3", name: "create" }, "Create \u201C", this.raw, "\u201D")), h("span", { key: "5837c4cde35d5984aaf1d364f1b850b9d63ff8ca", slot: "loading" }, h("slot", { key: "1bdfa30849bea752bc5c93268b3427c964d1b5d3", name: "loading" }, "Loading suggestions\u2026")), h("span", { key: "519d7b1a7f28f9d19cd441598a690c8b4fdacf5b", slot: "empty" }, h("slot", { key: "3163150e0f1edebb50509a5dacd576e4568eaaae", name: "empty" }, "No suggestions.")), h("span", { key: "655e4f85d70eb97f0f0ecb2bac7b4228f5cf580f", slot: "error" }, h("slot", { key: "a22667db30ee30003855ee69774eff3a4aab8566", name: "error" }, "Unable to load suggestions.")), h("div", { key: "b01b74f3fc7136a3bf1875c81b9f3a662f3e993c", slot: "footer" }, h("slot", { key: "7565ee0798072eebc6d1c458f89ce6c7941577dd", name: "footer" }))));
3071
- }
3072
- static get watchers() {
3073
- return {
3074
- "query": [{
3075
- "syncQuery": 0
3287
+ return {
3288
+ "open": [{
3289
+ "syncFromProp": 0
3290
+ }],
3291
+ "for": [{
3292
+ "resetSurface": 0
3293
+ }],
3294
+ "placement": [{
3295
+ "resetSurface": 0
3296
+ }],
3297
+ "internalOpen": [{
3298
+ "syncSurface": 0
3076
3299
  }]
3077
3300
  };
3078
3301
  }
3079
3302
  };
3080
- UIMultiCombobox.style = uiMultiComboboxCss();
3303
+ UIMenu.style = uiMenuCss();
3081
3304
  }
3082
3305
  });
3083
3306
 
@@ -3093,7 +3316,7 @@ var init_ui_popover_entry = __esm({
3093
3316
  init_manager_C_0syqXZ();
3094
3317
  init_events_JwSoedEO();
3095
3318
  init_controlled_state_BnGhGgTH();
3096
- init_positioning_Drmwg_C1();
3319
+ init_positioning_Ig1jYhE1();
3097
3320
  uiPopoverCss = () => `:host{--ui-popover-viewport-gap:var(--ui-space-2, 0.5rem);box-sizing:border-box;max-inline-size:min( 20rem, calc(100vw - (var(--ui-popover-viewport-gap) * 2)) );max-block-size:calc(100dvh - (var(--ui-popover-viewport-gap) * 2));overflow:visible;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.popover__surface{box-sizing:border-box;max-inline-size:inherit;max-block-size:inherit;overflow:auto;padding:var(--ui-space-3);background:var(--ui-surface-elevated);border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-3);box-shadow:var(--ui-shadow-lg)}:host(:not([data-open])){display:none}:host([popover]){position:fixed;inset:auto;margin:0;opacity:0;transform:translateY(-4px) scale(0.99);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}:host([popover]:popover-open){opacity:1;transform:translateY(0) scale(1)}@starting-style{:host([popover]:popover-open){opacity:0;transform:translateY(-4px) scale(0.99)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host([popover]){transition:none}}`;
3098
3321
  UIPopover = class {
3099
3322
  constructor(hostRef) {
@@ -3200,7 +3423,7 @@ var init_ui_popover_entry = __esm({
3200
3423
  }
3201
3424
  };
3202
3425
  render() {
3203
- return h(Host, { key: "f63907b8e49b8264c291048c509b6164fdd60ca4", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("div", { key: "2425f4394749d994693f4a256256bd9e2f5daf60", class: "popover__surface" }, h("slot", { key: "3b6f925da371d43e828842c4027cddee673d7ab3" })));
3426
+ return h(Host, { key: "65a0927abc40450205989704bfde2cf7fd80d1f9", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("div", { key: "255acaf99e0fe70a92048351b24bdfde1a4ea45f", class: "popover__surface" }, h("slot", { key: "9d2f6c9d5a0f7a2766225aef0ec5b98b33ec9f07" })));
3204
3427
  }
3205
3428
  static get watchers() {
3206
3429
  return {
@@ -3337,7 +3560,7 @@ var init_ui_radio_group_entry = __esm({
3337
3560
  }
3338
3561
  };
3339
3562
  render() {
3340
- return h(Host, { key: "31d8dee04aad4ddbb0bfa617a4e6ed187eab6674", role: "radiogroup", "aria-orientation": this.orientation, "data-orientation": this.orientation, "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "7134bcfa6b11cbe0d0d55a6593ea3fca921a71ec" }));
3563
+ return h(Host, { key: "9bdfe6b5209b5444cb27dde3226ec33866999c25", role: "radiogroup", "aria-orientation": this.orientation, "data-orientation": this.orientation, "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "b81a2f1e4c49000cfb5357570b460564ced48d91" }));
3341
3564
  }
3342
3565
  static get watchers() {
3343
3566
  return {
@@ -3440,7 +3663,7 @@ var init_ui_radio_entry = __esm({
3440
3663
  });
3441
3664
  };
3442
3665
  render() {
3443
- return h(Host, { key: "5bab1394b8238609e4382309e4b11bca82a60b12", role: "radio", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "56ba5b7ec4ab53299c66689558338d2c6ab3e4f6", ref: (el) => this.slotRef = el }));
3666
+ return h(Host, { key: "32df72dff7253956875ef28f593462ddbbb90eef", role: "radio", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "0c78f3e3bdf4d618547b267128c6fc0fdd651599", ref: (el) => this.slotRef = el }));
3444
3667
  }
3445
3668
  static get watchers() {
3446
3669
  return {
@@ -3511,7 +3734,7 @@ var init_ui_search_result_row_entry = __esm({
3511
3734
  this.hasTrailing = slotHasContent(this.trailingSlot);
3512
3735
  };
3513
3736
  render() {
3514
- return h(Host, { key: "2e1a1fe613e499a8abaaf89c8cc071554b523157" }, h("button", { key: "2224a7593feb6c58b162ce820b2deb9bec4fa1b7", class: "search-result-row", type: "button", disabled: this.disabled, part: "button" }, h("span", { key: "87b86a7d31e15b401b933562adba9a24c88e341f", class: "search-result-row__leading", part: "leading", hidden: !this.hasLeading }, h("slot", { key: "00d253826d2d0c60206e20b6428c3277024a24e0", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "3c4ad5b336450c29d56aea538dbc987b9a624c1d", class: "search-result-row__content", part: "content" }, h("span", { key: "305dc47dcac890ca968d622ce3dc18e88d646ab3", class: "search-result-row__title", part: "title" }, h("slot", { key: "5441b78d87cba9e48eb3b786e7ea914479f5ef15", name: "title" })), h("span", { key: "bbd7769b81005b959e6d950255951f0089e9e716", class: "search-result-row__meta", part: "meta", hidden: !this.hasMeta }, h("slot", { key: "8437dd124e858eadb942e2a05ccd87c14a8ea604", name: "meta", ref: (el) => this.metaSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "6939cb19881b17799205a54eda9d34e86563f994", class: "search-result-row__excerpt", part: "excerpt", hidden: !this.hasExcerpt }, h("slot", { key: "2f41b9ec22a0260e4196553a655cc501384f2331", name: "excerpt", ref: (el) => this.excerptSlot = el, onSlotchange: this.syncSlots }))), h("span", { key: "162de66c31688de9114233984448eb5b30d48dc3", class: "search-result-row__trailing", part: "trailing", hidden: !this.hasTrailing }, h("slot", { key: "dfa3d5bbbe453a8fd1c3ddf9508bf33edf145dc6", name: "trailing", ref: (el) => this.trailingSlot = el, onSlotchange: this.syncSlots }))));
3737
+ return h(Host, { key: "923d7ac982594e39c06421b60f115acbb395f169" }, h("button", { key: "c97e45ba33297a8aeaa4a9726402c71e3ca73a7b", class: "search-result-row", type: "button", disabled: this.disabled, part: "button" }, h("span", { key: "dea0781519760f5dc2b46902ef86f9e72ccfa6df", class: "search-result-row__leading", part: "leading", hidden: !this.hasLeading }, h("slot", { key: "e10026c17caaa3a21e9dd34c7faabfe9b97f2f5b", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "e8bb06b45aff7ddbaa9a51cc7c53d797e68e8746", class: "search-result-row__content", part: "content" }, h("span", { key: "6e1c2d49029e1c1fdc2519f513ddedbe304ddb3e", class: "search-result-row__title", part: "title" }, h("slot", { key: "9653efc0b61c49d36034c4c75a3e9b3d7a6f837b", name: "title" })), h("span", { key: "b10885a7649c75f9e6903354f5804f459aa883b7", class: "search-result-row__meta", part: "meta", hidden: !this.hasMeta }, h("slot", { key: "b3101183b0dfa0cc1ba8e62c1f8fc39ad865e1ae", name: "meta", ref: (el) => this.metaSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "430520c0e349344fc4c549cd36a0137d39fc8d24", class: "search-result-row__excerpt", part: "excerpt", hidden: !this.hasExcerpt }, h("slot", { key: "4a90cefa9b1d2b2378d1a8aa166aa8fdebfbca42", name: "excerpt", ref: (el) => this.excerptSlot = el, onSlotchange: this.syncSlots }))), h("span", { key: "769ed2f62ead7ce32b13cdad93a7bbb981b13b3c", class: "search-result-row__trailing", part: "trailing", hidden: !this.hasTrailing }, h("slot", { key: "86490f5fef29c6fa4d8ddf838de5f9aee8535db0", name: "trailing", ref: (el) => this.trailingSlot = el, onSlotchange: this.syncSlots }))));
3515
3738
  }
3516
3739
  };
3517
3740
  UISearchResultRow.style = uiSearchResultRowCss();
@@ -3555,7 +3778,7 @@ var init_ui_search_shell_entry = __esm({
3555
3778
  this.hasFooter = slotHasContent2(this.footerSlot);
3556
3779
  };
3557
3780
  render() {
3558
- return h("div", { key: "508a5900288b0b7e0651d3a56e1f5a9094061952", class: "search-shell", part: "base" }, h("slot", { key: "54677a395d62aed4538bb36255046a1d679da312", name: "backdrop" }), h("div", { key: "f738673e5a95509803d2c4682adb4aa48f7b798f", class: "search-shell__panel", part: "panel" }, h("div", { key: "8e4a14fcc5e7cc0ff3c2c94ad72cb6b4305d4fea", class: "search-shell__search", part: "search" }, h("slot", { key: "28f3d8439964423fe9beeac91490a70a30a36b6e", name: "search" })), h("div", { key: "8bcd00a532eea21a41a7771636bc038c27c55a31", class: "search-shell__status", part: "status", hidden: !this.hasStatus }, h("slot", { key: "4a4c9082f2645e80fdfa2a8b71a1747573d02f73", name: "status", ref: (el) => this.statusSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "58439a3d479f042f827abce2a99dc1ae75db5ca1", class: "search-shell__body", part: "body" }, h("slot", { key: "5f6c4202b0abeb3708bed415a576e877c94f1eb1", name: "body" })), h("div", { key: "7a2887f7220619db2ccb5a907623c3e760d1e073", class: "search-shell__footer", part: "footer", hidden: !this.hasFooter }, h("slot", { key: "26c8f839b8add2b52c6940e67a6a7c94a8ffcf31", name: "footer", ref: (el) => this.footerSlot = el, onSlotchange: this.syncSlots }))));
3781
+ return h("div", { key: "049a6451f10f1906881efc8fc2cdeba656e68733", class: "search-shell", part: "base" }, h("slot", { key: "e807b035ccb9ec9425651b59a0d137ebc54329aa", name: "backdrop" }), h("div", { key: "5d785a0d4dab1fed7f6750b82485b9e50edd62d9", class: "search-shell__panel", part: "panel" }, h("div", { key: "b41c40485d61d9436504483759a5f42d96e5aad2", class: "search-shell__search", part: "search" }, h("slot", { key: "b19058bca701cc26d286c8694c7cdc6306e100c4", name: "search" })), h("div", { key: "260164b95427e03329f28247e8dbda867506e672", class: "search-shell__status", part: "status", hidden: !this.hasStatus }, h("slot", { key: "1d7c1e8c96e588b7c9c906cfaad91ba1cf77bf7c", name: "status", ref: (el) => this.statusSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "49963c82e54aee2b5c4c4809ce2b152f770b4468", class: "search-shell__body", part: "body" }, h("slot", { key: "ae32ec8c9ec89310ad1805f1c65bc8208ee12f29", name: "body" })), h("div", { key: "f5fc9f356035e277e4c9bb0e188d7b4be3642c27", class: "search-shell__footer", part: "footer", hidden: !this.hasFooter }, h("slot", { key: "dbf1022e49a054eee1c5e70b675c71d1cf3488bf", name: "footer", ref: (el) => this.footerSlot = el, onSlotchange: this.syncSlots }))));
3559
3782
  }
3560
3783
  };
3561
3784
  UISearchShell.style = uiSearchShellCss();
@@ -3648,7 +3871,7 @@ var init_ui_select_entry = __esm({
3648
3871
  });
3649
3872
  };
3650
3873
  render() {
3651
- return h(Host, { key: "5b77bfa817964325038cf338a1c0791abf8d2bfe", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "9a9c8017e5e02d14945d6b7c84d68edf7b2ccaf8", ref: (el) => this.slotRef = el }));
3874
+ return h(Host, { key: "2b3348e1694cfd113163af3adf939fd64cb40654", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "40e627125a906cf4bf294eb085c172a5370f3a54", ref: (el) => this.slotRef = el }));
3652
3875
  }
3653
3876
  static get watchers() {
3654
3877
  return {
@@ -3734,7 +3957,7 @@ var init_ui_switch_entry = __esm({
3734
3957
  this.toggle("pointer");
3735
3958
  };
3736
3959
  render() {
3737
- return h(Host, { key: "e5ec7f2f91e860dd679098f30b40cbe0e52ccb1f", role: "switch", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.onKeydown, onClick: this.onClick }, h("input", { key: "c21462377a81d7242633e7d358f56fd7a276f584", type: "checkbox", checked: this.internalChecked, disabled: this.disabled, required: this.required, value: this.value, "aria-hidden": "true", tabIndex: -1, onChange: (e) => {
3960
+ return h(Host, { key: "eaee279bbc787c844f2ad265da03fca608d9c429", role: "switch", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.onKeydown, onClick: this.onClick }, h("input", { key: "2ebfa684bf08735a4e89a06001f6758885c40ffb", type: "checkbox", checked: this.internalChecked, disabled: this.disabled, required: this.required, value: this.value, "aria-hidden": "true", tabIndex: -1, onChange: (e) => {
3738
3961
  const input = e.target;
3739
3962
  const checked = input.checked;
3740
3963
  if (!isControlled(this.checked))
@@ -3746,7 +3969,7 @@ var init_ui_switch_entry = __esm({
3746
3969
  });
3747
3970
  if (isControlled(this.checked))
3748
3971
  input.checked = this.internalChecked;
3749
- } }), h("slot", { key: "e3f4f032bc41784ed41591d4fd175b89a4162c49" }));
3972
+ } }), h("slot", { key: "ff9975d4ccbffbed2b97060eabf347653d5f5110" }));
3750
3973
  }
3751
3974
  static get watchers() {
3752
3975
  return {
@@ -3863,7 +4086,7 @@ var init_ui_tabs_entry = __esm({
3863
4086
  }
3864
4087
  };
3865
4088
  render() {
3866
- return h(Host, { key: "908dc4228940bbf33530a2b9f5fb36421c51d1a1", orientation: this.orientation, "data-orientation": this.orientation }, h("slot", { key: "ebfe8bc58d09fdce2815b26f29e2eba4e5f3c879" }));
4089
+ return h(Host, { key: "61044ac3f2fcb0f766d931416f42ff17ec94c00d", orientation: this.orientation, "data-orientation": this.orientation }, h("slot", { key: "3260c95bdd24581045b1c4e4d1b8f4d08daf02b4" }));
3867
4090
  }
3868
4091
  static get watchers() {
3869
4092
  return {
@@ -3968,7 +4191,7 @@ var init_ui_textarea_entry = __esm({
3968
4191
  });
3969
4192
  };
3970
4193
  render() {
3971
- return h(Host, { key: "4774b8d20cd4426b1c6205375fd9e4275bc24f08", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "9b5489df35c29bf453d010f85bcb05dcc01fcce9", ref: (el) => this.slotRef = el }));
4194
+ return h(Host, { key: "a554edb1a0ef40a2c116e3064e52af7474e065e4", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "a4eb8034ec11f8b3b06ace7287410fd839004593", ref: (el) => this.slotRef = el }));
3972
4195
  }
3973
4196
  static get watchers() {
3974
4197
  return {
@@ -4010,7 +4233,7 @@ var init_ui_toast_region_entry = __esm({
4010
4233
  "dist/esm/ui-toast-region.entry.js"() {
4011
4234
  init_index_8BGiMGQ0();
4012
4235
  init_events_JwSoedEO();
4013
- init_positioning_Drmwg_C1();
4236
+ init_positioning_Ig1jYhE1();
4014
4237
  uiToastRegionCss = () => `:host{position:fixed;top:calc(var(--ui-space-4) + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:9999;display:grid;gap:var(--ui-space-2);inline-size:min(24rem, calc(100vw - (var(--ui-space-4) * 2)));max-inline-size:100%;pointer-events:none}:host([popover]){right:auto;bottom:auto;margin:0}:host>*{pointer-events:auto}::slotted([data-ui-toast]){display:grid;grid-template-columns:1fr auto;gap:var(--ui-space-2);align-items:start;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-3);padding:var(--ui-space-3) var(--ui-space-4);background:var(--ui-surface-elevated);color:var(--ui-text-primary);box-shadow:var(--ui-shadow-lg);animation:ui-toast-enter 0.25s var(--ui-motion-ease) forwards}@keyframes ui-toast-enter{from{opacity:0;transform:translateY(-0.5rem)}to{opacity:1;transform:translateY(0)}}::slotted([data-ui-toast][aria-hidden='true']){display:none}::slotted([data-ui-toast-dismiss]){border:0;background:transparent;color:var(--ui-text-secondary);cursor:pointer;font:inherit}`;
4015
4238
  UIToastRegion = class {
4016
4239
  constructor(hostRef) {
@@ -4083,7 +4306,7 @@ var init_ui_toast_region_entry = __esm({
4083
4306
  });
4084
4307
  };
4085
4308
  render() {
4086
- return h(Host, { key: "e3a71de7854b5937cc3f74858fc69f202fd93c71", role: "region", "aria-label": "Notifications", "aria-live": "polite", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "cdf6ea0118199d149ac08820c69ec8b54654be91" }));
4309
+ return h(Host, { key: "9f9c2e14150c631c0f7cb427c693dcd52c20897d", role: "region", "aria-label": "Notifications", "aria-live": "polite", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "9e1d9ebb6b587afab2c4302241cecb03a321cee1" }));
4087
4310
  }
4088
4311
  static get watchers() {
4089
4312
  return {
@@ -4100,253 +4323,6 @@ var init_ui_toast_region_entry = __esm({
4100
4323
  }
4101
4324
  });
4102
4325
 
4103
- // dist/esm/ui-tooltip.entry.js
4104
- var ui_tooltip_entry_exports = {};
4105
- __export(ui_tooltip_entry_exports, {
4106
- ui_tooltip: () => UITooltip
4107
- });
4108
- var uiTooltipCss, UITooltip;
4109
- var init_ui_tooltip_entry = __esm({
4110
- "dist/esm/ui-tooltip.entry.js"() {
4111
- init_index_8BGiMGQ0();
4112
- init_manager_C_0syqXZ();
4113
- init_events_JwSoedEO();
4114
- init_controlled_state_BnGhGgTH();
4115
- init_positioning_Drmwg_C1();
4116
- uiTooltipCss = () => `:host{position:fixed;inset:auto;margin:0;display:inline-block;box-sizing:border-box;padding:0;border:0;border-radius:0;background:transparent;opacity:0;transform:translateY(4px);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}.tooltip__surface{box-sizing:border-box;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-2);background:var(--ui-surface-elevated);color:var(--ui-text-primary);padding:var(--ui-space-2) var(--ui-space-3);font-size:var(--ui-font-size-sm);box-shadow:var(--ui-shadow-md)}:host(:popover-open){opacity:1;transform:translateY(0)}@starting-style{:host(:popover-open){opacity:0;transform:translateY(4px)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host{transition:none}}`;
4117
- UITooltip = class {
4118
- constructor(hostRef) {
4119
- registerInstance(this, hostRef);
4120
- this.opened = createEvent(this, "open");
4121
- this.closed = createEvent(this, "close");
4122
- }
4123
- get host() {
4124
- return getElement(this);
4125
- }
4126
- for = "";
4127
- /** Controlled open state. Omit it to use defaultOpen and local interaction state. */
4128
- open;
4129
- defaultOpen = false;
4130
- placement = "top-start";
4131
- /** Pointer hover intent delay in milliseconds. Keyboard focus is immediate. */
4132
- showDelay = 500;
4133
- /** Pointer leave grace period in milliseconds. */
4134
- hideDelay = 100;
4135
- /** Click or tap pins the description; activate again to dismiss. */
4136
- toggleOnClick = false;
4137
- pinned = false;
4138
- focused = false;
4139
- opened;
4140
- closed;
4141
- internalOpen = false;
4142
- overlayId = `ui-tooltip-${Math.random().toString(36).slice(2, 11)}`;
4143
- trigger = null;
4144
- surface = null;
4145
- showTimer = null;
4146
- hideTimer = null;
4147
- syncFromProp() {
4148
- this.clearTimers();
4149
- if (isControlled(this.open))
4150
- this.internalOpen = this.open;
4151
- }
4152
- resetSurface() {
4153
- this.syncTrigger();
4154
- this.setupSurface();
4155
- this.syncOverlay();
4156
- }
4157
- syncOverlay() {
4158
- if (this.internalOpen) {
4159
- this.surface?.show();
4160
- openOverlay({
4161
- id: this.overlayId,
4162
- modal: false,
4163
- element: this.host,
4164
- relatedElements: this.trigger ? [this.trigger] : void 0,
4165
- dismissible: true,
4166
- requestClose: (reason, trigger) => this.handleRequestClose(reason, trigger)
4167
- });
4168
- } else {
4169
- this.surface?.hide();
4170
- closeOverlay(this.overlayId);
4171
- }
4172
- }
4173
- componentDidLoad() {
4174
- if (!this.host.id)
4175
- this.host.id = this.overlayId;
4176
- this.internalOpen = controlledOrDefault(this.open, this.defaultOpen);
4177
- this.syncTrigger();
4178
- this.setupSurface();
4179
- this.host.addEventListener("pointerenter", this.onSurfaceEnter);
4180
- this.host.addEventListener("pointerleave", this.onTriggerLeave);
4181
- this.syncOverlay();
4182
- }
4183
- componentDidUpdate() {
4184
- this.syncTrigger();
4185
- }
4186
- disconnectedCallback() {
4187
- this.clearTimers();
4188
- this.detachTriggerListeners();
4189
- this.surface?.destroy();
4190
- this.surface = null;
4191
- this.host.removeEventListener("pointerenter", this.onSurfaceEnter);
4192
- this.host.removeEventListener("pointerleave", this.onTriggerLeave);
4193
- closeOverlay(this.overlayId);
4194
- }
4195
- syncTrigger() {
4196
- const next = this.for ? this.host.getRootNode().getElementById(this.for) : this.host.previousElementSibling;
4197
- if (next === this.trigger)
4198
- return;
4199
- this.detachTriggerListeners();
4200
- this.trigger = next;
4201
- this.attachTriggerListeners();
4202
- this.surface?.setAnchor(next);
4203
- }
4204
- setupSurface() {
4205
- this.surface?.destroy();
4206
- this.surface = createAnchoredSurface(this.host, {
4207
- anchor: this.trigger,
4208
- placement: this.placement
4209
- });
4210
- }
4211
- attachTriggerListeners() {
4212
- this.detachTriggerListeners();
4213
- if (!this.trigger)
4214
- return;
4215
- const ids = new Set((this.trigger.getAttribute("aria-describedby") || "").split(/\s+/).filter(Boolean));
4216
- ids.add(this.host.id);
4217
- this.trigger.setAttribute("aria-describedby", [...ids].join(" "));
4218
- this.trigger.addEventListener("click", this.onTriggerClick);
4219
- this.trigger.addEventListener("keydown", this.onTriggerKeydown);
4220
- this.trigger.addEventListener("pointerenter", this.onTriggerEnter);
4221
- this.trigger.addEventListener("pointerleave", this.onTriggerLeave);
4222
- this.trigger.addEventListener("focusin", this.onTriggerFocusIn);
4223
- this.trigger.addEventListener("focusout", this.onTriggerFocusOut);
4224
- }
4225
- detachTriggerListeners() {
4226
- if (!this.trigger)
4227
- return;
4228
- const ids = (this.trigger.getAttribute("aria-describedby") || "").split(/\s+/).filter((id) => id && id !== this.host.id);
4229
- if (ids.length)
4230
- this.trigger.setAttribute("aria-describedby", ids.join(" "));
4231
- else
4232
- this.trigger.removeAttribute("aria-describedby");
4233
- this.trigger.removeEventListener("click", this.onTriggerClick);
4234
- this.trigger.removeEventListener("keydown", this.onTriggerKeydown);
4235
- this.trigger.removeEventListener("pointerenter", this.onTriggerEnter);
4236
- this.trigger.removeEventListener("pointerleave", this.onTriggerLeave);
4237
- this.trigger.removeEventListener("focusin", this.onTriggerFocusIn);
4238
- this.trigger.removeEventListener("focusout", this.onTriggerFocusOut);
4239
- }
4240
- clearShowTimer() {
4241
- if (this.showTimer === null)
4242
- return;
4243
- clearTimeout(this.showTimer);
4244
- this.showTimer = null;
4245
- }
4246
- clearHideTimer() {
4247
- if (this.hideTimer === null)
4248
- return;
4249
- clearTimeout(this.hideTimer);
4250
- this.hideTimer = null;
4251
- }
4252
- clearTimers() {
4253
- this.clearShowTimer();
4254
- this.clearHideTimer();
4255
- }
4256
- setInteractionOpen(nextOpen, trigger) {
4257
- if (this.internalOpen === nextOpen)
4258
- return;
4259
- if (!isControlled(this.open))
4260
- this.internalOpen = nextOpen;
4261
- dispatchDetail(this.host, nextOpen ? "open" : "close", {
4262
- open: nextOpen,
4263
- reason: "action",
4264
- trigger
4265
- });
4266
- }
4267
- onSurfaceEnter = () => this.clearHideTimer();
4268
- onTriggerClick = (event) => {
4269
- if (!this.toggleOnClick)
4270
- return;
4271
- this.clearTimers();
4272
- this.pinned = !this.pinned;
4273
- this.setInteractionOpen(this.pinned, event.detail === 0 ? "keyboard" : "pointer");
4274
- };
4275
- onTriggerKeydown = (event) => {
4276
- if (event.key === "Escape")
4277
- this.clearTimers();
4278
- };
4279
- onTriggerEnter = (event) => {
4280
- if (event.pointerType === "touch")
4281
- return;
4282
- this.clearHideTimer();
4283
- if (this.internalOpen || this.showTimer !== null)
4284
- return;
4285
- this.showTimer = setTimeout(() => {
4286
- this.showTimer = null;
4287
- this.setInteractionOpen(true, "pointer");
4288
- }, Math.max(0, this.showDelay));
4289
- };
4290
- onTriggerLeave = () => {
4291
- this.clearShowTimer();
4292
- if (this.focused || this.pinned || !this.internalOpen || this.hideTimer !== null)
4293
- return;
4294
- this.hideTimer = setTimeout(() => {
4295
- this.hideTimer = null;
4296
- this.setInteractionOpen(false, "pointer");
4297
- }, Math.max(0, this.hideDelay));
4298
- };
4299
- onTriggerFocusIn = () => {
4300
- this.focused = true;
4301
- this.clearTimers();
4302
- this.setInteractionOpen(true, "keyboard");
4303
- };
4304
- onTriggerFocusOut = (e) => {
4305
- const related = e.relatedTarget;
4306
- if (related && this.host.contains(related))
4307
- return;
4308
- this.focused = false;
4309
- this.pinned = false;
4310
- this.clearTimers();
4311
- this.setInteractionOpen(false, "keyboard");
4312
- };
4313
- handleRequestClose(reason, trigger) {
4314
- if (reason === "escape" || reason === "light-dismiss" && this.toggleOnClick) {
4315
- this.pinned = false;
4316
- this.clearTimers();
4317
- if (!isControlled(this.open))
4318
- this.internalOpen = false;
4319
- dispatchDetail(this.host, "close", {
4320
- open: false,
4321
- reason,
4322
- trigger
4323
- });
4324
- }
4325
- }
4326
- render() {
4327
- return h(Host, { key: "2216e8f56c408e775140200881c9bfd99b45f381", role: "tooltip", hidden: !this.internalOpen, "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "a547e43fb5f6c3c2f62cf7f1fb9198dc0024a28d", class: "tooltip__surface" }, h("slot", { key: "dc8863505e8140565588c57ea200b7f548fb5df3" })));
4328
- }
4329
- static get watchers() {
4330
- return {
4331
- "open": [{
4332
- "syncFromProp": 0
4333
- }],
4334
- "for": [{
4335
- "resetSurface": 0
4336
- }],
4337
- "placement": [{
4338
- "resetSurface": 0
4339
- }],
4340
- "internalOpen": [{
4341
- "syncOverlay": 0
4342
- }]
4343
- };
4344
- }
4345
- };
4346
- UITooltip.style = uiTooltipCss();
4347
- }
4348
- });
4349
-
4350
4326
  // dist/esm/ui-top-bar.entry.js
4351
4327
  var ui_top_bar_entry_exports = {};
4352
4328
  __export(ui_top_bar_entry_exports, {
@@ -4390,7 +4366,7 @@ var init_ui_top_bar_entry = __esm({
4390
4366
  this.hasActions = slotHasContent3(this.actionsSlot);
4391
4367
  };
4392
4368
  render() {
4393
- return h(Host, { key: "1f0cf8994e3a18d42415fa85f14d172cfaddbf8e" }, h("header", { key: "e92afb06dad409b4a4e8fcc52bcad09b3e4531c4", class: "top-bar", part: "base" }, h("div", { key: "3d1458e841c7a600c98d6797b4ec97baee285de1", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "665e078f41410275cba3c55fec05159518a97a9e", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "7657a2c1e6c96660fa2ade470c8a4b0ecd30fcd9", class: "top-bar__title" }, h("slot", { key: "4d4f70c1a50aede4ef3a63176d714502b074a2cf" })), h("div", { key: "9409800ebaee24e4567de2126c0dd2544e741956", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "2e66be8358235ae5ef10c7f9a115b08377ece3a7", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "e7fa28dddde4f0638a153ad0c8fcc3de94c0ecdc", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "56c6620da69e2775a8a4d7306bb40b7a6713b100", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
4369
+ return h(Host, { key: "1ef941e211c9536c034a40c0f7a255068595de10" }, h("header", { key: "f1ea465d17753224d72971d26f70b546b93de8ba", class: "top-bar", part: "base" }, h("div", { key: "4eab975109467ad41e16527102b31e6e6d7421c8", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "3388d0e2346de4c08d85dd4c3a998e5f668a05f6", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "7b176d6e82da08eb495f3ca2c83505327c21f525", class: "top-bar__title" }, h("slot", { key: "8196e5489d2f43a72f794aad8ceaa44c358810e9" })), h("div", { key: "2b29c72174559865fb01b99cfab830f74640a8a5", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "9597fde0cf05821e641471343a38dd3190f1e18f", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "1f19003e43fb28ac4ff4debd27e1a0fa9f342275", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "f6a84824d2806dc16b5fa82cc25dc1247a6a8ad1", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
4394
4370
  }
4395
4371
  };
4396
4372
  UITopBar.style = uiTopBarCss();
@@ -4521,10 +4497,10 @@ var init_ui_tree_item_entry = __esm({
4521
4497
  const expanded = this.isExpanded();
4522
4498
  const disclosureLabel = `${expanded ? "Collapse" : "Expand"} ${this.label || "item"}`;
4523
4499
  const dragLabel = `Drag ${this.label || "item"} to reorder`;
4524
- return h(Host, { key: "4a42d3c93b49ad82ae87496defe22f4abde13819", role: "treeitem", "aria-label": this.label || void 0, "aria-level": String(level), "aria-expanded": this.container ? String(expanded) : void 0, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? "true" : void 0, "data-container": this.container ? "" : void 0, "data-selected": this.selected ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-drag-type": this.dragType || "item", "data-drop-scope": this.dropScope || void 0, "data-accepts": this.accepts || void 0, tabIndex: this.disabled || !this.tabStop ? -1 : 0, style: {
4500
+ return h(Host, { key: "0ce6384903be2181055c76808cd4664dcfa8de54", role: "treeitem", "aria-label": this.label || void 0, "aria-level": String(level), "aria-expanded": this.container ? String(expanded) : void 0, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? "true" : void 0, "data-container": this.container ? "" : void 0, "data-selected": this.selected ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-drag-type": this.dragType || "item", "data-drop-scope": this.dropScope || void 0, "data-accepts": this.accepts || void 0, tabIndex: this.disabled || !this.tabStop ? -1 : 0, style: {
4525
4501
  "--ui-tree-item-depth": String(level - 1),
4526
4502
  "margin-inline-start": level > 1 ? "var(--ui-tree-indent, 16px)" : "0px"
4527
- } }, h("div", { key: "9b62f172b2c0a80925404aee13895b3342d7dcb6", class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, h("span", { innerHTML: loomaIconMarkup("grip-vertical") })) : null, this.container ? h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(expanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, h("span", { class: { "disclosure-icon": true, "disclosure-icon--expanded": expanded }, innerHTML: loomaIconMarkup("chevron-down") })) : h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), h("span", { key: "fe2e301bf43f1fdb524a004960855f63d05ce138", class: "leading", part: "leading" }, h("slot", { key: "6f569883ead32dff5340b1c1da74dc8fdade49e6", name: "leading" })), h("span", { key: "942e3bb0b6b4021166916777ab18dc868c39fbdc", class: "label", part: "label" }, h("slot", { key: "42b9d9f42fd7aaad35ed7091c39953710ebf5a58" })), h("span", { key: "8483a822895220d2bb2aa2cb0a45cd296062cae9", class: "actions", part: "actions" }, h("slot", { key: "dae2b38eef43a061f40a7498d8f28e703e5468e3", name: "actions" })), h("span", { key: "0a9b7db9ab5e9a709f9f0a3a8d77bd1c044295c4", class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? h("div", { class: "children", part: "children", role: "group", hidden: !expanded }, h("slot", { name: "children" })) : null, h("span", { key: "641be80771d73d2c7193f2c762db1d0fe5c79e5d", class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" }));
4503
+ } }, h("div", { key: "7d6923da8fd8be7fffc7cf345ac4d1211217c21a", class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, h("span", { innerHTML: loomaIconMarkup("grip-vertical") })) : null, this.container ? h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(expanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, h("span", { class: { "disclosure-icon": true, "disclosure-icon--expanded": expanded }, innerHTML: loomaIconMarkup("chevron-down") })) : h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), h("span", { key: "ef8959fc858b90c7ea26c8ff740cfe02fb372686", class: "leading", part: "leading" }, h("slot", { key: "1e00da2acd23ae6430e38b26502d9f3951461c93", name: "leading" })), h("span", { key: "f37a63aa0c6e73f134442589314fae01e01cf782", class: "label", part: "label" }, h("slot", { key: "f527d8a33927d72502d5cbbbe0cb5739d7bdbaf2" })), h("span", { key: "de6492f81ac5747d913132c275abb9157d18deab", class: "actions", part: "actions" }, h("slot", { key: "f5316e3a5fb67130ef1401253dc5ef6b7072840e", name: "actions" })), h("span", { key: "89da3b2bab7a953368810319148a644e62bc9a47", class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? h("div", { class: "children", part: "children", role: "group", hidden: !expanded }, h("slot", { name: "children" })) : null, h("span", { key: "9a66f1ba72290a037ef02ccbd49243463ba34b67", class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" }));
4528
4504
  }
4529
4505
  static get watchers() {
4530
4506
  return {
@@ -5000,7 +4976,7 @@ var init_ui_tree_entry = __esm({
5000
4976
  }
5001
4977
  };
5002
4978
  render() {
5003
- return h(Host, { key: "81fe656b4a7cdf8683f53aeee94fb53838950383", role: "tree", "aria-label": this.label || "Tree" }, h("slot", { key: "941204b299eec2181228f536c017a17f026b2f3d" }));
4979
+ return h(Host, { key: "bae06665078a67c59db2d9e72c7dea6ddeeb9e56", role: "tree", "aria-label": this.label || "Tree" }, h("slot", { key: "232cb02f1a50bc5e18a92c0d8677e917870ec75e" }));
5004
4980
  }
5005
4981
  };
5006
4982
  UITree.style = uiTreeCss();
@@ -5020,6 +4996,7 @@ var init_ = __esm({
5020
4996
  "./ui-callout.entry.js": () => Promise.resolve().then(() => (init_ui_callout_entry(), ui_callout_entry_exports)),
5021
4997
  "./ui-checkbox.entry.js": () => Promise.resolve().then(() => (init_ui_checkbox_entry(), ui_checkbox_entry_exports)),
5022
4998
  "./ui-chip_2.entry.js": () => Promise.resolve().then(() => (init_ui_chip_2_entry(), ui_chip_2_entry_exports)),
4999
+ "./ui-combobox.entry.js": () => Promise.resolve().then(() => (init_ui_combobox_entry(), ui_combobox_entry_exports)),
5023
5000
  "./ui-context-menu.entry.js": () => Promise.resolve().then(() => (init_ui_context_menu_entry(), ui_context_menu_entry_exports)),
5024
5001
  "./ui-dialog.entry.js": () => Promise.resolve().then(() => (init_ui_dialog_entry(), ui_dialog_entry_exports)),
5025
5002
  "./ui-disclosure.entry.js": () => Promise.resolve().then(() => (init_ui_disclosure_entry(), ui_disclosure_entry_exports)),
@@ -5030,7 +5007,6 @@ var init_ = __esm({
5030
5007
  "./ui-input.entry.js": () => Promise.resolve().then(() => (init_ui_input_entry(), ui_input_entry_exports)),
5031
5008
  "./ui-menu-item.entry.js": () => Promise.resolve().then(() => (init_ui_menu_item_entry(), ui_menu_item_entry_exports)),
5032
5009
  "./ui-menu.entry.js": () => Promise.resolve().then(() => (init_ui_menu_entry(), ui_menu_entry_exports)),
5033
- "./ui-multi-combobox.entry.js": () => Promise.resolve().then(() => (init_ui_multi_combobox_entry(), ui_multi_combobox_entry_exports)),
5034
5010
  "./ui-popover.entry.js": () => Promise.resolve().then(() => (init_ui_popover_entry(), ui_popover_entry_exports)),
5035
5011
  "./ui-radio-group.entry.js": () => Promise.resolve().then(() => (init_ui_radio_group_entry(), ui_radio_group_entry_exports)),
5036
5012
  "./ui-radio.entry.js": () => Promise.resolve().then(() => (init_ui_radio_entry(), ui_radio_entry_exports)),
@@ -5041,7 +5017,6 @@ var init_ = __esm({
5041
5017
  "./ui-tabs.entry.js": () => Promise.resolve().then(() => (init_ui_tabs_entry(), ui_tabs_entry_exports)),
5042
5018
  "./ui-textarea.entry.js": () => Promise.resolve().then(() => (init_ui_textarea_entry(), ui_textarea_entry_exports)),
5043
5019
  "./ui-toast-region.entry.js": () => Promise.resolve().then(() => (init_ui_toast_region_entry(), ui_toast_region_entry_exports)),
5044
- "./ui-tooltip.entry.js": () => Promise.resolve().then(() => (init_ui_tooltip_entry(), ui_tooltip_entry_exports)),
5045
5020
  "./ui-top-bar.entry.js": () => Promise.resolve().then(() => (init_ui_top_bar_entry(), ui_top_bar_entry_exports)),
5046
5021
  "./ui-tree-item.entry.js": () => Promise.resolve().then(() => (init_ui_tree_item_entry(), ui_tree_item_entry_exports)),
5047
5022
  "./ui-tree.entry.js": () => Promise.resolve().then(() => (init_ui_tree_entry(), ui_tree_entry_exports))
@@ -6660,7 +6635,7 @@ var globalScripts = () => {
6660
6635
  var defineCustomElements = async (win2, options) => {
6661
6636
  if (typeof window === "undefined") return void 0;
6662
6637
  await globalScripts();
6663
- return bootstrapLazy([["ui-multi-combobox", [[769, "ui-multi-combobox", { "label": [1], "placeholder": [1], "items": [16], "config": [16], "query": [1], "defaultQuery": [1, "default-query"], "tokenSeparators": [16], "disabled": [4], "readOnly": [4, "readonly"], "required": [4], "name": [1], "raw": [32], "rows": [32], "focusInput": [64] }, null, { "query": [{ "syncQuery": 0 }] }]]], ["ui-context-menu", [[769, "ui-context-menu", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "internalOpen": [32], "focusTrigger": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "syncTarget": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-affordance-scope", [[769, "ui-affordance-scope", { "nearRadius": [514, "near-radius"] }, null, { "nearRadius": [{ "connectCoordinator": 0 }] }]]], ["ui-avatar", [[513, "ui-avatar", { "src": [1], "alt": [1], "name": [1], "fallback": [1], "hasImage": [32] }, null, { "src": [{ "watchSrc": 0 }] }]]], ["ui-avatar-group", [[769, "ui-avatar-group", { "max": [2], "label": [1], "overflowCount": [32] }, null, { "max": [{ "syncOverflow": 0 }] }]]], ["ui-badge", [[769, "ui-badge", { "variant": [1], "tone": [1] }]]], ["ui-button", [[769, "ui-button", { "variant": [1], "size": [1], "disabled": [4] }, null, { "variant": [{ "syncToButton": 0 }], "size": [{ "syncToButton": 0 }], "disabled": [{ "syncToButton": 0 }] }]]], ["ui-callout", [[769, "ui-callout", { "tone": [1] }]]], ["ui-checkbox", [[769, "ui-checkbox", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "indeterminate": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }], "internalChecked": [{ "syncToInput": 0 }], "indeterminate": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }] }]]], ["ui-dialog", [[769, "ui-dialog", { "open": [4], "defaultOpen": [4, "default-open"], "modal": [4], "dismissible": [4], "label": [1], "internalOpen": [32], "accessibleLabel": [32] }, null, { "open": [{ "syncFromProp": 0 }], "label": [{ "syncLabelFromProp": 0 }], "internalOpen": [{ "syncOpen": 0 }] }]]], ["ui-disclosure", [[769, "ui-disclosure", { "open": [4], "defaultOpen": [4, "default-open"], "disabled": [4], "internalOpen": [32], "contentId": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncState": 0 }] }]]], ["ui-editable", [[769, "ui-editable", { "edit": [4], "defaultEdit": [4, "default-edit"], "disabled": [4], "internalEdit": [32] }, null, { "edit": [{ "syncFromProp": 0 }] }]]], ["ui-floating-action-button", [[769, "ui-floating-action-button", { "disabled": [516], "mobileOnly": [516, "mobile-only"], "label": [1] }]]], ["ui-form-field", [[769, "ui-form-field", { "invalid": [4], "disabled": [4], "required": [4] }]]], ["ui-icon-button", [[769, "ui-icon-button", { "disabled": [516], "label": [1], "size": [513], "variant": [513], "anticipatory": [516] }]]], ["ui-input", [[769, "ui-input", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToInput": 0 }], "defaultValue": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "invalid": [{ "syncToInput": 0 }], "readOnly": [{ "syncToInput": 0 }] }]]], ["ui-menu-item", [[769, "ui-menu-item", { "disabled": [516], "value": [1] }]]], ["ui-popover", [[769, "ui-popover", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "placement": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "onOpenChange": 0 }], "for": [{ "resetSurface": 0 }], "placement": [{ "resetSurface": 0 }] }]]], ["ui-radio", [[769, "ui-radio", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "name": [1], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }], "disabled": [{ "syncToInput": 0 }], "name": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }], "value": [{ "syncToInput": 0 }] }]]], ["ui-radio-group", [[769, "ui-radio-group", { "value": [1], "name": [1], "orientation": [1], "disabled": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToRadios": 0 }], "name": [{ "syncToRadios": 0 }], "orientation": [{ "syncToRadios": 0 }], "disabled": [{ "syncToRadios": 0 }] }]]], ["ui-search-result-row", [[769, "ui-search-result-row", { "disabled": [516], "selected": [516], "hasLeading": [32], "hasMeta": [32], "hasExcerpt": [32], "hasTrailing": [32] }]]], ["ui-search-shell", [[769, "ui-search-shell", { "hasStatus": [32], "hasFooter": [32] }]]], ["ui-select", [[769, "ui-select", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToSelect": 0 }], "defaultValue": [{ "syncToSelect": 0 }], "disabled": [{ "syncToSelect": 0 }], "invalid": [{ "syncToSelect": 0 }], "required": [{ "syncToSelect": 0 }] }]]], ["ui-switch", [[769, "ui-switch", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }] }]]], ["ui-tabs", [[769, "ui-tabs", { "value": [1], "defaultValue": [1, "default-value"], "orientation": [1], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncState": 0 }], "orientation": [{ "syncState": 0 }] }]]], ["ui-textarea", [[769, "ui-textarea", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "rows": [2], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToTextarea": 0 }], "defaultValue": [{ "syncToTextarea": 0 }], "disabled": [{ "syncToTextarea": 0 }], "invalid": [{ "syncToTextarea": 0 }], "readOnly": [{ "syncToTextarea": 0 }], "rows": [{ "syncToTextarea": 0 }] }]]], ["ui-toast-region", [[769, "ui-toast-region", { "open": [4], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncSurface": 0 }] }]]], ["ui-top-bar", [[769, "ui-top-bar", { "hasLeading": [32], "hasSearch": [32], "hasActions": [32] }]]], ["ui-tree", [[769, "ui-tree", { "label": [1], "hoverExpandDelay": [2, "hover-expand-delay"], "maxDepth": [2, "max-depth"] }]]], ["ui-tree-item", [[769, "ui-tree-item", { "itemId": [1, "item-id"], "label": [1], "dropDepth": [2, "drop-depth"], "subtreeDepth": [2, "subtree-depth"], "container": [4], "sortable": [4], "dragType": [1, "drag-type"], "dropScope": [1, "drop-scope"], "accepts": [1], "expanded": [4], "defaultExpanded": [4, "default-expanded"], "selected": [4], "disabled": [4], "internalExpanded": [32], "structuralLevel": [32], "tabStop": [32] }, null, { "expanded": [{ "syncExpandedFromProp": 0 }] }]]], ["ui-menu", [[769, "ui-menu", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "placement": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "resetSurface": 0 }], "placement": [{ "resetSurface": 0 }], "internalOpen": [{ "syncSurface": 0 }] }]]], ["ui-tooltip", [[769, "ui-tooltip", { "for": [1], "open": [4], "defaultOpen": [4, "default-open"], "placement": [1], "showDelay": [2, "show-delay"], "hideDelay": [2, "hide-delay"], "toggleOnClick": [4, "toggle-on-click"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "resetSurface": 0 }], "placement": [{ "resetSurface": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-chip_2", [[769, "ui-combobox", { "label": [1], "placeholder": [1], "name": [1], "value": [1], "defaultValue": [1, "default-value"], "query": [1], "defaultQuery": [1, "default-query"], "config": [16], "disabled": [4], "readOnly": [4, "readonly"], "required": [4], "size": [1], "labelVisibility": [1, "label-visibility"], "disclosure": [4], "clearable": [4], "help": [1], "raw": [32], "display": [32], "selected": [32], "expanded": [32], "rows": [32], "active": [32], "loading": [32], "helpOpen": [32], "lookupError": [32], "validation": [32], "validate": [64], "focusInput": [64] }, null, { "value": [{ "syncValue": 0 }], "query": [{ "syncQuery": 0 }], "disabled": [{ "syncDisabled": 0 }], "readOnly": [{ "syncDisabled": 0 }], "config": [{ "syncConfig": 0 }] }], [769, "ui-chip", { "appearance": [1], "size": [1] }]]]], options);
6638
+ return bootstrapLazy([["ui-combobox", [[769, "ui-combobox", { "label": [1], "placeholder": [1], "name": [1], "value": [1], "defaultValue": [1, "default-value"], "multiple": [516], "tokenSeparators": [16], "query": [1], "defaultQuery": [1, "default-query"], "config": [16], "disabled": [4], "readOnly": [4, "readonly"], "required": [4], "size": [1], "labelVisibility": [1, "label-visibility"], "disclosure": [4], "clearable": [4], "help": [1], "raw": [32], "display": [32], "selected": [32], "expanded": [32], "rows": [32], "active": [32], "loading": [32], "helpOpen": [32], "lookupError": [32], "validation": [32], "validate": [64], "focusInput": [64] }, null, { "value": [{ "syncValue": 0 }], "query": [{ "syncQuery": 0 }], "disabled": [{ "syncDisabled": 0 }], "readOnly": [{ "syncDisabled": 0 }], "config": [{ "syncConfig": 0 }] }]]], ["ui-context-menu", [[769, "ui-context-menu", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "internalOpen": [32], "focusTrigger": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "syncTarget": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-affordance-scope", [[769, "ui-affordance-scope", { "nearRadius": [514, "near-radius"] }, null, { "nearRadius": [{ "connectCoordinator": 0 }] }]]], ["ui-avatar", [[513, "ui-avatar", { "src": [1], "alt": [1], "name": [1], "fallback": [1], "hasImage": [32] }, null, { "src": [{ "watchSrc": 0 }] }]]], ["ui-avatar-group", [[769, "ui-avatar-group", { "max": [2], "label": [1], "overflowCount": [32] }, null, { "max": [{ "syncOverflow": 0 }] }]]], ["ui-badge", [[769, "ui-badge", { "variant": [1], "tone": [1] }]]], ["ui-button", [[769, "ui-button", { "variant": [1], "size": [1], "disabled": [4] }, null, { "variant": [{ "syncToButton": 0 }], "size": [{ "syncToButton": 0 }], "disabled": [{ "syncToButton": 0 }] }]]], ["ui-callout", [[769, "ui-callout", { "tone": [1] }]]], ["ui-checkbox", [[769, "ui-checkbox", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "indeterminate": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }], "internalChecked": [{ "syncToInput": 0 }], "indeterminate": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }] }]]], ["ui-dialog", [[769, "ui-dialog", { "open": [4], "defaultOpen": [4, "default-open"], "modal": [4], "dismissible": [4], "label": [1], "internalOpen": [32], "accessibleLabel": [32] }, null, { "open": [{ "syncFromProp": 0 }], "label": [{ "syncLabelFromProp": 0 }], "internalOpen": [{ "syncOpen": 0 }] }]]], ["ui-disclosure", [[769, "ui-disclosure", { "open": [4], "defaultOpen": [4, "default-open"], "disabled": [4], "internalOpen": [32], "contentId": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncState": 0 }] }]]], ["ui-editable", [[769, "ui-editable", { "edit": [4], "defaultEdit": [4, "default-edit"], "disabled": [4], "internalEdit": [32] }, null, { "edit": [{ "syncFromProp": 0 }] }]]], ["ui-floating-action-button", [[769, "ui-floating-action-button", { "disabled": [516], "mobileOnly": [516, "mobile-only"], "label": [1] }]]], ["ui-form-field", [[769, "ui-form-field", { "invalid": [4], "disabled": [4], "required": [4] }]]], ["ui-icon-button", [[769, "ui-icon-button", { "disabled": [516], "label": [1], "size": [513], "variant": [513], "anticipatory": [516] }]]], ["ui-input", [[769, "ui-input", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToInput": 0 }], "defaultValue": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "invalid": [{ "syncToInput": 0 }], "readOnly": [{ "syncToInput": 0 }] }]]], ["ui-menu-item", [[769, "ui-menu-item", { "disabled": [516], "value": [1] }]]], ["ui-popover", [[769, "ui-popover", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "placement": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "onOpenChange": 0 }], "for": [{ "resetSurface": 0 }], "placement": [{ "resetSurface": 0 }] }]]], ["ui-radio", [[769, "ui-radio", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "name": [1], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }], "disabled": [{ "syncToInput": 0 }], "name": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }], "value": [{ "syncToInput": 0 }] }]]], ["ui-radio-group", [[769, "ui-radio-group", { "value": [1], "name": [1], "orientation": [1], "disabled": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToRadios": 0 }], "name": [{ "syncToRadios": 0 }], "orientation": [{ "syncToRadios": 0 }], "disabled": [{ "syncToRadios": 0 }] }]]], ["ui-search-result-row", [[769, "ui-search-result-row", { "disabled": [516], "selected": [516], "hasLeading": [32], "hasMeta": [32], "hasExcerpt": [32], "hasTrailing": [32] }]]], ["ui-search-shell", [[769, "ui-search-shell", { "hasStatus": [32], "hasFooter": [32] }]]], ["ui-select", [[769, "ui-select", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToSelect": 0 }], "defaultValue": [{ "syncToSelect": 0 }], "disabled": [{ "syncToSelect": 0 }], "invalid": [{ "syncToSelect": 0 }], "required": [{ "syncToSelect": 0 }] }]]], ["ui-switch", [[769, "ui-switch", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }] }]]], ["ui-tabs", [[769, "ui-tabs", { "value": [1], "defaultValue": [1, "default-value"], "orientation": [1], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncState": 0 }], "orientation": [{ "syncState": 0 }] }]]], ["ui-textarea", [[769, "ui-textarea", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "rows": [2], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToTextarea": 0 }], "defaultValue": [{ "syncToTextarea": 0 }], "disabled": [{ "syncToTextarea": 0 }], "invalid": [{ "syncToTextarea": 0 }], "readOnly": [{ "syncToTextarea": 0 }], "rows": [{ "syncToTextarea": 0 }] }]]], ["ui-toast-region", [[769, "ui-toast-region", { "open": [4], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncSurface": 0 }] }]]], ["ui-top-bar", [[769, "ui-top-bar", { "hasLeading": [32], "hasSearch": [32], "hasActions": [32] }]]], ["ui-tree", [[769, "ui-tree", { "label": [1], "hoverExpandDelay": [2, "hover-expand-delay"], "maxDepth": [2, "max-depth"] }]]], ["ui-tree-item", [[769, "ui-tree-item", { "itemId": [1, "item-id"], "label": [1], "dropDepth": [2, "drop-depth"], "subtreeDepth": [2, "subtree-depth"], "container": [4], "sortable": [4], "dragType": [1, "drag-type"], "dropScope": [1, "drop-scope"], "accepts": [1], "expanded": [4], "defaultExpanded": [4, "default-expanded"], "selected": [4], "disabled": [4], "internalExpanded": [32], "structuralLevel": [32], "tabStop": [32] }, null, { "expanded": [{ "syncExpandedFromProp": 0 }] }]]], ["ui-menu", [[769, "ui-menu", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "placement": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "resetSurface": 0 }], "placement": [{ "resetSurface": 0 }], "internalOpen": [{ "syncSurface": 0 }] }]]], ["ui-chip_2", [[769, "ui-chip", { "appearance": [1], "size": [1] }], [769, "ui-tooltip", { "for": [1], "open": [4], "defaultOpen": [4, "default-open"], "placement": [1], "showDelay": [2, "show-delay"], "hideDelay": [2, "hide-delay"], "toggleOnClick": [4, "toggle-on-click"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "resetSurface": 0 }], "placement": [{ "resetSurface": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]]], options);
6664
6639
  };
6665
6640
 
6666
6641
  // loader/index.js
@@ -6891,6 +6866,17 @@ function createAnchoredSurface2(surface, options = {}) {
6891
6866
  let open = false;
6892
6867
  let frame = null;
6893
6868
  let listenerAbort = null;
6869
+ let sizeObserver = null;
6870
+ const ResizeObserverImpl = owner.ResizeObserver;
6871
+ const observeSurfaceSize = () => {
6872
+ if (sizeObserver || typeof ResizeObserverImpl !== "function") return;
6873
+ sizeObserver = new ResizeObserverImpl(() => schedule());
6874
+ sizeObserver.observe(surface);
6875
+ };
6876
+ const stopObservingSurfaceSize = () => {
6877
+ sizeObserver?.disconnect();
6878
+ sizeObserver = null;
6879
+ };
6894
6880
  surface.setAttribute("popover", "manual");
6895
6881
  surface.dataset.uiPositioning = nativeAnchor ? "anchor" : "fallback";
6896
6882
  surface.style.position = "fixed";
@@ -6979,6 +6965,8 @@ function createAnchoredSurface2(surface, options = {}) {
6979
6965
  syncFallbackListeners();
6980
6966
  showInTopLayer2(surface);
6981
6967
  position();
6968
+ schedule();
6969
+ observeSurfaceSize();
6982
6970
  },
6983
6971
  showAtPoint(nextPoint) {
6984
6972
  point = nextPoint;
@@ -6986,11 +6974,14 @@ function createAnchoredSurface2(surface, options = {}) {
6986
6974
  syncFallbackListeners();
6987
6975
  showInTopLayer2(surface);
6988
6976
  position();
6977
+ schedule();
6978
+ observeSurfaceSize();
6989
6979
  },
6990
6980
  hide() {
6991
6981
  open = false;
6992
6982
  point = null;
6993
6983
  syncFallbackListeners();
6984
+ stopObservingSurfaceSize();
6994
6985
  if (frame !== null) owner.cancelAnimationFrame(frame);
6995
6986
  frame = null;
6996
6987
  hideFromTopLayer2(surface);
@@ -7000,6 +6991,7 @@ function createAnchoredSurface2(surface, options = {}) {
7000
6991
  open = false;
7001
6992
  listenerAbort?.abort();
7002
6993
  listenerAbort = null;
6994
+ stopObservingSurfaceSize();
7003
6995
  if (frame !== null) owner.cancelAnimationFrame(frame);
7004
6996
  frame = null;
7005
6997
  hideFromTopLayer2(surface);