@svgrid/grid 2.2.31 → 2.2.32

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 (145) hide show
  1. package/README.md +1 -1
  2. package/dist/SvAvatar.svelte +1 -1
  3. package/dist/SvCheckBox.svelte +2 -1
  4. package/dist/SvCircularProgress.svelte +1 -1
  5. package/dist/SvGrid.controller.svelte.d.ts +20 -0
  6. package/dist/SvGrid.controller.svelte.js +358 -18
  7. package/dist/SvGrid.css +103 -3
  8. package/dist/SvGrid.svelte +162 -10
  9. package/dist/SvGrid.types.d.ts +81 -0
  10. package/dist/SvGridDropdown.svelte +38 -6
  11. package/dist/SvGridDropdown.svelte.d.ts +4 -0
  12. package/dist/SvGridSelect.svelte +12 -3
  13. package/dist/SvGridSelect.svelte.d.ts +6 -0
  14. package/dist/SvGroupCell.svelte +9 -2
  15. package/dist/SvMultiSelect.svelte +12 -3
  16. package/dist/SvMultiSelect.svelte.d.ts +6 -0
  17. package/dist/SvPasswordInput.svelte +1 -1
  18. package/dist/SvProgress.svelte +1 -1
  19. package/dist/SvRating.svelte +1 -1
  20. package/dist/SvResult.svelte +1 -1
  21. package/dist/SvRichText.svelte +31 -16
  22. package/dist/SvRichText.svelte.d.ts +9 -0
  23. package/dist/SvSwitchButton.svelte +2 -1
  24. package/dist/SvToaster.svelte +1 -1
  25. package/dist/SvTree.svelte +9 -2
  26. package/dist/SvTree.svelte.d.ts +5 -0
  27. package/dist/SvTreeSelect.svelte +6 -2
  28. package/dist/build-api.js +16 -0
  29. package/dist/cdn/{GridMenus-Ds3OpzZT.js → GridMenus-C6ixSGWW.js} +33 -33
  30. package/dist/cdn/{GridMenus-Da_p7SKS.js → GridMenus-Cyk3qpJ7.js} +33 -33
  31. package/dist/cdn/{SvDateTimePicker-B8GopjhC.js → SvDateTimePicker-CdqaP61H.js} +2 -1
  32. package/dist/cdn/{SvDateTimePicker-DB0aIEk8.js → SvDateTimePicker-ClqtVIj3.js} +2 -1
  33. package/dist/cdn/{SvGridDropdown-DjALc_4f.js → SvGridDropdown-D0VdjeR8.js} +129 -123
  34. package/dist/cdn/{SvGridDropdown-hpnHvOGt.js → SvGridDropdown-Dh-2ej8j.js} +92 -87
  35. package/dist/cdn/{src-BLJfdyL0.js → src-BgHjWF0Q.js} +4193 -3837
  36. package/dist/cdn/{src-DYDCiC0D.js → src-CgD-wiuS.js} +5956 -5602
  37. package/dist/cdn/svgrid.js +8 -8
  38. package/dist/cdn/svgrid.svelte-external.js +8 -8
  39. package/dist/cell-render.d.ts +1 -0
  40. package/dist/cell-render.js +115 -1
  41. package/dist/cell-values.js +5 -0
  42. package/dist/core.d.ts +80 -9
  43. package/dist/core.js +89 -0
  44. package/dist/editor-contract.d.ts +12 -5
  45. package/dist/editor-registry.d.ts +18 -7
  46. package/dist/editor-registry.js +10 -1
  47. package/dist/group-display.d.ts +39 -0
  48. package/dist/group-display.js +52 -0
  49. package/dist/index.d.ts +2 -2
  50. package/dist/index.js +2 -2
  51. package/dist/keyboard-handlers.js +16 -0
  52. package/dist/recurrence.js +3 -2
  53. package/dist/svgrid-wrapper.types.d.ts +8 -2
  54. package/dist/themes/index.d.ts +10 -0
  55. package/dist/themes/index.js +26 -0
  56. package/package.json +1 -1
  57. package/src/SvAccordion.test.ts +5 -5
  58. package/src/SvAvatar.svelte +1 -1
  59. package/src/SvButtonGroup.test.ts +6 -6
  60. package/src/SvCheckBox.svelte +2 -1
  61. package/src/SvCircularProgress.svelte +1 -1
  62. package/src/SvFileUpload.test.ts +1 -1
  63. package/src/SvGrid.controller.svelte.ts +367 -17
  64. package/src/SvGrid.css +103 -3
  65. package/src/SvGrid.svelte +162 -10
  66. package/src/SvGrid.types.ts +81 -0
  67. package/src/SvGridDropdown.svelte +38 -6
  68. package/src/SvGridSelect.svelte +12 -3
  69. package/src/SvGroupCell.svelte +9 -2
  70. package/src/SvMultiSelect.svelte +12 -3
  71. package/src/SvPasswordInput.svelte +1 -1
  72. package/src/SvProgress.svelte +1 -1
  73. package/src/SvRating.svelte +1 -1
  74. package/src/SvResult.svelte +1 -1
  75. package/src/SvRichText.svelte +31 -16
  76. package/src/SvSwitchButton.svelte +2 -1
  77. package/src/SvToaster.svelte +1 -1
  78. package/src/SvTree.svelte +9 -2
  79. package/src/SvTreeSelect.svelte +6 -2
  80. package/src/build-api.ts +15 -0
  81. package/src/builtin-editors.test.ts +3 -1
  82. package/src/cell-render.test.ts +27 -3
  83. package/src/cell-render.ts +122 -1
  84. package/src/cell-values.ts +4 -0
  85. package/src/chart-export.test.ts +2 -2
  86. package/src/clipboard.test.ts +0 -2
  87. package/src/core.ts +157 -8
  88. package/src/editing.test.ts +1 -1
  89. package/src/editor-contract.ts +12 -5
  90. package/src/editor-registry.grid.test.ts +48 -0
  91. package/src/editor-registry.test.ts +3 -1
  92. package/src/editor-registry.ts +23 -7
  93. package/src/facet-buckets.test.ts +33 -33
  94. package/src/group-display.test.ts +91 -1
  95. package/src/group-display.ts +83 -0
  96. package/src/index.ts +9 -0
  97. package/src/keyboard-handlers.ts +17 -0
  98. package/src/list-power.test.ts +2 -2
  99. package/src/menus.test.ts +4 -4
  100. package/src/named-views.coverage.test.ts +3 -3
  101. package/src/recurrence.ts +3 -2
  102. package/src/row-resize.test.ts +40 -40
  103. package/src/scheduler-model.ts +1 -1
  104. package/src/server-data-source.coverage.test.ts +1 -1
  105. package/src/server-group-model.test.ts +6 -6
  106. package/src/spreadsheet.test.ts +0 -1
  107. package/src/svgrid-wrapper.types.ts +11 -9
  108. package/src/svgrid.async-editor-options.test.ts +271 -0
  109. package/src/svgrid.auto-row-height.test.ts +204 -0
  110. package/src/svgrid.charting.test.ts +4 -4
  111. package/src/svgrid.comments-autocomplete.test.ts +8 -2
  112. package/src/svgrid.context-menu.test.ts +25 -9
  113. package/src/svgrid.filter-depth.test.ts +163 -0
  114. package/src/svgrid.filter-menu-listbox.svelte.test.ts +16 -2
  115. package/src/svgrid.filter-menu-scroll.test.ts +10 -2
  116. package/src/svgrid.grand-total.test.ts +188 -0
  117. package/src/svgrid.group-display-mode.test.ts +171 -0
  118. package/src/svgrid.group-footers.test.ts +121 -0
  119. package/src/svgrid.group-pagination.test.ts +153 -0
  120. package/src/svgrid.tree-data.test.ts +186 -0
  121. package/src/svgriddropdown.async-panel.svelte.test.ts +195 -0
  122. package/src/themes/index.ts +42 -0
  123. package/src/tree-edit.test.ts +4 -4
  124. package/src/tree-row-model.test.ts +169 -0
  125. package/src/ui-localization.test.ts +113 -0
  126. package/themes/ag-alpine.css +22 -0
  127. package/themes/antd.css +22 -0
  128. package/themes/atlassian.css +22 -0
  129. package/themes/bootstrap.css +22 -0
  130. package/themes/carbon.css +22 -0
  131. package/themes/catppuccin.css +22 -0
  132. package/themes/dracula.css +22 -0
  133. package/themes/ember.css +22 -0
  134. package/themes/excel.css +22 -0
  135. package/themes/fluent.css +22 -0
  136. package/themes/github.css +22 -0
  137. package/themes/linear.css +22 -0
  138. package/themes/material.css +22 -0
  139. package/themes/nord.css +22 -0
  140. package/themes/notion.css +22 -0
  141. package/themes/salesforce.css +22 -0
  142. package/themes/sap.css +22 -0
  143. package/themes/shadcn.css +22 -0
  144. package/themes/tailwind.css +22 -0
  145. package/themes/vercel.css +22 -0
@@ -1,12 +1,12 @@
1
- import { no as e, qn as t, ro as n, to as r } from "./src-DYDCiC0D.js";
1
+ import { Gn as e, io as t, no as n, ro as r } from "./src-CgD-wiuS.js";
2
2
  import { E as i, F as a, G as o, H as s, I as c, L as l, N as u, Q as d, U as f, V as p, X as m, Y as h, Z as g, _, d as v, et as y, f as b, ft as x, g as S, h as C, j as w, k as T, lt as E, m as D, mt as ee, nt as O, o as te, pt as k, st as A, t as j, tt as M, u as N, ut as P, v as F } from "./disclose-version-DoD9AFD_.js";
3
- import { l as ne } from "./SvDateTimePicker-B8GopjhC.js";
3
+ import { l as ne } from "./SvDateTimePicker-CdqaP61H.js";
4
4
  //#region src/GridMenus.svelte
5
5
  var re = l("<option> </option>"), ie = l("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), ae = l("<option> </option>"), oe = l("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), se = l("<input class=\"sv-grid-menu-condition-value\"/> <!>", 1), ce = l("<div class=\"sv-grid-menu-join\" role=\"radiogroup\" aria-label=\"Combine conditions\"><button type=\"button\">AND</button> <button type=\"button\">OR</button> <button type=\"button\" class=\"sv-grid-menu-join-x\" title=\"Remove second condition\" aria-label=\"Remove second condition\">×</button></div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Second filter condition\"></select> <!>", 1), le = l("<button type=\"button\" class=\"sv-grid-menu-add-cond\">+ Add condition</button>"), ue = l("<input class=\"sv-grid-menu-condition-value\"/> <!> <!>", 1), de = l("<div class=\"sv-grid-facet-empty\">No values</div>"), fe = l("<div class=\"sv-grid-facet-note\"> </div>"), pe = l("<div class=\"sv-grid-menu-filter\"><div class=\"sv-grid-menu-filter-head\"><span class=\"sv-grid-header-icon\"><!></span> Filter\n condition</div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Filter condition\"></select> <!> <div class=\"sv-grid-menu-sep\"></div> <div class=\"sv-grid-menu-filter-head\">Values</div> <input class=\"sv-grid-menu-search\" placeholder=\"Search values...\"/> <label class=\"sv-grid-facet sv-grid-facet-all\"><input type=\"checkbox\"/> <span class=\"sv-grid-facet-label\">(Select all)</span></label> <!> <!> <div class=\"sv-grid-menu-actions\"><button type=\"button\" class=\"sv-grid-menu-btn\">Clear filter</button> <button type=\"button\" class=\"sv-grid-menu-btn sv-grid-menu-btn-primary\">Done</button></div></div>"), me = l("<div role=\"tooltip\"> </div>"), I = l("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div>"), L = l("<button type=\"button\" role=\"tab\">Filter</button>"), R = l("<div class=\"sv-grid-menu-tabs\" role=\"tablist\"><button type=\"button\" role=\"tab\">General</button> <!> <button type=\"button\" role=\"tab\">Columns</button></div>"), he = l("<div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!>", 1), ge = l("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n ascending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n descending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove sort</button>", 1), _e = l("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to left</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to right</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Unpin column</button>", 1), ve = l("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Group\n by this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove grouping</button>", 1), ye = l("<button type=\"button\" role=\"menuitem\" aria-haspopup=\"menu\"><span class=\"sv-grid-header-icon\"><!></span> Choose columns <span class=\"sv-grid-header-icon sv-grid-menu-item-chevron\"><!></span></button>"), z = l("<!> <!> <div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n all columns</button> <!> <div class=\"sv-grid-menu-sep\"></div> <!> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Reset columns</button>", 1), B = l("<div class=\"sv-grid-menu sv-grid-column-menu\" role=\"menu\"><!> <!></div>"), be = l("<div class=\"sv-grid-menu sv-grid-filter-menu\" role=\"menu\"><!></div>"), xe = l("<div class=\"sv-grid-menu sv-grid-choose-columns-menu\" role=\"menu\"><div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!></div>"), Se = l("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitemradio\"><span class=\"sv-grid-header-icon\"><!></span> </button>"), Ce = l("<div class=\"sv-grid-menu sv-grid-operator-menu\" role=\"menu\"></div>"), we = l("<div class=\"sv-grid-facet-empty\">No values</div>"), Te = l("<div class=\"sv-grid-menu sv-grid-in-suggest\"><!></div>"), Ee = l("<div class=\"sv-grid-menu-sep\"></div>"), De = l("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"> </button>"), Oe = l("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-context-menu\" role=\"menu\"></div>", 1), ke = l("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-comment-editor\" role=\"dialog\" aria-label=\"Edit comment\"><textarea class=\"sv-grid-comment-textarea\" rows=\"3\" placeholder=\"Add a comment…\"></textarea> <div class=\"sv-grid-comment-actions\"><button type=\"button\" class=\"sv-grid-comment-remove\">Remove</button> <span class=\"sv-grid-comment-spacer\"></span> <button type=\"button\" class=\"sv-grid-comment-cancel\">Cancel</button> <button type=\"button\" class=\"sv-grid-comment-save\">Save</button></div></div>", 1), Ae = l("<!> <!> <!> <!> <!> <!> <!> <!> <!>", 1);
6
6
  function V(l, p) {
7
7
  P(p, !0);
8
- let V = (e, r = ee) => {
9
- let c = A(() => o(X).find((e) => e.id === r())), l = A(() => o(qe)(o(c))), d = A(() => o(U)[r()]?.operator ?? o(Z)(o(c))), m = A(() => n(o(c)?.columnDef.editorType ?? "text"));
8
+ let V = (n, r = ee) => {
9
+ let c = A(() => o(X).find((e) => e.id === r())), l = A(() => o(qe)(o(c))), d = A(() => o(U)[r()]?.operator ?? o(Z)(o(c))), m = A(() => t(o(c)?.columnDef.editorType ?? "text"));
10
10
  var g = pe(), _ = y(g), E = y(_);
11
11
  w(y(E), () => p.icon, () => "filter"), k(E), x(), k(_);
12
12
  var j = O(_, 2);
@@ -105,10 +105,10 @@ function V(l, p) {
105
105
  N(I);
106
106
  var L = O(I, 2), R = y(L);
107
107
  N(R), x(2), k(L);
108
- var he = O(L, 2), ge = (e) => {
108
+ var he = O(L, 2), ge = (t) => {
109
109
  {
110
110
  let n = A(() => o(lt).length > vt);
111
- t(e, {
111
+ e(t, {
112
112
  block: !0,
113
113
  checkbox: !0,
114
114
  multiple: !0,
@@ -146,7 +146,7 @@ function V(l, p) {
146
146
  P !== (P = o(d)) && (j.value = (j.__value = o(d)) ?? "", S(j, o(d))), b(R, e), B.disabled = t;
147
147
  }, [() => o(gt)(r()), () => !o(Qe)(r())]), s("change", j, (e) => o(We)(r(), e.currentTarget.value)), te(I, () => H().columnMenuSearch, (e) => H().columnMenuSearch = e), s("change", R, () => o(_t)(r())), s("click", B, () => o(wt)(r())), s("click", be, function(...e) {
148
148
  o($)?.apply(this, e);
149
- }), a(e, g);
149
+ }), a(n, g);
150
150
  }, H = j(p, "ctrl", 7), je = A(() => H().groupingControlsEnabled), U = A(() => H().filterMenuValues), W = A(() => H().tooltip);
151
151
  A(() => H().showTooltipFor);
152
152
  let G = A(() => H().columnMenuFor), Me = A(() => H().columnMenuPos), K = A(() => H().filterMenuFor), Ne = A(() => H().filterMenuPos), q = A(() => H().operatorMenuFor), Pe = A(() => H().operatorMenuPos), J = A(() => H().chooseColumnsPos), Fe = A(() => H().showColumnFiltersEffective), Y = A(() => H().props.columnMenuTabs === !0), Ie = A(() => H().grid), X = A(() => H().allColumns), Le = A(() => H().isColumnPinned), Re = A(() => H().pinColumnLeft), ze = A(() => H().pinColumnRight), Be = A(() => H().unpinColumn), Ve = A(() => H().sortDirectionByColumn), He = A(() => H().groupingColumns), Ue = A(() => H().columnVirtualizationEnabled), We = A(() => H().updateFilterOperator), Ge = A(() => H().updateFilterMenuValue), Ke = A(() => H().updateFilterMenuValueTo), qe = A(() => H().operatorsForColumn), Z = A(() => H().defaultOperatorFor), Je = A(() => H().operatorLabelFor), Ye = A(() => H().filterRowValues), Xe = A(() => H().inSuggestFor), Ze = A(() => H().inSuggestPos);
@@ -172,11 +172,11 @@ function V(l, p) {
172
172
  };
173
173
  });
174
174
  let $e = A(() => H().autosizeColumn), et = A(() => H().autosizeAllColumns), tt = A(() => H().resetColumns), nt = A(() => H().openChooseColumns), rt = A(() => H().sortColumnFromMenu), it = A(() => H().clearColumnSort), at = A(() => H().groupByColumnFromMenu), ot = A(() => H().clearGroupingFromMenu), st = A(() => H().columnMenuFacetValues), ct = A(() => H().columnMenuVisibleFacets), lt = A(() => H().columnMenuFacetOptions), ut = A(() => H().columnMenuSelectedFacets), dt = A(() => H().setFacetSelection), ft = A(() => H().setFilterTokens), pt = A(() => H().inSuggestOptions), mt = A(() => H().openInSuggest), ht = A(() => H().closeInSuggest), gt = A(() => H().isAllFacetsChecked), _t = A(() => H().toggleAllFacets), vt = 40;
175
- function yt(t, n) {
176
- o(mt)(t, n), H().inSuggestQuery = e(t.value);
175
+ function yt(e, t) {
176
+ o(mt)(e, t), H().inSuggestQuery = r(e.value);
177
177
  }
178
- function bt(t, n) {
179
- H().inSuggestQuery = e(t.value), H().inSuggestFor !== n && o(mt)(t, n);
178
+ function bt(e, t) {
179
+ H().inSuggestQuery = r(e.value), H().inSuggestFor !== t && o(mt)(e, t);
180
180
  }
181
181
  function xt(e) {
182
182
  return e.map((e) => ({
@@ -215,7 +215,7 @@ function V(l, p) {
215
215
  T(It, (e) => {
216
216
  (o(G) || o(K) || o(q) || o(J)) && e(Lt);
217
217
  });
218
- var Rt = O(It, 2), zt = (e) => {
218
+ var Rt = O(It, 2), zt = (t) => {
219
219
  let n = A(() => o(G)), r = A(() => o(X).find((e) => e.id === o(n))), i = A(() => o(r)?.getCanSort?.() ?? !1), c = A(() => o(r)?.columnDef.field != null && o(r)?.columnDef.filterable !== !1), l = A(() => H().columnMenuTab);
220
220
  var u = B(), d = y(u), f = (e) => {
221
221
  var t = R(), n = y(t);
@@ -241,17 +241,17 @@ function V(l, p) {
241
241
  });
242
242
  var m = O(d, 2), g = (e) => {
243
243
  V(e, () => o(n));
244
- }, b = (e) => {
244
+ }, b = (t) => {
245
245
  let n = A(() => o(Ie).getAllColumns());
246
246
  var r = he(), i = O(M(r), 2);
247
247
  {
248
- let e = A(() => o(n).length > 40), r = A(() => xt(o(n))), a = A(() => St(o(n)));
249
- t(i, {
248
+ let t = A(() => o(n).length > 40), r = A(() => xt(o(n))), a = A(() => St(o(n)));
249
+ e(i, {
250
250
  block: !0,
251
251
  checkbox: !0,
252
252
  multiple: !0,
253
253
  get virtual() {
254
- return o(e);
254
+ return o(t);
255
255
  },
256
256
  rows: 9,
257
257
  rowHeight: 24,
@@ -266,7 +266,7 @@ function V(l, p) {
266
266
  onChange: (e) => Ct(o(n), e)
267
267
  });
268
268
  }
269
- a(e, r);
269
+ a(t, r);
270
270
  }, S = (e) => {
271
271
  var t = z(), r = M(t), c = (e) => {
272
272
  var t = ge(), r = M(t), i = y(r);
@@ -332,7 +332,7 @@ function V(l, p) {
332
332
  };
333
333
  T(m, (e) => {
334
334
  o(Y) && o(l) === "filter" && o(c) && o(Fe) ? e(g) : o(Y) && o(l) === "columns" ? e(b, 1) : e(S, -1);
335
- }), k(u), h(() => _(u, `left: ${o(Me).x}px; top: ${o(Me).y}px; max-height: calc(100vh - ${o(Me).y}px - 12px);`)), a(e, u);
335
+ }), k(u), h(() => _(u, `left: ${o(Me).x}px; top: ${o(Me).y}px; max-height: calc(100vh - ${o(Me).y}px - 12px);`)), a(t, u);
336
336
  };
337
337
  T(Rt, (e) => {
338
338
  o(G) && e(zt);
@@ -344,17 +344,17 @@ function V(l, p) {
344
344
  T(Bt, (e) => {
345
345
  o(K) && o(Fe) && e(Vt);
346
346
  });
347
- var Ht = O(Bt, 2), Ut = (e) => {
347
+ var Ht = O(Bt, 2), Ut = (t) => {
348
348
  let n = A(() => o(Ie).getAllColumns());
349
349
  var r = xe(), i = O(y(r), 2);
350
350
  {
351
- let e = A(() => o(n).length > 40), r = A(() => xt(o(n))), a = A(() => St(o(n)));
352
- t(i, {
351
+ let t = A(() => o(n).length > 40), r = A(() => xt(o(n))), a = A(() => St(o(n)));
352
+ e(i, {
353
353
  block: !0,
354
354
  checkbox: !0,
355
355
  multiple: !0,
356
356
  get virtual() {
357
- return o(e);
357
+ return o(t);
358
358
  },
359
359
  rows: 11,
360
360
  rowHeight: 24,
@@ -369,7 +369,7 @@ function V(l, p) {
369
369
  onChange: (e) => Ct(o(n), e)
370
370
  });
371
371
  }
372
- k(r), h(() => _(r, `left: ${o(J).x}px; top: ${o(J).y}px;`)), a(e, r);
372
+ k(r), h(() => _(r, `left: ${o(J).x}px; top: ${o(J).y}px;`)), a(t, r);
373
373
  };
374
374
  T(Ht, (e) => {
375
375
  o(J) && e(Ut);
@@ -391,17 +391,17 @@ function V(l, p) {
391
391
  T(Wt, (e) => {
392
392
  o(q) && e(Gt);
393
393
  });
394
- var Kt = O(Wt, 2), qt = (n) => {
395
- let i = A(() => o(Xe)), c = A(() => new Set(r(o(Ye)[o(i)] ?? "")));
396
- var l = Te(), u = y(l), d = (n) => {
394
+ var Kt = O(Wt, 2), qt = (t) => {
395
+ let i = A(() => o(Xe)), c = A(() => new Set(n(o(Ye)[o(i)] ?? "")));
396
+ var l = Te(), u = y(l), d = (t) => {
397
397
  {
398
- let r = A(() => o(pt).length > 40);
399
- t(n, {
398
+ let n = A(() => o(pt).length > 40);
399
+ e(t, {
400
400
  block: !0,
401
401
  checkbox: !0,
402
402
  multiple: !0,
403
403
  get virtual() {
404
- return o(r);
404
+ return o(n);
405
405
  },
406
406
  rows: 8,
407
407
  rowHeight: 26,
@@ -413,9 +413,9 @@ function V(l, p) {
413
413
  get value() {
414
414
  return o(c);
415
415
  },
416
- onChange: (t) => {
417
- let n = new Set(t), r = e(o(Ye)[o(i)] ?? "");
418
- r && n.delete(r), o(ft)(o(i), [...n]), H().inSuggestQuery = "";
416
+ onChange: (e) => {
417
+ let t = new Set(e), n = r(o(Ye)[o(i)] ?? "");
418
+ n && t.delete(n), o(ft)(o(i), [...t]), H().inSuggestQuery = "";
419
419
  }
420
420
  });
421
421
  }
@@ -424,7 +424,7 @@ function V(l, p) {
424
424
  };
425
425
  T(u, (e) => {
426
426
  o(pt).length ? e(d) : e(f, -1);
427
- }), k(l), h(() => _(l, `left: ${o(Ze).x}px; top: ${o(Ze).y}px;`)), s("mousedown", l, (e) => e.preventDefault()), a(n, l);
427
+ }), k(l), h(() => _(l, `left: ${o(Ze).x}px; top: ${o(Ze).y}px;`)), s("mousedown", l, (e) => e.preventDefault()), a(t, l);
428
428
  };
429
429
  T(Kt, (e) => {
430
430
  o(Xe) && e(qt);
@@ -189,7 +189,8 @@ var Ce = [
189
189
  [-1]: "last"
190
190
  };
191
191
  function Ee(e, t, n) {
192
- return e.weekOfMonth != null && e.weekdays && e.weekdays.length ? `the ${n[e.weekOfMonth] ?? e.weekOfMonth} ${t[e.weekdays[0]]}` : e.day === -1 ? "the last day" : e.day != null && e.day < 0 ? `the ${-e.day} day(s) from the end` : e.day == null ? "" : `day ${e.day}`;
192
+ let r = e.weekdays?.[0];
193
+ return e.weekOfMonth != null && r != null ? `the ${n[e.weekOfMonth] ?? e.weekOfMonth} ${t[r]}` : e.day === -1 ? "the last day" : e.day != null && e.day < 0 ? `the ${-e.day} day(s) from the end` : e.day == null ? "" : `day ${e.day}`;
193
194
  }
194
195
  function De(e, t) {
195
196
  let n = Math.max(1, Math.floor(e.interval ?? 1)), r = "";
@@ -191,7 +191,8 @@ var B = [
191
191
  [-1]: "last"
192
192
  };
193
193
  function U(e, t, n) {
194
- return e.weekOfMonth != null && e.weekdays && e.weekdays.length ? `the ${n[e.weekOfMonth] ?? e.weekOfMonth} ${t[e.weekdays[0]]}` : e.day === -1 ? "the last day" : e.day != null && e.day < 0 ? `the ${-e.day} day(s) from the end` : e.day == null ? "" : `day ${e.day}`;
194
+ let r = e.weekdays?.[0];
195
+ return e.weekOfMonth != null && r != null ? `the ${n[e.weekOfMonth] ?? e.weekOfMonth} ${t[r]}` : e.day === -1 ? "the last day" : e.day != null && e.day < 0 ? `the ${-e.day} day(s) from the end` : e.day == null ? "" : `day ${e.day}`;
195
196
  }
196
197
  function ee(e, t) {
197
198
  let n = Math.max(1, Math.floor(e.interval ?? 1)), r = "";
@@ -3,146 +3,148 @@ import { i as t, n, r } from "./popover-P-9P2YYn.js";
3
3
  import * as i from "svelte/internal/client";
4
4
  import "svelte/internal/disclose-version";
5
5
  //#region src/SvGridDropdown.svelte
6
- var a = /* @__PURE__ */ e({ default: () => b }), o = i.from_html("<span class=\"sv-grid-chip sv-grid-chip-removable svelte-ei8hp3\"> <span class=\"sv-grid-chip-remove svelte-ei8hp3\" role=\"button\">×</span></span>"), s = i.from_html("<span class=\"sv-grid-dropdown-chips svelte-ei8hp3\"></span>"), c = i.from_html("<span class=\"sv-grid-chip svelte-ei8hp3\"> </span>"), l = i.from_html("<span class=\"sv-grid-dropdown-label svelte-ei8hp3\"> </span>"), u = i.from_html("<input type=\"search\" class=\"sv-grid-dropdown-search\" placeholder=\"Search…\"/>"), d = i.from_html("<div class=\"sv-grid-dropdown-empty\"> </div>"), f = i.from_html("<span class=\"sv-grid-dropdown-check\" aria-hidden=\"true\"> </span>"), p = i.from_html("<span class=\"sv-grid-dropdown-option-chip\"> </span>"), m = i.from_html("<span class=\"sv-grid-dropdown-option-label\"> </span>"), h = i.from_html("<div role=\"option\"><!> <!></div>"), g = i.from_html("<div class=\"sv-grid-dropdown-footer\"><button type=\"button\" class=\"sv-grid-dropdown-done\">Done</button></div>"), _ = i.from_html("<div role=\"listbox\"><!> <!> <!></div>"), v = i.from_html("<div><button type=\"button\" aria-haspopup=\"listbox\"><!> <span class=\"sv-grid-dropdown-caret svelte-ei8hp3\" aria-hidden=\"true\">▾</span></button> <!></div>"), y = {
6
+ var a = /* @__PURE__ */ e({ default: () => x }), o = i.from_html("<span class=\"sv-grid-chip sv-grid-chip-removable svelte-ei8hp3\"> <span class=\"sv-grid-chip-remove svelte-ei8hp3\" role=\"button\">×</span></span>"), s = i.from_html("<span class=\"sv-grid-dropdown-chips svelte-ei8hp3\"></span>"), c = i.from_html("<span class=\"sv-grid-chip svelte-ei8hp3\"> </span>"), l = i.from_html("<span class=\"sv-grid-dropdown-label svelte-ei8hp3\"> </span>"), u = i.from_html("<input type=\"search\" class=\"sv-grid-dropdown-search\" placeholder=\"Search…\"/>"), d = i.from_html("<div class=\"sv-grid-dropdown-empty\" role=\"status\" aria-live=\"polite\">Loading…</div>"), f = i.from_html("<div class=\"sv-grid-dropdown-empty\"> </div>"), p = i.from_html("<span class=\"sv-grid-dropdown-check\" aria-hidden=\"true\"> </span>"), m = i.from_html("<span class=\"sv-grid-dropdown-option-chip\"> </span>"), h = i.from_html("<span class=\"sv-grid-dropdown-option-label\"> </span>"), g = i.from_html("<div role=\"option\"><!> <!></div>"), _ = i.from_html("<div class=\"sv-grid-dropdown-footer\"><button type=\"button\" class=\"sv-grid-dropdown-done\">Done</button></div>"), v = i.from_html("<div role=\"listbox\"><!> <!> <!></div>"), y = i.from_html("<div><button type=\"button\" aria-haspopup=\"listbox\"><!> <span class=\"sv-grid-dropdown-caret svelte-ei8hp3\" aria-hidden=\"true\">▾</span></button> <!></div>"), b = {
7
7
  hash: "svelte-ei8hp3",
8
8
  code: "\n /* All colors derive from the grid's host CSS vars so light/dark themes\n \"just work\". Hard fallbacks are kept so the component is still\n usable in an unthemed page. */.sv-grid-dropdown.svelte-ei8hp3 {position:absolute;top:0;left:0;right:0;height:100%;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-trigger.svelte-ei8hp3 {display:flex;align-items:center;gap:6px;width:100%;height:100%;min-height:28px;padding:0 8px;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);border:0;outline:none;font:inherit;text-align:start;cursor:pointer;box-sizing:border-box;}.sv-grid-dropdown-trigger.svelte-ei8hp3:focus {outline:2px solid var(--sg-accent, #2563eb);outline-offset:-2px;}.sv-grid-dropdown-trigger-chips.svelte-ei8hp3 {align-items:center;padding:4px 8px;flex-wrap:wrap;}.sv-grid-dropdown-chips.svelte-ei8hp3 {display:inline-flex;flex-wrap:wrap;gap:4px;flex:1 1 auto;min-width:0;align-items:center;}.sv-grid-dropdown-label.svelte-ei8hp3 {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-caret.svelte-ei8hp3 {flex:0 0 auto;font-size:10px;opacity:0.7;line-height:1;}\n\n /* Popover sits absolutely below the trigger. The parent\n `.sv-grid-cell-editing` has `overflow: visible`, so this can hang\n past the row. Pulls its surface color from the grid's header bg\n so it reads as a slightly elevated layer on either theme. */\n /* Panel is `position: fixed` AND portal'd into document.body via\n `use:portalToBody`, so it escapes every ancestor overflow / clip /\n transform / stacking context. Coords come from updatePanelPosition(). */.sv-grid-dropdown-panel {overflow-y:auto;background:var(--sg-header-bg, var(--sg-bg, #ffffff));color:var(--sg-fg, #0f172a);border:1px solid var(--sg-accent, #2563eb);border-radius:6px;box-shadow:0 12px 28px rgba(0, 0, 0, 0.45);padding:4px 0;font-family:inherit;}\n /* When the option list fits in one panel we want NO scrollbar at all -\n * not even a sub-pixel ghost track. `overflow: visible` rules out the\n * scrollbar gutter that some browsers still reserve under\n * `overflow: auto` when content equals max-height. */.sv-grid-dropdown-panel.sv-grid-dropdown-panel-fits {overflow:visible;}.sv-grid-dropdown-option {display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;user-select:none;color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.1));}.sv-grid-dropdown-option-selected {font-weight:600;background:var(--sg-selection-bg, rgba(37, 99, 235, 0.15));}.sv-grid-dropdown-option-selected.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.18));}.sv-grid-dropdown-option-label {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-check {flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;color:var(--sg-accent, #2563eb);font-weight:700;}.sv-grid-dropdown-swatch {flex:0 0 12px;width:12px;height:12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-fg, #0f172a) 25%, transparent);}\n /* Colored option chip. Declared `:global` because the option panel is\n portal'd to <body>, where Svelte's scoped classes don't reach. The\n per-chip background / border / text color come from an inline style\n (see colorfulChipStyleInline) so each option matches its cell chip. */.sv-grid-dropdown-option-chip {display:inline-flex;align-items:center;max-width:100%;padding:2px 11px;border:1px solid transparent;border-radius:999px;font-size:0.9em;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-empty {padding:8px 10px;color:var(--sg-muted, rgba(15, 23, 42, 0.55));font-style:italic;font-size:0.9em;}.sv-grid-dropdown-footer {display:flex;justify-content:flex-end;padding:4px 6px;border-top:1px solid var(--sg-border, rgba(15, 23, 42, 0.08));margin-top:2px;}.sv-grid-dropdown-done {font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:#fff;background:var(--sg-accent, #2563eb);border:0;border-radius:4px;padding:4px 10px;cursor:pointer;}.sv-grid-dropdown-done:hover {filter:brightness(1.12);}\n\n /* Note: option / footer / swatch styles are declared `:global(...)`\n above because the panel is portal'd to <body> and Svelte's scoped\n class won't survive on children of an element living outside the\n component subtree. */\n\n /* Theme-aware chip badges. Inside the trigger they sit on the cell\n background, so we need a tone that contrasts on BOTH themes - a\n translucent accent works well in dark mode and reads as a soft\n blue pill in light mode. */.sv-grid-chip.svelte-ei8hp3 {display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:0.85em;line-height:1.4;background:color-mix(in srgb, var(--sg-accent, #2563eb) 18%, transparent);color:var(--sg-fg, #0f172a);border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-accent, #2563eb) 35%, transparent);white-space:nowrap;}.sv-grid-chip-removable.svelte-ei8hp3 {padding-inline-end:2px;}.sv-grid-chip-remove.svelte-ei8hp3 {display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #0f172a) 18%, transparent);color:inherit;font-size:12px;line-height:1;cursor:pointer;padding:0;}.sv-grid-chip-remove.svelte-ei8hp3:hover {background:rgba(220, 38, 38, 0.7);color:#fff;}"
9
9
  };
10
- function b(e, a) {
11
- let b = i.props_id();
12
- i.push(a, !0), i.append_styles(e, y);
13
- let x = i.prop(a, "multiple", 3, !1), S = i.prop(a, "placeholder", 3, "Select…"), C = i.prop(a, "renderChipsInTrigger", 3, !1), w = i.prop(a, "searchable", 3, !1), T = i.prop(a, "autoOpen", 3, !0);
14
- function E(e) {
15
- return e >= 0 && e < i.get(k).length ? `${b}-opt-${e}` : void 0;
10
+ function x(e, a) {
11
+ let x = i.props_id();
12
+ i.push(a, !0), i.append_styles(e, b);
13
+ let S = i.prop(a, "multiple", 3, !1), C = i.prop(a, "placeholder", 3, "Select…"), w = i.prop(a, "renderChipsInTrigger", 3, !1), T = i.prop(a, "searchable", 3, !1), E = i.prop(a, "autoOpen", 3, !0), D = i.prop(a, "loading", 3, !1);
14
+ function O(e) {
15
+ return e >= 0 && e < i.get(j).length ? `${x}-opt-${e}` : void 0;
16
16
  }
17
- let D = i.derived(() => a.options.some((e) => e.color) ? 40 : 32), O = i.state(""), k = i.derived(() => !w() || !i.get(O).trim() ? a.options : (() => {
18
- let e = i.get(O).trim().toLowerCase();
17
+ let k = i.derived(() => a.options.some((e) => e.color) ? 40 : 32), A = i.state(""), j = i.derived(() => !T() || !i.get(A).trim() ? a.options : (() => {
18
+ let e = i.get(A).trim().toLowerCase();
19
19
  return a.options.filter((t) => t.label.toLowerCase().includes(e));
20
- })()), A = i.state(!1), j = i.state(-1), M = i.state(null), N = i.state(null), P = i.state(null), F = i.state(i.proxy({
20
+ })()), M = i.state(!1), N = i.state(-1), P = i.state(null), F = i.state(null), I = i.state(null), L = i.state(i.proxy({
21
21
  top: 0,
22
22
  left: 0,
23
23
  width: 0,
24
24
  openUpward: !1,
25
25
  maxHeight: 0,
26
26
  availHeight: 0
27
- })), I = i.derived(() => Array.isArray(a.value) ? a.value : a.value == null || a.value === "" ? [] : [a.value]), L = i.derived(() => {
28
- if (i.get(I).length === 0) return S();
29
- if (!x()) {
30
- let e = i.get(I)[0], t = a.options.find((t) => String(t.value) === String(e));
27
+ })), R = i.derived(() => Array.isArray(a.value) ? a.value : a.value == null || a.value === "" ? [] : [a.value]), z = i.derived(() => {
28
+ if (i.get(R).length === 0) return C();
29
+ if (!S()) {
30
+ let e = i.get(R)[0], t = a.options.find((t) => String(t.value) === String(e));
31
31
  return t ? t.label : String(e);
32
32
  }
33
- return `${i.get(I).length} selected`;
34
- }), R = i.derived(() => {
35
- if (x() || i.get(I).length !== 1) return;
36
- let e = i.get(I)[0];
33
+ return `${i.get(R).length} selected`;
34
+ }), B = i.derived(() => {
35
+ if (S() || i.get(R).length !== 1) return;
36
+ let e = i.get(R)[0];
37
37
  return a.options.find((t) => String(t.value) === String(e))?.color;
38
38
  });
39
- function z(e) {
40
- return i.get(I).some((t) => String(t) === String(e.value));
39
+ function V(e) {
40
+ return i.get(R).some((t) => String(t) === String(e.value));
41
41
  }
42
- function B(e) {
43
- if (x()) {
44
- let t = z(e) ? i.get(I).filter((t) => String(t) !== String(e.value)) : [...i.get(I), e.value];
42
+ function H(e) {
43
+ if (S()) {
44
+ let t = V(e) ? i.get(R).filter((t) => String(t) !== String(e.value)) : [...i.get(R), e.value];
45
45
  a.onChange?.(t);
46
- } else a.onChange?.(e.value), i.set(A, !1), a.onCommit?.();
46
+ } else a.onChange?.(e.value), i.set(M, !1), a.onCommit?.();
47
47
  }
48
- function V() {
49
- if (!i.get(A)) {
50
- if (i.set(A, !0), i.get(j) < 0) {
51
- let e = a.options.findIndex((e) => z(e));
52
- i.set(j, e >= 0 ? e : 0, !0);
48
+ function U() {
49
+ if (!i.get(M)) {
50
+ if (i.set(M, !0), i.get(N) < 0) {
51
+ let e = a.options.findIndex((e) => V(e));
52
+ i.set(N, e >= 0 ? e : 0, !0);
53
53
  }
54
- H();
54
+ W();
55
55
  }
56
56
  }
57
- function H() {
58
- if (!i.get(N)) return;
59
- let e = Math.min(a.options.length, 10) * i.get(D) + (x() ? 40 : 0) + 8;
60
- i.set(F, n(i.get(N).getBoundingClientRect(), {
61
- estimatedHeight: e,
57
+ function W() {
58
+ if (!i.get(F)) return;
59
+ let e = Math.min(i.get(j).length, 10), t = T() ? 38 : 0, r = e * i.get(k) + (S() ? 40 : 0) + t + 8;
60
+ i.set(L, n(i.get(F).getBoundingClientRect(), {
61
+ estimatedHeight: r,
62
62
  clampHorizontal: !1
63
63
  }), !0);
64
64
  }
65
65
  i.user_effect(() => {
66
- if (!i.get(A)) return;
67
- let e = () => H();
66
+ if (!i.get(M)) return;
67
+ let e = () => W();
68
68
  return window.addEventListener("scroll", e, !0), window.addEventListener("resize", e), () => {
69
69
  window.removeEventListener("scroll", e, !0), window.removeEventListener("resize", e);
70
70
  };
71
+ }), i.user_effect(() => {
72
+ i.get(M) && (i.get(j).length, i.get(k), W());
71
73
  });
72
- function U() {
73
- i.set(A, !1), i.set(j, -1);
74
+ function G() {
75
+ i.set(M, !1), i.set(N, -1);
74
76
  }
75
- function W(e) {
77
+ function K(e) {
76
78
  if (e.stopPropagation(), e.key === "Escape") {
77
- e.preventDefault(), U(), a.onCancel?.();
79
+ e.preventDefault(), G(), a.onCancel?.();
78
80
  return;
79
81
  }
80
82
  if (e.key === "ArrowDown") {
81
- if (e.preventDefault(), !i.get(A)) {
82
- V();
83
+ if (e.preventDefault(), !i.get(M)) {
84
+ U();
83
85
  return;
84
86
  }
85
- i.set(j, Math.min(i.get(j) + 1, a.options.length - 1), !0), G();
87
+ i.set(N, Math.min(i.get(N) + 1, a.options.length - 1), !0), q();
86
88
  } else if (e.key === "ArrowUp") {
87
- if (e.preventDefault(), !i.get(A)) {
88
- V();
89
+ if (e.preventDefault(), !i.get(M)) {
90
+ U();
89
91
  return;
90
92
  }
91
- i.set(j, Math.max(i.get(j) - 1, 0), !0), G();
93
+ i.set(N, Math.max(i.get(N) - 1, 0), !0), q();
92
94
  } else if (e.key === "Home") {
93
- if (!i.get(A)) return;
94
- e.preventDefault(), i.set(j, 0), G();
95
+ if (!i.get(M)) return;
96
+ e.preventDefault(), i.set(N, 0), q();
95
97
  } else if (e.key === "End") {
96
- if (!i.get(A)) return;
97
- e.preventDefault(), i.set(j, a.options.length - 1), G();
98
+ if (!i.get(M)) return;
99
+ e.preventDefault(), i.set(N, a.options.length - 1), q();
98
100
  } else if (e.key === "Enter") {
99
- if (e.preventDefault(), !i.get(A)) {
100
- V();
101
+ if (e.preventDefault(), !i.get(M)) {
102
+ U();
101
103
  return;
102
104
  }
103
- let t = a.options[i.get(j)];
104
- t ? B(t) : x() && (U(), a.onCommit?.());
105
- } else if (e.key === " " && i.get(A)) {
105
+ let t = a.options[i.get(N)];
106
+ t ? H(t) : S() && (G(), a.onCommit?.());
107
+ } else if (e.key === " " && i.get(M)) {
106
108
  e.preventDefault();
107
- let t = a.options[i.get(j)];
108
- t && B(t);
109
- } else e.key === "Tab" && (i.get(A) && U(), a.onCommit?.());
109
+ let t = a.options[i.get(N)];
110
+ t && H(t);
111
+ } else e.key === "Tab" && (i.get(M) && G(), a.onCommit?.());
110
112
  }
111
- function G() {
113
+ function q() {
112
114
  queueMicrotask(() => {
113
- i.get(P) && i.get(P).querySelector(`[data-opt-idx="${i.get(j)}"]`)?.scrollIntoView({ block: "nearest" });
115
+ i.get(I) && i.get(I).querySelector(`[data-opt-idx="${i.get(N)}"]`)?.scrollIntoView({ block: "nearest" });
114
116
  });
115
117
  }
116
- function K(e) {
118
+ function J(e) {
117
119
  let t = e.relatedTarget;
118
- t && i.get(M)?.contains(t) || (i.get(A) && U(), a.onCommit?.());
120
+ t && i.get(P)?.contains(t) || (i.get(M) && G(), a.onCommit?.());
119
121
  }
120
- function q(e, t) {
122
+ function ee(e, t) {
121
123
  t.preventDefault(), t.stopPropagation();
122
- let n = i.get(I).filter((t) => String(t) !== String(e));
123
- a.onChange?.(x() ? n : n[0] ?? null);
124
+ let n = i.get(R).filter((t) => String(t) !== String(e));
125
+ a.onChange?.(S() ? n : n[0] ?? null);
124
126
  }
125
- function J(e) {
126
- T() && (e.focus(), V());
127
+ function te(e) {
128
+ E() && (e.focus(), U());
127
129
  }
128
130
  i.user_effect(() => {
129
- if (!i.get(A)) return;
131
+ if (!i.get(M)) return;
130
132
  let e = (e) => {
131
133
  let t = e.target;
132
- t && (i.get(M)?.contains(t) || i.get(P)?.contains(t) || (U(), a.onCommit?.()));
134
+ t && (i.get(P)?.contains(t) || i.get(I)?.contains(t) || (G(), a.onCommit?.()));
133
135
  };
134
136
  return document.addEventListener("pointerdown", e, !0), () => document.removeEventListener("pointerdown", e, !0);
135
137
  });
136
138
  function Y(e) {
137
139
  return `background: color-mix(in srgb, ${e} 22%, transparent);border-color: color-mix(in srgb, ${e} 45%, transparent);color: color-mix(in srgb, ${e} 80%, var(--sg-fg, #0f172a));`;
138
140
  }
139
- var X = v();
141
+ var X = y();
140
142
  let Z;
141
143
  var Q = i.child(X);
142
144
  let $;
143
- var ee = i.child(Q), te = (e) => {
145
+ var ne = i.child(Q), re = (e) => {
144
146
  var t = s();
145
- i.each(t, 21, () => i.get(I), (e) => String(e), (e, t) => {
147
+ i.each(t, 21, () => i.get(R), (e) => String(e), (e, t) => {
146
148
  let n = i.derived(() => a.options.find((e) => String(e.value) === String(i.get(t))));
147
149
  var r = o(), s = i.child(r), c = i.sibling(s);
148
150
  i.set_attribute(c, "tabindex", -1), i.reset(r), i.template_effect((e, t, n) => {
@@ -151,56 +153,59 @@ function b(e, a) {
151
153
  () => i.get(n)?.color ? Y(i.get(n).color) : "",
152
154
  () => i.get(n) ? i.get(n).label : String(i.get(t)),
153
155
  () => i.get(n) ? i.get(n).label : String(i.get(t))
154
- ]), i.delegated("mousedown", c, (e) => e.preventDefault()), i.delegated("click", c, (e) => q(i.get(t), e)), i.append(e, r);
156
+ ]), i.delegated("mousedown", c, (e) => e.preventDefault()), i.delegated("click", c, (e) => ee(i.get(t), e)), i.append(e, r);
155
157
  }), i.reset(t), i.append(e, t);
156
- }, ne = (e) => {
158
+ }, ie = (e) => {
157
159
  var t = c(), n = i.child(t, !0);
158
160
  i.reset(t), i.template_effect((e) => {
159
- i.set_style(t, e), i.set_text(n, i.get(L));
160
- }, [() => Y(i.get(R))]), i.append(e, t);
161
- }, re = (e) => {
161
+ i.set_style(t, e), i.set_text(n, i.get(z));
162
+ }, [() => Y(i.get(B))]), i.append(e, t);
163
+ }, ae = (e) => {
162
164
  var t = l(), n = i.child(t, !0);
163
- i.reset(t), i.template_effect(() => i.set_text(n, i.get(L))), i.append(e, t);
165
+ i.reset(t), i.template_effect(() => i.set_text(n, i.get(z))), i.append(e, t);
164
166
  };
165
- i.if(ee, (e) => {
166
- C() && i.get(I).length > 0 ? e(te) : !x() && i.get(I).length === 1 && i.get(R) ? e(ne, 1) : e(re, -1);
167
- }), i.next(2), i.reset(Q), i.bind_this(Q, (e) => i.set(N, e), () => i.get(N)), i.action(Q, (e) => J?.(e));
168
- var ie = i.sibling(Q, 2), ae = (e) => {
169
- let n = i.derived(() => a.options.length > 10), o = i.derived(() => Math.min(i.get(n) ? 10 * i.get(D) + (x() ? 40 : 0) + 8 : Infinity, i.get(F).maxHeight));
170
- var s = _();
167
+ i.if(ne, (e) => {
168
+ w() && i.get(R).length > 0 ? e(re) : !S() && i.get(R).length === 1 && i.get(B) ? e(ie, 1) : e(ae, -1);
169
+ }), i.next(2), i.reset(Q), i.bind_this(Q, (e) => i.set(F, e), () => i.get(F)), i.action(Q, (e) => te?.(e));
170
+ var oe = i.sibling(Q, 2), se = (e) => {
171
+ let n = i.derived(() => a.options.length > 10), o = i.derived(() => Math.min(i.get(n) ? 10 * i.get(k) + (S() ? 40 : 0) + 8 : Infinity, i.get(L).availHeight));
172
+ var s = v();
171
173
  let c, l;
172
- var v = i.child(s), y = (e) => {
174
+ var y = i.child(s), b = (e) => {
173
175
  var t = u();
174
176
  i.remove_input_defaults(t), i.delegated("mousedown", t, (e) => e.stopPropagation()), i.delegated("click", t, (e) => e.stopPropagation()), i.delegated("keydown", t, (e) => {
175
- e.key === "Escape" && (e.preventDefault(), i.set(A, !1), a.onCancel?.());
176
- }), i.bind_value(t, () => i.get(O), (e) => i.set(O, e)), i.append(e, t);
177
+ e.key === "Escape" && (e.preventDefault(), i.set(M, !1), a.onCancel?.());
178
+ }), i.bind_value(t, () => i.get(A), (e) => i.set(A, e)), i.append(e, t);
177
179
  };
178
- i.if(v, (e) => {
179
- w() && e(y);
180
+ i.if(y, (e) => {
181
+ T() && e(b);
180
182
  });
181
- var b = i.sibling(v, 2), S = (e) => {
182
- var t = d(), n = i.child(t, !0);
183
- i.reset(t), i.template_effect(() => i.set_text(n, w() && i.get(O) ? `No matches for "${i.get(O)}"` : "No options")), i.append(e, t);
184
- }, C = (e) => {
183
+ var x = i.sibling(y, 2), C = (e) => {
184
+ var t = d();
185
+ i.append(e, t);
186
+ }, w = (e) => {
187
+ var t = f(), n = i.child(t, !0);
188
+ i.reset(t), i.template_effect(() => i.set_text(n, T() && i.get(A) ? `No matches for "${i.get(A)}"` : "No options")), i.append(e, t);
189
+ }, E = (e) => {
185
190
  var t = i.comment(), n = i.first_child(t);
186
- i.each(n, 19, () => i.get(k), (e) => String(e.value), (e, t, n) => {
187
- let r = i.derived(() => z(i.get(t)));
188
- var a = h();
191
+ i.each(n, 19, () => i.get(j), (e) => String(e.value), (e, t, n) => {
192
+ let r = i.derived(() => V(i.get(t)));
193
+ var a = g();
189
194
  let o;
190
195
  var s = i.child(a), c = (e) => {
191
- var t = f(), n = i.child(t, !0);
196
+ var t = p(), n = i.child(t, !0);
192
197
  i.reset(t), i.template_effect(() => i.set_text(n, i.get(r) ? "✓" : "")), i.append(e, t);
193
198
  };
194
199
  i.if(s, (e) => {
195
- x() && e(c);
200
+ S() && e(c);
196
201
  });
197
202
  var l = i.sibling(s, 2), u = (e) => {
198
- var n = p(), r = i.child(n, !0);
203
+ var n = m(), r = i.child(n, !0);
199
204
  i.reset(n), i.template_effect((e) => {
200
205
  i.set_style(n, e), i.set_text(r, i.get(t).label);
201
206
  }, [() => Y(i.get(t).color)]), i.append(e, n);
202
207
  }, d = (e) => {
203
- var n = m(), r = i.child(n, !0);
208
+ var n = h(), r = i.child(n, !0);
204
209
  i.reset(n), i.template_effect(() => i.set_text(r, i.get(t).label)), i.append(e, n);
205
210
  };
206
211
  i.if(l, (e) => {
@@ -208,40 +213,41 @@ function b(e, a) {
208
213
  }), i.reset(a), i.template_effect((e) => {
209
214
  o = i.set_class(a, 1, "sv-grid-dropdown-option", null, o, {
210
215
  "sv-grid-dropdown-option-selected": i.get(r),
211
- "sv-grid-dropdown-option-highlighted": i.get(n) === i.get(j)
216
+ "sv-grid-dropdown-option-highlighted": i.get(n) === i.get(N)
212
217
  }), i.set_attribute(a, "id", e), i.set_attribute(a, "aria-selected", i.get(r)), i.set_attribute(a, "data-opt-idx", i.get(n));
213
- }, [() => E(i.get(n))]), i.delegated("mousedown", a, (e) => {
214
- e.preventDefault(), B(i.get(t));
215
- }), i.event("mouseenter", a, () => i.set(j, i.get(n), !0)), i.append(e, a);
218
+ }, [() => O(i.get(n))]), i.delegated("mousedown", a, (e) => {
219
+ e.preventDefault(), H(i.get(t));
220
+ }), i.event("mouseenter", a, () => i.set(N, i.get(n), !0)), i.append(e, a);
216
221
  }), i.append(e, t);
217
222
  };
218
- i.if(b, (e) => {
219
- i.get(k).length === 0 ? e(S) : e(C, -1);
223
+ i.if(x, (e) => {
224
+ D() && i.get(j).length === 0 ? e(C) : i.get(j).length === 0 ? e(w, 1) : e(E, -1);
220
225
  });
221
- var T = i.sibling(b, 2), M = (e) => {
222
- var t = g(), n = i.child(t);
226
+ var P = i.sibling(x, 2), F = (e) => {
227
+ var t = _(), n = i.child(t);
223
228
  i.reset(t), i.delegated("mousedown", n, (e) => e.preventDefault()), i.delegated("click", n, () => {
224
- U(), a.onCommit?.();
229
+ G(), a.onCommit?.();
225
230
  }), i.append(e, t);
226
231
  };
227
- i.if(T, (e) => {
228
- x() && e(M);
229
- }), i.reset(s), i.bind_this(s, (e) => i.set(P, e), () => i.get(P)), i.action(s, (e) => t?.(e)), i.action(s, (e, t) => r?.(e, t), () => ({ up: i.get(F).openUpward })), i.template_effect(() => {
230
- c = i.set_class(s, 1, "sv-grid-dropdown-panel", null, c, { "sv-grid-dropdown-panel-fits": !i.get(n) }), i.set_attribute(s, "aria-multiselectable", x()), l = i.set_style(s, "", l, {
232
+ i.if(P, (e) => {
233
+ S() && e(F);
234
+ }), i.reset(s), i.bind_this(s, (e) => i.set(I, e), () => i.get(I)), i.action(s, (e) => t?.(e)), i.action(s, (e, t) => r?.(e, t), () => ({ up: i.get(L).openUpward })), i.template_effect(() => {
235
+ c = i.set_class(s, 1, "sv-grid-dropdown-panel", null, c, { "sv-grid-dropdown-panel-fits": !i.get(n) }), i.set_attribute(s, "aria-multiselectable", S()), l = i.set_style(s, "", l, {
231
236
  position: "fixed",
232
- top: `${i.get(F).top}px`,
233
- left: `${i.get(F).left}px`,
234
- width: `${i.get(F).width}px`,
237
+ top: i.get(L).openUpward ? null : `${i.get(L).top}px`,
238
+ bottom: i.get(L).openUpward ? `${i.get(L).bottom}px` : null,
239
+ left: `${i.get(L).left}px`,
240
+ width: `${i.get(L).width}px`,
235
241
  "max-height": i.get(o) === null ? null : `${i.get(o)}px`,
236
242
  "z-index": "2147483647"
237
243
  });
238
244
  }), i.delegated("pointerdown", s, (e) => e.stopPropagation()), i.delegated("mousedown", s, (e) => e.stopPropagation()), i.delegated("click", s, (e) => e.stopPropagation()), i.append(e, s);
239
245
  };
240
- i.if(ie, (e) => {
241
- i.get(A) && e(ae);
242
- }), i.reset(X), i.bind_this(X, (e) => i.set(M, e), () => i.get(M)), i.template_effect((e) => {
243
- Z = i.set_class(X, 1, "sv-grid-dropdown svelte-ei8hp3", null, Z, { "sv-grid-dropdown-open": i.get(A) }), $ = i.set_class(Q, 1, "sv-grid-dropdown-trigger svelte-ei8hp3", null, $, { "sv-grid-dropdown-trigger-chips": C() && i.get(I).length > 0 }), i.set_attribute(Q, "aria-expanded", i.get(A)), i.set_attribute(Q, "aria-activedescendant", e);
244
- }, [() => i.get(A) ? E(i.get(j)) : void 0]), i.delegated("focusout", X, K), i.delegated("click", X, (e) => e.stopPropagation()), i.delegated("dblclick", X, (e) => e.stopPropagation()), i.delegated("pointerdown", X, (e) => e.stopPropagation()), i.delegated("mousedown", X, (e) => e.stopPropagation()), i.delegated("click", Q, () => i.get(A) ? U() : V()), i.delegated("keydown", Q, W), i.append(e, X), i.pop();
246
+ i.if(oe, (e) => {
247
+ i.get(M) && e(se);
248
+ }), i.reset(X), i.bind_this(X, (e) => i.set(P, e), () => i.get(P)), i.template_effect((e) => {
249
+ Z = i.set_class(X, 1, "sv-grid-dropdown svelte-ei8hp3", null, Z, { "sv-grid-dropdown-open": i.get(M) }), $ = i.set_class(Q, 1, "sv-grid-dropdown-trigger svelte-ei8hp3", null, $, { "sv-grid-dropdown-trigger-chips": w() && i.get(R).length > 0 }), i.set_attribute(Q, "aria-expanded", i.get(M)), i.set_attribute(Q, "aria-activedescendant", e);
250
+ }, [() => i.get(M) ? O(i.get(N)) : void 0]), i.delegated("focusout", X, J), i.delegated("click", X, (e) => e.stopPropagation()), i.delegated("dblclick", X, (e) => e.stopPropagation()), i.delegated("pointerdown", X, (e) => e.stopPropagation()), i.delegated("mousedown", X, (e) => e.stopPropagation()), i.delegated("click", Q, () => i.get(M) ? G() : U()), i.delegated("keydown", Q, K), i.append(e, X), i.pop();
245
251
  }
246
252
  i.delegate([
247
253
  "focusout",
@@ -252,4 +258,4 @@ i.delegate([
252
258
  "keydown"
253
259
  ]);
254
260
  //#endregion
255
- export { a as n, b as t };
261
+ export { a as n, x as t };