@mortenbrudvik/waveui 0.15.0 → 0.16.0

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 (155) hide show
  1. package/README.md +274 -24
  2. package/dist/components/data-display/List.cjs +1 -1
  3. package/dist/components/data-display/List.cjs.map +1 -1
  4. package/dist/components/data-display/List.mjs +405 -219
  5. package/dist/components/data-display/List.mjs.map +1 -1
  6. package/dist/components/data-display/List.registry.cjs +1 -1
  7. package/dist/components/data-display/List.registry.cjs.map +1 -1
  8. package/dist/components/data-display/List.registry.mjs +12 -6
  9. package/dist/components/data-display/List.registry.mjs.map +1 -1
  10. package/dist/components/input/Combobox.cjs +1 -1
  11. package/dist/components/input/Combobox.cjs.map +1 -1
  12. package/dist/components/input/Combobox.mjs +163 -148
  13. package/dist/components/input/Combobox.mjs.map +1 -1
  14. package/dist/components/input/Dropdown.cjs +1 -1
  15. package/dist/components/input/Dropdown.cjs.map +1 -1
  16. package/dist/components/input/Dropdown.mjs +132 -117
  17. package/dist/components/input/Dropdown.mjs.map +1 -1
  18. package/dist/components/input/Listbox.cjs +1 -1
  19. package/dist/components/input/Listbox.cjs.map +1 -1
  20. package/dist/components/input/Listbox.mjs +90 -78
  21. package/dist/components/input/Listbox.mjs.map +1 -1
  22. package/dist/components/input/Option.cjs +1 -1
  23. package/dist/components/input/Option.cjs.map +1 -1
  24. package/dist/components/input/Option.data.cjs +2 -0
  25. package/dist/components/input/Option.data.cjs.map +1 -0
  26. package/dist/components/input/Option.data.mjs +114 -0
  27. package/dist/components/input/Option.data.mjs.map +1 -0
  28. package/dist/components/input/Option.mjs +21 -17
  29. package/dist/components/input/Option.mjs.map +1 -1
  30. package/dist/components/layout/FlatTree.cjs +2 -0
  31. package/dist/components/layout/FlatTree.cjs.map +1 -0
  32. package/dist/components/layout/FlatTree.context.cjs +2 -0
  33. package/dist/components/layout/FlatTree.context.cjs.map +1 -0
  34. package/dist/components/layout/FlatTree.context.mjs +20 -0
  35. package/dist/components/layout/FlatTree.context.mjs.map +1 -0
  36. package/dist/components/layout/FlatTree.item.cjs +2 -0
  37. package/dist/components/layout/FlatTree.item.cjs.map +1 -0
  38. package/dist/components/layout/FlatTree.item.mjs +90 -0
  39. package/dist/components/layout/FlatTree.item.mjs.map +1 -0
  40. package/dist/components/layout/FlatTree.mjs +276 -0
  41. package/dist/components/layout/FlatTree.mjs.map +1 -0
  42. package/dist/components/layout/Tree.core.cjs +1 -1
  43. package/dist/components/layout/Tree.core.cjs.map +1 -1
  44. package/dist/components/layout/Tree.core.mjs +166 -165
  45. package/dist/components/layout/Tree.core.mjs.map +1 -1
  46. package/dist/components/layout/Tree.selection.cjs +1 -1
  47. package/dist/components/layout/Tree.selection.cjs.map +1 -1
  48. package/dist/components/layout/Tree.selection.mjs +11 -57
  49. package/dist/components/layout/Tree.selection.mjs.map +1 -1
  50. package/dist/components/layout/useFlatTree.cjs +2 -0
  51. package/dist/components/layout/useFlatTree.cjs.map +1 -0
  52. package/dist/components/layout/useFlatTree.mjs +83 -0
  53. package/dist/components/layout/useFlatTree.mjs.map +1 -0
  54. package/dist/components/table/DataGrid.cjs +1 -1
  55. package/dist/components/table/DataGrid.cjs.map +1 -1
  56. package/dist/components/table/DataGrid.context.cjs +2 -0
  57. package/dist/components/table/DataGrid.context.cjs.map +1 -0
  58. package/dist/components/table/DataGrid.context.mjs +74 -0
  59. package/dist/components/table/DataGrid.context.mjs.map +1 -0
  60. package/dist/components/table/DataGrid.header.cjs +2 -0
  61. package/dist/components/table/DataGrid.header.cjs.map +1 -0
  62. package/dist/components/table/DataGrid.header.mjs +168 -0
  63. package/dist/components/table/DataGrid.header.mjs.map +1 -0
  64. package/dist/components/table/DataGrid.mjs +488 -591
  65. package/dist/components/table/DataGrid.mjs.map +1 -1
  66. package/dist/components/table/DataGrid.sizing.cjs +2 -0
  67. package/dist/components/table/DataGrid.sizing.cjs.map +1 -0
  68. package/dist/components/table/DataGrid.sizing.mjs +187 -0
  69. package/dist/components/table/DataGrid.sizing.mjs.map +1 -0
  70. package/dist/components/table/DataGrid.store.cjs +2 -0
  71. package/dist/components/table/DataGrid.store.cjs.map +1 -0
  72. package/dist/components/table/DataGrid.store.mjs +108 -0
  73. package/dist/components/table/DataGrid.store.mjs.map +1 -0
  74. package/dist/components/table/DataGrid.window.cjs +2 -0
  75. package/dist/components/table/DataGrid.window.cjs.map +1 -0
  76. package/dist/components/table/DataGrid.window.mjs +165 -0
  77. package/dist/components/table/DataGrid.window.mjs.map +1 -0
  78. package/dist/components/table/Table.cjs +1 -1
  79. package/dist/components/table/Table.cjs.map +1 -1
  80. package/dist/components/table/Table.mjs +74 -72
  81. package/dist/components/table/Table.mjs.map +1 -1
  82. package/dist/components/table/Table.resize.cjs +2 -0
  83. package/dist/components/table/Table.resize.cjs.map +1 -0
  84. package/dist/components/table/Table.resize.mjs +98 -0
  85. package/dist/components/table/Table.resize.mjs.map +1 -0
  86. package/dist/components/table/useGridNavigation.cjs +1 -1
  87. package/dist/components/table/useGridNavigation.cjs.map +1 -1
  88. package/dist/components/table/useGridNavigation.mjs +343 -140
  89. package/dist/components/table/useGridNavigation.mjs.map +1 -1
  90. package/dist/components/table/useTableColumnSizing.cjs +2 -0
  91. package/dist/components/table/useTableColumnSizing.cjs.map +1 -0
  92. package/dist/components/table/useTableColumnSizing.mjs +76 -0
  93. package/dist/components/table/useTableColumnSizing.mjs.map +1 -0
  94. package/dist/components/table/useTableFeatures.cjs +2 -0
  95. package/dist/components/table/useTableFeatures.cjs.map +1 -0
  96. package/dist/components/table/useTableFeatures.mjs +110 -0
  97. package/dist/components/table/useTableFeatures.mjs.map +1 -0
  98. package/dist/components/table/useTableSelection.cjs +2 -0
  99. package/dist/components/table/useTableSelection.cjs.map +1 -0
  100. package/dist/components/table/useTableSelection.mjs +39 -0
  101. package/dist/components/table/useTableSelection.mjs.map +1 -0
  102. package/dist/components/table/useTableSort.cjs +2 -0
  103. package/dist/components/table/useTableSort.cjs.map +1 -0
  104. package/dist/components/table/useTableSort.mjs +58 -0
  105. package/dist/components/table/useTableSort.mjs.map +1 -0
  106. package/dist/hooks/useActiveDescendant.cjs +1 -1
  107. package/dist/hooks/useActiveDescendant.cjs.map +1 -1
  108. package/dist/hooks/useActiveDescendant.mjs +33 -25
  109. package/dist/hooks/useActiveDescendant.mjs.map +1 -1
  110. package/dist/hooks/useListbox.cjs +1 -1
  111. package/dist/hooks/useListbox.cjs.map +1 -1
  112. package/dist/hooks/useListbox.mjs +140 -130
  113. package/dist/hooks/useListbox.mjs.map +1 -1
  114. package/dist/hooks/useRovingTabIndex.cjs +1 -1
  115. package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
  116. package/dist/hooks/useRovingTabIndex.mjs +1 -1
  117. package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
  118. package/dist/hooks/useSelection.cjs +2 -0
  119. package/dist/hooks/useSelection.cjs.map +1 -0
  120. package/dist/hooks/useSelection.mjs +57 -0
  121. package/dist/hooks/useSelection.mjs.map +1 -0
  122. package/dist/hooks/useVirtualWindow.cjs +2 -0
  123. package/dist/hooks/useVirtualWindow.cjs.map +1 -0
  124. package/dist/hooks/useVirtualWindow.mjs +102 -0
  125. package/dist/hooks/useVirtualWindow.mjs.map +1 -0
  126. package/dist/index.cjs +1 -1
  127. package/dist/index.d.cts +1542 -53
  128. package/dist/index.d.ts +1542 -53
  129. package/dist/index.mjs +147 -136
  130. package/dist/lib/classNames.cjs +1 -1
  131. package/dist/lib/classNames.cjs.map +1 -1
  132. package/dist/lib/classNames.mjs +68 -49
  133. package/dist/lib/classNames.mjs.map +1 -1
  134. package/dist/lib/columnSizing.cjs +2 -0
  135. package/dist/lib/columnSizing.cjs.map +1 -0
  136. package/dist/lib/columnSizing.mjs +27 -0
  137. package/dist/lib/columnSizing.mjs.map +1 -0
  138. package/dist/lib/flatTree.cjs +2 -0
  139. package/dist/lib/flatTree.cjs.map +1 -0
  140. package/dist/lib/flatTree.mjs +118 -0
  141. package/dist/lib/flatTree.mjs.map +1 -0
  142. package/dist/lib/selection.cjs +2 -0
  143. package/dist/lib/selection.cjs.map +1 -0
  144. package/dist/lib/selection.mjs +28 -0
  145. package/dist/lib/selection.mjs.map +1 -0
  146. package/dist/lib/treeCascade.cjs +2 -0
  147. package/dist/lib/treeCascade.cjs.map +1 -0
  148. package/dist/lib/treeCascade.mjs +52 -0
  149. package/dist/lib/treeCascade.mjs.map +1 -0
  150. package/dist/lib/virtual.cjs +2 -0
  151. package/dist/lib/virtual.cjs.map +1 -0
  152. package/dist/lib/virtual.mjs +54 -0
  153. package/dist/lib/virtual.mjs.map +1 -0
  154. package/dist/styles.css +1 -1
  155. package/package.json +1 -1
@@ -176,9 +176,11 @@ function O(e) {
176
176
  }
177
177
  var k = u.createContext(null);
178
178
  k.displayName = "ListboxContext";
179
- var A = null;
180
- function j() {
181
- return A ??= {
179
+ var A = u.createContext(null);
180
+ A.displayName = "ListboxOptionPositionContext";
181
+ var j = null;
182
+ function M() {
183
+ return j ??= {
182
184
  listboxId: "wave-listbox-inert",
183
185
  store: new E([]),
184
186
  multiselect: !1,
@@ -186,49 +188,49 @@ function j() {
186
188
  select: () => {},
187
189
  highlight: () => {},
188
190
  press: () => {}
189
- }, A;
191
+ }, j;
190
192
  }
191
- function M(e) {
192
- return f(k) || (n(e, "a listbox (Listbox, Combobox, Dropdown or a ListboxProvider)"), j());
193
+ function N(e) {
194
+ return f(k) || (n(e, "a listbox (Listbox, Combobox, Dropdown or a ListboxProvider)"), M());
193
195
  }
194
- var N = Symbol.for("@mortenbrudvik/waveui/listbox-element-kind");
195
- function P(e, t) {
196
- return Object.defineProperty(e, N, {
196
+ var P = Symbol.for("@mortenbrudvik/waveui/listbox-element-kind");
197
+ function F(e, t) {
198
+ return Object.defineProperty(e, P, {
197
199
  value: t,
198
200
  configurable: !0
199
201
  }), e;
200
202
  }
201
- function F(e) {
203
+ function I(e) {
202
204
  if (typeof e != "function" && typeof e != "object" || e === null) return;
203
- let t = e[N];
205
+ let t = e[P];
204
206
  return t === "option" || t === "group" ? t : void 0;
205
207
  }
206
- function I(e) {
208
+ function L(e) {
207
209
  if (typeof e == "string") return e;
208
210
  if (typeof e == "number" || typeof e == "bigint") return String(e);
209
211
  if (e == null || typeof e == "boolean") return "";
210
- if (u.isValidElement(e)) return typeof e.type == "string" || e.type === u.Fragment ? I(e.props.children) : "";
212
+ if (u.isValidElement(e)) return typeof e.type == "string" || e.type === u.Fragment ? L(e.props.children) : "";
211
213
  if (typeof e == "object" && Symbol.iterator in e) {
212
214
  let t = "";
213
- for (let n of e) t += I(n);
215
+ for (let n of e) t += L(n);
214
216
  return t;
215
217
  }
216
218
  return "";
217
219
  }
218
220
  function ee(e, t) {
219
- return typeof e.label == "string" ? e.label : typeof e.textValue == "string" ? e.textValue : e.children === null || e.children === void 0 ? t : I(e.children).trim() || void 0;
221
+ return typeof e.label == "string" ? e.label : typeof e.textValue == "string" ? e.textValue : e.children === null || e.children === void 0 ? t : L(e.children).trim() || void 0;
220
222
  }
221
- function L(t, n) {
223
+ function R(t, n) {
222
224
  u.Children.forEach(t, (t) => {
223
225
  if (!u.isValidElement(t)) return;
224
226
  let r = e(t);
225
227
  if (r === u.Fragment) {
226
- L(t.props.children, n);
228
+ R(t.props.children, n);
227
229
  return;
228
230
  }
229
- let i = F(r);
231
+ let i = I(r);
230
232
  if (i === "group") {
231
- L(t.props.children, n);
233
+ R(t.props.children, n);
232
234
  return;
233
235
  }
234
236
  if (i !== "option") return;
@@ -238,14 +240,14 @@ function L(t, n) {
238
240
  o !== void 0 && n.set(a, o);
239
241
  });
240
242
  }
241
- function R(e) {
243
+ function z(e) {
242
244
  let t = /* @__PURE__ */ new Map();
243
- return L(e, t), t;
245
+ return R(e, t), t;
244
246
  }
245
247
  function te(e) {
246
248
  return (e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement) && e.value !== "";
247
249
  }
248
- var z = /* @__PURE__ */ new Set([
250
+ var B = /* @__PURE__ */ new Set([
249
251
  "x",
250
252
  "v",
251
253
  "z",
@@ -255,92 +257,96 @@ function ne(e) {
255
257
  let t = e.currentTarget;
256
258
  if ((t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement) && (t.readOnly || t.disabled)) return !1;
257
259
  let { key: n } = e;
258
- return n === "Backspace" || n === "Delete" || n === "Process" || n === "Unidentified" ? !0 : n.length === 1 ? !(e.metaKey || e.ctrlKey && !o(e)) || z.has(n.toLowerCase()) : !1;
260
+ return n === "Backspace" || n === "Delete" || n === "Process" || n === "Unidentified" ? !0 : n.length === 1 ? !(e.metaKey || e.ctrlKey && !o(e)) || B.has(n.toLowerCase()) : !1;
259
261
  }
260
262
  function re(e) {
261
263
  e.preventDefault();
262
264
  }
263
- function B(e) {
264
- let { open: t, onOpenChange: n, mode: c, multiselect: u = !1, selectedValues: f, onSelect: y, items: S, filter: C, loop: w = !1, typeahead: T = c !== "editable", disabledOptionsFocusable: O = !1, autoHighlight: k = "selected", highlightOnFilter: A = !1, onActiveValueChange: j, idPrefix: M, onClearDraft: N } = e, P = c === "standalone", F = P ? void 0 : n, [I, ee] = _(null), L = a(M ?? "listbox"), [R] = _(() => new E(f)), z = S !== void 0, B = v(R.subscribeItems, z ? x : R.getItems, x), V = S ?? B, H = h(() => V.filter((e) => !e.hidden && (!C || C(e))), [V, C]), U = h(() => O ? H.map((e) => e.value) : H.filter((e) => !e.disabled).map((e) => e.value), [H, O]), W = h(() => {
265
+ function V(e) {
266
+ let { open: t, onOpenChange: n, mode: c, multiselect: u = !1, selectedValues: f, onSelect: y, items: S, filter: C, loop: w = !1, typeahead: T = c !== "editable", disabledOptionsFocusable: O = !1, autoHighlight: k = "selected", highlightOnFilter: A = !1, onActiveValueChange: j, onScrollToItem: M, idPrefix: N, onClearDraft: P } = e, F = c === "standalone", I = F ? void 0 : n, [L, ee] = _(null), R = a(N ?? "listbox"), [z] = _(() => new E(f)), B = S !== void 0, V = v(z.subscribeItems, B ? x : z.getItems, x), H = S ?? V, U = h(() => H.filter((e) => !e.hidden && (!C || C(e))), [H, C]), W = h(() => O ? U.map((e) => e.value) : U.filter((e) => !e.disabled).map((e) => e.value), [U, O]), G = h(() => {
265
267
  let e = /* @__PURE__ */ new Map();
266
- for (let t of V) e.has(t.value) || e.set(t.value, t);
268
+ for (let t of H) e.has(t.value) || e.set(t.value, t);
267
269
  return e;
268
- }, [V]), G = h(() => {
269
- if (H.length === V.length) return b;
270
- let e = new Set(H.map((e) => e.value)), t = /* @__PURE__ */ new Set();
271
- for (let n of V) e.has(n.value) || t.add(n.value);
270
+ }, [H]), K = h(() => {
271
+ if (U.length === H.length) return b;
272
+ let e = new Set(U.map((e) => e.value)), t = /* @__PURE__ */ new Set();
273
+ for (let n of H) e.has(n.value) || t.add(n.value);
272
274
  return t;
273
- }, [V, H]), K = new Set(f), q = U.find((e) => K.has(e)) ?? null, J = null;
274
- k === "selected" ? J = q ?? U[0] ?? null : k === "first" && (J = U[0] ?? null);
275
- let Y = d((e) => `${L}-opt-${R.getIndex(e)}`, [L, R]), ie = d((e) => W.get(e), [W]), X = l({
276
- items: U,
277
- getId: Y,
275
+ }, [H, U]), q = new Set(f), J = W.find((e) => q.has(e)) ?? null, Y = null;
276
+ k === "selected" ? Y = J ?? W[0] ?? null : k === "first" && (Y = W[0] ?? null);
277
+ let ie = d((e) => `${R}-opt-${z.getIndex(e)}`, [R, z]), ae = d((e) => G.get(e), [G]), oe = i((e) => {
278
+ let t = W[e], n = U.findIndex((e) => e.value === t);
279
+ n !== -1 && M?.(n);
280
+ }), X = l({
281
+ items: W,
282
+ getId: ie,
278
283
  enabled: t,
279
- fallback: J,
284
+ fallback: Y,
280
285
  loop: w,
281
286
  activateFirstOnChange: A,
282
- getElement: R.getElement,
287
+ getElement: z.getElement,
288
+ onScrollToItem: M ? oe : void 0,
283
289
  onActiveValueChange: j
284
290
  }), { activeValue: Z, activeDescendantId: Q } = X, $ = i((e, t, n, r) => {
285
- let i = W.get(e) ?? r;
291
+ let i = G.get(e) ?? r;
286
292
  i && !i.disabled && (y(e, {
287
293
  item: i,
288
294
  event: n
289
- }), P || u && t === "select" ? X.setActiveValue(e) : (X.setActiveValue(null), F?.(!1, {
295
+ }), F || u && t === "select" ? X.setActiveValue(e) : (X.setActiveValue(null), I?.(!1, {
290
296
  reason: t,
291
297
  event: n
292
298
  })));
293
- }), ae = i((e, t, n) => {
299
+ }), se = i((e, t, n) => {
294
300
  $(e, "select", n, t);
295
- }), oe = i((e) => {
296
- I ? I.focus({ preventScroll: !0 }) : P && r("useListbox:list-ref", "useListbox: the list element is unknown, so a pointer press cannot focus the list. Pass the `ref` of `getListboxProps()` to the list element, merged with your own ref."), U.includes(e) ? X.setActiveValue(e, { scroll: !1 }) : !t && J !== null && X.setActiveValue(J, { scroll: !1 });
297
- }), se = g(null), { onTypeahead: ce } = s({
298
- getItems: () => H.map((e) => ({
301
+ }), ce = i((e) => {
302
+ L ? L.focus({ preventScroll: !0 }) : F && r("useListbox:list-ref", "useListbox: the list element is unknown, so a pointer press cannot focus the list. Pass the `ref` of `getListboxProps()` to the list element, merged with your own ref."), W.includes(e) ? X.setActiveValue(e, { scroll: !1 }) : !t && Y !== null && X.setActiveValue(Y, { scroll: !1 });
303
+ }), le = g(null), { onTypeahead: ue } = s({
304
+ getItems: () => U.map((e) => ({
299
305
  value: e.value,
300
306
  text: e.textValue ?? e.label,
301
307
  disabled: !O && e.disabled
302
308
  })),
303
309
  onMatch: (e) => {
304
310
  X.setActiveValue(e);
305
- let n = se.current;
306
- !t && n && F?.(!0, {
311
+ let n = le.current;
312
+ !t && n && I?.(!0, {
307
313
  reason: "keyboard",
308
314
  event: n
309
315
  });
310
316
  }
311
- }), le = i((e) => {
317
+ }), de = i((e) => {
312
318
  if (e.defaultPrevented || e.nativeEvent.isComposing) return;
313
- se.current = e.nativeEvent, c === "editable" && t && ne(e) && X.setActiveValue(A ? U[0] ?? null : null);
319
+ le.current = e.nativeEvent, c === "editable" && t && ne(e) && X.setActiveValue(A ? W[0] ?? null : null);
314
320
  let n = o(e);
315
321
  if (e.ctrlKey && !n || e.metaKey) return;
316
322
  let { key: r, altKey: i } = e;
317
- if (P && (r === "Tab" || r === "Escape" || i && r.startsWith("Arrow"))) return;
318
- let a = c === "select-only", s = c === "editable", l = U[0] ?? null, d = U[U.length - 1] ?? null, f = (n) => {
319
- X.setActiveValue(n), t || F?.(!0, {
323
+ if (F && (r === "Tab" || r === "Escape" || i && r.startsWith("Arrow"))) return;
324
+ let a = c === "select-only", s = c === "editable", l = W[0] ?? null, d = W[W.length - 1] ?? null, f = (n) => {
325
+ X.setActiveValue(n), t || I?.(!0, {
320
326
  reason: "keyboard",
321
327
  event: e.nativeEvent
322
328
  });
323
329
  }, p = () => {
324
- Z === null ? u || F?.(!1, {
330
+ Z === null ? u || I?.(!1, {
325
331
  reason: "keyboard",
326
332
  event: e.nativeEvent
327
333
  }) : $(Z, "select", e.nativeEvent);
328
334
  };
329
335
  switch (r) {
330
336
  case "ArrowDown":
331
- e.preventDefault(), i ? t || F?.(!0, {
337
+ e.preventDefault(), i ? t || I?.(!0, {
332
338
  reason: "keyboard",
333
339
  event: e.nativeEvent
334
- }) : t ? X.next() : f(q ?? l);
340
+ }) : t ? X.next() : f(J ?? l);
335
341
  return;
336
342
  case "ArrowUp":
337
343
  if (e.preventDefault(), i) {
338
344
  if (!t) return;
339
- a && !u && Z !== null && !W.get(Z)?.disabled ? $(Z, "select", e.nativeEvent) : F?.(!1, {
345
+ a && !u && Z !== null && !G.get(Z)?.disabled ? $(Z, "select", e.nativeEvent) : I?.(!1, {
340
346
  reason: "keyboard",
341
347
  event: e.nativeEvent
342
348
  });
343
- } else t ? X.prev() : f(q ?? d);
349
+ } else t ? X.prev() : f(J ?? d);
344
350
  return;
345
351
  case "Home":
346
352
  case "End":
@@ -357,20 +363,20 @@ function B(e) {
357
363
  t && Z !== null && (e.preventDefault(), $(Z, "select", e.nativeEvent));
358
364
  return;
359
365
  }
360
- e.preventDefault(), t ? p() : F?.(!0, {
366
+ e.preventDefault(), t ? p() : I?.(!0, {
361
367
  reason: "keyboard",
362
368
  event: e.nativeEvent
363
369
  });
364
370
  return;
365
371
  case "Escape":
366
- t ? (e.preventDefault(), F?.(!1, {
372
+ t ? (e.preventDefault(), I?.(!1, {
367
373
  reason: "escape",
368
374
  event: e.nativeEvent
369
- })) : s && N && te(e.currentTarget) && (e.preventDefault(), N());
375
+ })) : s && P && te(e.currentTarget) && (e.preventDefault(), P());
370
376
  return;
371
377
  case "Tab":
372
378
  if (!t) return;
373
- a && !u && Z !== null && !W.get(Z)?.disabled ? $(Z, "tab", e.nativeEvent) : F?.(!1, {
379
+ a && !u && Z !== null && !G.get(Z)?.disabled ? $(Z, "tab", e.nativeEvent) : I?.(!1, {
374
380
  reason: "tab",
375
381
  event: e.nativeEvent
376
382
  });
@@ -378,155 +384,159 @@ function B(e) {
378
384
  }
379
385
  if (!(r === " " && s)) {
380
386
  if (!T || i && !n || r.length !== 1) {
381
- r === " " && !s && (e.preventDefault(), t ? p() : F?.(!0, {
387
+ r === " " && !s && (e.preventDefault(), t ? p() : I?.(!0, {
382
388
  reason: "keyboard",
383
389
  event: e.nativeEvent
384
390
  }));
385
391
  return;
386
392
  }
387
- if (ce(e, t ? Z : q)) {
393
+ if (ue(e, t ? Z : J)) {
388
394
  e.preventDefault();
389
395
  return;
390
396
  }
391
397
  if (r === " ") {
392
- e.preventDefault(), t ? p() : F?.(!0, {
398
+ e.preventDefault(), t ? p() : I?.(!0, {
393
399
  reason: "keyboard",
394
400
  event: e.nativeEvent
395
401
  });
396
402
  return;
397
403
  }
398
- a && !t && (e.preventDefault(), F?.(!0, {
404
+ a && !t && (e.preventDefault(), I?.(!0, {
399
405
  reason: "keyboard",
400
406
  event: e.nativeEvent
401
407
  }));
402
408
  }
403
- }), ue = i((e) => {
409
+ }), fe = i((e) => {
404
410
  c === "select-only" && e.key === " " && e.preventDefault();
405
411
  });
406
412
  m(() => {
407
- R.setRegistrationMode(!z), R.flush(), R.checkOrderAfterCommit(), R.setRenderState(Z, K, G);
408
- }), m(() => (R.connect(), () => R.disconnect()), [R]), p(() => {
413
+ z.setRegistrationMode(!B), z.flush(), z.checkOrderAfterCommit(), z.setRenderState(Z, q, K);
414
+ }), m(() => (z.connect(), () => z.disconnect()), [z]), p(() => {
409
415
  if (!S) return;
410
416
  let e = /* @__PURE__ */ new Set();
411
417
  for (let t of S) e.has(t.value) && D(t.value), e.add(t.value);
412
418
  }, [S]);
413
- let de = h(() => ({
414
- listboxId: L,
415
- store: R,
419
+ let pe = h(() => ({
420
+ listboxId: R,
421
+ store: z,
416
422
  multiselect: u,
417
423
  mode: c,
418
- select: ae,
424
+ select: se,
419
425
  highlight: X.highlight,
420
- press: oe
426
+ press: ce
421
427
  }), [
422
- L,
423
428
  R,
429
+ z,
424
430
  u,
425
431
  c,
426
- ae,
432
+ se,
427
433
  X.highlight,
428
- oe
434
+ ce
429
435
  ]);
430
436
  return {
431
- listboxId: L,
437
+ listboxId: R,
432
438
  activeValue: Z,
433
439
  activeDescendantId: Q,
434
- items: H,
435
- getItem: ie,
436
- getOptionId: Y,
440
+ items: U,
441
+ getItem: ae,
442
+ getOptionId: ie,
437
443
  setActiveValue: X.setActiveValue,
438
- onKeyDown: le,
439
- onKeyUp: ue,
444
+ onKeyDown: de,
445
+ onKeyUp: fe,
440
446
  getComboboxProps: () => {
441
447
  let e = {
442
448
  role: "combobox",
443
449
  "aria-expanded": t,
444
- "aria-controls": L,
450
+ "aria-controls": R,
445
451
  "aria-haspopup": "listbox"
446
452
  };
447
453
  return Q !== void 0 && (e["aria-activedescendant"] = Q), c === "editable" && (e["aria-autocomplete"] = "list"), e;
448
454
  },
449
455
  getListboxProps: () => {
450
- let e = P ? {
451
- id: L,
456
+ let e = F ? {
457
+ id: R,
452
458
  role: "listbox",
453
459
  tabIndex: 0,
454
460
  ref: ee
455
461
  } : {
456
- id: L,
462
+ id: R,
457
463
  role: "listbox",
458
464
  tabIndex: -1,
459
465
  onMouseDown: re
460
466
  };
461
- return P && Q !== void 0 && (e["aria-activedescendant"] = Q), u && (e["aria-multiselectable"] = !0), e;
467
+ return F && Q !== void 0 && (e["aria-activedescendant"] = Q), u && (e["aria-multiselectable"] = !0), e;
462
468
  },
463
- context: de
469
+ context: pe
464
470
  };
465
471
  }
466
- var V = 1, H = 2, U = 4;
467
- function W(e, t) {
468
- return (e.isActive(t) ? V : 0) | (e.isSelected(t) ? H : 0) | (e.isHidden(t) ? U : 0);
469
- }
472
+ var H = 1, U = 2, W = 4;
470
473
  function G(e, t) {
471
- let { store: n, listboxId: r, multiselect: i, mode: a, select: o, highlight: s, press: l } = M("Option"), { value: u, label: f, textValue: p, disabled: h = !1, hidden: _ = !1 } = e, y = `${r}-opt-${n.getIndex(u)}`, b = v(n.subscribe, () => W(n, u), () => W(n, u)), x = (b & V) !== 0, S = (b & H) !== 0, w = _ || (b & U) !== 0, T = g(null), E = d((e) => {
472
- T.current = e;
473
- }, []), D = c(t, E), O = g(null);
474
+ return (e.isActive(t) ? H : 0) | (e.isSelected(t) ? U : 0) | (e.isHidden(t) ? W : 0);
475
+ }
476
+ function K(e, t) {
477
+ let { store: n, listboxId: r, multiselect: i, mode: a, select: o, highlight: s, press: l } = N("Option"), u = f(A), { value: p, label: h, textValue: _, disabled: y = !1, hidden: b = !1 } = e, x = `${r}-opt-${n.getIndex(p)}`, S = v(n.subscribe, () => G(n, p), () => G(n, p)), w = (S & H) !== 0, T = (S & U) !== 0, E = b || (S & W) !== 0, D = g(null), O = d((e) => {
478
+ D.current = e;
479
+ }, []), k = c(t, O), j = g(null);
474
480
  m(() => {
475
- let e = f === void 0 && p === void 0 ? T.current?.textContent?.trim() : void 0, t = {
476
- value: u,
477
- label: f ?? p ?? (e || u)
481
+ let e = h === void 0 && _ === void 0 ? D.current?.textContent?.trim() : void 0, t = {
482
+ value: p,
483
+ label: h ?? _ ?? (e || p)
478
484
  };
479
- p !== void 0 && (t.textValue = p), h && (t.disabled = !0), _ && (t.hidden = !0);
480
- let r = O.current;
481
- r && r.store === n && C(r.item, t) || (r?.unregister(), O.current = {
485
+ _ !== void 0 && (t.textValue = _), y && (t.disabled = !0), b && (t.hidden = !0);
486
+ let r = j.current;
487
+ r && r.store === n && C(r.item, t) || (r?.unregister(), j.current = {
482
488
  store: n,
483
489
  item: t,
484
- unregister: n.register(t, T)
490
+ unregister: n.register(t, D)
485
491
  });
486
492
  }), m(() => () => {
487
- O.current?.unregister(), O.current = null;
493
+ j.current?.unregister(), j.current = null;
488
494
  }, []);
489
- let k = d((e) => {
490
- if (h) return;
495
+ let M = d((e) => {
496
+ if (y) return;
491
497
  let t = {
492
- value: u,
493
- label: f ?? p ?? u
498
+ value: p,
499
+ label: h ?? _ ?? p
494
500
  };
495
- p !== void 0 && (t.textValue = p), o(u, t, e.nativeEvent);
501
+ _ !== void 0 && (t.textValue = _), o(p, t, e.nativeEvent);
496
502
  }, [
497
503
  o,
498
- u,
499
- f,
500
504
  p,
501
- h
502
- ]), A = d(() => {
503
- !h && !n.isActive(u) && s(u);
505
+ h,
506
+ _,
507
+ y
508
+ ]), P = d(() => {
509
+ !y && !n.isActive(p) && s(p);
504
510
  }, [
505
511
  s,
506
512
  n,
507
- u,
508
- h
509
- ]), j = d((e) => {
510
- e.button === 0 && (e.preventDefault(), l(u));
511
- }, [l, u]), N = {
512
- id: y,
513
+ p,
514
+ y
515
+ ]), F = d((e) => {
516
+ e.button === 0 && (e.preventDefault(), l(p));
517
+ }, [l, p]), I = {
518
+ id: x,
513
519
  role: "option",
514
- "aria-selected": S,
515
- onClick: k,
516
- onPointerMove: A,
517
- ref: D
520
+ "aria-selected": T,
521
+ onClick: M,
522
+ onPointerMove: P,
523
+ ref: k
518
524
  };
519
- return a === "standalone" && (N.onMouseDown = j), h && (N["aria-disabled"] = !0, N["data-disabled"] = ""), w && (N.hidden = !0), x && (N["data-active"] = ""), S && (N["data-selected"] = ""), {
520
- id: y,
521
- selected: S,
522
- active: x,
523
- disabled: h,
524
- hidden: w,
525
+ return a === "standalone" && (I.onMouseDown = F), u && (I["aria-setsize"] = u.setSize, I["aria-posinset"] = u.index + 1, u.itemSize !== void 0 && (I.style = {
526
+ height: u.itemSize,
527
+ boxSizing: "border-box",
528
+ flexShrink: 0
529
+ })), y && (I["aria-disabled"] = !0, I["data-disabled"] = ""), E && (I.hidden = !0), w && (I["data-active"] = ""), T && (I["data-selected"] = ""), {
530
+ id: x,
531
+ selected: T,
532
+ active: w,
533
+ disabled: y,
534
+ hidden: E,
525
535
  multiselect: i,
526
- optionProps: N
536
+ optionProps: I
527
537
  };
528
538
  }
529
539
  //#endregion
530
- export { k as ListboxContext, R as collectOptionLabels, P as markListboxElement, B as useListbox, G as useListboxOption };
540
+ export { k as ListboxContext, A as ListboxOptionPositionContext, z as collectOptionLabels, F as markListboxElement, V as useListbox, K as useListboxOption };
531
541
 
532
542
  //# sourceMappingURL=useListbox.mjs.map