@vielzeug/refine 2.3.0 → 2.4.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 (193) hide show
  1. package/dist/accordion-item.cjs +1 -1
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js +1 -1
  4. package/dist/accordion-item.js.map +1 -1
  5. package/dist/card.cjs +1 -1
  6. package/dist/card.cjs.map +1 -1
  7. package/dist/card.js +1 -1
  8. package/dist/card.js.map +1 -1
  9. package/dist/chat-message.cjs +1 -1
  10. package/dist/chat-message.cjs.map +1 -1
  11. package/dist/chat-message.js +1 -1
  12. package/dist/chat-message.js.map +1 -1
  13. package/dist/combobox.cjs +9 -7
  14. package/dist/combobox.cjs.map +1 -1
  15. package/dist/combobox.js +55 -48
  16. package/dist/combobox.js.map +1 -1
  17. package/dist/content/index.d.ts +2 -0
  18. package/dist/content/index.d.ts.map +1 -1
  19. package/dist/content/list/list-item.css.cjs +1 -1
  20. package/dist/content/list/list-item.css.cjs.map +1 -1
  21. package/dist/content/list/list-item.css.js +1 -1
  22. package/dist/content/list/list-item.css.js.map +1 -1
  23. package/dist/content/list/list-item.d.ts +9 -0
  24. package/dist/content/list/list-item.d.ts.map +1 -1
  25. package/dist/content/stats/stats.css.cjs +2 -0
  26. package/dist/content/stats/stats.css.cjs.map +1 -0
  27. package/dist/content/stats/stats.css.js +6 -0
  28. package/dist/content/stats/stats.css.js.map +1 -0
  29. package/dist/content/stats/stats.d.ts +72 -0
  30. package/dist/content/stats/stats.d.ts.map +1 -0
  31. package/dist/core/auto-resize.cjs +1 -1
  32. package/dist/core/auto-resize.cjs.map +1 -1
  33. package/dist/core/auto-resize.js +1 -1
  34. package/dist/core/auto-resize.js.map +1 -1
  35. package/dist/custom-elements.json +5087 -4791
  36. package/dist/datagrid.cjs +199 -179
  37. package/dist/datagrid.cjs.map +1 -1
  38. package/dist/datagrid.js +435 -321
  39. package/dist/datagrid.js.map +1 -1
  40. package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
  41. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
  42. package/dist/disclosure/tab-item/tab-item.css.js +1 -1
  43. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
  44. package/dist/disclosure/tab-item/tab-item.d.ts +3 -0
  45. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
  46. package/dist/disclosure/tabs/tabs.css.cjs +1 -1
  47. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
  48. package/dist/disclosure/tabs/tabs.css.js +1 -1
  49. package/dist/disclosure/tabs/tabs.css.js.map +1 -1
  50. package/dist/disclosure/tabs/tabs.d.ts +4 -0
  51. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  52. package/dist/frameworks/elements.d.ts +2 -1
  53. package/dist/icon.cjs +1 -1
  54. package/dist/icon.cjs.map +1 -1
  55. package/dist/icon.js +1 -1
  56. package/dist/icon.js.map +1 -1
  57. package/dist/input.cjs +5 -4
  58. package/dist/input.cjs.map +1 -1
  59. package/dist/input.js +14 -8
  60. package/dist/input.js.map +1 -1
  61. package/dist/inputs/combobox/combobox-options.cjs +1 -1
  62. package/dist/inputs/combobox/combobox-options.cjs.map +1 -1
  63. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -1
  64. package/dist/inputs/combobox/combobox-options.js +1 -0
  65. package/dist/inputs/combobox/combobox-options.js.map +1 -1
  66. package/dist/inputs/combobox/combobox.css.cjs +1 -1
  67. package/dist/inputs/combobox/combobox.css.cjs.map +1 -1
  68. package/dist/inputs/combobox/combobox.css.js +1 -1
  69. package/dist/inputs/combobox/combobox.css.js.map +1 -1
  70. package/dist/inputs/combobox/combobox.d.ts +1 -0
  71. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  72. package/dist/inputs/combobox/combobox.types.d.ts +7 -0
  73. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
  74. package/dist/inputs/datagrid/datagrid-model.cjs +1 -1
  75. package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -1
  76. package/dist/inputs/datagrid/datagrid-model.d.ts +17 -3
  77. package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -1
  78. package/dist/inputs/datagrid/datagrid-model.js +93 -70
  79. package/dist/inputs/datagrid/datagrid-model.js.map +1 -1
  80. package/dist/inputs/datagrid/datagrid.css.cjs +1 -1
  81. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -1
  82. package/dist/inputs/datagrid/datagrid.css.js +1 -1
  83. package/dist/inputs/datagrid/datagrid.css.js.map +1 -1
  84. package/dist/inputs/datagrid/datagrid.d.ts +54 -4
  85. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  86. package/dist/inputs/index.d.ts +1 -1
  87. package/dist/inputs/index.d.ts.map +1 -1
  88. package/dist/inputs/input/input.css.cjs +1 -1
  89. package/dist/inputs/input/input.css.cjs.map +1 -1
  90. package/dist/inputs/input/input.css.js +1 -1
  91. package/dist/inputs/input/input.css.js.map +1 -1
  92. package/dist/inputs/input/input.d.ts +3 -0
  93. package/dist/inputs/input/input.d.ts.map +1 -1
  94. package/dist/inputs/select/select.css.cjs +1 -1
  95. package/dist/inputs/select/select.css.cjs.map +1 -1
  96. package/dist/inputs/select/select.css.js +1 -1
  97. package/dist/inputs/select/select.css.js.map +1 -1
  98. package/dist/inputs/select/select.d.ts +5 -0
  99. package/dist/inputs/select/select.d.ts.map +1 -1
  100. package/dist/layout/navbar/navbar.d.ts +2 -0
  101. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  102. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  103. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  104. package/dist/layout/sidebar/sidebar.css.js +1 -1
  105. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  106. package/dist/layout/sidebar/sidebar.d.ts +8 -0
  107. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  108. package/dist/list-item.cjs +6 -5
  109. package/dist/list-item.cjs.map +1 -1
  110. package/dist/list-item.js +23 -17
  111. package/dist/list-item.js.map +1 -1
  112. package/dist/list.cjs +1 -1
  113. package/dist/list.cjs.map +1 -1
  114. package/dist/list.js +1 -1
  115. package/dist/list.js.map +1 -1
  116. package/dist/menu.cjs +1 -1
  117. package/dist/menu.cjs.map +1 -1
  118. package/dist/menu.js +1 -1
  119. package/dist/menu.js.map +1 -1
  120. package/dist/navbar.cjs +2 -2
  121. package/dist/navbar.cjs.map +1 -1
  122. package/dist/navbar.js +7 -5
  123. package/dist/navbar.js.map +1 -1
  124. package/dist/navigation-menu.cjs +1 -1
  125. package/dist/navigation-menu.cjs.map +1 -1
  126. package/dist/navigation-menu.js +1 -1
  127. package/dist/navigation-menu.js.map +1 -1
  128. package/dist/overlay/popover/popover.css.cjs +1 -1
  129. package/dist/overlay/popover/popover.css.cjs.map +1 -1
  130. package/dist/overlay/popover/popover.css.js +1 -1
  131. package/dist/overlay/popover/popover.css.js.map +1 -1
  132. package/dist/overlay/popover/popover.d.ts +1 -0
  133. package/dist/overlay/popover/popover.d.ts.map +1 -1
  134. package/dist/overlay/shared/use-dialog.cjs +1 -1
  135. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  136. package/dist/overlay/shared/use-dialog.js +1 -1
  137. package/dist/overlay/shared/use-dialog.js.map +1 -1
  138. package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
  139. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  140. package/dist/overlay/shared/use-floating-trigger.js +1 -1
  141. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  142. package/dist/popover.cjs.map +1 -1
  143. package/dist/popover.js.map +1 -1
  144. package/dist/radio.cjs +1 -1
  145. package/dist/radio.cjs.map +1 -1
  146. package/dist/radio.js +10 -8
  147. package/dist/radio.js.map +1 -1
  148. package/dist/rating.cjs +1 -1
  149. package/dist/rating.cjs.map +1 -1
  150. package/dist/rating.js +1 -1
  151. package/dist/rating.js.map +1 -1
  152. package/dist/refine.cjs +372 -323
  153. package/dist/refine.cjs.map +1 -1
  154. package/dist/refine.iife.js +372 -323
  155. package/dist/refine.iife.js.map +1 -1
  156. package/dist/refine.js +402 -353
  157. package/dist/refine.js.map +1 -1
  158. package/dist/select.cjs +16 -14
  159. package/dist/select.cjs.map +1 -1
  160. package/dist/select.js +118 -112
  161. package/dist/select.js.map +1 -1
  162. package/dist/sidebar.cjs +28 -23
  163. package/dist/sidebar.cjs.map +1 -1
  164. package/dist/sidebar.js +112 -77
  165. package/dist/sidebar.js.map +1 -1
  166. package/dist/slider.cjs +1 -1
  167. package/dist/slider.cjs.map +1 -1
  168. package/dist/slider.js +1 -1
  169. package/dist/slider.js.map +1 -1
  170. package/dist/stats.cjs +18 -0
  171. package/dist/stats.cjs.map +1 -0
  172. package/dist/stats.js +88 -0
  173. package/dist/stats.js.map +1 -0
  174. package/dist/stepper.cjs +1 -1
  175. package/dist/stepper.cjs.map +1 -1
  176. package/dist/stepper.js +1 -1
  177. package/dist/stepper.js.map +1 -1
  178. package/dist/styles/mixins/animation.css.cjs +2 -0
  179. package/dist/styles/mixins/animation.css.cjs.map +1 -1
  180. package/dist/styles/mixins/animation.css.d.ts.map +1 -1
  181. package/dist/styles/mixins/animation.css.js +2 -0
  182. package/dist/styles/mixins/animation.css.js.map +1 -1
  183. package/dist/tab-item.cjs +1 -1
  184. package/dist/tab-item.cjs.map +1 -1
  185. package/dist/tab-item.js +3 -2
  186. package/dist/tab-item.js.map +1 -1
  187. package/dist/tabs.cjs +1 -1
  188. package/dist/tabs.cjs.map +1 -1
  189. package/dist/tabs.js +3 -1
  190. package/dist/tabs.js.map +1 -1
  191. package/dist/toast.cjs.map +1 -1
  192. package/dist/toast.js.map +1 -1
  193. package/package.json +64 -56
@@ -1,3 +1,4 @@
1
+ import type { HTMLResult } from '@vielzeug/ore';
1
2
  import { type Readable } from '@vielzeug/ripple';
2
3
  export type SortDirection = 'asc' | 'desc' | 'none';
3
4
  export type SortState = {
@@ -7,12 +8,17 @@ export type SortState = {
7
8
  export type DataGridColumn<T = Record<string, unknown>> = {
8
9
  align?: 'left' | 'center' | 'right';
9
10
  cell?: (item: T) => string;
11
+ filterLabel?: (item: T) => string;
12
+ filterValue?: (item: T) => number | string;
10
13
  headerLabel?: string;
11
14
  key: string;
12
15
  label: string;
16
+ /** Render trusted structured cell content with Ore's safe template result. */
17
+ renderCell?: (item: T) => HTMLResult;
13
18
  renderExpanded?: (item: T) => string;
14
19
  resizable?: boolean;
15
20
  sortable?: boolean;
21
+ sortType?: 'number' | 'text';
16
22
  sortValue?: (item: T) => number | string;
17
23
  width?: string;
18
24
  };
@@ -22,7 +28,7 @@ export type FilterOption = {
22
28
  label: string;
23
29
  operators?: {
24
30
  label: string;
25
- value: string;
31
+ value: FilterOperator;
26
32
  }[];
27
33
  options: {
28
34
  label?: string;
@@ -34,13 +40,20 @@ export type FilterRule = {
34
40
  operator: FilterOperator;
35
41
  values: Set<string>;
36
42
  };
37
- export type DataGridView = {
43
+ export type DataGridView<T = Record<string, unknown>> = {
44
+ filter?: (item: T) => boolean;
38
45
  id: string;
39
46
  label: string;
40
47
  };
41
48
  export type DataGridModelOptions<T = Record<string, unknown>> = {
49
+ activeView?: Readable<DataGridView<T> | undefined>;
42
50
  clientSide: Readable<boolean>;
43
51
  columns: Readable<DataGridColumn<T>[]>;
52
+ emptyValueLabel?: Readable<string>;
53
+ filterOperators?: Readable<{
54
+ label: string;
55
+ value: FilterOperator;
56
+ }[]>;
44
57
  filterOptions: Readable<FilterOption[] | undefined>;
45
58
  getRowKey: (item: T) => string;
46
59
  items: Readable<T[]>;
@@ -68,6 +81,7 @@ export type DataGridModel<T = Record<string, unknown>> = {
68
81
  readonly pageIndex: Readable<number>;
69
82
  prevPage(): void;
70
83
  removeFilter(key: string): void;
84
+ resetColumnVisibility(): void;
71
85
  resetFilters(): void;
72
86
  resetSearch(): void;
73
87
  readonly searchActive: Readable<boolean>;
@@ -92,7 +106,7 @@ export type DataGridModel<T = Record<string, unknown>> = {
92
106
  /**
93
107
  * Feature-owned state and transform pipeline for `ore-datagrid`.
94
108
  *
95
- * Rows flow through query, filters, sorting, and pagination in order. Selection
109
+ * Rows flow through the active view, query, filters, sorting, and pagination in order. Selection
96
110
  * and column visibility share the same model so every interactive grid concern
97
111
  * has one reactive owner. Source-backed grids retain their server-owned rows by
98
112
  * setting `clientSide` to false.
@@ -1 +1 @@
1
- {"version":3,"file":"datagrid-model.d.ts","sourceRoot":"","sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datagrid-model.d.ts","sourceRoot":"","sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"names":[],"mappings":"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"}
@@ -18,44 +18,55 @@ var r = [
18
18
  value: "lt"
19
19
  }
20
20
  ], i = (i) => {
21
- let a = t(""), o = t(!1), s = t(/* @__PURE__ */ new Set()), c = t(/* @__PURE__ */ new Set()), l = t(/* @__PURE__ */ new Map()), u = t(""), d = t("none"), f = t(/* @__PURE__ */ new Set()), p = t(0), m = e(() => new Set(i.columns.value.map((e) => e.key))), h = e(() => i.columns.value.filter((e) => !s.value.has(e.key))), g = e(() => {
21
+ let a = t(""), o = t(!1), s = t(/* @__PURE__ */ new Set()), c = t(/* @__PURE__ */ new Set()), l = t(/* @__PURE__ */ new Map()), u = t(""), d = t("none"), f = t(/* @__PURE__ */ new Set()), p = t(0), m = e(() => /* @__PURE__ */ new Set([...i.columns.value.map((e) => e.key), ...(i.filterOptions.value ?? []).map((e) => e.key)])), h = e(() => i.columns.value.filter((e) => !s.value.has(e.key))), g = e(() => {
22
+ let e = i.items.value;
23
+ if (!i.clientSide.value) return e;
24
+ let t = i.activeView?.value?.filter;
25
+ return t ? e.filter(t) : e;
26
+ }), _ = (e, t) => {
27
+ let n = i.columns.value.find((e) => e.key === t);
28
+ return n?.filterValue ? n.filterValue(e) : e[t];
29
+ }, v = e(() => {
22
30
  let e = new Set((i.filterOptions.value ?? []).map((e) => e.key)), t = [...c.value].filter((t) => !e.has(t));
23
31
  if (!t.length) return /* @__PURE__ */ new Map();
24
32
  let n = /* @__PURE__ */ new Map();
25
33
  for (let e of t) {
26
- let t = /* @__PURE__ */ new Set(), r = [];
27
- for (let n of i.items.value) {
28
- let i = n[e], a = i == null ? "" : String(i);
29
- t.has(a) || (t.add(a), r.push({
30
- label: a || "(empty)",
31
- value: a
34
+ let t = i.columns.value.find((t) => t.key === e), r = /* @__PURE__ */ new Set(), a = [];
35
+ for (let n of g.value) {
36
+ let o = _(n, e), s = o == null ? "" : String(o), c = t?.filterLabel?.(n) ?? t?.cell?.(n) ?? s;
37
+ r.has(s) || (r.add(s), a.push({
38
+ label: c || i.emptyValueLabel?.value || "(empty)",
39
+ value: s
32
40
  }));
33
41
  }
34
- n.set(e, r);
42
+ n.set(e, a);
35
43
  }
36
44
  return n;
37
- }), _ = e(() => {
38
- let e = i.filterOptions.value ?? [], t = new Set(e.map((e) => e.key)), n = [...c.value].filter((e) => !t.has(e)).map((e) => ({
45
+ }), y = e(() => {
46
+ let e = i.filterOptions.value ?? [], t = new Set(e.map((e) => e.key)), n = e.filter((e) => c.value.has(e.key)), a = [...c.value].filter((e) => !t.has(e)).map((e) => ({
39
47
  key: e,
40
48
  label: i.columns.value.find((t) => t.key === e)?.label ?? e,
41
- operators: r,
42
- options: g.value.get(e) ?? []
49
+ operators: i.filterOperators?.value ?? r,
50
+ options: v.value.get(e) ?? []
43
51
  }));
44
- return [...e.map((e) => ({
52
+ return [...n.map((e) => ({
45
53
  ...e,
46
- operators: e.operators ?? r
47
- })), ...n];
48
- }), v = e(() => {
49
- let e = i.items.value;
54
+ operators: e.operators ?? i.filterOperators?.value ?? r
55
+ })), ...a];
56
+ }), b = e(() => {
57
+ let e = g.value;
50
58
  if (!i.clientSide.value) return e;
51
59
  let t = a.value.trim().toLowerCase();
52
- return t ? e.filter((e) => Object.values(e).some((e) => e != null && String(e).toLowerCase().includes(t))) : e;
53
- }), y = e(() => {
54
- let e = v.value;
60
+ return t ? e.filter((e) => i.columns.value.some((n) => {
61
+ let r = n.cell ? n.cell(e) : _(e, n.key);
62
+ return r != null && String(r).toLowerCase().includes(t);
63
+ })) : e;
64
+ }), x = e(() => {
65
+ let e = b.value;
55
66
  return !i.clientSide.value || !l.value.size ? e : e.filter((e) => {
56
67
  for (let [t, n] of l.value) {
57
68
  if (!n.values.size || !m.value.has(t)) continue;
58
- let r = e[t], i = r == null ? "" : String(r);
69
+ let r = _(e, t), i = r == null ? "" : String(r);
59
70
  if (n.operator === "equals" && !n.values.has(i) || n.operator === "contains" && ![...n.values].some((e) => i.toLowerCase().includes(e.toLowerCase()))) return !1;
60
71
  if (n.operator === "gt" || n.operator === "lt") {
61
72
  let e = parseFloat(i), t = [...n.values].map(parseFloat).filter((e) => !Number.isNaN(e));
@@ -65,50 +76,54 @@ var r = [
65
76
  }
66
77
  return !0;
67
78
  });
68
- }), b = e(() => ({
79
+ }), S = e(() => ({
69
80
  direction: d.value,
70
81
  key: u.value
71
- })), x = e(() => {
72
- let e = y.value;
82
+ })), C = e(() => {
83
+ let e = x.value;
73
84
  if (!i.clientSide.value || i.sortMode.value === "server") return e;
74
- let { direction: t, key: n } = b.value;
85
+ let { direction: t, key: n } = S.value;
75
86
  if (!n || t === "none") return e;
76
87
  let r = i.columns.value.find((e) => e.key === n);
77
88
  return e.slice().sort((e, i) => {
78
89
  let a = r?.sortValue ? r.sortValue(e) : e[n], o = r?.sortValue ? r.sortValue(i) : i[n], s = typeof a == "number" && typeof o == "number" ? a - o : String(a ?? "").localeCompare(String(o ?? ""));
79
90
  return t === "asc" ? s : -s;
80
91
  });
81
- }), S = e(() => x.value.length), C = e(() => {
92
+ }), w = e(() => C.value.length), T = e(() => {
82
93
  let e = i.pageSize.value;
83
- return Math.ceil(S.value / (e <= 0 ? 2 ** 53 - 1 : e));
84
- }), w = e(() => C.value ? Math.min(p.value, C.value - 1) : -1), T = e(() => {
94
+ return Math.ceil(w.value / (e <= 0 ? 2 ** 53 - 1 : e));
95
+ }), E = e(() => T.value ? Math.min(p.value, T.value - 1) : -1), D = e(() => {
85
96
  let e = i.pageSize.value;
86
- if (e <= 0) return x.value;
87
- let t = w.value * e;
88
- return x.value.slice(t, t + e);
89
- }), E = e(() => C.value > 0 && w.value < C.value - 1), D = e(() => w.value > 0), O = e(() => i.items.value.filter((e) => f.value.has(i.getRowKey(e))));
97
+ if (e <= 0) return C.value;
98
+ let t = E.value * e;
99
+ return C.value.slice(t, t + e);
100
+ }), O = e(() => T.value > 0 && E.value < T.value - 1), k = e(() => E.value > 0), A = e(() => i.items.value.filter((e) => f.value.has(i.getRowKey(e))));
90
101
  n(m, (e) => {
91
102
  let t = new Set([...c.value].filter((t) => e.has(t))), n = new Map([...l.value].filter(([t]) => e.has(t)));
92
103
  t.size !== c.value.size && (c.value = t), n.size !== l.value.size && (l.value = n);
93
- }, { immediate: !1 }), n(x, () => {
104
+ }, { immediate: !1 }), n(C, () => {
94
105
  p.value = 0;
95
106
  });
96
- let k = (e) => {
107
+ let j = (e) => {
97
108
  f.value = e, i.onSelectionChange?.(e);
98
- }, A = (e, t) => {
109
+ }, M = (e, t) => {
99
110
  let n = new Map(l.value);
100
- t.length ? n.set(e, {
101
- operator: n.get(e)?.operator ?? "contains",
102
- values: new Set(t)
103
- }) : n.delete(e), l.value = n;
104
- }, j = (e, t) => {
111
+ if (t.length) {
112
+ let r = y.value.find((t) => t.key === e)?.operators?.[0]?.value;
113
+ n.set(e, {
114
+ operator: n.get(e)?.operator ?? r ?? "contains",
115
+ values: new Set(t)
116
+ });
117
+ } else n.delete(e);
118
+ l.value = n;
119
+ }, N = (e, t) => {
105
120
  let n = l.value.get(e);
106
- n && (l.value = new Map(l.value).set(e, {
107
- ...n,
108
- operator: t
109
- }));
110
- }, M = (e, t) => {
111
- u.value = t === "none" ? "" : e, d.value = t, p.value = 0, i.onSortChange?.(b.value);
121
+ l.value = new Map(l.value).set(e, {
122
+ operator: t,
123
+ values: n?.values ?? /* @__PURE__ */ new Set()
124
+ });
125
+ }, P = (e, t) => {
126
+ u.value = t === "none" ? "" : e, d.value = t, p.value = 0, i.onSortChange?.(S.value);
112
127
  };
113
128
  return {
114
129
  activateFilterKey: (e) => {
@@ -117,28 +132,28 @@ var r = [
117
132
  clearAllFilters: () => {
118
133
  c.value = /* @__PURE__ */ new Set(), l.value = /* @__PURE__ */ new Map();
119
134
  },
120
- clearSelection: () => k(/* @__PURE__ */ new Set()),
121
- currentPageItems: T,
122
- filterDefs: _,
123
- filteredRows: y,
135
+ clearSelection: () => j(/* @__PURE__ */ new Set()),
136
+ currentPageItems: D,
137
+ filterDefs: y,
138
+ filteredRows: x,
124
139
  filterValues: l,
125
140
  goToPage: (e) => {
126
141
  Number.isFinite(e) && (p.value = Math.max(0, e));
127
142
  },
128
- hasNextPage: E,
129
- hasPrevPage: D,
143
+ hasNextPage: O,
144
+ hasPrevPage: k,
130
145
  hiddenColumns: s,
131
146
  isAllSelected: () => {
132
- let e = T.value;
147
+ let e = D.value;
133
148
  return e.length > 0 && e.every((e) => f.value.has(i.getRowKey(e)));
134
149
  },
135
150
  nextPage: () => {
136
- E.value && (p.value = w.value + 1);
151
+ O.value && (p.value = E.value + 1);
137
152
  },
138
- pageCount: C,
139
- pageIndex: w,
153
+ pageCount: T,
154
+ pageIndex: E,
140
155
  prevPage: () => {
141
- D.value && (p.value = w.value - 1);
156
+ k.value && (p.value = E.value - 1);
142
157
  },
143
158
  removeFilter: (e) => {
144
159
  let t = new Set(c.value);
@@ -146,6 +161,9 @@ var r = [
146
161
  let n = new Map(l.value);
147
162
  n.delete(e), l.value = n;
148
163
  },
164
+ resetColumnVisibility: () => {
165
+ s.value = /* @__PURE__ */ new Set();
166
+ },
149
167
  resetFilters: () => {
150
168
  c.value = /* @__PURE__ */ new Set(), l.value = /* @__PURE__ */ new Map();
151
169
  },
@@ -157,41 +175,46 @@ var r = [
157
175
  selectAll: () => {
158
176
  if (i.selectionMode.value !== "multi") return;
159
177
  let e = new Set(f.value);
160
- if (T.value.every((t) => e.has(i.getRowKey(t)))) for (let t of T.value) e.delete(i.getRowKey(t));
161
- else for (let t of T.value) e.add(i.getRowKey(t));
162
- k(e);
178
+ if (D.value.every((t) => e.has(i.getRowKey(t)))) for (let t of D.value) e.delete(i.getRowKey(t));
179
+ else for (let t of D.value) e.add(i.getRowKey(t));
180
+ j(e);
163
181
  },
164
182
  selectedKeys: e(() => new Set(f.value)),
165
- selectedRows: O,
183
+ selectedRows: A,
166
184
  setActiveFilterKeys: (e) => {
167
185
  let t = new Set(e);
168
186
  c.value = t, l.value = new Map([...l.value].filter(([e]) => t.has(e)));
169
187
  },
170
- setFilter: A,
171
- setFilterOperator: j,
188
+ setFilter: M,
189
+ setFilterOperator: N,
172
190
  setSearchQuery: (e) => {
173
191
  a.value = e;
174
192
  },
175
- setSelection: (e) => k(new Set(e)),
193
+ setSelection: (e) => j(new Set(e)),
176
194
  sortBy: (e) => {
177
195
  let t = u.value === e ? d.value === "asc" ? "desc" : d.value === "desc" ? "none" : "asc" : "asc";
178
- M(t === "none" ? "" : e, t);
196
+ P(t === "none" ? "" : e, t);
179
197
  },
180
- sortState: b,
181
- sortTo: M,
198
+ sortState: S,
199
+ sortTo: P,
182
200
  toggleColumnVisibility: (e) => {
183
201
  let t = new Set(s.value);
184
- t.has(e) ? t.delete(e) : t.add(e), s.value = t;
202
+ if (t.has(e)) t.delete(e);
203
+ else {
204
+ if (h.value.length <= 1) return;
205
+ t.add(e);
206
+ }
207
+ s.value = t;
185
208
  },
186
209
  toggleRow: (e) => {
187
210
  if (i.selectionMode.value === "none") return;
188
211
  let t = new Set(f.value);
189
- t.has(e) ? t.delete(e) : (i.selectionMode.value === "single" && t.clear(), t.add(e)), k(t);
212
+ t.has(e) ? t.delete(e) : (i.selectionMode.value === "single" && t.clear(), t.add(e)), j(t);
190
213
  },
191
214
  toggleSearch: () => {
192
215
  o.value && (a.value = ""), o.value = !o.value;
193
216
  },
194
- totalItems: S,
217
+ totalItems: w,
195
218
  visibleColumns: h
196
219
  };
197
220
  };
@@ -1 +1 @@
1
- {"version":3,"file":"datagrid-model.js","names":[],"sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"sourcesContent":["import { computed, type Readable, signal, watch } from '@vielzeug/ripple';\n\nexport type SortDirection = 'asc' | 'desc' | 'none';\n\nexport type SortState = {\n direction: SortDirection;\n key: string;\n};\n\nexport type DataGridColumn<T = Record<string, unknown>> = {\n align?: 'left' | 'center' | 'right';\n cell?: (item: T) => string;\n headerLabel?: string;\n key: string;\n label: string;\n renderExpanded?: (item: T) => string;\n resizable?: boolean;\n sortable?: boolean;\n sortValue?: (item: T) => number | string;\n width?: string;\n};\n\nexport type SelectionMode = 'multi' | 'none' | 'single';\n\nexport type FilterOption = {\n key: string;\n label: string;\n operators?: { label: string; value: string }[];\n options: { label?: string; value: string }[];\n};\n\nexport type FilterOperator = 'contains' | 'equals' | 'gt' | 'lt';\n\nexport type FilterRule = {\n operator: FilterOperator;\n values: Set<string>;\n};\n\nexport type DataGridView = {\n id: string;\n label: string;\n};\n\nexport type DataGridModelOptions<T = Record<string, unknown>> = {\n clientSide: Readable<boolean>;\n columns: Readable<DataGridColumn<T>[]>;\n filterOptions: Readable<FilterOption[] | undefined>;\n getRowKey: (item: T) => string;\n items: Readable<T[]>;\n onSelectionChange?: (keys: Set<string>) => void;\n onSortChange?: (sort: SortState) => void;\n pageSize: Readable<number>;\n selectionMode: Readable<SelectionMode>;\n sortMode: Readable<'client' | 'server'>;\n};\n\nexport type DataGridModel<T = Record<string, unknown>> = {\n activateFilterKey(key: string): void;\n clearAllFilters(): void;\n clearSelection(): void;\n readonly currentPageItems: Readable<T[]>;\n readonly filterDefs: Readable<FilterOption[]>;\n readonly filteredRows: Readable<T[]>;\n readonly filterValues: Readable<Map<string, FilterRule>>;\n goToPage(index: number): void;\n readonly hasNextPage: Readable<boolean>;\n readonly hasPrevPage: Readable<boolean>;\n readonly hiddenColumns: Readable<Set<string>>;\n isAllSelected(): boolean;\n nextPage(): void;\n readonly pageCount: Readable<number>;\n readonly pageIndex: Readable<number>;\n prevPage(): void;\n removeFilter(key: string): void;\n resetFilters(): void;\n resetSearch(): void;\n readonly searchActive: Readable<boolean>;\n readonly searchQuery: Readable<string>;\n selectAll(): void;\n readonly selectedKeys: Readable<ReadonlySet<string>>;\n readonly selectedRows: Readable<T[]>;\n setActiveFilterKeys(keys: string[]): void;\n setFilter(key: string, values: string[]): void;\n setFilterOperator(key: string, operator: FilterOperator): void;\n setSearchQuery(query: string): void;\n setSelection(keys: Set<string>): void;\n sortBy(key: string): void;\n readonly sortState: Readable<SortState>;\n sortTo(key: string, direction: SortDirection): void;\n toggleColumnVisibility(key: string): void;\n toggleRow(key: string): void;\n toggleSearch(): void;\n readonly totalItems: Readable<number>;\n readonly visibleColumns: Readable<DataGridColumn<T>[]>;\n};\n\nconst DEFAULT_OPERATORS: { label: string; value: FilterOperator }[] = [\n { label: 'Contains', value: 'contains' },\n { label: 'Equals', value: 'equals' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Less than', value: 'lt' },\n];\n\n/**\n * Feature-owned state and transform pipeline for `ore-datagrid`.\n *\n * Rows flow through query, filters, sorting, and pagination in order. Selection\n * and column visibility share the same model so every interactive grid concern\n * has one reactive owner. Source-backed grids retain their server-owned rows by\n * setting `clientSide` to false.\n */\nexport const createDataGridModel = <T extends Record<string, unknown>>(\n options: DataGridModelOptions<T>,\n): DataGridModel<T> => {\n const searchQuery = signal('');\n const searchActive = signal(false);\n const hiddenColumns = signal(new Set<string>());\n const activeFilterKeys = signal(new Set<string>());\n const filterValues = signal(new Map<string, FilterRule>());\n const sortKey = signal('');\n const sortDirection = signal<SortDirection>('none');\n const selectedKeys = signal(new Set<string>());\n const pageIndex = signal(0);\n\n const columnKeys = computed(() => new Set(options.columns.value.map((column) => column.key)));\n const visibleColumns = computed(() => options.columns.value.filter((column) => !hiddenColumns.value.has(column.key)));\n\n const colOptions = computed(() => {\n const externalKeys = new Set((options.filterOptions.value ?? []).map((filter) => filter.key));\n const activeKeys = [...activeFilterKeys.value].filter((key) => !externalKeys.has(key));\n\n if (!activeKeys.length) return new Map<string, { label: string; value: string }[]>();\n\n const derived = new Map<string, { label: string; value: string }[]>();\n\n for (const key of activeKeys) {\n const seen = new Set<string>();\n const values: { label: string; value: string }[] = [];\n\n for (const row of options.items.value) {\n const value = row[key];\n const stringValue = value == null ? '' : String(value);\n\n if (!seen.has(stringValue)) {\n seen.add(stringValue);\n values.push({ label: stringValue || '(empty)', value: stringValue });\n }\n }\n\n derived.set(key, values);\n }\n\n return derived;\n });\n\n const filterDefs = computed<FilterOption[]>(() => {\n const provided = options.filterOptions.value ?? [];\n const providedKeys = new Set(provided.map((filter) => filter.key));\n const derived = [...activeFilterKeys.value]\n .filter((key) => !providedKeys.has(key))\n .map((key) => {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return {\n key,\n label: column?.label ?? key,\n operators: DEFAULT_OPERATORS,\n options: colOptions.value.get(key) ?? [],\n };\n });\n\n return [...provided.map((filter) => ({ ...filter, operators: filter.operators ?? DEFAULT_OPERATORS })), ...derived];\n });\n\n const searchedRows = computed(() => {\n const rows = options.items.value;\n\n if (!options.clientSide.value) return rows;\n\n const query = searchQuery.value.trim().toLowerCase();\n\n if (!query) return rows;\n\n return rows.filter((row) =>\n Object.values(row).some((value) => value != null && String(value).toLowerCase().includes(query)),\n );\n });\n\n const filteredRows = computed(() => {\n const rows = searchedRows.value;\n\n if (!options.clientSide.value || !filterValues.value.size) return rows;\n\n return rows.filter((row) => {\n for (const [key, rule] of filterValues.value) {\n if (!rule.values.size || !columnKeys.value.has(key)) continue;\n\n const value = row[key];\n const stringValue = value == null ? '' : String(value);\n\n if (rule.operator === 'equals' && !rule.values.has(stringValue)) return false;\n\n if (\n rule.operator === 'contains' &&\n ![...rule.values].some((target) => stringValue.toLowerCase().includes(target.toLowerCase()))\n ) {\n return false;\n }\n\n if (rule.operator === 'gt' || rule.operator === 'lt') {\n const numericValue = parseFloat(stringValue);\n const targets = [...rule.values].map(parseFloat).filter((target) => !Number.isNaN(target));\n\n if (!targets.length) continue;\n\n if (rule.operator === 'gt' && !targets.some((target) => numericValue > target)) return false;\n\n if (rule.operator === 'lt' && !targets.some((target) => numericValue < target)) return false;\n }\n }\n\n return true;\n });\n });\n\n const sortState = computed<SortState>(() => ({ direction: sortDirection.value, key: sortKey.value }));\n const sortedRows = computed(() => {\n const rows = filteredRows.value;\n\n if (!options.clientSide.value || options.sortMode.value === 'server') return rows;\n\n const { direction, key } = sortState.value;\n\n if (!key || direction === 'none') return rows;\n\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return rows.slice().sort((a, b) => {\n const aValue = column?.sortValue ? column.sortValue(a) : (a[key] as number | string);\n const bValue = column?.sortValue ? column.sortValue(b) : (b[key] as number | string);\n const comparison =\n typeof aValue === 'number' && typeof bValue === 'number'\n ? aValue - bValue\n : String(aValue ?? '').localeCompare(String(bValue ?? ''));\n\n return direction === 'asc' ? comparison : -comparison;\n });\n });\n\n const totalItems = computed(() => sortedRows.value.length);\n const pageCount = computed(() => {\n const size = options.pageSize.value;\n\n return Math.ceil(totalItems.value / (size <= 0 ? Number.MAX_SAFE_INTEGER : size));\n });\n const safePageIndex = computed(() => (pageCount.value ? Math.min(pageIndex.value, pageCount.value - 1) : -1));\n const currentPageItems = computed(() => {\n const size = options.pageSize.value;\n\n if (size <= 0) return sortedRows.value;\n\n const start = safePageIndex.value * size;\n\n return sortedRows.value.slice(start, start + size);\n });\n const hasNextPage = computed(() => pageCount.value > 0 && safePageIndex.value < pageCount.value - 1);\n const hasPrevPage = computed(() => safePageIndex.value > 0);\n const selectedRows = computed(() =>\n options.items.value.filter((item) => selectedKeys.value.has(options.getRowKey(item))),\n );\n\n watch(\n columnKeys,\n (keys) => {\n const nextActiveKeys = new Set([...activeFilterKeys.value].filter((key) => keys.has(key)));\n const nextValues = new Map([...filterValues.value].filter(([key]) => keys.has(key)));\n\n if (nextActiveKeys.size !== activeFilterKeys.value.size) activeFilterKeys.value = nextActiveKeys;\n\n if (nextValues.size !== filterValues.value.size) filterValues.value = nextValues;\n },\n { immediate: false },\n );\n\n watch(sortedRows, () => {\n pageIndex.value = 0;\n });\n\n const commitSelection = (next: Set<string>): void => {\n selectedKeys.value = next;\n options.onSelectionChange?.(next);\n };\n\n const setFilter = (key: string, values: string[]): void => {\n const next = new Map(filterValues.value);\n\n if (values.length) {\n next.set(key, { operator: next.get(key)?.operator ?? 'contains', values: new Set(values) });\n } else {\n next.delete(key);\n }\n\n filterValues.value = next;\n };\n\n const setFilterOperator = (key: string, operator: FilterOperator): void => {\n const rule = filterValues.value.get(key);\n\n if (rule) filterValues.value = new Map(filterValues.value).set(key, { ...rule, operator });\n };\n\n const sortTo = (key: string, direction: SortDirection): void => {\n sortKey.value = direction === 'none' ? '' : key;\n sortDirection.value = direction;\n pageIndex.value = 0;\n options.onSortChange?.(sortState.value);\n };\n\n return {\n activateFilterKey: (key) => {\n if (!activeFilterKeys.value.has(key)) activeFilterKeys.value = new Set([...activeFilterKeys.value, key]);\n },\n clearAllFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n clearSelection: () => commitSelection(new Set()),\n currentPageItems,\n filterDefs,\n filteredRows,\n filterValues,\n goToPage: (index) => {\n if (Number.isFinite(index)) pageIndex.value = Math.max(0, index);\n },\n hasNextPage,\n hasPrevPage,\n hiddenColumns,\n isAllSelected: () => {\n const page = currentPageItems.value;\n\n return page.length > 0 && page.every((item) => selectedKeys.value.has(options.getRowKey(item)));\n },\n nextPage: () => {\n if (hasNextPage.value) pageIndex.value = safePageIndex.value + 1;\n },\n pageCount,\n pageIndex: safePageIndex,\n prevPage: () => {\n if (hasPrevPage.value) pageIndex.value = safePageIndex.value - 1;\n },\n removeFilter: (key) => {\n const nextActiveKeys = new Set(activeFilterKeys.value);\n\n nextActiveKeys.delete(key);\n activeFilterKeys.value = nextActiveKeys;\n\n const nextValues = new Map(filterValues.value);\n\n nextValues.delete(key);\n filterValues.value = nextValues;\n },\n resetFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n resetSearch: () => {\n searchQuery.value = '';\n searchActive.value = false;\n },\n searchActive,\n searchQuery,\n selectAll: () => {\n if (options.selectionMode.value !== 'multi') return;\n\n const next = new Set(selectedKeys.value);\n\n if (currentPageItems.value.every((item) => next.has(options.getRowKey(item)))) {\n for (const item of currentPageItems.value) next.delete(options.getRowKey(item));\n } else {\n for (const item of currentPageItems.value) next.add(options.getRowKey(item));\n }\n\n commitSelection(next);\n },\n selectedKeys: computed(() => new Set(selectedKeys.value)),\n selectedRows,\n setActiveFilterKeys: (keys) => {\n const nextActiveKeys = new Set(keys);\n\n activeFilterKeys.value = nextActiveKeys;\n filterValues.value = new Map([...filterValues.value].filter(([key]) => nextActiveKeys.has(key)));\n },\n setFilter,\n setFilterOperator,\n setSearchQuery: (query) => {\n searchQuery.value = query;\n },\n setSelection: (keys) => commitSelection(new Set(keys)),\n sortBy: (key) => {\n const nextDirection =\n sortKey.value !== key\n ? 'asc'\n : sortDirection.value === 'asc'\n ? 'desc'\n : sortDirection.value === 'desc'\n ? 'none'\n : 'asc';\n\n sortTo(nextDirection === 'none' ? '' : key, nextDirection);\n },\n sortState,\n sortTo,\n toggleColumnVisibility: (key) => {\n const next = new Set(hiddenColumns.value);\n\n if (next.has(key)) next.delete(key);\n else next.add(key);\n\n hiddenColumns.value = next;\n },\n toggleRow: (key) => {\n if (options.selectionMode.value === 'none') return;\n\n const next = new Set(selectedKeys.value);\n\n if (next.has(key)) next.delete(key);\n else {\n if (options.selectionMode.value === 'single') next.clear();\n\n next.add(key);\n }\n\n commitSelection(next);\n },\n toggleSearch: () => {\n if (searchActive.value) searchQuery.value = '';\n\n searchActive.value = !searchActive.value;\n },\n totalItems,\n visibleColumns,\n };\n};\n"],"mappings":";;AAgGA,IAAM,IAAgE;CACpE;EAAE,OAAO;EAAY,OAAO;CAAW;CACvC;EAAE,OAAO;EAAU,OAAO;CAAS;CACnC;EAAE,OAAO;EAAgB,OAAO;CAAK;CACrC;EAAE,OAAO;EAAa,OAAO;CAAK;AACpC,GAUa,KACX,MACqB;CACrB,IAAM,IAAc,EAAO,EAAE,GACvB,IAAe,EAAO,EAAK,GAC3B,IAAgB,kBAAO,IAAI,IAAY,CAAC,GACxC,IAAmB,kBAAO,IAAI,IAAY,CAAC,GAC3C,IAAe,kBAAO,IAAI,IAAwB,CAAC,GACnD,IAAU,EAAO,EAAE,GACnB,IAAgB,EAAsB,MAAM,GAC5C,IAAe,kBAAO,IAAI,IAAY,CAAC,GACvC,IAAY,EAAO,CAAC,GAEpB,IAAa,QAAe,IAAI,IAAI,EAAQ,QAAQ,MAAM,KAAK,MAAW,EAAO,GAAG,CAAC,CAAC,GACtF,IAAiB,QAAe,EAAQ,QAAQ,MAAM,QAAQ,MAAW,CAAC,EAAc,MAAM,IAAI,EAAO,GAAG,CAAC,CAAC,GAE9G,IAAa,QAAe;EAChC,IAAM,IAAe,IAAI,KAAK,EAAQ,cAAc,SAAS,CAAC,EAAA,CAAG,KAAK,MAAW,EAAO,GAAG,CAAC,GACtF,IAAa,CAAC,GAAG,EAAiB,KAAK,CAAC,CAAC,QAAQ,MAAQ,CAAC,EAAa,IAAI,CAAG,CAAC;EAErF,IAAI,CAAC,EAAW,QAAQ,uBAAO,IAAI,IAAgD;EAEnF,IAAM,oBAAU,IAAI,IAAgD;EAEpE,KAAK,IAAM,KAAO,GAAY;GAC5B,IAAM,oBAAO,IAAI,IAAY,GACvB,IAA6C,CAAC;GAEpD,KAAK,IAAM,KAAO,EAAQ,MAAM,OAAO;IACrC,IAAM,IAAQ,EAAI,IACZ,IAAc,KAAS,OAAO,KAAK,OAAO,CAAK;IAErD,AAAK,EAAK,IAAI,CAAW,MACvB,EAAK,IAAI,CAAW,GACpB,EAAO,KAAK;KAAE,OAAO,KAAe;KAAW,OAAO;IAAY,CAAC;GAEvE;GAEA,EAAQ,IAAI,GAAK,CAAM;EACzB;EAEA,OAAO;CACT,CAAC,GAEK,IAAa,QAA+B;EAChD,IAAM,IAAW,EAAQ,cAAc,SAAS,CAAC,GAC3C,IAAe,IAAI,IAAI,EAAS,KAAK,MAAW,EAAO,GAAG,CAAC,GAC3D,IAAU,CAAC,GAAG,EAAiB,KAAK,CAAC,CACxC,QAAQ,MAAQ,CAAC,EAAa,IAAI,CAAG,CAAC,CAAC,CACvC,KAAK,OAGG;GACL;GACA,OAJa,EAAQ,QAAQ,MAAM,MAAM,MAAc,EAAU,QAAQ,CAIlE,CAAA,EAAQ,SAAS;GACxB,WAAW;GACX,SAAS,EAAW,MAAM,IAAI,CAAG,KAAK,CAAC;EACzC,EACD;EAEH,OAAO,CAAC,GAAG,EAAS,KAAK,OAAY;GAAE,GAAG;GAAQ,WAAW,EAAO,aAAa;EAAkB,EAAE,GAAG,GAAG,CAAO;CACpH,CAAC,GAEK,IAAe,QAAe;EAClC,IAAM,IAAO,EAAQ,MAAM;EAE3B,IAAI,CAAC,EAAQ,WAAW,OAAO,OAAO;EAEtC,IAAM,IAAQ,EAAY,MAAM,KAAK,CAAC,CAAC,YAAY;EAInD,OAFK,IAEE,EAAK,QAAQ,MAClB,OAAO,OAAO,CAAG,CAAC,CAAC,MAAM,MAAU,KAAS,QAAQ,OAAO,CAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAK,CAAC,CACjG,IAJmB;CAKrB,CAAC,GAEK,IAAe,QAAe;EAClC,IAAM,IAAO,EAAa;EAI1B,OAFI,CAAC,EAAQ,WAAW,SAAS,CAAC,EAAa,MAAM,OAAa,IAE3D,EAAK,QAAQ,MAAQ;GAC1B,KAAK,IAAM,CAAC,GAAK,MAAS,EAAa,OAAO;IAC5C,IAAI,CAAC,EAAK,OAAO,QAAQ,CAAC,EAAW,MAAM,IAAI,CAAG,GAAG;IAErD,IAAM,IAAQ,EAAI,IACZ,IAAc,KAAS,OAAO,KAAK,OAAO,CAAK;IAIrD,IAFI,EAAK,aAAa,YAAY,CAAC,EAAK,OAAO,IAAI,CAAW,KAG5D,EAAK,aAAa,cAClB,CAAC,CAAC,GAAG,EAAK,MAAM,CAAC,CAAC,MAAM,MAAW,EAAY,YAAY,CAAC,CAAC,SAAS,EAAO,YAAY,CAAC,CAAC,GAE3F,OAAO;IAGT,IAAI,EAAK,aAAa,QAAQ,EAAK,aAAa,MAAM;KACpD,IAAM,IAAe,WAAW,CAAW,GACrC,IAAU,CAAC,GAAG,EAAK,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,QAAQ,MAAW,CAAC,OAAO,MAAM,CAAM,CAAC;KAEzF,IAAI,CAAC,EAAQ,QAAQ;KAIrB,IAFI,EAAK,aAAa,QAAQ,CAAC,EAAQ,MAAM,MAAW,IAAe,CAAM,KAEzE,EAAK,aAAa,QAAQ,CAAC,EAAQ,MAAM,MAAW,IAAe,CAAM,GAAG,OAAO;IACzF;GACF;GAEA,OAAO;EACT,CAAC;CACH,CAAC,GAEK,IAAY,SAA2B;EAAE,WAAW,EAAc;EAAO,KAAK,EAAQ;CAAM,EAAE,GAC9F,IAAa,QAAe;EAChC,IAAM,IAAO,EAAa;EAE1B,IAAI,CAAC,EAAQ,WAAW,SAAS,EAAQ,SAAS,UAAU,UAAU,OAAO;EAE7E,IAAM,EAAE,cAAW,WAAQ,EAAU;EAErC,IAAI,CAAC,KAAO,MAAc,QAAQ,OAAO;EAEzC,IAAM,IAAS,EAAQ,QAAQ,MAAM,MAAM,MAAc,EAAU,QAAQ,CAAG;EAE9E,OAAO,EAAK,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM;GACjC,IAAM,IAAS,GAAQ,YAAY,EAAO,UAAU,CAAC,IAAK,EAAE,IACtD,IAAS,GAAQ,YAAY,EAAO,UAAU,CAAC,IAAK,EAAE,IACtD,IACJ,OAAO,KAAW,YAAY,OAAO,KAAW,WAC5C,IAAS,IACT,OAAO,KAAU,EAAE,CAAC,CAAC,cAAc,OAAO,KAAU,EAAE,CAAC;GAE7D,OAAO,MAAc,QAAQ,IAAa,CAAC;EAC7C,CAAC;CACH,CAAC,GAEK,IAAa,QAAe,EAAW,MAAM,MAAM,GACnD,IAAY,QAAe;EAC/B,IAAM,IAAO,EAAQ,SAAS;EAE9B,OAAO,KAAK,KAAK,EAAW,SAAS,KAAQ,kBAA8B,EAAK;CAClF,CAAC,GACK,IAAgB,QAAgB,EAAU,QAAQ,KAAK,IAAI,EAAU,OAAO,EAAU,QAAQ,CAAC,IAAI,EAAG,GACtG,IAAmB,QAAe;EACtC,IAAM,IAAO,EAAQ,SAAS;EAE9B,IAAI,KAAQ,GAAG,OAAO,EAAW;EAEjC,IAAM,IAAQ,EAAc,QAAQ;EAEpC,OAAO,EAAW,MAAM,MAAM,GAAO,IAAQ,CAAI;CACnD,CAAC,GACK,IAAc,QAAe,EAAU,QAAQ,KAAK,EAAc,QAAQ,EAAU,QAAQ,CAAC,GAC7F,IAAc,QAAe,EAAc,QAAQ,CAAC,GACpD,IAAe,QACnB,EAAQ,MAAM,MAAM,QAAQ,MAAS,EAAa,MAAM,IAAI,EAAQ,UAAU,CAAI,CAAC,CAAC,CACtF;CAeA,AAbA,EACE,IACC,MAAS;EACR,IAAM,IAAiB,IAAI,IAAI,CAAC,GAAG,EAAiB,KAAK,CAAC,CAAC,QAAQ,MAAQ,EAAK,IAAI,CAAG,CAAC,CAAC,GACnF,IAAa,IAAI,IAAI,CAAC,GAAG,EAAa,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAS,EAAK,IAAI,CAAG,CAAC,CAAC;EAInF,AAFI,EAAe,SAAS,EAAiB,MAAM,SAAM,EAAiB,QAAQ,IAE9E,EAAW,SAAS,EAAa,MAAM,SAAM,EAAa,QAAQ;CACxE,GACA,EAAE,WAAW,GAAM,CACrB,GAEA,EAAM,SAAkB;EACtB,EAAU,QAAQ;CACpB,CAAC;CAED,IAAM,KAAmB,MAA4B;EAEnD,AADA,EAAa,QAAQ,GACrB,EAAQ,oBAAoB,CAAI;CAClC,GAEM,KAAa,GAAa,MAA2B;EACzD,IAAM,IAAO,IAAI,IAAI,EAAa,KAAK;EAQvC,AANI,EAAO,SACT,EAAK,IAAI,GAAK;GAAE,UAAU,EAAK,IAAI,CAAG,CAAC,EAAE,YAAY;GAAY,QAAQ,IAAI,IAAI,CAAM;EAAE,CAAC,IAE1F,EAAK,OAAO,CAAG,GAGjB,EAAa,QAAQ;CACvB,GAEM,KAAqB,GAAa,MAAmC;EACzE,IAAM,IAAO,EAAa,MAAM,IAAI,CAAG;EAEvC,AAAI,MAAM,EAAa,QAAQ,IAAI,IAAI,EAAa,KAAK,CAAC,CAAC,IAAI,GAAK;GAAE,GAAG;GAAM;EAAS,CAAC;CAC3F,GAEM,KAAU,GAAa,MAAmC;EAI9D,AAHA,EAAQ,QAAQ,MAAc,SAAS,KAAK,GAC5C,EAAc,QAAQ,GACtB,EAAU,QAAQ,GAClB,EAAQ,eAAe,EAAU,KAAK;CACxC;CAEA,OAAO;EACL,oBAAoB,MAAQ;GAC1B,AAAK,EAAiB,MAAM,IAAI,CAAG,MAAG,EAAiB,wBAAQ,IAAI,IAAI,CAAC,GAAG,EAAiB,OAAO,CAAG,CAAC;EACzG;EACA,uBAAuB;GAErB,AADA,EAAiB,wBAAQ,IAAI,IAAI,GACjC,EAAa,wBAAQ,IAAI,IAAI;EAC/B;EACA,sBAAsB,kBAAgB,IAAI,IAAI,CAAC;EAC/C;EACA;EACA;EACA;EACA,WAAW,MAAU;GACnB,AAAI,OAAO,SAAS,CAAK,MAAG,EAAU,QAAQ,KAAK,IAAI,GAAG,CAAK;EACjE;EACA;EACA;EACA;EACA,qBAAqB;GACnB,IAAM,IAAO,EAAiB;GAE9B,OAAO,EAAK,SAAS,KAAK,EAAK,OAAO,MAAS,EAAa,MAAM,IAAI,EAAQ,UAAU,CAAI,CAAC,CAAC;EAChG;EACA,gBAAgB;GACd,AAAI,EAAY,UAAO,EAAU,QAAQ,EAAc,QAAQ;EACjE;EACA;EACA,WAAW;EACX,gBAAgB;GACd,AAAI,EAAY,UAAO,EAAU,QAAQ,EAAc,QAAQ;EACjE;EACA,eAAe,MAAQ;GACrB,IAAM,IAAiB,IAAI,IAAI,EAAiB,KAAK;GAGrD,AADA,EAAe,OAAO,CAAG,GACzB,EAAiB,QAAQ;GAEzB,IAAM,IAAa,IAAI,IAAI,EAAa,KAAK;GAG7C,AADA,EAAW,OAAO,CAAG,GACrB,EAAa,QAAQ;EACvB;EACA,oBAAoB;GAElB,AADA,EAAiB,wBAAQ,IAAI,IAAI,GACjC,EAAa,wBAAQ,IAAI,IAAI;EAC/B;EACA,mBAAmB;GAEjB,AADA,EAAY,QAAQ,IACpB,EAAa,QAAQ;EACvB;EACA;EACA;EACA,iBAAiB;GACf,IAAI,EAAQ,cAAc,UAAU,SAAS;GAE7C,IAAM,IAAO,IAAI,IAAI,EAAa,KAAK;GAEvC,IAAI,EAAiB,MAAM,OAAO,MAAS,EAAK,IAAI,EAAQ,UAAU,CAAI,CAAC,CAAC,GAC1E,KAAK,IAAM,KAAQ,EAAiB,OAAO,EAAK,OAAO,EAAQ,UAAU,CAAI,CAAC;QAE9E,KAAK,IAAM,KAAQ,EAAiB,OAAO,EAAK,IAAI,EAAQ,UAAU,CAAI,CAAC;GAG7E,EAAgB,CAAI;EACtB;EACA,cAAc,QAAe,IAAI,IAAI,EAAa,KAAK,CAAC;EACxD;EACA,sBAAsB,MAAS;GAC7B,IAAM,IAAiB,IAAI,IAAI,CAAI;GAGnC,AADA,EAAiB,QAAQ,GACzB,EAAa,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAa,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAS,EAAe,IAAI,CAAG,CAAC,CAAC;EACjG;EACA;EACA;EACA,iBAAiB,MAAU;GACzB,EAAY,QAAQ;EACtB;EACA,eAAe,MAAS,EAAgB,IAAI,IAAI,CAAI,CAAC;EACrD,SAAS,MAAQ;GACf,IAAM,IACJ,EAAQ,UAAU,IAEd,EAAc,UAAU,QACtB,SACA,EAAc,UAAU,SACtB,SACA,QALJ;GAON,EAAO,MAAkB,SAAS,KAAK,GAAK,CAAa;EAC3D;EACA;EACA;EACA,yBAAyB,MAAQ;GAC/B,IAAM,IAAO,IAAI,IAAI,EAAc,KAAK;GAKxC,AAHI,EAAK,IAAI,CAAG,IAAG,EAAK,OAAO,CAAG,IAC7B,EAAK,IAAI,CAAG,GAEjB,EAAc,QAAQ;EACxB;EACA,YAAY,MAAQ;GAClB,IAAI,EAAQ,cAAc,UAAU,QAAQ;GAE5C,IAAM,IAAO,IAAI,IAAI,EAAa,KAAK;GASvC,AAPI,EAAK,IAAI,CAAG,IAAG,EAAK,OAAO,CAAG,KAE5B,EAAQ,cAAc,UAAU,YAAU,EAAK,MAAM,GAEzD,EAAK,IAAI,CAAG,IAGd,EAAgB,CAAI;EACtB;EACA,oBAAoB;GAGlB,AAFI,EAAa,UAAO,EAAY,QAAQ,KAE5C,EAAa,QAAQ,CAAC,EAAa;EACrC;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"datagrid-model.js","names":[],"sources":["../../../src/inputs/datagrid/datagrid-model.ts"],"sourcesContent":["import type { HTMLResult } from '@vielzeug/ore';\nimport { computed, type Readable, signal, watch } from '@vielzeug/ripple';\n\nexport type SortDirection = 'asc' | 'desc' | 'none';\n\nexport type SortState = {\n direction: SortDirection;\n key: string;\n};\n\nexport type DataGridColumn<T = Record<string, unknown>> = {\n align?: 'left' | 'center' | 'right';\n cell?: (item: T) => string;\n filterLabel?: (item: T) => string;\n filterValue?: (item: T) => number | string;\n headerLabel?: string;\n key: string;\n label: string;\n /** Render trusted structured cell content with Ore's safe template result. */\n renderCell?: (item: T) => HTMLResult;\n renderExpanded?: (item: T) => string;\n resizable?: boolean;\n sortable?: boolean;\n sortType?: 'number' | 'text';\n sortValue?: (item: T) => number | string;\n width?: string;\n};\n\nexport type SelectionMode = 'multi' | 'none' | 'single';\n\nexport type FilterOption = {\n key: string;\n label: string;\n operators?: { label: string; value: FilterOperator }[];\n options: { label?: string; value: string }[];\n};\n\nexport type FilterOperator = 'contains' | 'equals' | 'gt' | 'lt';\n\nexport type FilterRule = {\n operator: FilterOperator;\n values: Set<string>;\n};\n\nexport type DataGridView<T = Record<string, unknown>> = {\n filter?: (item: T) => boolean;\n id: string;\n label: string;\n};\n\nexport type DataGridModelOptions<T = Record<string, unknown>> = {\n activeView?: Readable<DataGridView<T> | undefined>;\n clientSide: Readable<boolean>;\n columns: Readable<DataGridColumn<T>[]>;\n emptyValueLabel?: Readable<string>;\n filterOperators?: Readable<{ label: string; value: FilterOperator }[]>;\n filterOptions: Readable<FilterOption[] | undefined>;\n getRowKey: (item: T) => string;\n items: Readable<T[]>;\n onSelectionChange?: (keys: Set<string>) => void;\n onSortChange?: (sort: SortState) => void;\n pageSize: Readable<number>;\n selectionMode: Readable<SelectionMode>;\n sortMode: Readable<'client' | 'server'>;\n};\n\nexport type DataGridModel<T = Record<string, unknown>> = {\n activateFilterKey(key: string): void;\n clearAllFilters(): void;\n clearSelection(): void;\n readonly currentPageItems: Readable<T[]>;\n readonly filterDefs: Readable<FilterOption[]>;\n readonly filteredRows: Readable<T[]>;\n readonly filterValues: Readable<Map<string, FilterRule>>;\n goToPage(index: number): void;\n readonly hasNextPage: Readable<boolean>;\n readonly hasPrevPage: Readable<boolean>;\n readonly hiddenColumns: Readable<Set<string>>;\n isAllSelected(): boolean;\n nextPage(): void;\n readonly pageCount: Readable<number>;\n readonly pageIndex: Readable<number>;\n prevPage(): void;\n removeFilter(key: string): void;\n resetColumnVisibility(): void;\n resetFilters(): void;\n resetSearch(): void;\n readonly searchActive: Readable<boolean>;\n readonly searchQuery: Readable<string>;\n selectAll(): void;\n readonly selectedKeys: Readable<ReadonlySet<string>>;\n readonly selectedRows: Readable<T[]>;\n setActiveFilterKeys(keys: string[]): void;\n setFilter(key: string, values: string[]): void;\n setFilterOperator(key: string, operator: FilterOperator): void;\n setSearchQuery(query: string): void;\n setSelection(keys: Set<string>): void;\n sortBy(key: string): void;\n readonly sortState: Readable<SortState>;\n sortTo(key: string, direction: SortDirection): void;\n toggleColumnVisibility(key: string): void;\n toggleRow(key: string): void;\n toggleSearch(): void;\n readonly totalItems: Readable<number>;\n readonly visibleColumns: Readable<DataGridColumn<T>[]>;\n};\n\nconst DEFAULT_OPERATORS: { label: string; value: FilterOperator }[] = [\n { label: 'Contains', value: 'contains' },\n { label: 'Equals', value: 'equals' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Less than', value: 'lt' },\n];\n\n/**\n * Feature-owned state and transform pipeline for `ore-datagrid`.\n *\n * Rows flow through the active view, query, filters, sorting, and pagination in order. Selection\n * and column visibility share the same model so every interactive grid concern\n * has one reactive owner. Source-backed grids retain their server-owned rows by\n * setting `clientSide` to false.\n */\nexport const createDataGridModel = <T extends Record<string, unknown>>(\n options: DataGridModelOptions<T>,\n): DataGridModel<T> => {\n const searchQuery = signal('');\n const searchActive = signal(false);\n const hiddenColumns = signal(new Set<string>());\n const activeFilterKeys = signal(new Set<string>());\n const filterValues = signal(new Map<string, FilterRule>());\n const sortKey = signal('');\n const sortDirection = signal<SortDirection>('none');\n const selectedKeys = signal(new Set<string>());\n const pageIndex = signal(0);\n\n const filterKeys = computed(\n () =>\n new Set([\n ...options.columns.value.map((column) => column.key),\n ...(options.filterOptions.value ?? []).map((filter) => filter.key),\n ]),\n );\n const visibleColumns = computed(() => options.columns.value.filter((column) => !hiddenColumns.value.has(column.key)));\n const viewedRows = computed(() => {\n const rows = options.items.value;\n\n if (!options.clientSide.value) return rows;\n\n const filter = options.activeView?.value?.filter;\n return filter ? rows.filter(filter) : rows;\n });\n\n const resolveFilterValue = (row: T, key: string): unknown => {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n return column?.filterValue ? column.filterValue(row) : row[key];\n };\n\n const colOptions = computed(() => {\n const externalKeys = new Set((options.filterOptions.value ?? []).map((filter) => filter.key));\n const activeKeys = [...activeFilterKeys.value].filter((key) => !externalKeys.has(key));\n\n if (!activeKeys.length) return new Map<string, { label: string; value: string }[]>();\n\n const derived = new Map<string, { label: string; value: string }[]>();\n\n for (const key of activeKeys) {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n const seen = new Set<string>();\n const values: { label: string; value: string }[] = [];\n\n for (const row of viewedRows.value) {\n const value = resolveFilterValue(row, key);\n const stringValue = value == null ? '' : String(value);\n const displayValue = column?.filterLabel?.(row) ?? column?.cell?.(row) ?? stringValue;\n\n if (!seen.has(stringValue)) {\n seen.add(stringValue);\n values.push({ label: displayValue || options.emptyValueLabel?.value || '(empty)', value: stringValue });\n }\n }\n\n derived.set(key, values);\n }\n\n return derived;\n });\n\n const filterDefs = computed<FilterOption[]>(() => {\n const provided = options.filterOptions.value ?? [];\n const providedKeys = new Set(provided.map((filter) => filter.key));\n const activeProvided = provided.filter((filter) => activeFilterKeys.value.has(filter.key));\n const derived = [...activeFilterKeys.value]\n .filter((key) => !providedKeys.has(key))\n .map((key) => {\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return {\n key,\n label: column?.label ?? key,\n operators: options.filterOperators?.value ?? DEFAULT_OPERATORS,\n options: colOptions.value.get(key) ?? [],\n };\n });\n\n return [\n ...activeProvided.map((filter) => ({\n ...filter,\n operators: filter.operators ?? options.filterOperators?.value ?? DEFAULT_OPERATORS,\n })),\n ...derived,\n ];\n });\n\n const searchedRows = computed(() => {\n const rows = viewedRows.value;\n\n if (!options.clientSide.value) return rows;\n\n const query = searchQuery.value.trim().toLowerCase();\n\n if (!query) return rows;\n\n return rows.filter((row) =>\n options.columns.value.some((column) => {\n const value = column.cell ? column.cell(row) : resolveFilterValue(row, column.key);\n return value != null && String(value).toLowerCase().includes(query);\n }),\n );\n });\n\n const filteredRows = computed(() => {\n const rows = searchedRows.value;\n\n if (!options.clientSide.value || !filterValues.value.size) return rows;\n\n return rows.filter((row) => {\n for (const [key, rule] of filterValues.value) {\n if (!rule.values.size || !filterKeys.value.has(key)) continue;\n\n const value = resolveFilterValue(row, key);\n const stringValue = value == null ? '' : String(value);\n\n if (rule.operator === 'equals' && !rule.values.has(stringValue)) return false;\n\n if (\n rule.operator === 'contains' &&\n ![...rule.values].some((target) => stringValue.toLowerCase().includes(target.toLowerCase()))\n ) {\n return false;\n }\n\n if (rule.operator === 'gt' || rule.operator === 'lt') {\n const numericValue = parseFloat(stringValue);\n const targets = [...rule.values].map(parseFloat).filter((target) => !Number.isNaN(target));\n\n if (!targets.length) continue;\n\n if (rule.operator === 'gt' && !targets.some((target) => numericValue > target)) return false;\n\n if (rule.operator === 'lt' && !targets.some((target) => numericValue < target)) return false;\n }\n }\n\n return true;\n });\n });\n\n const sortState = computed<SortState>(() => ({ direction: sortDirection.value, key: sortKey.value }));\n const sortedRows = computed(() => {\n const rows = filteredRows.value;\n\n if (!options.clientSide.value || options.sortMode.value === 'server') return rows;\n\n const { direction, key } = sortState.value;\n\n if (!key || direction === 'none') return rows;\n\n const column = options.columns.value.find((candidate) => candidate.key === key);\n\n return rows.slice().sort((a, b) => {\n const aValue = column?.sortValue ? column.sortValue(a) : (a[key] as number | string);\n const bValue = column?.sortValue ? column.sortValue(b) : (b[key] as number | string);\n const comparison =\n typeof aValue === 'number' && typeof bValue === 'number'\n ? aValue - bValue\n : String(aValue ?? '').localeCompare(String(bValue ?? ''));\n\n return direction === 'asc' ? comparison : -comparison;\n });\n });\n\n const totalItems = computed(() => sortedRows.value.length);\n const pageCount = computed(() => {\n const size = options.pageSize.value;\n\n return Math.ceil(totalItems.value / (size <= 0 ? Number.MAX_SAFE_INTEGER : size));\n });\n const safePageIndex = computed(() => (pageCount.value ? Math.min(pageIndex.value, pageCount.value - 1) : -1));\n const currentPageItems = computed(() => {\n const size = options.pageSize.value;\n\n if (size <= 0) return sortedRows.value;\n\n const start = safePageIndex.value * size;\n\n return sortedRows.value.slice(start, start + size);\n });\n const hasNextPage = computed(() => pageCount.value > 0 && safePageIndex.value < pageCount.value - 1);\n const hasPrevPage = computed(() => safePageIndex.value > 0);\n const selectedRows = computed(() =>\n options.items.value.filter((item) => selectedKeys.value.has(options.getRowKey(item))),\n );\n\n watch(\n filterKeys,\n (keys) => {\n const nextActiveKeys = new Set([...activeFilterKeys.value].filter((key) => keys.has(key)));\n const nextValues = new Map([...filterValues.value].filter(([key]) => keys.has(key)));\n\n if (nextActiveKeys.size !== activeFilterKeys.value.size) activeFilterKeys.value = nextActiveKeys;\n\n if (nextValues.size !== filterValues.value.size) filterValues.value = nextValues;\n },\n { immediate: false },\n );\n\n watch(sortedRows, () => {\n pageIndex.value = 0;\n });\n\n const commitSelection = (next: Set<string>): void => {\n selectedKeys.value = next;\n options.onSelectionChange?.(next);\n };\n\n const setFilter = (key: string, values: string[]): void => {\n const next = new Map(filterValues.value);\n\n if (values.length) {\n const defaultOperator = filterDefs.value.find((filter) => filter.key === key)?.operators?.[0]?.value;\n next.set(key, { operator: next.get(key)?.operator ?? defaultOperator ?? 'contains', values: new Set(values) });\n } else {\n next.delete(key);\n }\n\n filterValues.value = next;\n };\n\n const setFilterOperator = (key: string, operator: FilterOperator): void => {\n const rule = filterValues.value.get(key);\n filterValues.value = new Map(filterValues.value).set(key, {\n operator,\n values: rule?.values ?? new Set(),\n });\n };\n\n const sortTo = (key: string, direction: SortDirection): void => {\n sortKey.value = direction === 'none' ? '' : key;\n sortDirection.value = direction;\n pageIndex.value = 0;\n options.onSortChange?.(sortState.value);\n };\n\n return {\n activateFilterKey: (key) => {\n if (!activeFilterKeys.value.has(key)) activeFilterKeys.value = new Set([...activeFilterKeys.value, key]);\n },\n clearAllFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n clearSelection: () => commitSelection(new Set()),\n currentPageItems,\n filterDefs,\n filteredRows,\n filterValues,\n goToPage: (index) => {\n if (Number.isFinite(index)) pageIndex.value = Math.max(0, index);\n },\n hasNextPage,\n hasPrevPage,\n hiddenColumns,\n isAllSelected: () => {\n const page = currentPageItems.value;\n\n return page.length > 0 && page.every((item) => selectedKeys.value.has(options.getRowKey(item)));\n },\n nextPage: () => {\n if (hasNextPage.value) pageIndex.value = safePageIndex.value + 1;\n },\n pageCount,\n pageIndex: safePageIndex,\n prevPage: () => {\n if (hasPrevPage.value) pageIndex.value = safePageIndex.value - 1;\n },\n removeFilter: (key) => {\n const nextActiveKeys = new Set(activeFilterKeys.value);\n\n nextActiveKeys.delete(key);\n activeFilterKeys.value = nextActiveKeys;\n\n const nextValues = new Map(filterValues.value);\n\n nextValues.delete(key);\n filterValues.value = nextValues;\n },\n resetColumnVisibility: () => {\n hiddenColumns.value = new Set();\n },\n resetFilters: () => {\n activeFilterKeys.value = new Set();\n filterValues.value = new Map();\n },\n resetSearch: () => {\n searchQuery.value = '';\n searchActive.value = false;\n },\n searchActive,\n searchQuery,\n selectAll: () => {\n if (options.selectionMode.value !== 'multi') return;\n\n const next = new Set(selectedKeys.value);\n\n if (currentPageItems.value.every((item) => next.has(options.getRowKey(item)))) {\n for (const item of currentPageItems.value) next.delete(options.getRowKey(item));\n } else {\n for (const item of currentPageItems.value) next.add(options.getRowKey(item));\n }\n\n commitSelection(next);\n },\n selectedKeys: computed(() => new Set(selectedKeys.value)),\n selectedRows,\n setActiveFilterKeys: (keys) => {\n const nextActiveKeys = new Set(keys);\n\n activeFilterKeys.value = nextActiveKeys;\n filterValues.value = new Map([...filterValues.value].filter(([key]) => nextActiveKeys.has(key)));\n },\n setFilter,\n setFilterOperator,\n setSearchQuery: (query) => {\n searchQuery.value = query;\n },\n setSelection: (keys) => commitSelection(new Set(keys)),\n sortBy: (key) => {\n const nextDirection =\n sortKey.value !== key\n ? 'asc'\n : sortDirection.value === 'asc'\n ? 'desc'\n : sortDirection.value === 'desc'\n ? 'none'\n : 'asc';\n\n sortTo(nextDirection === 'none' ? '' : key, nextDirection);\n },\n sortState,\n sortTo,\n toggleColumnVisibility: (key) => {\n const next = new Set(hiddenColumns.value);\n\n if (next.has(key)) next.delete(key);\n else {\n if (visibleColumns.value.length <= 1) return;\n next.add(key);\n }\n\n hiddenColumns.value = next;\n },\n toggleRow: (key) => {\n if (options.selectionMode.value === 'none') return;\n\n const next = new Set(selectedKeys.value);\n\n if (next.has(key)) next.delete(key);\n else {\n if (options.selectionMode.value === 'single') next.clear();\n\n next.add(key);\n }\n\n commitSelection(next);\n },\n toggleSearch: () => {\n if (searchActive.value) searchQuery.value = '';\n\n searchActive.value = !searchActive.value;\n },\n totalItems,\n visibleColumns,\n };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=`@layer refine.base{:host{--_row-hover-bg:var(--datagrid-row-hover-bg,color-mix(in oklch, var(--color-contrast-500) 5%, transparent));--_row-selected-bg:var(--datagrid-row-selected-bg,color-mix(in oklch, var(--_accent) 10%, transparent));--_row-selected-border:var(--datagrid-row-selected-border,var(--_accent))}.dg-scroll{max-height:var(--datagrid-max-height,none);overflow:auto}.dg-table{width:100%;font-size:var(--_font-size);table-layout:auto;border-collapse:collapse}.dg-head{z-index:2;background:var(--_header-bg);box-shadow:inset 0 calc(var(--border) * -1) 0 var(--_border-color);position:sticky;top:0}.dg-th{padding:var(--_cell-padding-y) var(--_cell-padding-x);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;-webkit-user-select:none;user-select:none;border-right:var(--border) solid var(--_border-color)}.dg-th:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}.dg-th:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}.dg-th[data-align=center]{text-align:center}.dg-th[data-align=right]{text-align:right}.dg-th:has(.dg-sort-btn){padding:0}.dg-sort-btn{--button-padding:var(--_cell-padding-y) var(--_cell-padding-x);--button-font-size:var(--text-xs);--button-font-weight:var(--font-semibold);--button-color:var(--color-contrast-500);--button-justify:flex-start;height:100%}.dg-th[data-align=center] .dg-sort-btn{--button-justify:center}.dg-th[data-align=right] .dg-sort-btn{--button-justify:flex-end}:host(:dir(rtl)) .dg-th,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-th:last-child,.dg-th.dg-th-check,.dg-th.dg-th-expand,.dg-th.dg-th-last{border-right:none}:host(:dir(rtl)) .dg-th:last-child,:host(:dir(rtl)) .dg-th.dg-th-check,:host(:dir(rtl)) .dg-th.dg-th-expand,:host(:dir(rtl)) .dg-th.dg-th-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-last{border-left:none}.dg-th-inner{gap:var(--size-1);align-items:center;display:flex;position:relative}.dg-th[aria-sort]:has(.dg-sort-btn:hover):not(:has(.dg-sort-btn[aria-disabled=true])){background:color-mix(in oklch, var(--color-contrast-900) 5%, transparent)}.dg-th[aria-sort=ascending] .dg-sort-icon,.dg-th[aria-sort=descending] .dg-sort-icon{color:var(--_accent)}.dg-th-check{width:var(--size-5);min-width:var(--size-5);padding:var(--_cell-padding-y) var(--_cell-padding-x)}.dg-th-check,.dg-td-check{vertical-align:middle;text-align:center}.dg-td.dg-td-check{padding:var(--size-1) 0 0}.dg-check{cursor:pointer;justify-content:center;align-items:center;gap:0;min-height:0;display:inline-flex}.dg-body .dg-tr{border-bottom:var(--border) solid var(--_border-color);transition:background var(--transition-fast)}.dg-body .dg-tr:hover:not(:is([data-disabled],[aria-selected=true])){background:var(--_row-hover-bg)}.dg-body .dg-tr[aria-selected=true]{background:var(--_row-selected-bg)}.dg-body .dg-tr[data-selectable]{cursor:pointer;outline:none}.dg-body .dg-tr[data-selectable]:focus-visible{box-shadow:inset 0 0 0 2px var(--_row-selected-border)}.dg-body .dg-tr[data-disabled]{pointer-events:none;opacity:.45}:host([striped]) .dg-body .dg-tr:nth-child(2n){background:var(--_stripe-bg)}:host([striped]) .dg-body .dg-tr:nth-child(2n)[aria-selected=true]{background:var(--_row-selected-bg)}.dg-td{max-width:var(--datagrid-cell-max-width,32ch);padding:var(--_cell-padding-y) var(--_cell-padding-x);text-overflow:ellipsis;vertical-align:middle;color:var(--color-contrast-800);white-space:nowrap;border-right:var(--border) solid var(--_border-color);overflow:hidden}.dg-td[data-align=center]{text-align:center}.dg-td[data-align=right]{text-align:right}:host(:dir(rtl)) .dg-td,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-td:last-child,.dg-td.dg-td-check,.dg-td.dg-td-expand,.dg-td.dg-td-last{border-right:none}:host(:dir(rtl)) .dg-td:last-child,:host(:dir(rtl)) .dg-td.dg-td-check,:host(:dir(rtl)) .dg-td.dg-td-expand,:host(:dir(rtl)) .dg-td.dg-td-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-last{border-left:none}.dg-empty{padding:var(--size-12) var(--_cell-padding-x);font-size:var(--text-sm);color:var(--color-contrast-400);text-align:center}.dg-empty-content{gap:var(--size-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.dg-empty-actions{margin-top:var(--size-2)}.dg-controls{gap:var(--size-3);height:var(--size-8);padding:var(--size-1-5) var(--_cell-padding-x);background:var(--_header-bg);border-bottom:var(--border) solid var(--_border-color);justify-content:space-between;align-items:center;display:flex}.dg-tabs{gap:var(--size-1);flex:1;align-items:center;min-width:0;display:flex;overflow:hidden}.dg-tab{--button-padding:var(--size-0-5) var(--size-2-5);--button-font-size:var(--text-xs);--button-color:var(--color-contrast-500);flex:1;min-width:0}.dg-tab--active{--button-color:var(--color-contrast-900);--button-bg:color-mix(in oklch, var(--color-contrast-500) 10%, transparent);--button-border-color:var(--_border-color);--button-border:var(--border);font-weight:var(--font-semibold)}.dg-actions{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:flex}.dg-action-divider{width:var(--border);height:var(--size-4);margin-inline:var(--size-1);background:var(--_border-color);flex-shrink:0;display:inline-block}.dg-action-divider[hidden]{display:none}.dg-filter{width:100%;display:block}.dg-search{gap:var(--size-1);flex-direction:row-reverse;align-items:center;display:flex}.dg-search-input{--input-height:var(--size-7);opacity:0;width:0;transition:width var(--transition-fast), opacity var(--transition-fast);flex-shrink:0;display:block;overflow:hidden}.dg-search--open .dg-search-input{opacity:1;width:12rem;overflow:visible}@media (prefers-reduced-motion:reduce){.dg-search-input{transition:none}}.dg-action-popover{display:inline-flex}.dg-pop-header{padding:var(--size-3) var(--size-3) var(--size-2);justify-content:space-between;align-items:center;display:flex}.dg-pop-title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-600);letter-spacing:.02em}.dg-pop-sort{padding-bottom:var(--size-2);flex-direction:column;display:flex}.dg-pop-sort-row{gap:var(--size-2);padding:var(--size-1) var(--size-3);align-items:center;display:flex}.dg-pop-select{--select-min-width:var(--size-20);flex:2}.dg-pop-dir-select{--select-min-width:var(--size-10);flex:1}.dg-pop-filter{flex-direction:column;display:flex}.dg-pop-filter-fields{padding:0 var(--size-3) var(--size-3)}.dg-pop-filter-rules{border-top:var(--border) solid var(--_border-color);padding-top:var(--size-1)}.dg-pop-filter-rules[hidden]{display:none}.dg-pop-filter-rule{gap:var(--size-2);padding:var(--size-2) var(--size-3);flex-direction:column;display:flex}.dg-pop-filter-rule-header{gap:var(--size-1-5);align-items:center;display:flex}.dg-pop-filter-field{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-800);white-space:nowrap}.dg-pop-filter-op-select{--select-min-width:0;--select-height:var(--size-6);--select-font-size:var(--text-2xs);--select-padding-x:var(--size-1-5);flex:1;min-width:6rem}.dg-pop-col-item{--button-radius:var(--rounded-md);justify-content:flex-start}.dg-pop-col-list{gap:var(--size-1);max-width:25rem;padding:var(--size-3);flex-wrap:wrap;display:flex}.dg-footer{gap:var(--size-2);padding:var(--size-2) var(--_cell-padding-x);font-size:var(--text-xs);color:var(--color-contrast-500);background:var(--_header-bg);align-items:center;display:flex}.dg-footer-info{white-space:nowrap}.dg-footer-end{gap:var(--size-2);align-items:center;width:fit-content;display:flex}.dg-footer-end:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.dg-footer-end:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}.dg-page-size-wrap{flex-shrink:0;width:5rem}.dg-page-size-select{--select-min-width:0;--select-height:var(--size-7);--select-font-size:var(--text-xs);--select-padding-x:var(--size-2)}.dg-pagination{gap:var(--size-1);align-items:center;display:flex}:host(:dir(rtl)) .dg-page-btn,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-page-btn{transform:scaleX(-1)}.dg-page-btn{--button-color:var(--color-contrast-600);--button-radius:var(--rounded-md);width:var(--size-7);height:var(--size-7)}.dg-page-btn:hover{--button-color:var(--color-contrast-900);--button-bg:var(--color-contrast-300)}.dg-page-btn:disabled{cursor:not-allowed;opacity:.35}.dg-page-label{padding-inline:var(--size-1);white-space:nowrap}.dg-col-resize{inset-block:calc(var(--_cell-padding-y) * -1);width:var(--size-1);cursor:col-resize;-webkit-user-select:none;user-select:none;border-radius:var(--rounded);transition:background var(--transition-fast);background:0 0;position:absolute}.dg-col-resize:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:hover,.dg-col-resize:active{background:var(--_accent,var(--color-contrast-300))}.dg-td:focus-visible,.dg-th:focus-visible{outline:2px solid var(--_row-selected-border);outline-offset:-2px}.dg-tr-expanded .dg-td-expanded{padding:var(--_cell-padding-y) var(--_cell-padding-x);box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-600) 4%, var(--_bg,transparent)), inset 0 calc(var(--border) * -1) 0 var(--_border-color);border:none}.dg-tr-expanded:last-child .dg-td-expanded{box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-900) 4%, var(--_bg,transparent))}.dg-tr:has(+.dg-tr-expanded){border-bottom:none}.dg-th-expand,.dg-td-expand{width:var(--size-8);min-width:var(--size-8);padding-block:var(--size-1) 0;padding-inline:0 var(--size-2);text-align:center;white-space:nowrap;border-left:none;border-right:none}.dg-expand-btn{--button-color:var(--color-contrast-500);--button-radius:var(--rounded-sm);width:var(--size-5);height:var(--size-5)}.dg-expand-btn:hover{--button-color:var(--color-contrast-900)}.dg-expand-btn:disabled{cursor:not-allowed;opacity:.4}.dg-loading-overlay{z-index:3;background:color-mix(in oklch, var(--_bg,white) 40%, transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:none;position:absolute;inset:0}:host([loading]) .dg-loading-overlay{display:flex}:host([loading]) .dg-scroll table{pointer-events:none;opacity:.5}.dg-spin{animation:1s linear infinite dg-spin}@keyframes dg-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}`;exports.default=e;
1
+ var e=`@layer refine.base{:host{--_row-hover-bg:var(--datagrid-row-hover-bg,color-mix(in oklch, var(--color-contrast-500) 5%, transparent));--_row-selected-bg:var(--datagrid-row-selected-bg,color-mix(in oklch, var(--_accent) 10%, transparent));--_row-selected-border:var(--datagrid-row-selected-border,var(--_accent))}.dg-scroll{max-height:var(--datagrid-max-height,none);overflow:auto}.dg-table{width:100%;font-size:var(--_font-size);table-layout:auto;border-collapse:collapse}.dg-head{z-index:2;background:var(--_header-bg);box-shadow:inset 0 calc(var(--border) * -1) 0 var(--_border-color);position:sticky;top:0}.dg-th{padding:var(--_cell-padding-y) var(--_cell-padding-x);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;-webkit-user-select:none;user-select:none;border-right:var(--border) solid var(--_border-color)}.dg-th:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left}.dg-th:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right}.dg-th[data-align=center]{text-align:center}.dg-th[data-align=right]{text-align:right}.dg-th:has(.dg-sort-btn){padding:0}.dg-sort-btn{--button-padding:var(--_cell-padding-y) var(--_cell-padding-x);--button-font-size:var(--text-xs);--button-font-weight:var(--font-semibold);--button-color:var(--color-contrast-500);--button-justify:flex-start;height:100%}.dg-th[data-align=center] .dg-sort-btn{--button-justify:center}.dg-th[data-align=right] .dg-sort-btn{--button-justify:flex-end}:host(:dir(rtl)) .dg-th,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-th:last-child,.dg-th.dg-th-check,.dg-th.dg-th-expand,.dg-th.dg-th-last{border-right:none}:host(:dir(rtl)) .dg-th:last-child,:host(:dir(rtl)) .dg-th.dg-th-check,:host(:dir(rtl)) .dg-th.dg-th-expand,:host(:dir(rtl)) .dg-th.dg-th-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-th.dg-th-last{border-left:none}.dg-th-inner{gap:var(--size-1);align-items:center;display:flex;position:relative}.dg-th[aria-sort]:has(.dg-sort-btn:hover):not(:has(.dg-sort-btn[aria-disabled=true])){background:color-mix(in oklch, var(--color-contrast-900) 5%, transparent)}.dg-th[aria-sort=ascending] .dg-sort-icon,.dg-th[aria-sort=descending] .dg-sort-icon{color:var(--_accent)}.dg-th-check{width:var(--size-5);min-width:var(--size-5);padding:var(--_cell-padding-y) var(--_cell-padding-x)}.dg-th-check,.dg-td-check{vertical-align:middle;text-align:center}.dg-td.dg-td-check{padding:var(--size-1) 0 0}.dg-check{cursor:pointer;justify-content:center;align-items:center;gap:0;min-height:0;display:inline-flex}.dg-body .dg-tr{border-bottom:var(--border) solid var(--_border-color);transition:background var(--transition-fast)}.dg-body .dg-tr:hover:not(:is([data-disabled],[aria-selected=true])){background:var(--_row-hover-bg)}.dg-body .dg-tr[aria-selected=true]{background:var(--_row-selected-bg)}.dg-body .dg-tr[data-selectable]{cursor:pointer;outline:none}.dg-body .dg-tr[data-selectable]:focus-visible{box-shadow:inset 0 0 0 2px var(--_row-selected-border)}.dg-body .dg-tr[data-disabled]{pointer-events:none;opacity:.45}:host([striped]) .dg-body .dg-tr:nth-child(2n){background:var(--_stripe-bg)}:host([striped]) .dg-body .dg-tr:nth-child(2n)[aria-selected=true]{background:var(--_row-selected-bg)}.dg-td{max-width:var(--datagrid-cell-max-width,32ch);padding:var(--_cell-padding-y) var(--_cell-padding-x);text-overflow:ellipsis;vertical-align:middle;color:var(--color-contrast-800);white-space:nowrap;border-right:var(--border) solid var(--_border-color);overflow:hidden}.dg-td[data-align=center]{text-align:center}.dg-td[data-align=right]{text-align:right}:host(:dir(rtl)) .dg-td,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td{border-right:none;border-left:var(--border) solid var(--_border-color)}.dg-td:last-child,.dg-td.dg-td-check,.dg-td.dg-td-expand,.dg-td.dg-td-last{border-right:none}:host(:dir(rtl)) .dg-td:last-child,:host(:dir(rtl)) .dg-td.dg-td-check,:host(:dir(rtl)) .dg-td.dg-td-expand,:host(:dir(rtl)) .dg-td.dg-td-last,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td:last-child,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-check,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-expand,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-td.dg-td-last{border-left:none}.dg-empty{padding:var(--size-12) var(--_cell-padding-x);font-size:var(--text-sm);color:var(--color-contrast-400);text-align:center}.dg-empty-content{gap:var(--size-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.dg-empty-actions{margin-top:var(--size-2)}.dg-controls{gap:var(--size-3);height:var(--size-8);padding:var(--size-1-5) var(--_cell-padding-x);background:var(--_header-bg);border-bottom:var(--border) solid var(--_border-color);justify-content:space-between;align-items:center;display:flex}.dg-tabs{gap:var(--size-1);flex:1;align-items:center;min-width:0;display:flex;overflow:hidden}.dg-tab{--button-padding:var(--size-0-5) var(--size-2-5);--button-font-size:var(--text-xs);--button-color:var(--color-contrast-500);flex:1;min-width:0}@media (width<=40rem){.dg-tabs{overscroll-behavior-inline:contain;scrollbar-width:none;overflow-x:auto}.dg-tabs::-webkit-scrollbar{display:none}.dg-tab{flex:none;min-width:max-content}}.dg-tab--active{--button-color:var(--color-contrast-900);--button-bg:color-mix(in oklch, var(--color-contrast-500) 10%, transparent);--button-border-color:var(--_border-color);--button-border:var(--border);font-weight:var(--font-semibold)}.dg-actions{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:flex}.dg-action-divider{width:var(--border);height:var(--size-4);margin-inline:var(--size-1);background:var(--_border-color);flex-shrink:0;display:inline-block}.dg-action-divider[hidden]{display:none}.dg-filter{width:100%;display:block}.dg-search{gap:var(--size-1);flex-direction:row-reverse;align-items:center;display:flex}.dg-search-input{--input-height:var(--size-7);opacity:0;width:0;transition:width var(--transition-fast), opacity var(--transition-fast);flex-shrink:0;display:block;overflow:hidden}.dg-search--open .dg-search-input{opacity:1;width:12rem;overflow:visible}@media (prefers-reduced-motion:reduce){.dg-search-input{transition:none}}.dg-action-popover{display:inline-flex}.dg-pop-header{gap:var(--size-3);min-height:var(--size-10);padding:var(--size-2) var(--size-3);border-bottom:var(--border) solid var(--_border-color);justify-content:space-between;align-items:center;display:flex}.dg-pop-title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-600);letter-spacing:.02em}.dg-pop-heading,.dg-pop-heading>*{min-width:0;display:block}.dg-pop-heading small{font-size:var(--text-xs);color:var(--color-contrast-500);margin-top:var(--size-0-5)}.dg-pop-sort{flex-direction:column;display:flex}.dg-pop-sort-row{gap:var(--size-2);padding:var(--size-2) var(--size-3);align-items:center;display:flex}.dg-pop-select,.dg-pop-dir-select{--input-min-width:0;--select-min-width:0;width:0;min-width:0}.dg-pop-select{flex:2 1 0}.dg-pop-dir-select{flex:0 0 var(--size-28);width:var(--size-28)}.dg-pop-filter{flex-direction:column;display:flex}.dg-pop-filter-fields{padding:var(--size-2) var(--size-3)}.dg-pop-filter-rules{border-top:var(--border) solid var(--_border-color);padding-top:var(--size-1)}.dg-pop-filter-rules[hidden]{display:none}.dg-pop-filter-rule{gap:var(--size-2);padding:var(--size-2) var(--size-3);flex-direction:column;display:flex}.dg-pop-filter-rule-header{gap:var(--size-1-5);align-items:center;display:flex}.dg-pop-filter-field{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-800);white-space:nowrap}.dg-pop-filter-op-select{--input-min-width:0;--select-min-width:0;--select-height:var(--size-6);--select-font-size:var(--text-2xs);--select-padding-x:var(--size-1-5);flex:1 1 0;min-width:6rem}.dg-state-trigger{position:relative}.dg-state-trigger[data-customized]:after{width:var(--size-1-5);height:var(--size-1-5);content:"";background:var(--color-primary);border:var(--border) solid var(--_header-bg);top:var(--size-1);border-radius:50%;position:absolute}.dg-state-trigger[data-customized]:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{right:var(--size-1)}.dg-state-trigger[data-customized]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{left:var(--size-1)}.dg-pop-col{width:18rem}.dg-pop-col-list{gap:var(--size-0-5);max-height:min(50vh,24rem);padding:var(--size-2) var(--size-3);overscroll-behavior:contain;display:grid;overflow-y:auto}.dg-pop-col-item{--checkbox-size:var(--size-4);--checkbox-font-size:var(--text-sm);width:100%;padding:var(--size-1) var(--size-2);cursor:pointer;border-radius:var(--rounded-md)}.dg-pop-col-item:hover{background:var(--color-contrast-150)}.dg-pop-col-item::part(label){text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dg-footer{gap:var(--size-2);padding:var(--size-1) var(--_cell-padding-x);font-size:var(--text-xs);color:var(--color-contrast-500);background:var(--_header-bg);flex-wrap:wrap;align-items:center;display:flex}.dg-footer-info{white-space:nowrap}.dg-footer-start{gap:var(--size-2);flex:auto;align-items:center;min-width:0;display:flex}.dg-page-size-wrap{width:var(--size-20);flex-shrink:0;order:-1}.dg-page-size-select{--input-height:var(--size-8);--input-min-width:0;--select-min-width:0;--select-font-size:var(--text-xs);--select-padding-x:var(--size-2)}.dg-pagination{gap:var(--size-1);flex-shrink:0;align-items:center;display:flex}.dg-pagination:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.dg-pagination:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}:host(:dir(rtl)) .dg-page-btn,:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .dg-page-btn{transform:scaleX(-1)}.dg-page-btn{--button-color:var(--color-contrast-600);--button-radius:var(--rounded-md);width:var(--size-7);height:var(--size-7)}.dg-page-btn:hover{--button-color:var(--color-contrast-900);--button-bg:var(--color-contrast-300)}.dg-page-btn:disabled{cursor:not-allowed;opacity:.35}.dg-page-label{padding-inline:var(--size-1);white-space:nowrap}.dg-col-resize{inset-block:calc(var(--_cell-padding-y) * -1);width:var(--size-1);cursor:col-resize;-webkit-user-select:none;user-select:none;border-radius:var(--rounded);transition:background var(--transition-fast);background:0 0;position:absolute}.dg-col-resize:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:calc((var(--_cell-padding-x) + var(--border) + 2px) * -1)}.dg-col-resize:hover,.dg-col-resize:active{background:var(--_accent,var(--color-contrast-300))}.dg-td:focus-visible,.dg-th:focus-visible{outline:2px solid var(--_row-selected-border);outline-offset:-2px}.dg-tr-expanded .dg-td-expanded{padding:var(--_cell-padding-y) var(--_cell-padding-x);box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-600) 4%, var(--_bg,transparent)), inset 0 calc(var(--border) * -1) 0 var(--_border-color);border:none}.dg-tr-expanded:last-child .dg-td-expanded{box-shadow:inset 0 0 0 9999px color-mix(in oklch, var(--color-contrast-900) 4%, var(--_bg,transparent))}.dg-tr:has(+.dg-tr-expanded){border-bottom:none}.dg-th-expand,.dg-td-expand{width:var(--size-8);min-width:var(--size-8);padding-block:var(--size-1) 0;padding-inline:0 var(--size-2);text-align:center;white-space:nowrap;border-left:none;border-right:none}.dg-expand-btn{--button-color:var(--color-contrast-500);--button-radius:var(--rounded-sm);width:var(--size-5);height:var(--size-5)}.dg-expand-btn:hover{--button-color:var(--color-contrast-900)}.dg-expand-btn:disabled{cursor:not-allowed;opacity:.4}.dg-loading-overlay{z-index:3;background:color-mix(in oklch, var(--_bg,white) 40%, transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:none;position:absolute;inset:0}:host([loading]) .dg-loading-overlay{display:flex}:host([loading]) .dg-scroll table{pointer-events:none;opacity:.5}.dg-spin{animation:1s linear infinite dg-spin}@keyframes dg-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}}`;exports.default=e;
2
2
  //# sourceMappingURL=datagrid.css.cjs.map