@epilot/zenith-react 0.1.0 → 0.2.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/components/accordion/accordion.js +57 -48
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +120 -91
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +38 -35
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.js +78 -71
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +60 -55
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +99 -54
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js +87 -77
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.js +36 -32
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/callout/callout.js +113 -104
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/card/card.js +62 -52
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +22 -19
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/code-block/code-block.js +135 -123
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/code-editor/code-editor.js +276 -260
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
- package/dist/components/command/command.js +116 -105
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table-body.js +38 -34
- package/dist/components/data-table/data-table-body.js.map +1 -1
- package/dist/components/data-table/data-table-column-header.js +30 -26
- package/dist/components/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/data-table/data-table-column-order.js +79 -73
- package/dist/components/data-table/data-table-column-order.js.map +1 -1
- package/dist/components/data-table/data-table-column-visibility.js +25 -22
- package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
- package/dist/components/data-table/data-table-content.js +47 -44
- package/dist/components/data-table/data-table-content.js.map +1 -1
- package/dist/components/data-table/data-table-error.js +36 -32
- package/dist/components/data-table/data-table-error.js.map +1 -1
- package/dist/components/data-table/data-table-footer.js +10 -8
- package/dist/components/data-table/data-table-footer.js.map +1 -1
- package/dist/components/data-table/data-table-header-draggable.js +40 -36
- package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
- package/dist/components/data-table/data-table-loading.js +21 -18
- package/dist/components/data-table/data-table-loading.js.map +1 -1
- package/dist/components/data-table/data-table-resize-handle.js +13 -11
- package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
- package/dist/components/data-table/data-table-row.js +47 -44
- package/dist/components/data-table/data-table-row.js.map +1 -1
- package/dist/components/data-table/data-table-toolbar.js +9 -7
- package/dist/components/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data-table/data-table.js +48 -46
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +212 -193
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/range-calendar.js +36 -34
- package/dist/components/date-range-picker/range-calendar.js.map +1 -1
- package/dist/components/date-time-picker/calendar.js +290 -272
- package/dist/components/date-time-picker/calendar.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-input.js +127 -112
- package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
- package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker.js +91 -86
- package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
- package/dist/components/date-time-picker/time-picker.js +95 -87
- package/dist/components/date-time-picker/time-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js +125 -103
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +151 -114
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +196 -176
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field.js +237 -195
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/list/list.js +237 -219
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/option-card/option-card.js +129 -116
- package/dist/components/option-card/option-card.js.map +1 -1
- package/dist/components/pill/pill.js +55 -51
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +53 -36
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +38 -34
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +38 -35
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
- package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
- package/dist/components/segmented-control/segmented-control.js +93 -85
- package/dist/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/select/select.js +149 -128
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/separator/separator.js +19 -16
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +34 -30
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/spinner/spinner.js +22 -17
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/surface/surface.js +25 -22
- package/dist/components/surface/surface.js.map +1 -1
- package/dist/components/switch/switch.js +66 -57
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +139 -129
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +104 -90
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.js +212 -79
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/toast/toast.js +112 -100
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle.js +32 -30
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +59 -46
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +22 -0
- package/dist/lib/clear-button.js +18 -17
- package/dist/lib/clear-button.js.map +1 -1
- package/dist/styles/host-reset.js +47 -0
- package/dist/styles/host-reset.js.map +1 -0
- package/dist/styles/overlay-layer.js +5 -0
- package/dist/styles/overlay-layer.js.map +1 -0
- package/dist/tokens.json +1 -1
- package/package.json +8 -7
- package/scripts/migration-diagnostics.mjs +42 -7
- package/scripts/migration-sweep.mjs +9 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { jsx as n } from "react/jsx-runtime";
|
|
2
2
|
import * as Je from "react";
|
|
3
|
-
import { useState as
|
|
3
|
+
import { useState as o, useRef as Ke, useEffect as h, useMemo as u, useCallback as Qe } from "react";
|
|
4
4
|
import { useReactTable as Xe } from "../../vendor/.bun/@tanstack_react-table@8.21.3_6f4b9a1cfb20c0ae/vendor/@tanstack/react-table/build/lib/index.js";
|
|
5
5
|
import { mergeClasses as Ye, SLOT_ATTR as $e } from "@epilot/zenith-runtime/v1";
|
|
6
6
|
import { makeZenithStyles as Ce } from "../../styles/make-styles.js";
|
|
7
|
+
import { boxModel as ze } from "../../styles/host-reset.js";
|
|
7
8
|
import { Checkbox as ee } from "../checkbox/checkbox.js";
|
|
8
|
-
import { DensityContextBoundary as
|
|
9
|
-
import { DEFAULT_CONTAINER_HEIGHT as
|
|
10
|
-
import { DataTableColumnHeader as
|
|
11
|
-
import { getPaginationRowModel as
|
|
12
|
-
function
|
|
9
|
+
import { DensityContextBoundary as ve, canonicalDensity as ge } from "../density-provider/density-provider.js";
|
|
10
|
+
import { DEFAULT_CONTAINER_HEIGHT as ae, DEFAULT_OVERSCAN as ie, DEFAULT_ROW_HEIGHT as pe, DataTableContext as et } from "./data-table-context.js";
|
|
11
|
+
import { DataTableColumnHeader as tt } from "./data-table-column-header.js";
|
|
12
|
+
import { getPaginationRowModel as st, getFilteredRowModel as lt, getSortedRowModel as ct, getCoreRowModel as rt } from "../../vendor/.bun/@tanstack_table-core@8.21.3/vendor/@tanstack/table-core/build/lib/index.js";
|
|
13
|
+
function ot(d, T) {
|
|
13
14
|
return T ? d.map((c) => {
|
|
14
15
|
var r;
|
|
15
16
|
if (c.enableSorting === !1 || typeof c.header != "string")
|
|
@@ -17,7 +18,7 @@ function rt(d, T) {
|
|
|
17
18
|
const I = c.header;
|
|
18
19
|
return {
|
|
19
20
|
...c,
|
|
20
|
-
header: ({ column: m }) => /* @__PURE__ */ n(
|
|
21
|
+
header: ({ column: m }) => /* @__PURE__ */ n(tt, { column: m, title: I }),
|
|
21
22
|
meta: {
|
|
22
23
|
...c.meta,
|
|
23
24
|
// Preserve original header for visibility dropdown fallback
|
|
@@ -30,11 +31,12 @@ function rt(d, T) {
|
|
|
30
31
|
}
|
|
31
32
|
const ft = Ce({
|
|
32
33
|
root: {
|
|
34
|
+
...ze,
|
|
33
35
|
width: "100%",
|
|
34
36
|
maxWidth: "100%"
|
|
35
37
|
}
|
|
36
38
|
});
|
|
37
|
-
function
|
|
39
|
+
function nt({
|
|
38
40
|
columns: d,
|
|
39
41
|
data: T,
|
|
40
42
|
children: c,
|
|
@@ -51,8 +53,8 @@ function ot({
|
|
|
51
53
|
defaultSorting: ce = [],
|
|
52
54
|
rowSelection: re,
|
|
53
55
|
onRowSelectionChange: w,
|
|
54
|
-
defaultRowSelection:
|
|
55
|
-
columnFilters:
|
|
56
|
+
defaultRowSelection: oe = {},
|
|
57
|
+
columnFilters: fe,
|
|
56
58
|
onColumnFiltersChange: D,
|
|
57
59
|
columnVisibility: ne,
|
|
58
60
|
onColumnVisibilityChange: R,
|
|
@@ -66,16 +68,16 @@ function ot({
|
|
|
66
68
|
resizeHandleVisibility: Z = "onHeaderHover",
|
|
67
69
|
columnResizeMode: me = "onChange",
|
|
68
70
|
columnSizing: Se,
|
|
69
|
-
onColumnSizingChange:
|
|
71
|
+
onColumnSizingChange: M,
|
|
70
72
|
defaultColumnSizing: ue = {},
|
|
71
73
|
columnPinning: Ie,
|
|
72
|
-
onColumnPinningChange:
|
|
73
|
-
defaultColumnPinning:
|
|
74
|
+
onColumnPinningChange: F,
|
|
75
|
+
defaultColumnPinning: be = { left: [], right: [] },
|
|
74
76
|
autoPinSelection: q,
|
|
75
77
|
showHeaderBorder: J = !0,
|
|
76
78
|
showRowBorders: K = !0,
|
|
77
79
|
fitHeaderWidth: Q = !1,
|
|
78
|
-
columnOrder:
|
|
80
|
+
columnOrder: Pe,
|
|
79
81
|
onColumnOrderChange: E,
|
|
80
82
|
defaultColumnOrder: ye = [],
|
|
81
83
|
enableColumnOrdering: X = !1,
|
|
@@ -83,10 +85,10 @@ function ot({
|
|
|
83
85
|
density: _,
|
|
84
86
|
className: Te
|
|
85
87
|
}, xe) {
|
|
86
|
-
const we = ft(), [De, Re] =
|
|
88
|
+
const we = ft(), [De, Re] = o(ce), [Ae, He] = o(oe), [Me, Fe] = o([]), [Ee, _e] = o({}), [ke, Le] = o(""), [Oe, Ve] = o(ue), [he, Ue] = o(be), [je, Ge] = o(ye), Ne = {
|
|
87
89
|
pageIndex: (t == null ? void 0 : t.pageIndex) ?? 0,
|
|
88
90
|
pageSize: (t == null ? void 0 : t.pageSize) ?? 10
|
|
89
|
-
}, [k, L] =
|
|
91
|
+
}, [k, L] = o(Ne), O = Ke(!1);
|
|
90
92
|
h(() => {
|
|
91
93
|
if ((t == null ? void 0 : t.pageIndex) === void 0)
|
|
92
94
|
return;
|
|
@@ -102,15 +104,15 @@ function ot({
|
|
|
102
104
|
(s) => s.pageSize === e ? s : { ...s, pageSize: e }
|
|
103
105
|
);
|
|
104
106
|
}, [t == null ? void 0 : t.pageSize]);
|
|
105
|
-
const Y = !H, $ = le ?? De,
|
|
106
|
-
if (!(r && q && Object.keys(
|
|
107
|
-
return
|
|
108
|
-
const s =
|
|
109
|
-
return s.includes("select") ?
|
|
110
|
-
...
|
|
107
|
+
const Y = !H, $ = le ?? De, b = re ?? Ae, C = fe ?? Me, z = ne ?? Ee, v = de ?? ke, P = Se ?? Oe, f = Ie ?? he, y = Pe ?? je, We = u(() => {
|
|
108
|
+
if (!(r && q && Object.keys(b).length > 0))
|
|
109
|
+
return f;
|
|
110
|
+
const s = f.left ?? [];
|
|
111
|
+
return s.includes("select") ? f : {
|
|
112
|
+
...f,
|
|
111
113
|
left: ["select", ...s]
|
|
112
114
|
};
|
|
113
|
-
}, [
|
|
115
|
+
}, [f, b, r, q]), g = u(
|
|
114
116
|
() => ({
|
|
115
117
|
id: "select",
|
|
116
118
|
header: ({ table: e }) => /* @__PURE__ */ n(
|
|
@@ -138,7 +140,7 @@ function ot({
|
|
|
138
140
|
size: 40
|
|
139
141
|
}),
|
|
140
142
|
[]
|
|
141
|
-
), V = u(() =>
|
|
143
|
+
), V = u(() => ot(d, m), [d, m]), Be = u(() => r ? [g, ...V] : V, [V, r, g]), S = !!t, a = !!(l != null && l.enabled && !S), i = S && ((t == null ? void 0 : t.totalItems) !== void 0 || (t == null ? void 0 : t.pageCount) !== void 0), Ze = Qe(
|
|
142
144
|
(e) => {
|
|
143
145
|
O.current = !0, L((s) => typeof e == "function" ? e(s) : e);
|
|
144
146
|
},
|
|
@@ -152,21 +154,21 @@ function ot({
|
|
|
152
154
|
data: T,
|
|
153
155
|
columns: Be,
|
|
154
156
|
getRowId: I,
|
|
155
|
-
getCoreRowModel:
|
|
157
|
+
getCoreRowModel: rt(),
|
|
156
158
|
// Default column configuration
|
|
157
159
|
defaultColumn: {
|
|
158
160
|
minSize: 50
|
|
159
161
|
},
|
|
160
162
|
// Sorting
|
|
161
163
|
...m && !U && {
|
|
162
|
-
getSortedRowModel:
|
|
164
|
+
getSortedRowModel: ct()
|
|
163
165
|
},
|
|
164
166
|
...U && {
|
|
165
167
|
manualSorting: !0
|
|
166
168
|
},
|
|
167
169
|
state: {
|
|
168
170
|
sorting: $,
|
|
169
|
-
rowSelection:
|
|
171
|
+
rowSelection: b,
|
|
170
172
|
columnFilters: C,
|
|
171
173
|
columnVisibility: z,
|
|
172
174
|
globalFilter: v,
|
|
@@ -176,7 +178,7 @@ function ot({
|
|
|
176
178
|
pagination: k
|
|
177
179
|
},
|
|
178
180
|
...Y && {
|
|
179
|
-
columnSizing:
|
|
181
|
+
columnSizing: P
|
|
180
182
|
}
|
|
181
183
|
},
|
|
182
184
|
onSortingChange: (e) => {
|
|
@@ -186,19 +188,19 @@ function ot({
|
|
|
186
188
|
// Row selection
|
|
187
189
|
enableRowSelection: typeof r == "function" ? (e) => r(e) : r,
|
|
188
190
|
onRowSelectionChange: (e) => {
|
|
189
|
-
const s = typeof e == "function" ? e(
|
|
191
|
+
const s = typeof e == "function" ? e(b) : e;
|
|
190
192
|
He(s), w == null || w(s);
|
|
191
193
|
},
|
|
192
194
|
// Filtering
|
|
193
195
|
...(te || se) && !j && {
|
|
194
|
-
getFilteredRowModel:
|
|
196
|
+
getFilteredRowModel: lt()
|
|
195
197
|
},
|
|
196
198
|
...j && {
|
|
197
199
|
manualFiltering: !0
|
|
198
200
|
},
|
|
199
201
|
onColumnFiltersChange: (e) => {
|
|
200
202
|
const s = typeof e == "function" ? e(C) : e;
|
|
201
|
-
|
|
203
|
+
Fe(s), D == null || D(s);
|
|
202
204
|
},
|
|
203
205
|
onColumnVisibilityChange: (e) => {
|
|
204
206
|
const s = typeof e == "function" ? e(z) : e;
|
|
@@ -217,17 +219,17 @@ function ot({
|
|
|
217
219
|
enableColumnResizing: Y,
|
|
218
220
|
columnResizeMode: me,
|
|
219
221
|
onColumnSizingChange: (e) => {
|
|
220
|
-
const s = typeof e == "function" ? e(
|
|
221
|
-
Ve(s),
|
|
222
|
+
const s = typeof e == "function" ? e(P) : e;
|
|
223
|
+
Ve(s), M == null || M(s);
|
|
222
224
|
},
|
|
223
225
|
// Column pinning
|
|
224
226
|
onColumnPinningChange: (e) => {
|
|
225
|
-
const s = typeof e == "function" ? e(
|
|
226
|
-
Ue(s),
|
|
227
|
+
const s = typeof e == "function" ? e(f) : e;
|
|
228
|
+
Ue(s), F == null || F(s);
|
|
227
229
|
},
|
|
228
230
|
// Pagination
|
|
229
231
|
...S && !i && {
|
|
230
|
-
getPaginationRowModel:
|
|
232
|
+
getPaginationRowModel: st()
|
|
231
233
|
},
|
|
232
234
|
...i && {
|
|
233
235
|
manualPagination: !0,
|
|
@@ -243,9 +245,9 @@ function ot({
|
|
|
243
245
|
pagination: t,
|
|
244
246
|
config: {
|
|
245
247
|
enableVirtualization: a,
|
|
246
|
-
estimateRowHeight: (l == null ? void 0 : l.estimateRowHeight) ??
|
|
247
|
-
overscan: (l == null ? void 0 : l.overscan) ??
|
|
248
|
-
containerHeight: (l == null ? void 0 : l.containerHeight) ??
|
|
248
|
+
estimateRowHeight: (l == null ? void 0 : l.estimateRowHeight) ?? pe,
|
|
249
|
+
overscan: (l == null ? void 0 : l.overscan) ?? ie,
|
|
250
|
+
containerHeight: (l == null ? void 0 : l.containerHeight) ?? ae
|
|
249
251
|
},
|
|
250
252
|
onRowClick: G,
|
|
251
253
|
clickableRowClassName: N,
|
|
@@ -256,7 +258,7 @@ function ot({
|
|
|
256
258
|
showHeaderBorder: J,
|
|
257
259
|
showRowBorders: K,
|
|
258
260
|
fitHeaderWidth: Q,
|
|
259
|
-
columnSizing:
|
|
261
|
+
columnSizing: P,
|
|
260
262
|
enableColumnOrdering: X,
|
|
261
263
|
columnOrder: y
|
|
262
264
|
}),
|
|
@@ -274,12 +276,12 @@ function ot({
|
|
|
274
276
|
J,
|
|
275
277
|
K,
|
|
276
278
|
Q,
|
|
277
|
-
|
|
279
|
+
P,
|
|
278
280
|
X,
|
|
279
281
|
y
|
|
280
282
|
]
|
|
281
283
|
);
|
|
282
|
-
return /* @__PURE__ */ n(
|
|
284
|
+
return /* @__PURE__ */ n(et.Provider, { value: qe, children: /* @__PURE__ */ n(
|
|
283
285
|
"div",
|
|
284
286
|
{
|
|
285
287
|
ref: xe,
|
|
@@ -287,13 +289,13 @@ function ot({
|
|
|
287
289
|
[$e]: "data-table",
|
|
288
290
|
"data-fs-element": "DataTable",
|
|
289
291
|
className: Ye(we.root, Te),
|
|
290
|
-
..._ !== void 0 ? { "data-density":
|
|
291
|
-
children: /* @__PURE__ */ n(
|
|
292
|
+
..._ !== void 0 ? { "data-density": ge(_) } : {},
|
|
293
|
+
children: /* @__PURE__ */ n(ve, { density: _, children: c })
|
|
292
294
|
}
|
|
293
295
|
) });
|
|
294
296
|
}
|
|
295
|
-
const
|
|
297
|
+
const Rt = Je.forwardRef(nt);
|
|
296
298
|
export {
|
|
297
|
-
|
|
299
|
+
Rt as DataTable
|
|
298
300
|
};
|
|
299
301
|
//# sourceMappingURL=data-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../../../src/components/data-table/data-table.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useState, useRef, useEffect, useCallback, useMemo } from \"react\"\nimport type { ReactNode, MouseEvent } from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type ColumnFiltersState,\n type VisibilityState,\n type ColumnDef,\n type Row,\n type ColumnSizingState,\n type ColumnPinningState,\n type ColumnOrderState,\n type HeaderContext,\n} from \"@tanstack/react-table\"\nimport { mergeClasses } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { Checkbox } from \"../checkbox/checkbox\"\nimport { type TableDensity } from \"../table/table\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\nimport {\n DataTableContext,\n type DataTablePaginationConfig,\n type DataTableCellOverflow,\n type DataTableVirtualizationConfig,\n DEFAULT_ROW_HEIGHT,\n DEFAULT_OVERSCAN,\n DEFAULT_CONTAINER_HEIGHT,\n} from \"./data-table-context\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DataTableProps<TData> = {\n /** Column definitions */\n columns: ColumnDef<TData, unknown>[]\n /** Data array */\n data: TData[]\n /** Children rendered inside the context (DataTableContent, DataTablePagination, etc.) */\n children?: ReactNode\n /** Unique key accessor for each row */\n getRowId?: (row: TData) => string\n /** Enable row selection with checkboxes */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /** Enable column sorting */\n enableSorting?: boolean\n /** Skip client-side sorting (for server-side sorting). When true, sorting state is tracked but rows are not sorted client-side. */\n manualSorting?: boolean\n /** Enable column filtering */\n enableFiltering?: boolean\n /** Skip client-side filtering (for server-side filtering). When true, filter state is tracked but rows are not filtered client-side. */\n manualFiltering?: boolean\n /** Enable global search/filter */\n enableGlobalFilter?: boolean\n /** Pagination configuration */\n pagination?: DataTablePaginationConfig\n /** Controlled sorting state */\n sorting?: SortingState\n /** Callback when sorting changes */\n onSortingChange?: (sorting: SortingState) => void\n /** Default sorting state */\n defaultSorting?: SortingState\n /** Controlled row selection state */\n rowSelection?: RowSelectionState\n /** Callback when row selection changes */\n onRowSelectionChange?: (selection: RowSelectionState) => void\n /** Default row selection state */\n defaultRowSelection?: RowSelectionState\n /** Controlled column filters state */\n columnFilters?: ColumnFiltersState\n /** Callback when column filters change */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void\n /** Controlled column visibility state */\n columnVisibility?: VisibilityState\n /** Callback when column visibility changes */\n onColumnVisibilityChange?: (visibility: VisibilityState) => void\n /** Controlled global filter value */\n globalFilter?: string\n /** Callback when global filter changes */\n onGlobalFilterChange?: (value: string) => void\n /** Handler called when a row is clicked. Enables clickable row mode. */\n onRowClick?: (row: Row<TData>, event: MouseEvent<HTMLTableRowElement>) => void\n /** Custom hover class for clickable rows. Default: 'hover:bg-accent-a3' */\n clickableRowClassName?: string\n /** Custom class for selected rows. Default: 'data-[state=selected]:bg-accent-a3' */\n selectedRowClassName?: string\n /** Controls how cell content handles overflow. 'grow' expands cells (default), 'wrap' wraps text, 'truncate' shows ellipsis. Can be overridden per-column via column meta. */\n cellOverflow?: DataTableCellOverflow\n /** Disable column width resizing (enabled by default) */\n disableColumnResizing?: boolean\n /** Controls when resize handles are visible. 'always' shows handles persistently, 'onHeaderHover' only shows on header row hover. Default: 'onHeaderHover' */\n resizeHandleVisibility?: \"always\" | \"onHeaderHover\"\n /** Resize mode: 'onChange' updates during drag, 'onEnd' updates when drag finishes. Default: 'onChange' */\n columnResizeMode?: \"onChange\" | \"onEnd\"\n /** Controlled column sizing state */\n columnSizing?: ColumnSizingState\n /** Callback when column sizing changes */\n onColumnSizingChange?: (sizing: ColumnSizingState) => void\n /** Default column sizing for uncontrolled mode */\n defaultColumnSizing?: ColumnSizingState\n /** Controlled column pinning state */\n columnPinning?: ColumnPinningState\n /** Callback when column pinning changes */\n onColumnPinningChange?: (pinning: ColumnPinningState) => void\n /** Default column pinning for uncontrolled mode */\n defaultColumnPinning?: ColumnPinningState\n /** Auto-pin selection column to left when rows are selected. Default: false */\n autoPinSelection?: boolean\n /** Show bottom border on header row. Default: true */\n showHeaderBorder?: boolean\n /** Show bottom borders on data rows. Default: true */\n showRowBorders?: boolean\n /** Ensure columns have minimum width to fit header content (prevents hover clipping on sortable headers). Default: false */\n fitHeaderWidth?: boolean\n /** Controlled column order */\n columnOrder?: ColumnOrderState\n /** Callback for column order changes */\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void\n /** Default column order for uncontrolled mode */\n defaultColumnOrder?: ColumnOrderState\n /** Enable drag-and-drop column reordering in headers. Default: false */\n enableColumnOrdering?: boolean\n /** Virtualization configuration for large datasets (incompatible with pagination) */\n virtualization?: DataTableVirtualizationConfig\n /**\n * Cell density: compact, normal, or comfortable. Omitted inherits ambient CSS density (shell or\n * an outer `DensityProvider`) with no default-normal stamp — explicit only when passed.\n */\n density?: TableDensity\n /** Additional class name */\n className?: string\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Transforms columns to auto-wrap string headers with DataTableColumnHeader\n * when sorting is enabled at the table level.\n */\nfunction wrapSortableHeaders<TData>(\n columns: ColumnDef<TData, unknown>[],\n enableSorting: boolean | undefined\n): ColumnDef<TData, unknown>[] {\n if (!enableSorting) {\n return columns\n }\n\n return columns.map((column) => {\n // Skip if column explicitly disables sorting\n if (column.enableSorting === false) {\n return column\n }\n\n // Skip if header is not a string (already a function/component)\n if (typeof column.header !== \"string\") {\n return column\n }\n\n const headerTitle = column.header\n\n return {\n ...column,\n header: ({ column: col }: HeaderContext<TData, unknown>) => (\n <DataTableColumnHeader column={col} title={headerTitle} />\n ),\n meta: {\n ...column.meta,\n // Preserve original header for visibility dropdown fallback\n visibilityLabel:\n (column.meta as { visibilityLabel?: string } | undefined)\n ?.visibilityLabel ?? headerTitle,\n // Flag to indicate this header was auto-wrapped with DataTableColumnHeader\n _sortableHeaderWrapped: true,\n },\n } as ColumnDef<TData, unknown>\n })\n}\n\nconst useStyles = makeZenithStyles({\n root: {\n width: \"100%\",\n maxWidth: \"100%\",\n },\n})\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction DataTableInner<TData>(\n {\n columns,\n data,\n children,\n getRowId,\n enableRowSelection = false,\n enableSorting = false,\n manualSorting = false,\n enableFiltering = false,\n manualFiltering = false,\n enableGlobalFilter = false,\n pagination,\n sorting: controlledSorting,\n onSortingChange,\n defaultSorting = [],\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n defaultRowSelection = {},\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n globalFilter: controlledGlobalFilter,\n onGlobalFilterChange,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow = \"truncate\",\n disableColumnResizing = false,\n resizeHandleVisibility = \"onHeaderHover\",\n columnResizeMode = \"onChange\",\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n defaultColumnSizing = {},\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n defaultColumnPinning = { left: [], right: [] },\n autoPinSelection,\n showHeaderBorder = true,\n showRowBorders = true,\n fitHeaderWidth = false,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n defaultColumnOrder = [],\n enableColumnOrdering = false,\n virtualization,\n density,\n className,\n }: DataTableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const styles = useStyles()\n\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] =\n useState<SortingState>(defaultSorting)\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>(defaultRowSelection)\n const [internalColumnFilters, setInternalColumnFilters] =\n useState<ColumnFiltersState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<VisibilityState>({})\n const [internalGlobalFilter, setInternalGlobalFilter] = useState<string>(\"\")\n const [internalColumnSizing, setInternalColumnSizing] =\n useState<ColumnSizingState>(defaultColumnSizing)\n const [internalColumnPinning, setInternalColumnPinning] =\n useState<ColumnPinningState>(defaultColumnPinning)\n const [internalColumnOrder, setInternalColumnOrder] =\n useState<ColumnOrderState>(defaultColumnOrder)\n\n const initialPagination = {\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? 10,\n }\n const [internalPagination, setInternalPagination] =\n useState<PaginationState>(initialPagination)\n const isInternalPaginationChange = useRef(false)\n\n useEffect(() => {\n if (pagination?.pageIndex === undefined) {\n return\n }\n const pageIndex = pagination.pageIndex\n setInternalPagination((prev) =>\n prev.pageIndex === pageIndex ? prev : { ...prev, pageIndex }\n )\n }, [pagination?.pageIndex])\n\n useEffect(() => {\n if (pagination?.pageSize === undefined) {\n return\n }\n const pageSize = pagination.pageSize\n setInternalPagination((prev) =>\n prev.pageSize === pageSize ? prev : { ...prev, pageSize }\n )\n }, [pagination?.pageSize])\n\n // Derive enableColumnResizing from disableColumnResizing (enabled by default)\n const enableColumnResizing = !disableColumnResizing\n\n // Use controlled or internal state\n const sorting = controlledSorting ?? internalSorting\n const rowSelection = controlledRowSelection ?? internalRowSelection\n const columnFilters = controlledColumnFilters ?? internalColumnFilters\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const globalFilter = controlledGlobalFilter ?? internalGlobalFilter\n const columnSizing = controlledColumnSizing ?? internalColumnSizing\n const columnPinning = controlledColumnPinning ?? internalColumnPinning\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n\n // Compute effective pinning with auto-pin selection\n const effectiveColumnPinning = useMemo(() => {\n const shouldAutoPinSelection =\n enableRowSelection &&\n autoPinSelection &&\n Object.keys(rowSelection).length > 0\n\n if (!shouldAutoPinSelection) {\n return columnPinning\n }\n\n // Add \"select\" to left pinned if not already present\n const leftPinned = columnPinning.left ?? []\n if (leftPinned.includes(\"select\")) {\n return columnPinning\n }\n\n return {\n ...columnPinning,\n left: [\"select\", ...leftPinned],\n }\n }, [columnPinning, rowSelection, enableRowSelection, autoPinSelection])\n\n // Build selection column if enabled\n const selectionColumn: ColumnDef<TData, unknown> = useMemo(\n () => ({\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectAll\"\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectRow\"\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n disabled={!row.getCanSelect()}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n enableResizing: false,\n size: 40,\n }),\n []\n )\n\n // Transform columns to auto-wrap sortable headers\n const processedColumns = useMemo(() => {\n return wrapSortableHeaders(columns, enableSorting)\n }, [columns, enableSorting])\n\n // Prepend selection column if enabled\n const allColumns = useMemo(() => {\n if (enableRowSelection) {\n return [selectionColumn, ...processedColumns]\n }\n return processedColumns\n }, [processedColumns, enableRowSelection, selectionColumn])\n\n const usePagination = Boolean(pagination)\n const useVirtualization = Boolean(virtualization?.enabled && !usePagination)\n const isServerSidePagination =\n usePagination &&\n (pagination?.totalItems !== undefined ||\n pagination?.pageCount !== undefined)\n\n const handlePaginationChange = useCallback(\n (\n updater: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => {\n isInternalPaginationChange.current = true\n setInternalPagination((prev) => {\n const next = typeof updater === \"function\" ? updater(prev) : updater\n return next\n })\n },\n []\n )\n\n // Call user's pagination callback after render completes\n useEffect(() => {\n if (isInternalPaginationChange.current) {\n pagination?.onPaginationChange?.(internalPagination)\n isInternalPaginationChange.current = false\n }\n }, [internalPagination, pagination])\n\n // Create table instance\n const table = useReactTable({\n data,\n columns: allColumns,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n\n // Default column configuration\n defaultColumn: {\n minSize: 50,\n },\n\n // Sorting\n ...(enableSorting &&\n !manualSorting && {\n getSortedRowModel: getSortedRowModel(),\n }),\n ...(manualSorting && {\n manualSorting: true,\n }),\n state: {\n sorting,\n rowSelection,\n columnFilters,\n columnVisibility,\n globalFilter,\n columnPinning: effectiveColumnPinning,\n columnOrder,\n ...(usePagination && {\n pagination: internalPagination,\n }),\n ...(enableColumnResizing && {\n columnSizing,\n }),\n },\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater\n setInternalSorting(newSorting)\n onSortingChange?.(newSorting)\n },\n\n // Row selection\n enableRowSelection:\n typeof enableRowSelection === \"function\"\n ? (row: Row<TData>) => enableRowSelection(row)\n : enableRowSelection,\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater\n setInternalRowSelection(newSelection)\n onRowSelectionChange?.(newSelection)\n },\n\n // Filtering\n ...((enableFiltering || enableGlobalFilter) &&\n !manualFiltering && {\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(manualFiltering && {\n manualFiltering: true,\n }),\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === \"function\" ? updater(columnFilters) : updater\n setInternalColumnFilters(newFilters)\n onColumnFiltersChange?.(newFilters)\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater\n setInternalColumnVisibility(newVisibility)\n onColumnVisibilityChange?.(newVisibility)\n },\n onGlobalFilterChange: (updater) => {\n const newGlobalFilter =\n typeof updater === \"function\" ? updater(globalFilter) : updater\n setInternalGlobalFilter(newGlobalFilter)\n onGlobalFilterChange?.(newGlobalFilter)\n },\n\n // Column ordering\n onColumnOrderChange: (updater) => {\n const newOrder =\n typeof updater === \"function\" ? updater(columnOrder) : updater\n setInternalColumnOrder(newOrder)\n onColumnOrderChange?.(newOrder)\n },\n\n // Column resizing\n enableColumnResizing,\n columnResizeMode,\n onColumnSizingChange: (updater) => {\n const newSizing =\n typeof updater === \"function\" ? updater(columnSizing) : updater\n setInternalColumnSizing(newSizing)\n onColumnSizingChange?.(newSizing)\n },\n\n // Column pinning\n onColumnPinningChange: (updater) => {\n const newPinning =\n typeof updater === \"function\" ? updater(columnPinning) : updater\n setInternalColumnPinning(newPinning)\n onColumnPinningChange?.(newPinning)\n },\n\n // Pagination\n ...(usePagination &&\n !isServerSidePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isServerSidePagination && {\n manualPagination: true,\n pageCount: pagination?.pageCount,\n rowCount: pagination?.totalItems,\n }),\n ...(usePagination && {\n onPaginationChange: handlePaginationChange,\n }),\n })\n\n const contextValue = useMemo(\n () => ({\n table,\n pagination,\n config: {\n enableVirtualization: useVirtualization,\n estimateRowHeight:\n virtualization?.estimateRowHeight ?? DEFAULT_ROW_HEIGHT,\n overscan: virtualization?.overscan ?? DEFAULT_OVERSCAN,\n containerHeight:\n virtualization?.containerHeight ?? DEFAULT_CONTAINER_HEIGHT,\n },\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n resizeHandleVisibility,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n columnSizing,\n enableColumnOrdering,\n columnOrder,\n }),\n [\n table,\n pagination,\n useVirtualization,\n virtualization,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n resizeHandleVisibility,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n columnSizing,\n enableColumnOrdering,\n columnOrder,\n ]\n )\n\n return (\n <DataTableContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"data-table\"\n {...{ [SLOT_ATTR]: \"data-table\" }}\n data-fs-element=\"DataTable\"\n className={mergeClasses(styles.root, className)}\n // Authoritative, normalized, spread last: a raw caller data-density prop must never win\n // over the normalized density prop — same invariant DensityProvider/Table enforce.\n // canonicalDensity is the SAME normalization DensityContextBoundary below applies to the\n // context value, so an invalid density can never make DOM and context disagree.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </div>\n </DataTableContext.Provider>\n )\n}\n\nexport const DataTable = React.forwardRef(DataTableInner) as <TData>(\n props: DataTableProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement | null\n"],"names":["wrapSortableHeaders","columns","enableSorting","column","headerTitle","col","jsx","DataTableColumnHeader","_a","useStyles","makeZenithStyles","DataTableInner","data","children","getRowId","enableRowSelection","manualSorting","enableFiltering","manualFiltering","enableGlobalFilter","pagination","controlledSorting","onSortingChange","defaultSorting","controlledRowSelection","onRowSelectionChange","defaultRowSelection","controlledColumnFilters","onColumnFiltersChange","controlledColumnVisibility","onColumnVisibilityChange","controlledGlobalFilter","onGlobalFilterChange","onRowClick","clickableRowClassName","selectedRowClassName","cellOverflow","disableColumnResizing","resizeHandleVisibility","columnResizeMode","controlledColumnSizing","onColumnSizingChange","defaultColumnSizing","controlledColumnPinning","onColumnPinningChange","defaultColumnPinning","autoPinSelection","showHeaderBorder","showRowBorders","fitHeaderWidth","controlledColumnOrder","onColumnOrderChange","defaultColumnOrder","enableColumnOrdering","virtualization","density","className","ref","styles","internalSorting","setInternalSorting","useState","internalRowSelection","setInternalRowSelection","internalColumnFilters","setInternalColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalGlobalFilter","setInternalGlobalFilter","internalColumnSizing","setInternalColumnSizing","internalColumnPinning","setInternalColumnPinning","internalColumnOrder","setInternalColumnOrder","initialPagination","internalPagination","setInternalPagination","isInternalPaginationChange","useRef","useEffect","pageIndex","prev","pageSize","enableColumnResizing","sorting","rowSelection","columnFilters","columnVisibility","globalFilter","columnSizing","columnPinning","columnOrder","effectiveColumnPinning","useMemo","leftPinned","selectionColumn","table","Checkbox","value","row","processedColumns","allColumns","usePagination","useVirtualization","isServerSidePagination","handlePaginationChange","useCallback","updater","useReactTable","getCoreRowModel","getSortedRowModel","newSorting","newSelection","getFilteredRowModel","newFilters","newVisibility","newGlobalFilter","newOrder","newSizing","newPinning","getPaginationRowModel","contextValue","DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","DEFAULT_CONTAINER_HEIGHT","DataTableContext","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","DataTable","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../../../src/components/data-table/data-table.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useState, useRef, useEffect, useCallback, useMemo } from \"react\"\nimport type { ReactNode, MouseEvent } from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type ColumnFiltersState,\n type VisibilityState,\n type ColumnDef,\n type Row,\n type ColumnSizingState,\n type ColumnPinningState,\n type ColumnOrderState,\n type HeaderContext,\n} from \"@tanstack/react-table\"\nimport { mergeClasses } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport { Checkbox } from \"../checkbox/checkbox\"\nimport { type TableDensity } from \"../table/table\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\nimport {\n DataTableContext,\n type DataTablePaginationConfig,\n type DataTableCellOverflow,\n type DataTableVirtualizationConfig,\n DEFAULT_ROW_HEIGHT,\n DEFAULT_OVERSCAN,\n DEFAULT_CONTAINER_HEIGHT,\n} from \"./data-table-context\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DataTableProps<TData> = {\n /** Column definitions */\n columns: ColumnDef<TData, unknown>[]\n /** Data array */\n data: TData[]\n /** Children rendered inside the context (DataTableContent, DataTablePagination, etc.) */\n children?: ReactNode\n /** Unique key accessor for each row */\n getRowId?: (row: TData) => string\n /** Enable row selection with checkboxes */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /** Enable column sorting */\n enableSorting?: boolean\n /** Skip client-side sorting (for server-side sorting). When true, sorting state is tracked but rows are not sorted client-side. */\n manualSorting?: boolean\n /** Enable column filtering */\n enableFiltering?: boolean\n /** Skip client-side filtering (for server-side filtering). When true, filter state is tracked but rows are not filtered client-side. */\n manualFiltering?: boolean\n /** Enable global search/filter */\n enableGlobalFilter?: boolean\n /** Pagination configuration */\n pagination?: DataTablePaginationConfig\n /** Controlled sorting state */\n sorting?: SortingState\n /** Callback when sorting changes */\n onSortingChange?: (sorting: SortingState) => void\n /** Default sorting state */\n defaultSorting?: SortingState\n /** Controlled row selection state */\n rowSelection?: RowSelectionState\n /** Callback when row selection changes */\n onRowSelectionChange?: (selection: RowSelectionState) => void\n /** Default row selection state */\n defaultRowSelection?: RowSelectionState\n /** Controlled column filters state */\n columnFilters?: ColumnFiltersState\n /** Callback when column filters change */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void\n /** Controlled column visibility state */\n columnVisibility?: VisibilityState\n /** Callback when column visibility changes */\n onColumnVisibilityChange?: (visibility: VisibilityState) => void\n /** Controlled global filter value */\n globalFilter?: string\n /** Callback when global filter changes */\n onGlobalFilterChange?: (value: string) => void\n /** Handler called when a row is clicked. Enables clickable row mode. */\n onRowClick?: (row: Row<TData>, event: MouseEvent<HTMLTableRowElement>) => void\n /** Custom hover class for clickable rows. Default: 'hover:bg-accent-a3' */\n clickableRowClassName?: string\n /** Custom class for selected rows. Default: 'data-[state=selected]:bg-accent-a3' */\n selectedRowClassName?: string\n /** Controls how cell content handles overflow. 'grow' expands cells (default), 'wrap' wraps text, 'truncate' shows ellipsis. Can be overridden per-column via column meta. */\n cellOverflow?: DataTableCellOverflow\n /** Disable column width resizing (enabled by default) */\n disableColumnResizing?: boolean\n /** Controls when resize handles are visible. 'always' shows handles persistently, 'onHeaderHover' only shows on header row hover. Default: 'onHeaderHover' */\n resizeHandleVisibility?: \"always\" | \"onHeaderHover\"\n /** Resize mode: 'onChange' updates during drag, 'onEnd' updates when drag finishes. Default: 'onChange' */\n columnResizeMode?: \"onChange\" | \"onEnd\"\n /** Controlled column sizing state */\n columnSizing?: ColumnSizingState\n /** Callback when column sizing changes */\n onColumnSizingChange?: (sizing: ColumnSizingState) => void\n /** Default column sizing for uncontrolled mode */\n defaultColumnSizing?: ColumnSizingState\n /** Controlled column pinning state */\n columnPinning?: ColumnPinningState\n /** Callback when column pinning changes */\n onColumnPinningChange?: (pinning: ColumnPinningState) => void\n /** Default column pinning for uncontrolled mode */\n defaultColumnPinning?: ColumnPinningState\n /** Auto-pin selection column to left when rows are selected. Default: false */\n autoPinSelection?: boolean\n /** Show bottom border on header row. Default: true */\n showHeaderBorder?: boolean\n /** Show bottom borders on data rows. Default: true */\n showRowBorders?: boolean\n /** Ensure columns have minimum width to fit header content (prevents hover clipping on sortable headers). Default: false */\n fitHeaderWidth?: boolean\n /** Controlled column order */\n columnOrder?: ColumnOrderState\n /** Callback for column order changes */\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void\n /** Default column order for uncontrolled mode */\n defaultColumnOrder?: ColumnOrderState\n /** Enable drag-and-drop column reordering in headers. Default: false */\n enableColumnOrdering?: boolean\n /** Virtualization configuration for large datasets (incompatible with pagination) */\n virtualization?: DataTableVirtualizationConfig\n /**\n * Cell density: compact, normal, or comfortable. Omitted inherits ambient CSS density (shell or\n * an outer `DensityProvider`) with no default-normal stamp — explicit only when passed.\n */\n density?: TableDensity\n /** Additional class name */\n className?: string\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Transforms columns to auto-wrap string headers with DataTableColumnHeader\n * when sorting is enabled at the table level.\n */\nfunction wrapSortableHeaders<TData>(\n columns: ColumnDef<TData, unknown>[],\n enableSorting: boolean | undefined\n): ColumnDef<TData, unknown>[] {\n if (!enableSorting) {\n return columns\n }\n\n return columns.map((column) => {\n // Skip if column explicitly disables sorting\n if (column.enableSorting === false) {\n return column\n }\n\n // Skip if header is not a string (already a function/component)\n if (typeof column.header !== \"string\") {\n return column\n }\n\n const headerTitle = column.header\n\n return {\n ...column,\n header: ({ column: col }: HeaderContext<TData, unknown>) => (\n <DataTableColumnHeader column={col} title={headerTitle} />\n ),\n meta: {\n ...column.meta,\n // Preserve original header for visibility dropdown fallback\n visibilityLabel:\n (column.meta as { visibilityLabel?: string } | undefined)\n ?.visibilityLabel ?? headerTitle,\n // Flag to indicate this header was auto-wrapped with DataTableColumnHeader\n _sortableHeaderWrapped: true,\n },\n } as ColumnDef<TData, unknown>\n })\n}\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n width: \"100%\",\n maxWidth: \"100%\",\n },\n})\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction DataTableInner<TData>(\n {\n columns,\n data,\n children,\n getRowId,\n enableRowSelection = false,\n enableSorting = false,\n manualSorting = false,\n enableFiltering = false,\n manualFiltering = false,\n enableGlobalFilter = false,\n pagination,\n sorting: controlledSorting,\n onSortingChange,\n defaultSorting = [],\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n defaultRowSelection = {},\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n globalFilter: controlledGlobalFilter,\n onGlobalFilterChange,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow = \"truncate\",\n disableColumnResizing = false,\n resizeHandleVisibility = \"onHeaderHover\",\n columnResizeMode = \"onChange\",\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n defaultColumnSizing = {},\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n defaultColumnPinning = { left: [], right: [] },\n autoPinSelection,\n showHeaderBorder = true,\n showRowBorders = true,\n fitHeaderWidth = false,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n defaultColumnOrder = [],\n enableColumnOrdering = false,\n virtualization,\n density,\n className,\n }: DataTableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const styles = useStyles()\n\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] =\n useState<SortingState>(defaultSorting)\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>(defaultRowSelection)\n const [internalColumnFilters, setInternalColumnFilters] =\n useState<ColumnFiltersState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<VisibilityState>({})\n const [internalGlobalFilter, setInternalGlobalFilter] = useState<string>(\"\")\n const [internalColumnSizing, setInternalColumnSizing] =\n useState<ColumnSizingState>(defaultColumnSizing)\n const [internalColumnPinning, setInternalColumnPinning] =\n useState<ColumnPinningState>(defaultColumnPinning)\n const [internalColumnOrder, setInternalColumnOrder] =\n useState<ColumnOrderState>(defaultColumnOrder)\n\n const initialPagination = {\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? 10,\n }\n const [internalPagination, setInternalPagination] =\n useState<PaginationState>(initialPagination)\n const isInternalPaginationChange = useRef(false)\n\n useEffect(() => {\n if (pagination?.pageIndex === undefined) {\n return\n }\n const pageIndex = pagination.pageIndex\n setInternalPagination((prev) =>\n prev.pageIndex === pageIndex ? prev : { ...prev, pageIndex }\n )\n }, [pagination?.pageIndex])\n\n useEffect(() => {\n if (pagination?.pageSize === undefined) {\n return\n }\n const pageSize = pagination.pageSize\n setInternalPagination((prev) =>\n prev.pageSize === pageSize ? prev : { ...prev, pageSize }\n )\n }, [pagination?.pageSize])\n\n // Derive enableColumnResizing from disableColumnResizing (enabled by default)\n const enableColumnResizing = !disableColumnResizing\n\n // Use controlled or internal state\n const sorting = controlledSorting ?? internalSorting\n const rowSelection = controlledRowSelection ?? internalRowSelection\n const columnFilters = controlledColumnFilters ?? internalColumnFilters\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const globalFilter = controlledGlobalFilter ?? internalGlobalFilter\n const columnSizing = controlledColumnSizing ?? internalColumnSizing\n const columnPinning = controlledColumnPinning ?? internalColumnPinning\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n\n // Compute effective pinning with auto-pin selection\n const effectiveColumnPinning = useMemo(() => {\n const shouldAutoPinSelection =\n enableRowSelection &&\n autoPinSelection &&\n Object.keys(rowSelection).length > 0\n\n if (!shouldAutoPinSelection) {\n return columnPinning\n }\n\n // Add \"select\" to left pinned if not already present\n const leftPinned = columnPinning.left ?? []\n if (leftPinned.includes(\"select\")) {\n return columnPinning\n }\n\n return {\n ...columnPinning,\n left: [\"select\", ...leftPinned],\n }\n }, [columnPinning, rowSelection, enableRowSelection, autoPinSelection])\n\n // Build selection column if enabled\n const selectionColumn: ColumnDef<TData, unknown> = useMemo(\n () => ({\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectAll\"\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectRow\"\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n disabled={!row.getCanSelect()}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n enableResizing: false,\n size: 40,\n }),\n []\n )\n\n // Transform columns to auto-wrap sortable headers\n const processedColumns = useMemo(() => {\n return wrapSortableHeaders(columns, enableSorting)\n }, [columns, enableSorting])\n\n // Prepend selection column if enabled\n const allColumns = useMemo(() => {\n if (enableRowSelection) {\n return [selectionColumn, ...processedColumns]\n }\n return processedColumns\n }, [processedColumns, enableRowSelection, selectionColumn])\n\n const usePagination = Boolean(pagination)\n const useVirtualization = Boolean(virtualization?.enabled && !usePagination)\n const isServerSidePagination =\n usePagination &&\n (pagination?.totalItems !== undefined ||\n pagination?.pageCount !== undefined)\n\n const handlePaginationChange = useCallback(\n (\n updater: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => {\n isInternalPaginationChange.current = true\n setInternalPagination((prev) => {\n const next = typeof updater === \"function\" ? updater(prev) : updater\n return next\n })\n },\n []\n )\n\n // Call user's pagination callback after render completes\n useEffect(() => {\n if (isInternalPaginationChange.current) {\n pagination?.onPaginationChange?.(internalPagination)\n isInternalPaginationChange.current = false\n }\n }, [internalPagination, pagination])\n\n // Create table instance\n const table = useReactTable({\n data,\n columns: allColumns,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n\n // Default column configuration\n defaultColumn: {\n minSize: 50,\n },\n\n // Sorting\n ...(enableSorting &&\n !manualSorting && {\n getSortedRowModel: getSortedRowModel(),\n }),\n ...(manualSorting && {\n manualSorting: true,\n }),\n state: {\n sorting,\n rowSelection,\n columnFilters,\n columnVisibility,\n globalFilter,\n columnPinning: effectiveColumnPinning,\n columnOrder,\n ...(usePagination && {\n pagination: internalPagination,\n }),\n ...(enableColumnResizing && {\n columnSizing,\n }),\n },\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater\n setInternalSorting(newSorting)\n onSortingChange?.(newSorting)\n },\n\n // Row selection\n enableRowSelection:\n typeof enableRowSelection === \"function\"\n ? (row: Row<TData>) => enableRowSelection(row)\n : enableRowSelection,\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater\n setInternalRowSelection(newSelection)\n onRowSelectionChange?.(newSelection)\n },\n\n // Filtering\n ...((enableFiltering || enableGlobalFilter) &&\n !manualFiltering && {\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(manualFiltering && {\n manualFiltering: true,\n }),\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === \"function\" ? updater(columnFilters) : updater\n setInternalColumnFilters(newFilters)\n onColumnFiltersChange?.(newFilters)\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater\n setInternalColumnVisibility(newVisibility)\n onColumnVisibilityChange?.(newVisibility)\n },\n onGlobalFilterChange: (updater) => {\n const newGlobalFilter =\n typeof updater === \"function\" ? updater(globalFilter) : updater\n setInternalGlobalFilter(newGlobalFilter)\n onGlobalFilterChange?.(newGlobalFilter)\n },\n\n // Column ordering\n onColumnOrderChange: (updater) => {\n const newOrder =\n typeof updater === \"function\" ? updater(columnOrder) : updater\n setInternalColumnOrder(newOrder)\n onColumnOrderChange?.(newOrder)\n },\n\n // Column resizing\n enableColumnResizing,\n columnResizeMode,\n onColumnSizingChange: (updater) => {\n const newSizing =\n typeof updater === \"function\" ? updater(columnSizing) : updater\n setInternalColumnSizing(newSizing)\n onColumnSizingChange?.(newSizing)\n },\n\n // Column pinning\n onColumnPinningChange: (updater) => {\n const newPinning =\n typeof updater === \"function\" ? updater(columnPinning) : updater\n setInternalColumnPinning(newPinning)\n onColumnPinningChange?.(newPinning)\n },\n\n // Pagination\n ...(usePagination &&\n !isServerSidePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isServerSidePagination && {\n manualPagination: true,\n pageCount: pagination?.pageCount,\n rowCount: pagination?.totalItems,\n }),\n ...(usePagination && {\n onPaginationChange: handlePaginationChange,\n }),\n })\n\n const contextValue = useMemo(\n () => ({\n table,\n pagination,\n config: {\n enableVirtualization: useVirtualization,\n estimateRowHeight:\n virtualization?.estimateRowHeight ?? DEFAULT_ROW_HEIGHT,\n overscan: virtualization?.overscan ?? DEFAULT_OVERSCAN,\n containerHeight:\n virtualization?.containerHeight ?? DEFAULT_CONTAINER_HEIGHT,\n },\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n resizeHandleVisibility,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n columnSizing,\n enableColumnOrdering,\n columnOrder,\n }),\n [\n table,\n pagination,\n useVirtualization,\n virtualization,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n resizeHandleVisibility,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n columnSizing,\n enableColumnOrdering,\n columnOrder,\n ]\n )\n\n return (\n <DataTableContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"data-table\"\n {...{ [SLOT_ATTR]: \"data-table\" }}\n data-fs-element=\"DataTable\"\n className={mergeClasses(styles.root, className)}\n // Authoritative, normalized, spread last: a raw caller data-density prop must never win\n // over the normalized density prop — same invariant DensityProvider/Table enforce.\n // canonicalDensity is the SAME normalization DensityContextBoundary below applies to the\n // context value, so an invalid density can never make DOM and context disagree.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </div>\n </DataTableContext.Provider>\n )\n}\n\nexport const DataTable = React.forwardRef(DataTableInner) as <TData>(\n props: DataTableProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement | null\n"],"names":["wrapSortableHeaders","columns","enableSorting","column","headerTitle","col","jsx","DataTableColumnHeader","_a","useStyles","makeZenithStyles","boxModel","DataTableInner","data","children","getRowId","enableRowSelection","manualSorting","enableFiltering","manualFiltering","enableGlobalFilter","pagination","controlledSorting","onSortingChange","defaultSorting","controlledRowSelection","onRowSelectionChange","defaultRowSelection","controlledColumnFilters","onColumnFiltersChange","controlledColumnVisibility","onColumnVisibilityChange","controlledGlobalFilter","onGlobalFilterChange","onRowClick","clickableRowClassName","selectedRowClassName","cellOverflow","disableColumnResizing","resizeHandleVisibility","columnResizeMode","controlledColumnSizing","onColumnSizingChange","defaultColumnSizing","controlledColumnPinning","onColumnPinningChange","defaultColumnPinning","autoPinSelection","showHeaderBorder","showRowBorders","fitHeaderWidth","controlledColumnOrder","onColumnOrderChange","defaultColumnOrder","enableColumnOrdering","virtualization","density","className","ref","styles","internalSorting","setInternalSorting","useState","internalRowSelection","setInternalRowSelection","internalColumnFilters","setInternalColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalGlobalFilter","setInternalGlobalFilter","internalColumnSizing","setInternalColumnSizing","internalColumnPinning","setInternalColumnPinning","internalColumnOrder","setInternalColumnOrder","initialPagination","internalPagination","setInternalPagination","isInternalPaginationChange","useRef","useEffect","pageIndex","prev","pageSize","enableColumnResizing","sorting","rowSelection","columnFilters","columnVisibility","globalFilter","columnSizing","columnPinning","columnOrder","effectiveColumnPinning","useMemo","leftPinned","selectionColumn","table","Checkbox","value","row","processedColumns","allColumns","usePagination","useVirtualization","isServerSidePagination","handlePaginationChange","useCallback","updater","useReactTable","getCoreRowModel","getSortedRowModel","newSorting","newSelection","getFilteredRowModel","newFilters","newVisibility","newGlobalFilter","newOrder","newSizing","newPinning","getPaginationRowModel","contextValue","DEFAULT_ROW_HEIGHT","DEFAULT_OVERSCAN","DEFAULT_CONTAINER_HEIGHT","DataTableContext","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","DataTable","React"],"mappings":";;;;;;;;;;;;AA2JA,SAASA,GACPC,GACAC,GAC6B;AAC7B,SAAKA,IAIED,EAAQ,IAAI,CAACE,MAAW;;AAO7B,QALIA,EAAO,kBAAkB,MAKzB,OAAOA,EAAO,UAAW;AAC3B,aAAOA;AAGT,UAAMC,IAAcD,EAAO;AAE3B,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,QAAQ,CAAC,EAAE,QAAQE,EAAA,MACjB,gBAAAC,EAACC,IAAA,EAAsB,QAAQF,GAAK,OAAOD,EAAA,CAAa;AAAA,MAE1D,MAAM;AAAA,QACJ,GAAGD,EAAO;AAAA;AAAA,QAEV,mBACGK,IAAAL,EAAO,SAAP,gBAAAK,EACG,oBAAmBJ;AAAA;AAAA,QAEzB,wBAAwB;AAAA,MAAA;AAAA,IAC1B;AAAA,EAEJ,CAAC,IA/BQH;AAgCX;AAEA,MAAMQ,KAAYC,GAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,GAAGC;AAAA,IACH,OAAO;AAAA,IACP,UAAU;AAAA,EAAA;AAEd,CAAC;AAMD,SAASC,GACP;AAAA,EACE,SAAAX;AAAA,EACA,MAAAY;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,oBAAAC,IAAqB;AAAA,EACrB,eAAAd,IAAgB;AAAA,EAChB,eAAAe,IAAgB;AAAA,EAChB,iBAAAC,KAAkB;AAAA,EAClB,iBAAAC,IAAkB;AAAA,EAClB,oBAAAC,KAAqB;AAAA,EACrB,YAAAC;AAAA,EACA,SAASC;AAAA,EACT,iBAAAC;AAAA,EACA,gBAAAC,KAAiB,CAAA;AAAA,EACjB,cAAcC;AAAA,EACd,sBAAAC;AAAA,EACA,qBAAAC,KAAsB,CAAA;AAAA,EACtB,eAAeC;AAAA,EACf,uBAAAC;AAAA,EACA,kBAAkBC;AAAA,EAClB,0BAAAC;AAAA,EACA,cAAcC;AAAA,EACd,sBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,uBAAAC,IAAwB;AAAA,EACxB,wBAAAC,IAAyB;AAAA,EACzB,kBAAAC,KAAmB;AAAA,EACnB,cAAcC;AAAA,EACd,sBAAAC;AAAA,EACA,qBAAAC,KAAsB,CAAA;AAAA,EACtB,eAAeC;AAAA,EACf,uBAAAC;AAAA,EACA,sBAAAC,KAAuB,EAAE,MAAM,IAAI,OAAO,CAAA,EAAC;AAAA,EAC3C,kBAAAC;AAAA,EACA,kBAAAC,IAAmB;AAAA,EACnB,gBAAAC,IAAiB;AAAA,EACjB,gBAAAC,IAAiB;AAAA,EACjB,aAAaC;AAAA,EACb,qBAAAC;AAAA,EACA,oBAAAC,KAAqB,CAAA;AAAA,EACrB,sBAAAC,IAAuB;AAAA,EACvB,gBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GACAC,IACA;AACA,QAAMC,KAASlD,GAAA,GAGT,CAACmD,IAAiBC,EAAkB,IACxCC,EAAuBtC,EAAc,GACjC,CAACuC,IAAsBC,EAAuB,IAClDF,EAA4BnC,EAAmB,GAC3C,CAACsC,IAAuBC,EAAwB,IACpDJ,EAA6B,CAAA,CAAE,GAC3B,CAACK,IAA0BC,EAA2B,IAC1DN,EAA0B,CAAA,CAAE,GACxB,CAACO,IAAsBC,EAAuB,IAAIR,EAAiB,EAAE,GACrE,CAACS,IAAsBC,EAAuB,IAClDV,EAA4BnB,EAAmB,GAC3C,CAAC8B,IAAuBC,EAAwB,IACpDZ,EAA6BhB,EAAoB,GAC7C,CAAC6B,IAAqBC,EAAsB,IAChDd,EAA2BT,EAAkB,GAEzCwB,KAAoB;AAAA,IACxB,YAAWxD,KAAA,gBAAAA,EAAY,cAAa;AAAA,IACpC,WAAUA,KAAA,gBAAAA,EAAY,aAAY;AAAA,EAAA,GAE9B,CAACyD,GAAoBC,CAAqB,IAC9CjB,EAA0Be,EAAiB,GACvCG,IAA6BC,GAAO,EAAK;AAE/C,EAAAC,EAAU,MAAM;AACd,SAAI7D,KAAA,gBAAAA,EAAY,eAAc;AAC5B;AAEF,UAAM8D,IAAY9D,EAAW;AAC7B,IAAA0D;AAAA,MAAsB,CAACK,MACrBA,EAAK,cAAcD,IAAYC,IAAO,EAAE,GAAGA,GAAM,WAAAD,EAAA;AAAA,IAAU;AAAA,EAE/D,GAAG,CAAC9D,KAAA,gBAAAA,EAAY,SAAS,CAAC,GAE1B6D,EAAU,MAAM;AACd,SAAI7D,KAAA,gBAAAA,EAAY,cAAa;AAC3B;AAEF,UAAMgE,IAAWhE,EAAW;AAC5B,IAAA0D;AAAA,MAAsB,CAACK,MACrBA,EAAK,aAAaC,IAAWD,IAAO,EAAE,GAAGA,GAAM,UAAAC,EAAA;AAAA,IAAS;AAAA,EAE5D,GAAG,CAAChE,KAAA,gBAAAA,EAAY,QAAQ,CAAC;AAGzB,QAAMiE,IAAuB,CAAChD,GAGxBiD,IAAUjE,MAAqBsC,IAC/B4B,IAAe/D,MAA0BsC,IACzC0B,IAAgB7D,MAA2BqC,IAC3CyB,IACJ5D,MAA8BqC,IAC1BwB,IAAe3D,MAA0BqC,IACzCuB,IAAenD,MAA0B8B,IACzCsB,IAAgBjD,MAA2B6B,IAC3CqB,IAAc3C,MAAyBwB,IAGvCoB,KAAyBC,EAAQ,MAAM;AAM3C,QAAI,EAJFhF,KACA+B,KACA,OAAO,KAAKyC,CAAY,EAAE,SAAS;AAGnC,aAAOK;AAIT,UAAMI,IAAaJ,EAAc,QAAQ,CAAA;AACzC,WAAII,EAAW,SAAS,QAAQ,IACvBJ,IAGF;AAAA,MACL,GAAGA;AAAA,MACH,MAAM,CAAC,UAAU,GAAGI,CAAU;AAAA,IAAA;AAAA,EAElC,GAAG,CAACJ,GAAeL,GAAcxE,GAAoB+B,CAAgB,CAAC,GAGhEmD,IAA6CF;AAAA,IACjD,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ,CAAC,EAAE,OAAAG,QACT,gBAAA7F;AAAA,QAAC8F;AAAA,QAAA;AAAA,UACC,mBAAgB;AAAA,UAChB,SACED,EAAM,yBAAA,KACLA,EAAM,+BAA+B;AAAA,UAExC,iBAAiB,CAACE,MAAUF,EAAM,0BAA0B,CAAC,CAACE,CAAK;AAAA,UACnE,cAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAGf,MAAM,CAAC,EAAE,KAAAC,EAAA,MACP,gBAAAhG;AAAA,QAAC8F;AAAA,QAAA;AAAA,UACC,mBAAgB;AAAA,UAChB,SAASE,EAAI,cAAA;AAAA,UACb,iBAAiB,CAACD,MAAUC,EAAI,eAAe,CAAC,CAACD,CAAK;AAAA,UACtD,UAAU,CAACC,EAAI,aAAA;AAAA,UACf,cAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAGf,eAAe;AAAA,MACf,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,MAAM;AAAA,IAAA;AAAA,IAER,CAAA;AAAA,EAAC,GAIGC,IAAmBP,EAAQ,MACxBhG,GAAoBC,GAASC,CAAa,GAChD,CAACD,GAASC,CAAa,CAAC,GAGrBsG,KAAaR,EAAQ,MACrBhF,IACK,CAACkF,GAAiB,GAAGK,CAAgB,IAEvCA,GACN,CAACA,GAAkBvF,GAAoBkF,CAAe,CAAC,GAEpDO,IAAgB,EAAQpF,GACxBqF,IAAoB,GAAQnD,KAAA,QAAAA,EAAgB,WAAW,CAACkD,IACxDE,IACJF,OACCpF,KAAA,gBAAAA,EAAY,gBAAe,WAC1BA,KAAA,gBAAAA,EAAY,eAAc,SAExBuF,KAAyBC;AAAA,IAC7B,CACEC,MACG;AACH,MAAA9B,EAA2B,UAAU,IACrCD,EAAsB,CAACK,MACR,OAAO0B,KAAY,aAAaA,EAAQ1B,CAAI,IAAI0B,CAE9D;AAAA,IACH;AAAA,IACA,CAAA;AAAA,EAAC;AAIH,EAAA5B,EAAU,MAAM;;AACd,IAAIF,EAA2B,aAC7BxE,IAAAa,KAAA,gBAAAA,EAAY,uBAAZ,QAAAb,EAAA,KAAAa,GAAiCyD,IACjCE,EAA2B,UAAU;AAAA,EAEzC,GAAG,CAACF,GAAoBzD,CAAU,CAAC;AAGnC,QAAM8E,IAAQY,GAAc;AAAA,IAC1B,MAAAlG;AAAA,IACA,SAAS2F;AAAA,IACT,UAAAzF;AAAA,IACA,iBAAiBiG,GAAA;AAAA;AAAA,IAGjB,eAAe;AAAA,MACb,SAAS;AAAA,IAAA;AAAA;AAAA,IAIX,GAAI9G,KACF,CAACe,KAAiB;AAAA,MAChB,mBAAmBgG,GAAA;AAAA,IAAkB;AAAA,IAEzC,GAAIhG,KAAiB;AAAA,MACnB,eAAe;AAAA,IAAA;AAAA,IAEjB,OAAO;AAAA,MACL,SAAAsE;AAAA,MACA,cAAAC;AAAA,MACA,eAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,eAAeI;AAAA,MACf,aAAAD;AAAA,MACA,GAAIW,KAAiB;AAAA,QACnB,YAAY3B;AAAA,MAAA;AAAA,MAEd,GAAIQ,KAAwB;AAAA,QAC1B,cAAAM;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,iBAAiB,CAACkB,MAAY;AAC5B,YAAMI,IACJ,OAAOJ,KAAY,aAAaA,EAAQvB,CAAO,IAAIuB;AACrD,MAAAjD,GAAmBqD,CAAU,GAC7B3F,KAAA,QAAAA,EAAkB2F;AAAA,IACpB;AAAA;AAAA,IAGA,oBACE,OAAOlG,KAAuB,aAC1B,CAACsF,MAAoBtF,EAAmBsF,CAAG,IAC3CtF;AAAA,IACN,sBAAsB,CAAC8F,MAAY;AACjC,YAAMK,IACJ,OAAOL,KAAY,aAAaA,EAAQtB,CAAY,IAAIsB;AAC1D,MAAA9C,GAAwBmD,CAAY,GACpCzF,KAAA,QAAAA,EAAuByF;AAAA,IACzB;AAAA;AAAA,IAGA,IAAKjG,MAAmBE,OACtB,CAACD,KAAmB;AAAA,MAClB,qBAAqBiG,GAAA;AAAA,IAAoB;AAAA,IAE7C,GAAIjG,KAAmB;AAAA,MACrB,iBAAiB;AAAA,IAAA;AAAA,IAEnB,uBAAuB,CAAC2F,MAAY;AAClC,YAAMO,IACJ,OAAOP,KAAY,aAAaA,EAAQrB,CAAa,IAAIqB;AAC3D,MAAA5C,GAAyBmD,CAAU,GACnCxF,KAAA,QAAAA,EAAwBwF;AAAA,IAC1B;AAAA,IACA,0BAA0B,CAACP,MAAY;AACrC,YAAMQ,IACJ,OAAOR,KAAY,aAAaA,EAAQpB,CAAgB,IAAIoB;AAC9D,MAAA1C,GAA4BkD,CAAa,GACzCvF,KAAA,QAAAA,EAA2BuF;AAAA,IAC7B;AAAA,IACA,sBAAsB,CAACR,MAAY;AACjC,YAAMS,IACJ,OAAOT,KAAY,aAAaA,EAAQnB,CAAY,IAAImB;AAC1D,MAAAxC,GAAwBiD,CAAe,GACvCtF,KAAA,QAAAA,EAAuBsF;AAAA,IACzB;AAAA;AAAA,IAGA,qBAAqB,CAACT,MAAY;AAChC,YAAMU,IACJ,OAAOV,KAAY,aAAaA,EAAQhB,CAAW,IAAIgB;AACzD,MAAAlC,GAAuB4C,CAAQ,GAC/BpE,KAAA,QAAAA,EAAsBoE;AAAA,IACxB;AAAA;AAAA,IAGA,sBAAAlC;AAAA,IACA,kBAAA9C;AAAA,IACA,sBAAsB,CAACsE,MAAY;AACjC,YAAMW,IACJ,OAAOX,KAAY,aAAaA,EAAQlB,CAAY,IAAIkB;AAC1D,MAAAtC,GAAwBiD,CAAS,GACjC/E,KAAA,QAAAA,EAAuB+E;AAAA,IACzB;AAAA;AAAA,IAGA,uBAAuB,CAACX,MAAY;AAClC,YAAMY,IACJ,OAAOZ,KAAY,aAAaA,EAAQjB,CAAa,IAAIiB;AAC3D,MAAApC,GAAyBgD,CAAU,GACnC7E,KAAA,QAAAA,EAAwB6E;AAAA,IAC1B;AAAA;AAAA,IAGA,GAAIjB,KACF,CAACE,KAA0B;AAAA,MACzB,uBAAuBgB,GAAA;AAAA,IAAsB;AAAA,IAEjD,GAAIhB,KAA0B;AAAA,MAC5B,kBAAkB;AAAA,MAClB,WAAWtF,KAAA,gBAAAA,EAAY;AAAA,MACvB,UAAUA,KAAA,gBAAAA,EAAY;AAAA,IAAA;AAAA,IAExB,GAAIoF,KAAiB;AAAA,MACnB,oBAAoBG;AAAA,IAAA;AAAA,EACtB,CACD,GAEKgB,KAAe5B;AAAA,IACnB,OAAO;AAAA,MACL,OAAAG;AAAA,MACA,YAAA9E;AAAA,MACA,QAAQ;AAAA,QACN,sBAAsBqF;AAAA,QACtB,oBACEnD,KAAA,gBAAAA,EAAgB,sBAAqBsE;AAAA,QACvC,WAAUtE,KAAA,gBAAAA,EAAgB,aAAYuE;AAAA,QACtC,kBACEvE,KAAA,gBAAAA,EAAgB,oBAAmBwE;AAAA,MAAA;AAAA,MAEvC,YAAA7F;AAAA,MACA,uBAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,uBAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,kBAAAS;AAAA,MACA,gBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAA0C;AAAA,MACA,sBAAAtC;AAAA,MACA,aAAAwC;AAAA,IAAA;AAAA,IAEF;AAAA,MACEK;AAAA,MACA9E;AAAA,MACAqF;AAAA,MACAnD;AAAA,MACArB;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAS;AAAA,MACAC;AAAA,MACAC;AAAA,MACA0C;AAAA,MACAtC;AAAA,MACAwC;AAAA,IAAA;AAAA,EACF;AAGF,SACE,gBAAAxF,EAAC0H,GAAiB,UAAjB,EAA0B,OAAOJ,IAChC,UAAA,gBAAAtH;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAoD;AAAA,MACA,aAAU;AAAA,MACJ,CAACuE,EAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,WAAWC,GAAavE,GAAO,MAAMF,EAAS;AAAA,MAK7C,GAAID,MAAY,SACb,EAAE,gBAAgB2E,GAAiB3E,CAAO,EAAA,IAC1C,CAAA;AAAA,MAEJ,UAAA,gBAAAlD,EAAC8H,IAAA,EAAuB,SAAA5E,GACrB,UAAA1C,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEO,MAAMuH,KAAYC,GAAM,WAAW1H,EAAc;"}
|