@trsys-tech/matrix-library 1.1.8-alpha.1 → 1.1.8-alpha.2
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/dist/components/data-table/DataTable.types.d.ts +21 -5
- package/dist/components/data-table/DataTable.types.d.ts.map +1 -1
- package/dist/components/data-table/DataTableRowView.d.ts.map +1 -1
- package/dist/components/data-table/dataTableModel.d.ts +16 -4
- package/dist/components/data-table/dataTableModel.d.ts.map +1 -1
- package/dist/components/data-table/useDataTableInstance.d.ts +3 -70
- package/dist/components/data-table/useDataTableInstance.d.ts.map +1 -1
- package/dist/datatablemodel.es.js.map +1 -1
- package/dist/datatablerowview.es.js.map +1 -1
- package/dist/usedatatableinstance.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,9 +16,9 @@ export type DataTableFilterOption = {
|
|
|
16
16
|
value: string;
|
|
17
17
|
label: string;
|
|
18
18
|
};
|
|
19
|
-
export type DataTableCellParams<T extends object
|
|
19
|
+
export type DataTableCellParams<T extends object, TValue = unknown> = {
|
|
20
20
|
data: T;
|
|
21
|
-
value:
|
|
21
|
+
value: TValue;
|
|
22
22
|
rowId: string;
|
|
23
23
|
/** Original input index; identity and imperative actions use rowId instead. */
|
|
24
24
|
rowIndex: number;
|
|
@@ -34,7 +34,7 @@ export type DataTableEditorProps<T extends object> = DataTableCellParams<T> & {
|
|
|
34
34
|
commit: () => boolean;
|
|
35
35
|
cancel: () => void;
|
|
36
36
|
};
|
|
37
|
-
|
|
37
|
+
type DataTableColumnOptions<T extends object> = {
|
|
38
38
|
/** Stable id required for computed or action columns without a field. */
|
|
39
39
|
colId?: string;
|
|
40
40
|
field?: (keyof T & string) | (string & {});
|
|
@@ -85,6 +85,21 @@ export type DataTableColumnDef<T extends object> = {
|
|
|
85
85
|
/** Native TanStack options. Hiding and pinning default to false; opt in with enableHiding/enablePinning. */
|
|
86
86
|
tableOptions?: Partial<Omit<ColumnDef<DataTableFeatures, T, any>, "id" | "header" | "cell" | "footer" | "accessorKey" | "accessorFn" | "columns">>;
|
|
87
87
|
};
|
|
88
|
+
/** A field discriminates the renderer props, preserving each property's exact value type. */
|
|
89
|
+
export type DataTableColumnDef<T extends object> = {
|
|
90
|
+
[K in keyof T & string]-?: Omit<DataTableColumnOptions<T>, "field" | "cellRenderer" | "valueGetter"> & {
|
|
91
|
+
field: K;
|
|
92
|
+
cellRenderer?: React.ComponentType<DataTableCellParams<T, T[K]>>;
|
|
93
|
+
valueGetter?: never;
|
|
94
|
+
};
|
|
95
|
+
}[keyof T & string] | (DataTableColumnOptions<T> & {
|
|
96
|
+
field?: undefined | `${string}.${string}`;
|
|
97
|
+
}) | (DataTableColumnOptions<T> & {
|
|
98
|
+
valueGetter: (params: {
|
|
99
|
+
data: T;
|
|
100
|
+
rowIndex: number;
|
|
101
|
+
}) => unknown;
|
|
102
|
+
});
|
|
88
103
|
export type DataTableEditEvent<T extends object> = {
|
|
89
104
|
rowId: string;
|
|
90
105
|
original: T;
|
|
@@ -120,8 +135,8 @@ export type DataTableApi<T extends object> = {
|
|
|
120
135
|
};
|
|
121
136
|
export type DataTableContentProps<T extends object> = Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "onRowClick"> & {
|
|
122
137
|
rowData: readonly T[] | null | undefined;
|
|
123
|
-
columnDefs: readonly DataTableColumnDef<T>[]
|
|
124
|
-
defaultColDef?: Partial<
|
|
138
|
+
columnDefs: NoInfer<readonly DataTableColumnDef<T>[]>;
|
|
139
|
+
defaultColDef?: Partial<DataTableColumnOptions<T>>;
|
|
125
140
|
/** String or numeric application id. Normalized to a string internally and in callbacks. Defaults to data.id, then input index. */
|
|
126
141
|
getRowId?: (data: T, index: number) => string | number;
|
|
127
142
|
onReady?: (api: DataTableApi<T>) => void;
|
|
@@ -173,4 +188,5 @@ export type DataTableContentProps<T extends object> = Omit<React.HTMLAttributes<
|
|
|
173
188
|
/** Styles on the scroll viewport, rather than the outer content wrapper. */
|
|
174
189
|
containerStyle?: React.CSSProperties;
|
|
175
190
|
};
|
|
191
|
+
export {};
|
|
176
192
|
//# sourceMappingURL=DataTable.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.types.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC3D,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,aAAa,GACb,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,UAAU,GACV,aAAa,GACb,oBAAoB,GACpB,UAAU,GACV,iBAAiB,GACjB,SAAS,GACT,OAAO,GACP,UAAU,CAAC;AACf,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"DataTable.types.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTable.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableRowView.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableRowView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOpD,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,KAAK,qBAAqB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACjD,qBAAqB,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,oBAAoB,CAC7G,GAAG;IACF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjG,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;IAC7F,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IACpH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gBAAgB,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;CACrD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"DataTableRowView.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableRowView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOpD,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,KAAK,qBAAqB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACjD,qBAAqB,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,oBAAoB,CAC7G,GAAG;IACF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjG,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;IAC7F,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IACpH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gBAAgB,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;CACrD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,qBA4PxH"}
|
|
@@ -9,9 +9,21 @@ export declare function getActiveDataTableCell(focused: {
|
|
|
9
9
|
};
|
|
10
10
|
/** Reorder within the current region without changing pinning or dropping hidden column IDs. */
|
|
11
11
|
export declare function moveDataTableColumn<T extends object>(table: DataTableInstance<T>, sourceId: string, targetId: string): boolean;
|
|
12
|
-
export declare function getColumnId
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
export declare function getColumnId(column: {
|
|
13
|
+
colId?: string;
|
|
14
|
+
field?: string;
|
|
15
|
+
}): string;
|
|
16
|
+
export declare function getCellValue<T extends object>(data: T, column: {
|
|
17
|
+
field?: string;
|
|
18
|
+
valueGetter?: (params: {
|
|
19
|
+
data: T;
|
|
20
|
+
rowIndex: number;
|
|
21
|
+
}) => unknown;
|
|
22
|
+
}, rowIndex: number): unknown;
|
|
23
|
+
export declare function setCellValue<T extends object>(data: T, column: {
|
|
24
|
+
field?: string;
|
|
25
|
+
valueSetter?: (data: T, value: unknown) => T;
|
|
26
|
+
}, value: unknown): T;
|
|
15
27
|
/** Native date inputs accept yyyy-MM-dd text only; serialize Date values locally and keep string dates. */
|
|
16
28
|
export declare function toDateInputValue(value: unknown): string;
|
|
17
29
|
/** Parse date input text back to a Date for date columns; text columns keep the typed string and clearing gives null. */
|
|
@@ -19,5 +31,5 @@ export declare function parseDateInputValue(rawValue: string, previousValue: unk
|
|
|
19
31
|
export declare function filterType<T extends object>(column: DataTableColumnDef<T>): DataTableFilterType;
|
|
20
32
|
export declare function matchesFilter(value: unknown, filter: DataTableFilter | string | undefined, type: DataTableFilterType): boolean;
|
|
21
33
|
/** Distribute surplus width without allowing pinned offsets to differ from rendered widths. */
|
|
22
|
-
export declare function getFlexSizes
|
|
34
|
+
export declare function getFlexSizes(columns: readonly Pick<DataTableColumnDef<Record<string, unknown>>, "field" | "colId" | "width" | "minWidth" | "maxWidth" | "flex">[], available: number, sizes: Record<string, number>): Record<string, number>;
|
|
23
35
|
//# sourceMappingURL=dataTableModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataTableModel.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/dataTableModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAErH,0FAA0F;AAC1F,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACnD,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,EAAE,SAAS,MAAM,EAAE;WAFV,MAAM;cAAY,MAAM;EAM3C;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgB9H;AAED,wBAAgB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"dataTableModel.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/dataTableModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAErH,0FAA0F;AAC1F,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACnD,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,EAAE,SAAS,MAAM,EAAE;WAFV,MAAM;cAAY,MAAM;EAM3C;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgB9H;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAI9E;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,IAAI,EAAE,CAAC,EACP,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAA;CAAE,EAC5F,QAAQ,EAAE,MAAM,GACf,OAAO,CAGT;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;CAAE,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAYnJ;AAKD,2GAA2G;AAC3G,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKvD;AAED,yHAAyH;AACzH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,GACzE,OAAO,CAST;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAK/F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAgD9H;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,EACrI,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCxB"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ColumnDef } from '@tanstack/react-table';
|
|
2
1
|
import { DataTableAlignmentContext } from './DataTableContext';
|
|
3
|
-
import { DataTableColumnDef, DataTableContentProps, DataTableInstance
|
|
4
|
-
import { TableFeature, Table, RowModel, CreatedSortFn } from '@tanstack/table-core';
|
|
2
|
+
import { DataTableColumnDef, DataTableContentProps, DataTableInstance } from './DataTable.types';
|
|
5
3
|
import * as React from "react";
|
|
6
4
|
type DataTableInstanceOptions<T extends object> = Pick<DataTableContentProps<T>, "rowData" | "columnDefs" | "getRowId" | "tableOptions" | "externalFilter" | "rowSelection" | "renderSubComponent" | "getRowCanExpand" | "onQuickFilterTextChange"> & {
|
|
7
|
-
defaultColDef:
|
|
5
|
+
defaultColDef: NonNullable<DataTableContentProps<T>["defaultColDef"]>;
|
|
8
6
|
paginationPageSize: number;
|
|
9
7
|
pagination: boolean;
|
|
10
8
|
patches: Record<string, {
|
|
@@ -21,72 +19,7 @@ type DataTableInstanceOptions<T extends object> = Pick<DataTableContentProps<T>,
|
|
|
21
19
|
/** Own TanStack configuration, controlled state precedence and stable row identities. */
|
|
22
20
|
export declare function useDataTableInstance<T extends object>({ rowData, columnDefs, defaultColDef, getRowId, paginationPageSize, tableOptions, externalFilter, rowSelection, pagination, renderSubComponent, getRowCanExpand, onQuickFilterTextChange, patches, alignment, isPrinting, viewportWidth, selectionWidth, searchText, setSearch, }: DataTableInstanceOptions<T>): {
|
|
23
21
|
table: DataTableInstance<T>;
|
|
24
|
-
definitionsById: Map<string,
|
|
25
|
-
colId?: string;
|
|
26
|
-
field?: (string & {}) | (keyof T & string) | undefined;
|
|
27
|
-
headerName?: React.ReactNode;
|
|
28
|
-
width?: number;
|
|
29
|
-
minWidth?: number;
|
|
30
|
-
maxWidth?: number;
|
|
31
|
-
flex?: number;
|
|
32
|
-
sortable?: boolean;
|
|
33
|
-
resizable?: boolean;
|
|
34
|
-
hide?: boolean;
|
|
35
|
-
pinned?: "start" | "end" | "left" | "right";
|
|
36
|
-
filter?: boolean | DataTableFilterType;
|
|
37
|
-
filterOptions?: readonly (string | DataTableFilterOption)[];
|
|
38
|
-
cellDataType?: "text" | "number" | "date" | "dateString" | "boolean";
|
|
39
|
-
editable?: boolean | ((data: T) => boolean) | undefined;
|
|
40
|
-
cellRenderer?: React.ComponentType< DataTableCellParams<T, keyof T>> | undefined;
|
|
41
|
-
cellEditor?: "number" | "text" | "date" | React.ComponentType< DataTableEditorProps<T>> | undefined;
|
|
42
|
-
valueGetter?: ((params: {
|
|
43
|
-
data: T;
|
|
44
|
-
rowIndex: number;
|
|
45
|
-
}) => unknown) | undefined;
|
|
46
|
-
valueFormatter?: ((params: {
|
|
47
|
-
data: T;
|
|
48
|
-
value: unknown;
|
|
49
|
-
}) => React.ReactNode) | undefined;
|
|
50
|
-
valueParser?: ((params: {
|
|
51
|
-
data: T;
|
|
52
|
-
oldValue: unknown;
|
|
53
|
-
newValue: unknown;
|
|
54
|
-
}) => unknown) | undefined;
|
|
55
|
-
valueSetter?: ((data: T, value: unknown) => T) | undefined;
|
|
56
|
-
getQuickFilterText?: ((params: {
|
|
57
|
-
data: T;
|
|
58
|
-
value: unknown;
|
|
59
|
-
}) => string) | undefined;
|
|
60
|
-
cellClass?: string | ((params: DataTableCellParams<T, keyof T>) => string) | undefined;
|
|
61
|
-
align?: "start" | "center" | "end";
|
|
62
|
-
hideInPrint?: boolean;
|
|
63
|
-
suppressRowClick?: boolean;
|
|
64
|
-
onKeyDown?: ((event: React.KeyboardEvent, params: DataTableCellParams<T, keyof T>) => void) | undefined;
|
|
65
|
-
validate?: ((value: unknown, draft: T) => readonly string[] | null) | undefined;
|
|
66
|
-
tableOptions?: Partial<Omit<ColumnDef<{
|
|
67
|
-
columnFilteringFeature: TableFeature;
|
|
68
|
-
globalFilteringFeature: TableFeature;
|
|
69
|
-
columnOrderingFeature: TableFeature;
|
|
70
|
-
columnPinningFeature: TableFeature;
|
|
71
|
-
columnSizingFeature: TableFeature;
|
|
72
|
-
columnResizingFeature: TableFeature;
|
|
73
|
-
columnVisibilityFeature: TableFeature;
|
|
74
|
-
rowExpandingFeature: TableFeature;
|
|
75
|
-
rowPaginationFeature: TableFeature;
|
|
76
|
-
rowPinningFeature: TableFeature;
|
|
77
|
-
rowSelectionFeature: TableFeature;
|
|
78
|
-
rowSortingFeature: TableFeature;
|
|
79
|
-
filteredRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
80
|
-
sortedRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
81
|
-
expandedRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
82
|
-
paginatedRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
83
|
-
sortFns: {
|
|
84
|
-
alphanumeric: CreatedSortFn<any, any>;
|
|
85
|
-
datetime: CreatedSortFn<any, any>;
|
|
86
|
-
basic: CreatedSortFn<any, any>;
|
|
87
|
-
};
|
|
88
|
-
}, T, any>, "columns" | "footer" | "header" | "id" | "cell" | "accessorKey" | "accessorFn">> | undefined;
|
|
89
|
-
}>;
|
|
22
|
+
definitionsById: Map<string, DataTableColumnDef<T>>;
|
|
90
23
|
sourcesById: Map<string, T>;
|
|
91
24
|
data: T[];
|
|
92
25
|
rowIndices: Map<T, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataTableInstance.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/useDataTableInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDataTableInstance.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/useDataTableInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAGrB,iBAAiB,EAGlB,MAAM,mBAAmB,CAAC;AAG3B,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACpD,qBAAqB,CAAC,CAAC,CAAC,EACtB,SAAS,GACT,YAAY,GACZ,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,iBAAiB,GACjB,yBAAyB,CAC5B,GAAG;IACF,aAAa,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,EACrD,OAAO,EACP,UAAU,EACV,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,SAAS,GACV,EAAE,wBAAwB,CAAC,CAAC,CAAC;;;;;;sBAKnB,CAAC,SAAS,MAAM;EAqL1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatablemodel.es.js","sources":["../src/components/data-table/dataTableModel.ts"],"sourcesContent":["import type { DataTableColumnDef, DataTableFilter, DataTableFilterType, DataTableInstance } from \"./DataTable.types\";\n\n/** Keep the roving tab stop on a mounted row when virtualization changes the viewport. */\nexport function getActiveDataTableCell(\n focused: { rowId: string; columnId: string } | null,\n renderedIds: readonly string[],\n columnIds: readonly string[],\n) {\n if (focused && renderedIds.includes(focused.rowId) && columnIds.includes(focused.columnId)) return focused;\n return { rowId: renderedIds[0], columnId: columnIds[0] };\n}\n\n/** Reorder within the current region without changing pinning or dropping hidden column IDs. */\nexport function moveDataTableColumn<T extends object>(table: DataTableInstance<T>, sourceId: string, targetId: string): boolean {\n if (sourceId === targetId || sourceId.startsWith(\"__\") || targetId.startsWith(\"__\")) return false;\n const source = table.getColumn(sourceId);\n const target = table.getColumn(targetId);\n if (!source || !target || !source.getIsVisible() || !target.getIsVisible() || source.getIsPinned() !== target.getIsPinned()) return false;\n const region = source.getIsPinned();\n const order = region ? (table.atoms.columnPinning.get()[region] ?? []) : table.getAllLeafColumns().map(column => column.id);\n const from = order.indexOf(sourceId);\n const to = order.indexOf(targetId);\n if (from < 0 || to < 0) return false;\n const next = [...order];\n next.splice(from, 1);\n next.splice(to, 0, sourceId);\n if (region) table.setColumnPinning(previous => ({ ...previous, [region]: next }));\n else table.setColumnOrder(next);\n return true;\n}\n\nexport function getColumnId<T extends object>(column: DataTableColumnDef<T>): string {\n const id = column.colId ?? column.field;\n if (!id || id.startsWith(\"__\")) throw new Error(\"DataTable columns require a unique field or colId (ids starting with __ are reserved).\");\n return id;\n}\n\nexport function getCellValue<T extends object>(data: T, column: DataTableColumnDef<T>, rowIndex: number): unknown {\n if (column.valueGetter) return column.valueGetter({ data, rowIndex });\n return column.field?.split(\".\").reduce<unknown>((value, key) => (value as Record<string, unknown> | null)?.[key], data);\n}\n\nexport function setCellValue<T extends object>(data: T, column: DataTableColumnDef<T>, value: unknown): T {\n if (column.valueSetter) return column.valueSetter(data, value);\n if (!column.field) return data;\n const keys = column.field.split(\".\");\n const set = (source: unknown, depth: number): unknown => {\n const key = keys[depth];\n const record = source as Record<string, unknown> | undefined;\n const result = (Array.isArray(source) ? [...source] : { ...record }) as Record<string, unknown>;\n result[key] = depth === keys.length - 1 ? value : set(record?.[key], depth + 1);\n return result;\n };\n return set(data, 0) as T;\n}\n\nconst dateInputPrefix = /^\\d{4}-\\d{2}-\\d{2}/;\nconst dateInputValue = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\n/** Native date inputs accept yyyy-MM-dd text only; serialize Date values locally and keep string dates. */\nexport function toDateInputValue(value: unknown): string {\n if (value instanceof Date && Number.isFinite(value.getTime()))\n return `${value.getFullYear()}-${String(value.getMonth() + 1).padStart(2, \"0\")}-${String(value.getDate()).padStart(2, \"0\")}`;\n if (typeof value === \"string\") return dateInputPrefix.exec(value)?.[0] ?? \"\";\n return \"\";\n}\n\n/** Parse date input text back to a Date for date columns; text columns keep the typed string and clearing gives null. */\nexport function parseDateInputValue(\n rawValue: string,\n previousValue: unknown,\n cellDataType?: DataTableColumnDef<Record<string, unknown>>[\"cellDataType\"],\n): unknown {\n if (rawValue === \"\") return null;\n const match = dateInputValue.exec(rawValue);\n if (!match || (cellDataType !== \"date\" && !(previousValue instanceof Date))) return rawValue;\n const year = +match[1];\n const month = +match[2] - 1;\n const day = +match[3];\n const date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day ? date : rawValue;\n}\n\nexport function filterType<T extends object>(column: DataTableColumnDef<T>): DataTableFilterType {\n if (typeof column.filter === \"string\") return column.filter;\n if (column.cellDataType === \"number\") return \"number\";\n if (column.cellDataType === \"date\" || column.cellDataType === \"dateString\") return \"date\";\n return \"text\";\n}\n\nexport function matchesFilter(value: unknown, filter: DataTableFilter | string | undefined, type: DataTableFilterType): boolean {\n if (filter === undefined || filter === \"\") return true;\n const condition: DataTableFilter = typeof filter === \"string\" ? { operator: type === \"select\" ? \"equals\" : \"contains\", value: filter } : filter;\n const blank = value === null || value === undefined || value === \"\";\n if (condition.operator === \"blank\") return blank;\n if (condition.operator === \"notBlank\") return !blank;\n if (condition.value === undefined || condition.value === \"\") return true;\n if (blank) return false;\n const normalize = (input: unknown): string | number => {\n if (type === \"number\") return Number(input);\n if (type === \"date\") {\n if (input instanceof Date) return new Date(input.getFullYear(), input.getMonth(), input.getDate()).getTime();\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(String(input));\n if (!match) return NaN;\n const date = new Date(+match[1], +match[2] - 1, +match[3]);\n return date.getFullYear() === +match[1] && date.getMonth() === +match[2] - 1 && date.getDate() === +match[3] ? date.getTime() : NaN;\n }\n return type === \"select\" ? String(input) : String(input).toLocaleLowerCase();\n };\n const a = normalize(value);\n const b = normalize(condition.value);\n if ((typeof a === \"number\" && !Number.isFinite(a)) || (typeof b === \"number\" && !Number.isFinite(b))) return false;\n switch (condition.operator) {\n case \"contains\":\n return String(a).includes(String(b));\n case \"notContains\":\n return !String(a).includes(String(b));\n case \"startsWith\":\n return String(a).startsWith(String(b));\n case \"endsWith\":\n return String(a).endsWith(String(b));\n case \"equals\":\n return a === b;\n case \"notEqual\":\n return a !== b;\n case \"greaterThan\":\n return a > b;\n case \"greaterThanOrEqual\":\n return a >= b;\n case \"lessThan\":\n return a < b;\n case \"lessThanOrEqual\":\n return a <= b;\n case \"inRange\":\n return condition.valueTo !== undefined && condition.valueTo !== \"\" && a >= b && a <= normalize(condition.valueTo);\n default:\n return true;\n }\n}\n\n/** Distribute surplus width without allowing pinned offsets to differ from rendered widths. */\nexport function getFlexSizes<T extends object>(\n columns: readonly DataTableColumnDef<T>[],\n available: number,\n sizes: Record<string, number>,\n): Record<string, number> {\n const result: Record<string, number> = {};\n let remaining = available;\n let flexible = columns.filter(column => (column.flex ?? 0) > 0 && sizes[getColumnId(column)] === undefined);\n for (const column of columns) {\n if (!flexible.includes(column)) {\n remaining -= Math.max(\n column.minWidth ?? 60,\n Math.min(column.maxWidth ?? Number.MAX_SAFE_INTEGER, sizes[getColumnId(column)] ?? column.width ?? 150),\n );\n }\n }\n while (flexible.length) {\n const weight = flexible.reduce((sum, column) => sum + column.flex!, 0);\n const allocations = flexible.map(column => {\n const share = (remaining * column.flex!) / weight;\n const width = Math.max(column.minWidth ?? 60, Math.min(column.maxWidth ?? Number.MAX_SAFE_INTEGER, share));\n return { column, share, width };\n });\n const violation = allocations.reduce((sum, { share, width }) => sum + width - share, 0);\n if (Math.abs(violation) < 1e-8) {\n for (const { column, width } of allocations) result[getColumnId(column)] = width;\n break;\n }\n // Freeze only the bounds causing the net violation. Other columns may fit after redistribution.\n const constrained = allocations.filter(({ share, width }) => (violation > 0 ? width > share : width < share));\n for (const { column, width } of constrained) {\n result[getColumnId(column)] = width;\n remaining -= width;\n }\n flexible = flexible.filter(column => !constrained.some(allocation => allocation.column === column));\n }\n return result;\n}\n"],"names":["getActiveDataTableCell","focused","renderedIds","columnIds","moveDataTableColumn","table","sourceId","targetId","source","target","region","order","column","from","to","next","previous","getColumnId","id","getCellValue","data","rowIndex","value","key","setCellValue","keys","set","depth","record","result","dateInputPrefix","dateInputValue","toDateInputValue","parseDateInputValue","rawValue","previousValue","cellDataType","match","year","month","day","date","filterType","matchesFilter","filter","type","condition","blank","normalize","input","a","b","getFlexSizes","columns","available","sizes","remaining","flexible","weight","sum","allocations","share","width","violation","constrained","allocation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datatablemodel.es.js","sources":["../src/components/data-table/dataTableModel.ts"],"sourcesContent":["import type { DataTableColumnDef, DataTableFilter, DataTableFilterType, DataTableInstance } from \"./DataTable.types\";\n\n/** Keep the roving tab stop on a mounted row when virtualization changes the viewport. */\nexport function getActiveDataTableCell(\n focused: { rowId: string; columnId: string } | null,\n renderedIds: readonly string[],\n columnIds: readonly string[],\n) {\n if (focused && renderedIds.includes(focused.rowId) && columnIds.includes(focused.columnId)) return focused;\n return { rowId: renderedIds[0], columnId: columnIds[0] };\n}\n\n/** Reorder within the current region without changing pinning or dropping hidden column IDs. */\nexport function moveDataTableColumn<T extends object>(table: DataTableInstance<T>, sourceId: string, targetId: string): boolean {\n if (sourceId === targetId || sourceId.startsWith(\"__\") || targetId.startsWith(\"__\")) return false;\n const source = table.getColumn(sourceId);\n const target = table.getColumn(targetId);\n if (!source || !target || !source.getIsVisible() || !target.getIsVisible() || source.getIsPinned() !== target.getIsPinned()) return false;\n const region = source.getIsPinned();\n const order = region ? (table.atoms.columnPinning.get()[region] ?? []) : table.getAllLeafColumns().map(column => column.id);\n const from = order.indexOf(sourceId);\n const to = order.indexOf(targetId);\n if (from < 0 || to < 0) return false;\n const next = [...order];\n next.splice(from, 1);\n next.splice(to, 0, sourceId);\n if (region) table.setColumnPinning(previous => ({ ...previous, [region]: next }));\n else table.setColumnOrder(next);\n return true;\n}\n\nexport function getColumnId(column: { colId?: string; field?: string }): string {\n const id = column.colId ?? column.field;\n if (!id || id.startsWith(\"__\")) throw new Error(\"DataTable columns require a unique field or colId (ids starting with __ are reserved).\");\n return id;\n}\n\nexport function getCellValue<T extends object>(\n data: T,\n column: { field?: string; valueGetter?: (params: { data: T; rowIndex: number }) => unknown },\n rowIndex: number,\n): unknown {\n if (column.valueGetter) return column.valueGetter({ data, rowIndex });\n return column.field?.split(\".\").reduce<unknown>((value, key) => (value as Record<string, unknown> | null)?.[key], data);\n}\n\nexport function setCellValue<T extends object>(data: T, column: { field?: string; valueSetter?: (data: T, value: unknown) => T }, value: unknown): T {\n if (column.valueSetter) return column.valueSetter(data, value);\n if (!column.field) return data;\n const keys = column.field.split(\".\");\n const set = (source: unknown, depth: number): unknown => {\n const key = keys[depth];\n const record = source as Record<string, unknown> | undefined;\n const result = (Array.isArray(source) ? [...source] : { ...record }) as Record<string, unknown>;\n result[key] = depth === keys.length - 1 ? value : set(record?.[key], depth + 1);\n return result;\n };\n return set(data, 0) as T;\n}\n\nconst dateInputPrefix = /^\\d{4}-\\d{2}-\\d{2}/;\nconst dateInputValue = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\n/** Native date inputs accept yyyy-MM-dd text only; serialize Date values locally and keep string dates. */\nexport function toDateInputValue(value: unknown): string {\n if (value instanceof Date && Number.isFinite(value.getTime()))\n return `${value.getFullYear()}-${String(value.getMonth() + 1).padStart(2, \"0\")}-${String(value.getDate()).padStart(2, \"0\")}`;\n if (typeof value === \"string\") return dateInputPrefix.exec(value)?.[0] ?? \"\";\n return \"\";\n}\n\n/** Parse date input text back to a Date for date columns; text columns keep the typed string and clearing gives null. */\nexport function parseDateInputValue(\n rawValue: string,\n previousValue: unknown,\n cellDataType?: DataTableColumnDef<Record<string, unknown>>[\"cellDataType\"],\n): unknown {\n if (rawValue === \"\") return null;\n const match = dateInputValue.exec(rawValue);\n if (!match || (cellDataType !== \"date\" && !(previousValue instanceof Date))) return rawValue;\n const year = +match[1];\n const month = +match[2] - 1;\n const day = +match[3];\n const date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day ? date : rawValue;\n}\n\nexport function filterType<T extends object>(column: DataTableColumnDef<T>): DataTableFilterType {\n if (typeof column.filter === \"string\") return column.filter;\n if (column.cellDataType === \"number\") return \"number\";\n if (column.cellDataType === \"date\" || column.cellDataType === \"dateString\") return \"date\";\n return \"text\";\n}\n\nexport function matchesFilter(value: unknown, filter: DataTableFilter | string | undefined, type: DataTableFilterType): boolean {\n if (filter === undefined || filter === \"\") return true;\n const condition: DataTableFilter = typeof filter === \"string\" ? { operator: type === \"select\" ? \"equals\" : \"contains\", value: filter } : filter;\n const blank = value === null || value === undefined || value === \"\";\n if (condition.operator === \"blank\") return blank;\n if (condition.operator === \"notBlank\") return !blank;\n if (condition.value === undefined || condition.value === \"\") return true;\n if (blank) return false;\n const normalize = (input: unknown): string | number => {\n if (type === \"number\") return Number(input);\n if (type === \"date\") {\n if (input instanceof Date) return new Date(input.getFullYear(), input.getMonth(), input.getDate()).getTime();\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(String(input));\n if (!match) return NaN;\n const date = new Date(+match[1], +match[2] - 1, +match[3]);\n return date.getFullYear() === +match[1] && date.getMonth() === +match[2] - 1 && date.getDate() === +match[3] ? date.getTime() : NaN;\n }\n return type === \"select\" ? String(input) : String(input).toLocaleLowerCase();\n };\n const a = normalize(value);\n const b = normalize(condition.value);\n if ((typeof a === \"number\" && !Number.isFinite(a)) || (typeof b === \"number\" && !Number.isFinite(b))) return false;\n switch (condition.operator) {\n case \"contains\":\n return String(a).includes(String(b));\n case \"notContains\":\n return !String(a).includes(String(b));\n case \"startsWith\":\n return String(a).startsWith(String(b));\n case \"endsWith\":\n return String(a).endsWith(String(b));\n case \"equals\":\n return a === b;\n case \"notEqual\":\n return a !== b;\n case \"greaterThan\":\n return a > b;\n case \"greaterThanOrEqual\":\n return a >= b;\n case \"lessThan\":\n return a < b;\n case \"lessThanOrEqual\":\n return a <= b;\n case \"inRange\":\n return condition.valueTo !== undefined && condition.valueTo !== \"\" && a >= b && a <= normalize(condition.valueTo);\n default:\n return true;\n }\n}\n\n/** Distribute surplus width without allowing pinned offsets to differ from rendered widths. */\nexport function getFlexSizes(\n columns: readonly Pick<DataTableColumnDef<Record<string, unknown>>, \"field\" | \"colId\" | \"width\" | \"minWidth\" | \"maxWidth\" | \"flex\">[],\n available: number,\n sizes: Record<string, number>,\n): Record<string, number> {\n const result: Record<string, number> = {};\n let remaining = available;\n let flexible = columns.filter(column => (column.flex ?? 0) > 0 && sizes[getColumnId(column)] === undefined);\n for (const column of columns) {\n if (!flexible.includes(column)) {\n remaining -= Math.max(\n column.minWidth ?? 60,\n Math.min(column.maxWidth ?? Number.MAX_SAFE_INTEGER, sizes[getColumnId(column)] ?? column.width ?? 150),\n );\n }\n }\n while (flexible.length) {\n const weight = flexible.reduce((sum, column) => sum + column.flex!, 0);\n const allocations = flexible.map(column => {\n const share = (remaining * column.flex!) / weight;\n const width = Math.max(column.minWidth ?? 60, Math.min(column.maxWidth ?? Number.MAX_SAFE_INTEGER, share));\n return { column, share, width };\n });\n const violation = allocations.reduce((sum, { share, width }) => sum + width - share, 0);\n if (Math.abs(violation) < 1e-8) {\n for (const { column, width } of allocations) result[getColumnId(column)] = width;\n break;\n }\n // Freeze only the bounds causing the net violation. Other columns may fit after redistribution.\n const constrained = allocations.filter(({ share, width }) => (violation > 0 ? width > share : width < share));\n for (const { column, width } of constrained) {\n result[getColumnId(column)] = width;\n remaining -= width;\n }\n flexible = flexible.filter(column => !constrained.some(allocation => allocation.column === column));\n }\n return result;\n}\n"],"names":["getActiveDataTableCell","focused","renderedIds","columnIds","moveDataTableColumn","table","sourceId","targetId","source","target","region","order","column","from","to","next","previous","getColumnId","id","getCellValue","data","rowIndex","value","key","setCellValue","keys","set","depth","record","result","dateInputPrefix","dateInputValue","toDateInputValue","parseDateInputValue","rawValue","previousValue","cellDataType","match","year","month","day","date","filterType","matchesFilter","filter","type","condition","blank","normalize","input","a","b","getFlexSizes","columns","available","sizes","remaining","flexible","weight","sum","allocations","share","width","violation","constrained","allocation"],"mappings":"AAGO,SAASA,EACdC,GACAC,GACAC,GACA;AACA,SAAIF,KAAWC,EAAY,SAASD,EAAQ,KAAK,KAAKE,EAAU,SAASF,EAAQ,QAAQ,IAAUA,IAC5F,EAAE,OAAOC,EAAY,CAAC,GAAG,UAAUC,EAAU,CAAC,EAAA;AACvD;AAGO,SAASC,EAAsCC,GAA6BC,GAAkBC,GAA2B;AAC9H,MAAID,MAAaC,KAAYD,EAAS,WAAW,IAAI,KAAKC,EAAS,WAAW,IAAI,EAAG,QAAO;AAC5F,QAAMC,IAASH,EAAM,UAAUC,CAAQ,GACjCG,IAASJ,EAAM,UAAUE,CAAQ;AACvC,MAAI,CAACC,KAAU,CAACC,KAAU,CAACD,EAAO,kBAAkB,CAACC,EAAO,aAAA,KAAkBD,EAAO,YAAA,MAAkBC,EAAO,YAAA,EAAe,QAAO;AACpI,QAAMC,IAASF,EAAO,YAAA,GAChBG,IAAQD,IAAUL,EAAM,MAAM,cAAc,MAAMK,CAAM,KAAK,CAAA,IAAML,EAAM,oBAAoB,IAAI,CAAAO,MAAUA,EAAO,EAAE,GACpHC,IAAOF,EAAM,QAAQL,CAAQ,GAC7BQ,IAAKH,EAAM,QAAQJ,CAAQ;AACjC,MAAIM,IAAO,KAAKC,IAAK,EAAG,QAAO;AAC/B,QAAMC,IAAO,CAAC,GAAGJ,CAAK;AACtB,SAAAI,EAAK,OAAOF,GAAM,CAAC,GACnBE,EAAK,OAAOD,GAAI,GAAGR,CAAQ,GACvBI,IAAQL,EAAM,iBAAiB,CAAAW,OAAa,EAAE,GAAGA,GAAU,CAACN,CAAM,GAAGK,EAAA,EAAO,IAC3EV,EAAM,eAAeU,CAAI,GACvB;AACT;AAEO,SAASE,EAAYL,GAAoD;AAC9E,QAAMM,IAAKN,EAAO,SAASA,EAAO;AAClC,MAAI,CAACM,KAAMA,EAAG,WAAW,IAAI,EAAG,OAAM,IAAI,MAAM,wFAAwF;AACxI,SAAOA;AACT;AAEO,SAASC,EACdC,GACAR,GACAS,GACS;AACT,SAAIT,EAAO,cAAoBA,EAAO,YAAY,EAAE,MAAAQ,GAAM,UAAAC,GAAU,IAC7DT,EAAO,OAAO,MAAM,GAAG,EAAE,OAAgB,CAACU,GAAOC,MAASD,IAA2CC,CAAG,GAAGH,CAAI;AACxH;AAEO,SAASI,EAA+BJ,GAASR,GAA0EU,GAAmB;AACnJ,MAAIV,EAAO,YAAa,QAAOA,EAAO,YAAYQ,GAAME,CAAK;AAC7D,MAAI,CAACV,EAAO,MAAO,QAAOQ;AAC1B,QAAMK,IAAOb,EAAO,MAAM,MAAM,GAAG,GAC7Bc,IAAM,CAAClB,GAAiBmB,MAA2B;AACvD,UAAMJ,IAAME,EAAKE,CAAK,GAChBC,IAASpB,GACTqB,IAAU,MAAM,QAAQrB,CAAM,IAAI,CAAC,GAAGA,CAAM,IAAI,EAAE,GAAGoB,EAAA;AAC3D,WAAAC,EAAON,CAAG,IAAII,MAAUF,EAAK,SAAS,IAAIH,IAAQI,EAAIE,IAASL,CAAG,GAAGI,IAAQ,CAAC,GACvEE;AAAA,EACT;AACA,SAAOH,EAAIN,GAAM,CAAC;AACpB;AAEA,MAAMU,IAAkB,sBAClBC,IAAiB;AAGhB,SAASC,EAAiBV,GAAwB;AACvD,SAAIA,aAAiB,QAAQ,OAAO,SAASA,EAAM,SAAS,IACnD,GAAGA,EAAM,YAAA,CAAa,IAAI,OAAOA,EAAM,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAOA,EAAM,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,KACxH,OAAOA,KAAU,WAAiBQ,EAAgB,KAAKR,CAAK,IAAI,CAAC,KAAK,KACnE;AACT;AAGO,SAASW,EACdC,GACAC,GACAC,GACS;AACT,MAAIF,MAAa,GAAI,QAAO;AAC5B,QAAMG,IAAQN,EAAe,KAAKG,CAAQ;AAC1C,MAAI,CAACG,KAAUD,MAAiB,UAAU,EAAED,aAAyB,MAAQ,QAAOD;AACpF,QAAMI,IAAO,CAACD,EAAM,CAAC,GACfE,IAAQ,CAACF,EAAM,CAAC,IAAI,GACpBG,IAAM,CAACH,EAAM,CAAC,GACdI,IAAO,IAAI,KAAKH,GAAMC,GAAOC,CAAG;AACtC,SAAOC,EAAK,YAAA,MAAkBH,KAAQG,EAAK,SAAA,MAAeF,KAASE,EAAK,QAAA,MAAcD,IAAMC,IAAOP;AACrG;AAEO,SAASQ,EAA6B9B,GAAoD;AAC/F,SAAI,OAAOA,EAAO,UAAW,WAAiBA,EAAO,SACjDA,EAAO,iBAAiB,WAAiB,WACzCA,EAAO,iBAAiB,UAAUA,EAAO,iBAAiB,eAAqB,SAC5E;AACT;AAEO,SAAS+B,EAAcrB,GAAgBsB,GAA8CC,GAAoC;AAC9H,MAAID,MAAW,UAAaA,MAAW,GAAI,QAAO;AAClD,QAAME,IAA6B,OAAOF,KAAW,WAAW,EAAE,UAAUC,MAAS,WAAW,WAAW,YAAY,OAAOD,EAAA,IAAWA,GACnIG,IAAQzB,KAAU,QAA+BA,MAAU;AACjE,MAAIwB,EAAU,aAAa,QAAS,QAAOC;AAC3C,MAAID,EAAU,aAAa,WAAY,QAAO,CAACC;AAC/C,MAAID,EAAU,UAAU,UAAaA,EAAU,UAAU,GAAI,QAAO;AACpE,MAAIC,EAAO,QAAO;AAClB,QAAMC,IAAY,CAACC,MAAoC;AACrD,QAAIJ,MAAS,SAAU,QAAO,OAAOI,CAAK;AAC1C,QAAIJ,MAAS,QAAQ;AACnB,UAAII,aAAiB,KAAM,QAAO,IAAI,KAAKA,EAAM,YAAA,GAAeA,EAAM,YAAYA,EAAM,QAAA,CAAS,EAAE,QAAA;AACnG,YAAMZ,IAAQ,2BAA2B,KAAK,OAAOY,CAAK,CAAC;AAC3D,UAAI,CAACZ,EAAO,QAAO;AACnB,YAAMI,IAAO,IAAI,KAAK,CAACJ,EAAM,CAAC,GAAG,CAACA,EAAM,CAAC,IAAI,GAAG,CAACA,EAAM,CAAC,CAAC;AACzD,aAAOI,EAAK,YAAA,MAAkB,CAACJ,EAAM,CAAC,KAAKI,EAAK,SAAA,MAAe,CAACJ,EAAM,CAAC,IAAI,KAAKI,EAAK,cAAc,CAACJ,EAAM,CAAC,IAAII,EAAK,QAAA,IAAY;AAAA,IAClI;AACA,WAAOI,MAAS,WAAW,OAAOI,CAAK,IAAI,OAAOA,CAAK,EAAE,kBAAA;AAAA,EAC3D,GACMC,IAAIF,EAAU1B,CAAK,GACnB6B,IAAIH,EAAUF,EAAU,KAAK;AACnC,MAAK,OAAOI,KAAM,YAAY,CAAC,OAAO,SAASA,CAAC,KAAO,OAAOC,KAAM,YAAY,CAAC,OAAO,SAASA,CAAC,EAAI,QAAO;AAC7G,UAAQL,EAAU,UAAA;AAAA,IAChB,KAAK;AACH,aAAO,OAAOI,CAAC,EAAE,SAAS,OAAOC,CAAC,CAAC;AAAA,IACrC,KAAK;AACH,aAAO,CAAC,OAAOD,CAAC,EAAE,SAAS,OAAOC,CAAC,CAAC;AAAA,IACtC,KAAK;AACH,aAAO,OAAOD,CAAC,EAAE,WAAW,OAAOC,CAAC,CAAC;AAAA,IACvC,KAAK;AACH,aAAO,OAAOD,CAAC,EAAE,SAAS,OAAOC,CAAC,CAAC;AAAA,IACrC,KAAK;AACH,aAAOD,MAAMC;AAAA,IACf,KAAK;AACH,aAAOD,MAAMC;AAAA,IACf,KAAK;AACH,aAAOD,IAAIC;AAAA,IACb,KAAK;AACH,aAAOD,KAAKC;AAAA,IACd,KAAK;AACH,aAAOD,IAAIC;AAAA,IACb,KAAK;AACH,aAAOD,KAAKC;AAAA,IACd,KAAK;AACH,aAAOL,EAAU,YAAY,UAAaA,EAAU,YAAY,MAAMI,KAAKC,KAAKD,KAAKF,EAAUF,EAAU,OAAO;AAAA,IAClH;AACE,aAAO;AAAA,EAAA;AAEb;AAGO,SAASM,EACdC,GACAC,GACAC,GACwB;AACxB,QAAM1B,IAAiC,CAAA;AACvC,MAAI2B,IAAYF,GACZG,IAAWJ,EAAQ,OAAO,CAAAzC,OAAWA,EAAO,QAAQ,KAAK,KAAK2C,EAAMtC,EAAYL,CAAM,CAAC,MAAM,MAAS;AAC1G,aAAWA,KAAUyC;AACnB,IAAKI,EAAS,SAAS7C,CAAM,MAC3B4C,KAAa,KAAK;AAAA,MAChB5C,EAAO,YAAY;AAAA,MACnB,KAAK,IAAIA,EAAO,YAAY,OAAO,kBAAkB2C,EAAMtC,EAAYL,CAAM,CAAC,KAAKA,EAAO,SAAS,GAAG;AAAA,IAAA;AAI5G,SAAO6C,EAAS,UAAQ;AACtB,UAAMC,IAASD,EAAS,OAAO,CAACE,GAAK/C,MAAW+C,IAAM/C,EAAO,MAAO,CAAC,GAC/DgD,IAAcH,EAAS,IAAI,CAAA7C,MAAU;AACzC,YAAMiD,IAASL,IAAY5C,EAAO,OAAS8C,GACrCI,IAAQ,KAAK,IAAIlD,EAAO,YAAY,IAAI,KAAK,IAAIA,EAAO,YAAY,OAAO,kBAAkBiD,CAAK,CAAC;AACzG,aAAO,EAAE,QAAAjD,GAAQ,OAAAiD,GAAO,OAAAC,EAAA;AAAA,IAC1B,CAAC,GACKC,IAAYH,EAAY,OAAO,CAACD,GAAK,EAAE,OAAAE,GAAO,OAAAC,EAAA,MAAYH,IAAMG,IAAQD,GAAO,CAAC;AACtF,QAAI,KAAK,IAAIE,CAAS,IAAI,MAAM;AAC9B,iBAAW,EAAE,QAAAnD,GAAQ,OAAAkD,OAAWF,EAAa,CAAA/B,EAAOZ,EAAYL,CAAM,CAAC,IAAIkD;AAC3E;AAAA,IACF;AAEA,UAAME,IAAcJ,EAAY,OAAO,CAAC,EAAE,OAAAC,GAAO,OAAAC,QAAaC,IAAY,IAAID,IAAQD,IAAQC,IAAQD,CAAM;AAC5G,eAAW,EAAE,QAAAjD,GAAQ,OAAAkD,EAAA,KAAWE;AAC9B,MAAAnC,EAAOZ,EAAYL,CAAM,CAAC,IAAIkD,GAC9BN,KAAaM;AAEf,IAAAL,IAAWA,EAAS,OAAO,CAAA7C,MAAU,CAACoD,EAAY,KAAK,CAAAC,MAAcA,EAAW,WAAWrD,CAAM,CAAC;AAAA,EACpG;AACA,SAAOiB;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatablerowview.es.js","sources":["../src/components/data-table/DataTableRowView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { ChevronDown, ChevronRight } from \"@trsys-tech/matrix-icons\";\nimport { cn } from \"../../lib/utils\";\nimport { IconButton } from \"../icon-botton/IconButton\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { getCellValue, setCellValue, toDateInputValue, parseDateInputValue } from \"./dataTableModel\";\nimport { dataTableInputClass } from \"./dataTableStyles\";\nimport type {\n DataTableApi,\n DataTableCellParams,\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableInstance,\n DataTableRow,\n} from \"./DataTable.types\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\n\ntype DataTableRowViewProps<T extends object> = Pick<\n DataTableContentProps<T>,\n \"rowSelection\" | \"getRowClass\" | \"rowClassRules\" | \"onRowClick\" | \"suppressClickEdit\" | \"renderSubComponent\"\n> & {\n data: T;\n rowId: string;\n index: number;\n row?: DataTableRow<T>;\n pinned?: \"top\" | \"bottom\";\n edit: DataTableEditSession<T> | null;\n editRef: React.MutableRefObject<DataTableEditSession<T> | null>;\n updateEdit: (next: DataTableEditSession<T> | null) => void;\n api: DataTableApi<T>;\n table: DataTableInstance<T>;\n detailId: string;\n displayedIndices: Map<string, number>;\n rowHeight: number;\n totalWidth: number;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumnDef<T>>;\n activeCell: { rowId?: string; columnId?: string };\n setFocusedCell: React.Dispatch<React.SetStateAction<{ rowId: string; columnId: string } | null>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n handleCellKeyDown: (event: React.KeyboardEvent, row: DataTableRow<T>, column: Column<DataTableFeatures, T>) => void;\n editType: \"cell\" | \"fullRow\";\n isDetailExpanded: (row: DataTableRow<T>) => boolean;\n};\n\nexport function DataTableRowView<T extends object>({ data, rowId, index, row, pinned, ...view }: DataTableRowViewProps<T>) {\n const {\n edit,\n editRef,\n updateEdit,\n api,\n table,\n detailId,\n displayedIndices,\n rowSelection,\n rowHeight,\n totalWidth,\n getRowClass,\n rowClassRules,\n onRowClick,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n visibleColumns,\n definitionsById,\n activeCell,\n setFocusedCell,\n columnStyle,\n handleCellKeyDown,\n suppressClickEdit,\n editType,\n renderSubComponent,\n isDetailExpanded,\n } = view;\n const editing = edit?.rowId === rowId;\n const selected = row?.getIsSelected() ?? false;\n const expanded = !!row && isDetailExpanded(row);\n const panelId = `${detailId}-${rowId}`;\n return (\n <React.Fragment key={rowId}>\n <div\n role=\"row\"\n aria-rowindex={(displayedIndices.get(rowId) ?? index) + 2}\n aria-selected={rowSelection && row ? selected : undefined}\n data-row-id={rowId}\n data-pinned={pinned}\n data-selected={selected || undefined}\n className={cn(\n \"mtx-flex mtx-border-b mtx-border-gray-200 mtx-bg-gray-0 hover:mtx-bg-primary-25\",\n selected && \"mtx-bg-primary-50\",\n pinned && \"mtx-bg-gray-50\",\n getRowClass?.(data),\n ...Object.entries(rowClassRules ?? {})\n .filter(([, test]) => test(data))\n .map(([name]) => name),\n )}\n style={{ height: rowHeight, width: totalWidth, minWidth: \"100%\" }}\n onClick={event => {\n const target = event.target as HTMLElement;\n const selectionCell = target.closest(\"[data-row-selection-cell]\");\n if (target.closest(\"button,input,a,select,textarea,[data-row-action],[role=checkbox],[role=combobox]\")) return;\n if (row && rowSelection?.enableClickSelection && row.getCanSelect()) {\n row.getToggleSelectedHandler()({\n target: { checked: selectionCell || event.ctrlKey || event.metaKey ? !selected : true },\n shiftKey: event.shiftKey,\n nativeEvent: event.nativeEvent,\n });\n if (!selectionCell && !event.ctrlKey && !event.metaKey && !event.shiftKey) table.setRowSelection({ [row.id]: true });\n }\n onRowClick?.({ data, rowId, event, api });\n }}\n >\n {showExpanders && (\n <div\n role=\"gridcell\"\n data-row-expander-cell=\"\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit\"\n style={{ width: expanderWidth }}\n >\n {row?.getCanExpand() && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n aria-label={`${expanded ? \"Collapse\" : \"Expand\"} row ${rowId}`}\n aria-expanded={expanded}\n aria-controls={expanded ? panelId : undefined}\n onClick={row.getToggleExpandedHandler()}\n >\n {expanded ? <ChevronDown aria-hidden=\"true\" /> : <ChevronRight aria-hidden=\"true\" className=\"rtl:mtx-rotate-180\" />}\n </IconButton>\n )}\n </div>\n )}\n {showCheckboxes && (\n <div\n role=\"gridcell\"\n data-row-selection-cell=\"\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {row && (\n <Checkbox\n aria-label={`Select row ${rowId}`}\n checked={selected}\n disabled={!row.getCanSelect()}\n onClick={event =>\n row.getToggleSelectedHandler()({ target: { checked: !selected }, shiftKey: event.shiftKey, nativeEvent: event.nativeEvent })\n }\n />\n )}\n </div>\n )}\n {visibleColumns.map((column, colIndex) => {\n const definition = definitionsById.get(column.id)!;\n const value = getCellValue(editing ? edit.draft : data, definition, index);\n const isEditing =\n !!editing &&\n (!edit.columnId || edit.columnId === column.id) &&\n (typeof definition.editable === \"function\" ? definition.editable(data) : definition.editable) &&\n (!!definition.field || !!definition.valueSetter);\n const params: DataTableCellParams<T> = {\n data,\n value: value as T[keyof T],\n rowId,\n rowIndex: index,\n columnId: column.id,\n api,\n isEditing: !!editing,\n pinned,\n };\n const Renderer = definition.cellRenderer;\n const Editor = definition.cellEditor && typeof definition.cellEditor !== \"string\" ? definition.cellEditor : undefined;\n const editorType =\n typeof definition.cellEditor === \"string\"\n ? definition.cellEditor\n : definition.cellDataType === \"number\"\n ? \"number\"\n : definition.cellDataType === \"date\"\n ? \"date\"\n : \"text\";\n const coerceNumber = definition.cellEditor === \"number\" || definition.cellDataType === \"number\";\n const parseDate = editorType === \"date\" || (!coerceNumber && value instanceof Date);\n const setValue = (newValue: unknown) => {\n const session = editRef.current;\n if (!session) return;\n try {\n const parsed = definition.valueParser\n ? definition.valueParser({ data: session.draft, oldValue: getCellValue(session.original, definition, index), newValue })\n : newValue;\n const draft = setCellValue(session.draft, definition, parsed);\n const parseErrors = { ...session.parseErrors };\n delete parseErrors[column.id];\n updateEdit({\n ...session,\n draft,\n changes: { ...session.changes, [column.id]: parsed },\n parseErrors,\n errors: Object.values(parseErrors),\n });\n } catch (error) {\n const parseErrors = { ...session.parseErrors, [column.id]: error instanceof Error ? error.message : \"Invalid value\" };\n updateEdit({ ...session, parseErrors, errors: Object.values(parseErrors) });\n }\n };\n return (\n <div\n key={column.id}\n role=\"gridcell\"\n tabIndex={activeCell.rowId === rowId && activeCell.columnId === column.id ? 0 : -1}\n aria-colindex={colIndex + 1 + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n data-column-id={column.id}\n data-row-id={rowId}\n data-editing={isEditing || undefined}\n data-row-action={definition.suppressRowClick || column.id === \"actions\" || column.id === \"action\" ? \"\" : undefined}\n aria-readonly={!definition.editable || !row}\n aria-invalid={(isEditing && edit.errors.length > 0) || undefined}\n className={cn(\n \"mtx-flex mtx-min-w-0 mtx-items-center mtx-overflow-hidden mtx-px-3 focus:mtx-outline-none focus:mtx-ring-1 focus:mtx-ring-inset focus:mtx-ring-primary\",\n definition.align === \"end\" && \"mtx-justify-end\",\n definition.align === \"center\" && \"mtx-justify-center\",\n typeof definition.cellClass === \"function\" ? definition.cellClass(params) : definition.cellClass,\n )}\n style={columnStyle(column)}\n onFocus={() =>\n setFocusedCell(previous => (previous?.rowId === rowId && previous.columnId === column.id ? previous : { rowId, columnId: column.id }))\n }\n onKeyDown={event => {\n definition.onKeyDown?.(event, params);\n if (row) handleCellKeyDown(event, row, column);\n }}\n onDoubleClick={event => {\n if (row && !suppressClickEdit && !(event.target as HTMLElement).closest(\"button,a,input,select,[data-row-action]\")) {\n if (editType === \"fullRow\") api.startEditingRow(rowId);\n else api.startEditingCell({ rowId, columnId: column.id });\n }\n }}\n >\n {isEditing ? (\n Editor ? (\n <Editor\n {...params}\n errors={edit.errors}\n onValueChange={setValue}\n commit={() => api.stopEditing()}\n cancel={() => api.stopEditing(true)}\n />\n ) : (\n <input\n aria-label={`Edit ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n className={dataTableInputClass}\n type={editorType}\n value={parseDate ? toDateInputValue(value) : value === null || value === undefined ? \"\" : String(value)}\n onChange={event =>\n setValue(\n coerceNumber\n ? event.target.value === \"\"\n ? null\n : Number(event.target.value)\n : parseDate\n ? parseDateInputValue(event.target.value, value, definition.cellDataType)\n : event.target.value,\n )\n }\n />\n )\n ) : Renderer ? (\n <Renderer {...params} />\n ) : definition.valueFormatter ? (\n definition.valueFormatter({ data, value })\n ) : (\n <span className=\"mtx-truncate\">{value instanceof Date ? value.toLocaleDateString() : String(value ?? \"\")}</span>\n )}\n </div>\n );\n })}\n </div>\n {expanded && row && (\n <div\n role=\"row\"\n aria-rowindex={(displayedIndices.get(rowId) ?? index) + 3}\n data-expanded-row-id={rowId}\n className=\"mtx-border-b mtx-border-gray-200 mtx-bg-gray-50\"\n style={{ width: totalWidth, minWidth: \"100%\" }}\n >\n <div\n role=\"gridcell\"\n id={panelId}\n aria-colspan={visibleColumns.length + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n className=\"mtx-p-4\"\n >\n {renderSubComponent?.({ row, api })}\n </div>\n </div>\n )}\n </React.Fragment>\n );\n}\n"],"names":["DataTableRowView","data","rowId","index","row","pinned","view","edit","editRef","updateEdit","api","table","detailId","displayedIndices","rowSelection","rowHeight","totalWidth","getRowClass","rowClassRules","onRowClick","showExpanders","expanderWidth","showCheckboxes","visibleColumns","definitionsById","activeCell","setFocusedCell","columnStyle","handleCellKeyDown","suppressClickEdit","editType","renderSubComponent","isDetailExpanded","editing","selected","expanded","panelId","jsxs","React","cn","test","name","event","target","selectionCell","jsx","IconButton","ChevronDown","ChevronRight","Checkbox","column","colIndex","definition","value","getCellValue","isEditing","params","Renderer","Editor","editorType","coerceNumber","parseDate","setValue","newValue","session","parsed","draft","setCellValue","parseErrors","error","previous","dataTableInputClass","toDateInputValue","parseDateInputValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datatablerowview.es.js","sources":["../src/components/data-table/DataTableRowView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { ChevronDown, ChevronRight } from \"@trsys-tech/matrix-icons\";\nimport { cn } from \"../../lib/utils\";\nimport { IconButton } from \"../icon-botton/IconButton\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { getCellValue, setCellValue, toDateInputValue, parseDateInputValue } from \"./dataTableModel\";\nimport { dataTableInputClass } from \"./dataTableStyles\";\nimport type {\n DataTableApi,\n DataTableCellParams,\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableInstance,\n DataTableRow,\n} from \"./DataTable.types\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\n\ntype DataTableRowViewProps<T extends object> = Pick<\n DataTableContentProps<T>,\n \"rowSelection\" | \"getRowClass\" | \"rowClassRules\" | \"onRowClick\" | \"suppressClickEdit\" | \"renderSubComponent\"\n> & {\n data: T;\n rowId: string;\n index: number;\n row?: DataTableRow<T>;\n pinned?: \"top\" | \"bottom\";\n edit: DataTableEditSession<T> | null;\n editRef: React.MutableRefObject<DataTableEditSession<T> | null>;\n updateEdit: (next: DataTableEditSession<T> | null) => void;\n api: DataTableApi<T>;\n table: DataTableInstance<T>;\n detailId: string;\n displayedIndices: Map<string, number>;\n rowHeight: number;\n totalWidth: number;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumnDef<T>>;\n activeCell: { rowId?: string; columnId?: string };\n setFocusedCell: React.Dispatch<React.SetStateAction<{ rowId: string; columnId: string } | null>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n handleCellKeyDown: (event: React.KeyboardEvent, row: DataTableRow<T>, column: Column<DataTableFeatures, T>) => void;\n editType: \"cell\" | \"fullRow\";\n isDetailExpanded: (row: DataTableRow<T>) => boolean;\n};\n\nexport function DataTableRowView<T extends object>({ data, rowId, index, row, pinned, ...view }: DataTableRowViewProps<T>) {\n const {\n edit,\n editRef,\n updateEdit,\n api,\n table,\n detailId,\n displayedIndices,\n rowSelection,\n rowHeight,\n totalWidth,\n getRowClass,\n rowClassRules,\n onRowClick,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n visibleColumns,\n definitionsById,\n activeCell,\n setFocusedCell,\n columnStyle,\n handleCellKeyDown,\n suppressClickEdit,\n editType,\n renderSubComponent,\n isDetailExpanded,\n } = view;\n const editing = edit?.rowId === rowId;\n const selected = row?.getIsSelected() ?? false;\n const expanded = !!row && isDetailExpanded(row);\n const panelId = `${detailId}-${rowId}`;\n return (\n <React.Fragment key={rowId}>\n <div\n role=\"row\"\n aria-rowindex={(displayedIndices.get(rowId) ?? index) + 2}\n aria-selected={rowSelection && row ? selected : undefined}\n data-row-id={rowId}\n data-pinned={pinned}\n data-selected={selected || undefined}\n className={cn(\n \"mtx-flex mtx-border-b mtx-border-gray-200 mtx-bg-gray-0 hover:mtx-bg-primary-25\",\n selected && \"mtx-bg-primary-50\",\n pinned && \"mtx-bg-gray-50\",\n getRowClass?.(data),\n ...Object.entries(rowClassRules ?? {})\n .filter(([, test]) => test(data))\n .map(([name]) => name),\n )}\n style={{ height: rowHeight, width: totalWidth, minWidth: \"100%\" }}\n onClick={event => {\n const target = event.target as HTMLElement;\n const selectionCell = target.closest(\"[data-row-selection-cell]\");\n if (target.closest(\"button,input,a,select,textarea,[data-row-action],[role=checkbox],[role=combobox]\")) return;\n if (row && rowSelection?.enableClickSelection && row.getCanSelect()) {\n row.getToggleSelectedHandler()({\n target: { checked: selectionCell || event.ctrlKey || event.metaKey ? !selected : true },\n shiftKey: event.shiftKey,\n nativeEvent: event.nativeEvent,\n });\n if (!selectionCell && !event.ctrlKey && !event.metaKey && !event.shiftKey) table.setRowSelection({ [row.id]: true });\n }\n onRowClick?.({ data, rowId, event, api });\n }}\n >\n {showExpanders && (\n <div\n role=\"gridcell\"\n data-row-expander-cell=\"\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit\"\n style={{ width: expanderWidth }}\n >\n {row?.getCanExpand() && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n aria-label={`${expanded ? \"Collapse\" : \"Expand\"} row ${rowId}`}\n aria-expanded={expanded}\n aria-controls={expanded ? panelId : undefined}\n onClick={row.getToggleExpandedHandler()}\n >\n {expanded ? <ChevronDown aria-hidden=\"true\" /> : <ChevronRight aria-hidden=\"true\" className=\"rtl:mtx-rotate-180\" />}\n </IconButton>\n )}\n </div>\n )}\n {showCheckboxes && (\n <div\n role=\"gridcell\"\n data-row-selection-cell=\"\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {row && (\n <Checkbox\n aria-label={`Select row ${rowId}`}\n checked={selected}\n disabled={!row.getCanSelect()}\n onClick={event =>\n row.getToggleSelectedHandler()({ target: { checked: !selected }, shiftKey: event.shiftKey, nativeEvent: event.nativeEvent })\n }\n />\n )}\n </div>\n )}\n {visibleColumns.map((column, colIndex) => {\n const definition = definitionsById.get(column.id)!;\n const value = getCellValue(editing ? edit.draft : data, definition, index);\n const isEditing =\n !!editing &&\n (!edit.columnId || edit.columnId === column.id) &&\n (typeof definition.editable === \"function\" ? definition.editable(data) : definition.editable) &&\n (!!definition.field || !!definition.valueSetter);\n const params: DataTableCellParams<T> = {\n data,\n value,\n rowId,\n rowIndex: index,\n columnId: column.id,\n api,\n isEditing: !!editing,\n pinned,\n };\n // The definition and value were resolved together; erase the field only at this runtime dispatch boundary.\n const Renderer = definition.cellRenderer as React.ComponentType<DataTableCellParams<T>> | undefined;\n const Editor = definition.cellEditor && typeof definition.cellEditor !== \"string\" ? definition.cellEditor : undefined;\n const editorType =\n typeof definition.cellEditor === \"string\"\n ? definition.cellEditor\n : definition.cellDataType === \"number\"\n ? \"number\"\n : definition.cellDataType === \"date\"\n ? \"date\"\n : \"text\";\n const coerceNumber = definition.cellEditor === \"number\" || definition.cellDataType === \"number\";\n const parseDate = editorType === \"date\" || (!coerceNumber && value instanceof Date);\n const setValue = (newValue: unknown) => {\n const session = editRef.current;\n if (!session) return;\n try {\n const parsed = definition.valueParser\n ? definition.valueParser({ data: session.draft, oldValue: getCellValue(session.original, definition, index), newValue })\n : newValue;\n const draft = setCellValue(session.draft, definition, parsed);\n const parseErrors = { ...session.parseErrors };\n delete parseErrors[column.id];\n updateEdit({\n ...session,\n draft,\n changes: { ...session.changes, [column.id]: parsed },\n parseErrors,\n errors: Object.values(parseErrors),\n });\n } catch (error) {\n const parseErrors = { ...session.parseErrors, [column.id]: error instanceof Error ? error.message : \"Invalid value\" };\n updateEdit({ ...session, parseErrors, errors: Object.values(parseErrors) });\n }\n };\n return (\n <div\n key={column.id}\n role=\"gridcell\"\n tabIndex={activeCell.rowId === rowId && activeCell.columnId === column.id ? 0 : -1}\n aria-colindex={colIndex + 1 + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n data-column-id={column.id}\n data-row-id={rowId}\n data-editing={isEditing || undefined}\n data-row-action={definition.suppressRowClick || column.id === \"actions\" || column.id === \"action\" ? \"\" : undefined}\n aria-readonly={!definition.editable || !row}\n aria-invalid={(isEditing && edit.errors.length > 0) || undefined}\n className={cn(\n \"mtx-flex mtx-min-w-0 mtx-items-center mtx-overflow-hidden mtx-px-3 focus:mtx-outline-none focus:mtx-ring-1 focus:mtx-ring-inset focus:mtx-ring-primary\",\n definition.align === \"end\" && \"mtx-justify-end\",\n definition.align === \"center\" && \"mtx-justify-center\",\n typeof definition.cellClass === \"function\" ? definition.cellClass(params) : definition.cellClass,\n )}\n style={columnStyle(column)}\n onFocus={() =>\n setFocusedCell(previous => (previous?.rowId === rowId && previous.columnId === column.id ? previous : { rowId, columnId: column.id }))\n }\n onKeyDown={event => {\n definition.onKeyDown?.(event, params);\n if (row) handleCellKeyDown(event, row, column);\n }}\n onDoubleClick={event => {\n if (row && !suppressClickEdit && !(event.target as HTMLElement).closest(\"button,a,input,select,[data-row-action]\")) {\n if (editType === \"fullRow\") api.startEditingRow(rowId);\n else api.startEditingCell({ rowId, columnId: column.id });\n }\n }}\n >\n {isEditing ? (\n Editor ? (\n <Editor\n {...params}\n errors={edit.errors}\n onValueChange={setValue}\n commit={() => api.stopEditing()}\n cancel={() => api.stopEditing(true)}\n />\n ) : (\n <input\n aria-label={`Edit ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n className={dataTableInputClass}\n type={editorType}\n value={parseDate ? toDateInputValue(value) : value === null || value === undefined ? \"\" : String(value)}\n onChange={event =>\n setValue(\n coerceNumber\n ? event.target.value === \"\"\n ? null\n : Number(event.target.value)\n : parseDate\n ? parseDateInputValue(event.target.value, value, definition.cellDataType)\n : event.target.value,\n )\n }\n />\n )\n ) : Renderer ? (\n <Renderer {...params} />\n ) : definition.valueFormatter ? (\n definition.valueFormatter({ data, value })\n ) : (\n <span className=\"mtx-truncate\">{value instanceof Date ? value.toLocaleDateString() : String(value ?? \"\")}</span>\n )}\n </div>\n );\n })}\n </div>\n {expanded && row && (\n <div\n role=\"row\"\n aria-rowindex={(displayedIndices.get(rowId) ?? index) + 3}\n data-expanded-row-id={rowId}\n className=\"mtx-border-b mtx-border-gray-200 mtx-bg-gray-50\"\n style={{ width: totalWidth, minWidth: \"100%\" }}\n >\n <div\n role=\"gridcell\"\n id={panelId}\n aria-colspan={visibleColumns.length + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n className=\"mtx-p-4\"\n >\n {renderSubComponent?.({ row, api })}\n </div>\n </div>\n )}\n </React.Fragment>\n );\n}\n"],"names":["DataTableRowView","data","rowId","index","row","pinned","view","edit","editRef","updateEdit","api","table","detailId","displayedIndices","rowSelection","rowHeight","totalWidth","getRowClass","rowClassRules","onRowClick","showExpanders","expanderWidth","showCheckboxes","visibleColumns","definitionsById","activeCell","setFocusedCell","columnStyle","handleCellKeyDown","suppressClickEdit","editType","renderSubComponent","isDetailExpanded","editing","selected","expanded","panelId","jsxs","React","cn","test","name","event","target","selectionCell","jsx","IconButton","ChevronDown","ChevronRight","Checkbox","column","colIndex","definition","value","getCellValue","isEditing","params","Renderer","Editor","editorType","coerceNumber","parseDate","setValue","newValue","session","parsed","draft","setCellValue","parseErrors","error","previous","dataTableInputClass","toDateInputValue","parseDateInputValue"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usedatatableinstance.es.js","sources":["../src/components/data-table/useDataTableInstance.ts"],"sourcesContent":["import * as React from \"react\";\nimport { functionalUpdate, useTable, type ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableAlignmentContext } from \"./DataTableContext\";\nimport { dataTableFeatures } from \"./dataTableFeatures\";\nimport { filterType, getCellValue, getColumnId, getFlexSizes, matchesFilter } from \"./dataTableModel\";\nimport type {\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableFilter,\n DataTableInstance,\n DataTableRow,\n DataTableState,\n} from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\ntype DataTableInstanceOptions<T extends object> = Pick<\n DataTableContentProps<T>,\n | \"rowData\"\n | \"columnDefs\"\n | \"getRowId\"\n | \"tableOptions\"\n | \"externalFilter\"\n | \"rowSelection\"\n | \"renderSubComponent\"\n | \"getRowCanExpand\"\n | \"onQuickFilterTextChange\"\n> & {\n defaultColDef: Partial<DataTableColumnDef<T>>;\n paginationPageSize: number;\n pagination: boolean;\n patches: Record<string, { source: T; data: T }>;\n alignment: React.ContextType<typeof DataTableAlignmentContext>;\n isPrinting: boolean;\n viewportWidth: number;\n selectionWidth: number;\n searchText: string;\n setSearch: (value: string) => void;\n};\n\n/** Own TanStack configuration, controlled state precedence and stable row identities. */\nexport function useDataTableInstance<T extends object>({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n}: DataTableInstanceOptions<T>) {\n const [columnSizing, setColumnSizing] = React.useState<DataTableState[\"columnSizing\"]>(tableOptions?.initialState?.columnSizing ?? {});\n const [columnVisibility, setColumnVisibility] = React.useState<DataTableState[\"columnVisibility\"]>({});\n const [columnFilters, setColumnFilters] = React.useState<DataTableState[\"columnFilters\"]>(tableOptions?.initialState?.columnFilters ?? []);\n const resolveId = React.useCallback(\n (data: T, index: number) => String(getRowId?.(data, index) ?? (data as { id?: unknown } | null)?.id ?? index),\n [getRowId],\n );\n const definitions = React.useMemo(() => {\n const result = columnDefs.map(column => ({ ...defaultColDef, ...column }));\n const ids = result.map(getColumnId);\n if (new Set(ids).size !== ids.length) throw new Error(\"DataTable column ids must be unique.\");\n return result;\n }, [columnDefs, defaultColDef]);\n const definitionsById = React.useMemo(() => new Map(definitions.map(column => [getColumnId(column), column])), [definitions]);\n const sourcesById = React.useMemo(() => {\n const entries = (rowData ?? emptyRows).map((row, index) => [resolveId(row, index), row] as const);\n if (new Set(entries.map(([id]) => id)).size !== entries.length) throw new Error(\"DataTable row ids must be unique.\");\n return new Map(entries);\n }, [rowData, resolveId]);\n const data = React.useMemo(\n () =>\n (rowData ?? emptyRows).map((row, index) => {\n const patch = patches[resolveId(row, index)];\n return patch?.source === row ? patch.data : row;\n }),\n [rowData, patches, resolveId],\n );\n // Keep original indices/ids through external filtering; index ids must not shift when a chip changes.\n const rowIndices = React.useMemo(() => new Map(data.map((row, index) => [row, index])), [data]);\n const initialState = React.useMemo(\n () => ({\n columnVisibility: Object.fromEntries(definitions.filter(column => column.hide).map(column => [getColumnId(column), false])),\n columnPinning: {\n start: definitions.filter(column => column.pinned === \"left\" || column.pinned === \"start\").map(getColumnId),\n end: definitions.filter(column => column.pinned === \"right\" || column.pinned === \"end\").map(getColumnId),\n },\n pagination: { pageIndex: 0, pageSize: paginationPageSize },\n ...tableOptions?.initialState,\n }),\n [definitions, paginationPageSize, tableOptions?.initialState],\n );\n\n const effectiveFilters = React.useMemo(\n () => [\n ...(tableOptions?.state?.columnFilters ?? columnFilters).filter(filter => filter.id !== \"__external\"),\n ...(externalFilter ? [{ id: \"__external\", value: externalFilter }] : []),\n ],\n [tableOptions?.state?.columnFilters, columnFilters, externalFilter],\n );\n const effectiveVisibility = React.useMemo<DataTableState[\"columnVisibility\"]>(\n () => ({\n ...initialState.columnVisibility,\n ...columnVisibility,\n ...alignment?.state.columnVisibility,\n ...tableOptions?.state?.columnVisibility,\n __external: false,\n }),\n [initialState.columnVisibility, columnVisibility, alignment?.state.columnVisibility, tableOptions?.state?.columnVisibility],\n );\n const effectiveSizing = tableOptions?.state?.columnSizing ?? alignment?.state.columnSizing ?? columnSizing;\n const flexSizes = React.useMemo(\n () =>\n getFlexSizes(\n definitions.filter(column => effectiveVisibility[getColumnId(column)] !== false && (!isPrinting || !column.hideInPrint)),\n Math.max(0, viewportWidth - selectionWidth),\n effectiveSizing,\n ),\n [definitions, effectiveVisibility, isPrinting, viewportWidth, selectionWidth, effectiveSizing],\n );\n const columns = React.useMemo<ColumnDef<DataTableFeatures, T, any>[]>(\n () => [\n ...definitions.map(column => ({\n id: getColumnId(column),\n header: typeof column.headerName === \"string\" ? column.headerName : getColumnId(column),\n accessorFn: (row: T, index: number) => getCellValue(row, column, rowIndices.get(row) ?? index),\n size: flexSizes[getColumnId(column)] ?? column.width ?? 150,\n minSize: column.minWidth ?? 60,\n maxSize: column.maxWidth,\n enableSorting: column.sortable !== false && (!!column.field || !!column.valueGetter),\n enableColumnFilter: !!column.filter,\n enableGlobalFilter: !!column.field || !!column.valueGetter,\n enableResizing: column.resizable !== false,\n enableHiding: false,\n enablePinning: false,\n sortFn:\n column.cellDataType === \"number\" ? (\"basic\" as const) : column.cellDataType === \"date\" ? (\"datetime\" as const) : (\"alphanumeric\" as const),\n filterFn: (row: DataTableRow<T>, id: string, value: DataTableFilter) => matchesFilter(row.getValue(id), value, filterType(column)),\n ...column.tableOptions,\n })),\n {\n id: \"__external\",\n enableHiding: false,\n enablePinning: false,\n accessorFn: () => true,\n enableGlobalFilter: false,\n enableSorting: false,\n filterFn: (row, _id, predicate: (data: T) => boolean) => predicate(row.original),\n },\n ],\n [definitions, rowIndices, flexSizes],\n );\n const table: DataTableInstance<T> = useTable<DataTableFeatures, T>({\n columnResizeMode: \"onChange\",\n sortDescFirst: false,\n keepPinnedRows: true,\n enableRowSelection: row => !!rowSelection && (rowSelection.isRowSelectable?.(row.original) ?? true),\n enableMultiRowSelection: rowSelection?.mode === \"multiRow\",\n enableSubRowSelection: false,\n manualPagination: !pagination,\n getColumnCanGlobalFilter: column => {\n const definition = definitionsById.get(column.id);\n return !!definition && (!!definition.field || !!definition.valueGetter);\n },\n globalFilterFn: (row, id, value) => {\n const column = definitionsById.get(id);\n const cellValue = row.getValue(id);\n return String(column?.getQuickFilterText?.({ data: row.original, value: cellValue }) ?? cellValue ?? \"\")\n .toLocaleLowerCase()\n .includes(String(value).toLocaleLowerCase());\n },\n ...tableOptions,\n getRowCanExpand: row =>\n !!renderSubComponent && tableOptions?.enableExpanding !== false && (getRowCanExpand?.(row) ?? tableOptions?.getRowCanExpand?.(row) ?? true),\n features: dataTableFeatures,\n columns,\n data,\n getRowId: (row, index) => resolveId(row, rowIndices.get(row) ?? index),\n initialState,\n state: {\n ...alignment?.state,\n ...tableOptions?.state,\n columnSizing: effectiveSizing,\n columnVisibility: effectiveVisibility,\n columnFilters: effectiveFilters,\n globalFilter: searchText,\n },\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n setColumnSizing(next);\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n setColumnVisibility(next);\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n onColumnFiltersChange: updater => {\n const update = (previous: DataTableState[\"columnFilters\"]) => functionalUpdate(updater, previous).filter(filter => filter.id !== \"__external\");\n if (tableOptions?.state?.columnFilters === undefined) setColumnFilters(update);\n tableOptions?.onColumnFiltersChange?.(update);\n },\n onGlobalFilterChange: updater => {\n const value = functionalUpdate(updater, searchText) as string;\n setSearch(value);\n onQuickFilterTextChange?.(value);\n tableOptions?.onGlobalFilterChange?.(updater);\n },\n ...(alignment\n ? {\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n alignment.setState(previous => ({ ...previous, columnSizing: next }));\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnOrderChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnOrder.get());\n alignment.setState(previous => ({ ...previous, columnOrder: next }));\n tableOptions?.onColumnOrderChange?.(updater);\n },\n onColumnPinningChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnPinning.get());\n alignment.setState(previous => ({ ...previous, columnPinning: next }));\n tableOptions?.onColumnPinningChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n alignment.setState(previous => ({ ...previous, columnVisibility: next }));\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n }\n : {}),\n });\n\n return { table, definitionsById, sourcesById, data, rowIndices, resolveId };\n}\n"],"names":["emptyRows","useDataTableInstance","rowData","columnDefs","defaultColDef","getRowId","paginationPageSize","tableOptions","externalFilter","rowSelection","pagination","renderSubComponent","getRowCanExpand","onQuickFilterTextChange","patches","alignment","isPrinting","viewportWidth","selectionWidth","searchText","setSearch","columnSizing","setColumnSizing","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","resolveId","data","index","definitions","result","column","ids","getColumnId","definitionsById","sourcesById","entries","row","id","patch","rowIndices","initialState","effectiveFilters","filter","effectiveVisibility","effectiveSizing","flexSizes","getFlexSizes","columns","getCellValue","value","matchesFilter","filterType","_id","predicate","table","useTable","definition","cellValue","dataTableFeatures","updater","next","functionalUpdate","update","previous"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usedatatableinstance.es.js","sources":["../src/components/data-table/useDataTableInstance.ts"],"sourcesContent":["import * as React from \"react\";\nimport { functionalUpdate, useTable, type ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableAlignmentContext } from \"./DataTableContext\";\nimport { dataTableFeatures } from \"./dataTableFeatures\";\nimport { filterType, getCellValue, getColumnId, getFlexSizes, matchesFilter } from \"./dataTableModel\";\nimport type {\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableFilter,\n DataTableInstance,\n DataTableRow,\n DataTableState,\n} from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\ntype DataTableInstanceOptions<T extends object> = Pick<\n DataTableContentProps<T>,\n | \"rowData\"\n | \"columnDefs\"\n | \"getRowId\"\n | \"tableOptions\"\n | \"externalFilter\"\n | \"rowSelection\"\n | \"renderSubComponent\"\n | \"getRowCanExpand\"\n | \"onQuickFilterTextChange\"\n> & {\n defaultColDef: NonNullable<DataTableContentProps<T>[\"defaultColDef\"]>;\n paginationPageSize: number;\n pagination: boolean;\n patches: Record<string, { source: T; data: T }>;\n alignment: React.ContextType<typeof DataTableAlignmentContext>;\n isPrinting: boolean;\n viewportWidth: number;\n selectionWidth: number;\n searchText: string;\n setSearch: (value: string) => void;\n};\n\n/** Own TanStack configuration, controlled state precedence and stable row identities. */\nexport function useDataTableInstance<T extends object>({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n}: DataTableInstanceOptions<T>) {\n const [columnSizing, setColumnSizing] = React.useState<DataTableState[\"columnSizing\"]>(tableOptions?.initialState?.columnSizing ?? {});\n const [columnVisibility, setColumnVisibility] = React.useState<DataTableState[\"columnVisibility\"]>({});\n const [columnFilters, setColumnFilters] = React.useState<DataTableState[\"columnFilters\"]>(tableOptions?.initialState?.columnFilters ?? []);\n const resolveId = React.useCallback(\n (data: T, index: number) => String(getRowId?.(data, index) ?? (data as { id?: unknown } | null)?.id ?? index),\n [getRowId],\n );\n const definitions = React.useMemo(() => {\n // Column overrides preserve the field/renderer pairing that TypeScript loses through the spread.\n const result = columnDefs.map(column => ({ ...defaultColDef, ...column }) as DataTableColumnDef<T>);\n const ids = result.map(getColumnId);\n if (new Set(ids).size !== ids.length) throw new Error(\"DataTable column ids must be unique.\");\n return result;\n }, [columnDefs, defaultColDef]);\n const definitionsById = React.useMemo(() => new Map(definitions.map(column => [getColumnId(column), column])), [definitions]);\n const sourcesById = React.useMemo(() => {\n const entries = (rowData ?? emptyRows).map((row, index) => [resolveId(row, index), row] as const);\n if (new Set(entries.map(([id]) => id)).size !== entries.length) throw new Error(\"DataTable row ids must be unique.\");\n return new Map(entries);\n }, [rowData, resolveId]);\n const data = React.useMemo(\n () =>\n (rowData ?? emptyRows).map((row, index) => {\n const patch = patches[resolveId(row, index)];\n return patch?.source === row ? patch.data : row;\n }),\n [rowData, patches, resolveId],\n );\n // Keep original indices/ids through external filtering; index ids must not shift when a chip changes.\n const rowIndices = React.useMemo(() => new Map(data.map((row, index) => [row, index])), [data]);\n const initialState = React.useMemo(\n () => ({\n columnVisibility: Object.fromEntries(definitions.filter(column => column.hide).map(column => [getColumnId(column), false])),\n columnPinning: {\n start: definitions.filter(column => column.pinned === \"left\" || column.pinned === \"start\").map(getColumnId),\n end: definitions.filter(column => column.pinned === \"right\" || column.pinned === \"end\").map(getColumnId),\n },\n pagination: { pageIndex: 0, pageSize: paginationPageSize },\n ...tableOptions?.initialState,\n }),\n [definitions, paginationPageSize, tableOptions?.initialState],\n );\n\n const effectiveFilters = React.useMemo(\n () => [\n ...(tableOptions?.state?.columnFilters ?? columnFilters).filter(filter => filter.id !== \"__external\"),\n ...(externalFilter ? [{ id: \"__external\", value: externalFilter }] : []),\n ],\n [tableOptions?.state?.columnFilters, columnFilters, externalFilter],\n );\n const effectiveVisibility = React.useMemo<DataTableState[\"columnVisibility\"]>(\n () => ({\n ...initialState.columnVisibility,\n ...columnVisibility,\n ...alignment?.state.columnVisibility,\n ...tableOptions?.state?.columnVisibility,\n __external: false,\n }),\n [initialState.columnVisibility, columnVisibility, alignment?.state.columnVisibility, tableOptions?.state?.columnVisibility],\n );\n const effectiveSizing = tableOptions?.state?.columnSizing ?? alignment?.state.columnSizing ?? columnSizing;\n const flexSizes = React.useMemo(\n () =>\n getFlexSizes(\n definitions.filter(column => effectiveVisibility[getColumnId(column)] !== false && (!isPrinting || !column.hideInPrint)),\n Math.max(0, viewportWidth - selectionWidth),\n effectiveSizing,\n ),\n [definitions, effectiveVisibility, isPrinting, viewportWidth, selectionWidth, effectiveSizing],\n );\n const columns = React.useMemo<ColumnDef<DataTableFeatures, T, any>[]>(\n () => [\n ...definitions.map(column => ({\n id: getColumnId(column),\n header: typeof column.headerName === \"string\" ? column.headerName : getColumnId(column),\n accessorFn: (row: T, index: number) => getCellValue(row, column, rowIndices.get(row) ?? index),\n size: flexSizes[getColumnId(column)] ?? column.width ?? 150,\n minSize: column.minWidth ?? 60,\n maxSize: column.maxWidth,\n enableSorting: column.sortable !== false && (!!column.field || !!column.valueGetter),\n enableColumnFilter: !!column.filter,\n enableGlobalFilter: !!column.field || !!column.valueGetter,\n enableResizing: column.resizable !== false,\n enableHiding: false,\n enablePinning: false,\n sortFn:\n column.cellDataType === \"number\" ? (\"basic\" as const) : column.cellDataType === \"date\" ? (\"datetime\" as const) : (\"alphanumeric\" as const),\n filterFn: (row: DataTableRow<T>, id: string, value: DataTableFilter) => matchesFilter(row.getValue(id), value, filterType(column)),\n ...column.tableOptions,\n })),\n {\n id: \"__external\",\n enableHiding: false,\n enablePinning: false,\n accessorFn: () => true,\n enableGlobalFilter: false,\n enableSorting: false,\n filterFn: (row, _id, predicate: (data: T) => boolean) => predicate(row.original),\n },\n ],\n [definitions, rowIndices, flexSizes],\n );\n const table: DataTableInstance<T> = useTable<DataTableFeatures, T>({\n columnResizeMode: \"onChange\",\n sortDescFirst: false,\n keepPinnedRows: true,\n enableRowSelection: row => !!rowSelection && (rowSelection.isRowSelectable?.(row.original) ?? true),\n enableMultiRowSelection: rowSelection?.mode === \"multiRow\",\n enableSubRowSelection: false,\n manualPagination: !pagination,\n getColumnCanGlobalFilter: column => {\n const definition = definitionsById.get(column.id);\n return !!definition && (!!definition.field || !!definition.valueGetter);\n },\n globalFilterFn: (row, id, value) => {\n const column = definitionsById.get(id);\n const cellValue = row.getValue(id);\n return String(column?.getQuickFilterText?.({ data: row.original, value: cellValue }) ?? cellValue ?? \"\")\n .toLocaleLowerCase()\n .includes(String(value).toLocaleLowerCase());\n },\n ...tableOptions,\n getRowCanExpand: row =>\n !!renderSubComponent && tableOptions?.enableExpanding !== false && (getRowCanExpand?.(row) ?? tableOptions?.getRowCanExpand?.(row) ?? true),\n features: dataTableFeatures,\n columns,\n data,\n getRowId: (row, index) => resolveId(row, rowIndices.get(row) ?? index),\n initialState,\n state: {\n ...alignment?.state,\n ...tableOptions?.state,\n columnSizing: effectiveSizing,\n columnVisibility: effectiveVisibility,\n columnFilters: effectiveFilters,\n globalFilter: searchText,\n },\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n setColumnSizing(next);\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n setColumnVisibility(next);\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n onColumnFiltersChange: updater => {\n const update = (previous: DataTableState[\"columnFilters\"]) => functionalUpdate(updater, previous).filter(filter => filter.id !== \"__external\");\n if (tableOptions?.state?.columnFilters === undefined) setColumnFilters(update);\n tableOptions?.onColumnFiltersChange?.(update);\n },\n onGlobalFilterChange: updater => {\n const value = functionalUpdate(updater, searchText) as string;\n setSearch(value);\n onQuickFilterTextChange?.(value);\n tableOptions?.onGlobalFilterChange?.(updater);\n },\n ...(alignment\n ? {\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n alignment.setState(previous => ({ ...previous, columnSizing: next }));\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnOrderChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnOrder.get());\n alignment.setState(previous => ({ ...previous, columnOrder: next }));\n tableOptions?.onColumnOrderChange?.(updater);\n },\n onColumnPinningChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnPinning.get());\n alignment.setState(previous => ({ ...previous, columnPinning: next }));\n tableOptions?.onColumnPinningChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n alignment.setState(previous => ({ ...previous, columnVisibility: next }));\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n }\n : {}),\n });\n\n return { table, definitionsById, sourcesById, data, rowIndices, resolveId };\n}\n"],"names":["emptyRows","useDataTableInstance","rowData","columnDefs","defaultColDef","getRowId","paginationPageSize","tableOptions","externalFilter","rowSelection","pagination","renderSubComponent","getRowCanExpand","onQuickFilterTextChange","patches","alignment","isPrinting","viewportWidth","selectionWidth","searchText","setSearch","columnSizing","setColumnSizing","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","resolveId","data","index","definitions","result","column","ids","getColumnId","definitionsById","sourcesById","entries","row","id","patch","rowIndices","initialState","effectiveFilters","filter","effectiveVisibility","effectiveSizing","flexSizes","getFlexSizes","columns","getCellValue","value","matchesFilter","filterType","_id","predicate","table","useTable","definition","cellValue","dataTableFeatures","updater","next","functionalUpdate","update","previous"],"mappings":";;;;AAeA,MAAMA,IAAqB,CAAA;AA0BpB,SAASC,GAAuC;AAAA,EACrD,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AACF,GAAgC;AAC9B,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAM,SAAyChB,GAAc,cAAc,gBAAgB,EAAE,GAC/H,CAACiB,GAAkBC,CAAmB,IAAIF,EAAM,SAA6C,CAAA,CAAE,GAC/F,CAACG,GAAeC,CAAgB,IAAIJ,EAAM,SAA0ChB,GAAc,cAAc,iBAAiB,EAAE,GACnIqB,IAAYL,EAAM;AAAA,IACtB,CAACM,GAASC,MAAkB,OAAOzB,IAAWwB,GAAMC,CAAK,KAAMD,GAAkC,MAAMC,CAAK;AAAA,IAC5G,CAACzB,CAAQ;AAAA,EAAA,GAEL0B,IAAcR,EAAM,QAAQ,MAAM;AAEtC,UAAMS,IAAS7B,EAAW,IAAI,CAAA8B,OAAW,EAAE,GAAG7B,GAAe,GAAG6B,EAAA,EAAkC,GAC5FC,IAAMF,EAAO,IAAIG,CAAW;AAClC,QAAI,IAAI,IAAID,CAAG,EAAE,SAASA,EAAI,OAAQ,OAAM,IAAI,MAAM,sCAAsC;AAC5F,WAAOF;AAAA,EACT,GAAG,CAAC7B,GAAYC,CAAa,CAAC,GACxBgC,IAAkBb,EAAM,QAAQ,MAAM,IAAI,IAAIQ,EAAY,IAAI,CAAAE,MAAU,CAACE,EAAYF,CAAM,GAAGA,CAAM,CAAC,CAAC,GAAG,CAACF,CAAW,CAAC,GACtHM,IAAcd,EAAM,QAAQ,MAAM;AACtC,UAAMe,KAAWpC,KAAWF,GAAW,IAAI,CAACuC,GAAKT,MAAU,CAACF,EAAUW,GAAKT,CAAK,GAAGS,CAAG,CAAU;AAChG,QAAI,IAAI,IAAID,EAAQ,IAAI,CAAC,CAACE,CAAE,MAAMA,CAAE,CAAC,EAAE,SAASF,EAAQ,OAAQ,OAAM,IAAI,MAAM,mCAAmC;AACnH,WAAO,IAAI,IAAIA,CAAO;AAAA,EACxB,GAAG,CAACpC,GAAS0B,CAAS,CAAC,GACjBC,IAAON,EAAM;AAAA,IACjB,OACGrB,KAAWF,GAAW,IAAI,CAACuC,GAAKT,MAAU;AACzC,YAAMW,IAAQ3B,EAAQc,EAAUW,GAAKT,CAAK,CAAC;AAC3C,aAAOW,GAAO,WAAWF,IAAME,EAAM,OAAOF;AAAA,IAC9C,CAAC;AAAA,IACH,CAACrC,GAASY,GAASc,CAAS;AAAA,EAAA,GAGxBc,IAAanB,EAAM,QAAQ,MAAM,IAAI,IAAIM,EAAK,IAAI,CAACU,GAAKT,MAAU,CAACS,GAAKT,CAAK,CAAC,CAAC,GAAG,CAACD,CAAI,CAAC,GACxFc,IAAepB,EAAM;AAAA,IACzB,OAAO;AAAA,MACL,kBAAkB,OAAO,YAAYQ,EAAY,OAAO,OAAUE,EAAO,IAAI,EAAE,IAAI,OAAU,CAACE,EAAYF,CAAM,GAAG,EAAK,CAAC,CAAC;AAAA,MAC1H,eAAe;AAAA,QACb,OAAOF,EAAY,OAAO,CAAAE,MAAUA,EAAO,WAAW,UAAUA,EAAO,WAAW,OAAO,EAAE,IAAIE,CAAW;AAAA,QAC1G,KAAKJ,EAAY,OAAO,CAAAE,MAAUA,EAAO,WAAW,WAAWA,EAAO,WAAW,KAAK,EAAE,IAAIE,CAAW;AAAA,MAAA;AAAA,MAEzG,YAAY,EAAE,WAAW,GAAG,UAAU7B,EAAA;AAAA,MACtC,GAAGC,GAAc;AAAA,IAAA;AAAA,IAEnB,CAACwB,GAAazB,GAAoBC,GAAc,YAAY;AAAA,EAAA,GAGxDqC,IAAmBrB,EAAM;AAAA,IAC7B,MAAM;AAAA,MACJ,IAAIhB,GAAc,OAAO,iBAAiBmB,GAAe,OAAO,CAAAmB,MAAUA,EAAO,OAAO,YAAY;AAAA,MACpG,GAAIrC,IAAiB,CAAC,EAAE,IAAI,cAAc,OAAOA,EAAA,CAAgB,IAAI,CAAA;AAAA,IAAC;AAAA,IAExE,CAACD,GAAc,OAAO,eAAemB,GAAelB,CAAc;AAAA,EAAA,GAE9DsC,IAAsBvB,EAAM;AAAA,IAChC,OAAO;AAAA,MACL,GAAGoB,EAAa;AAAA,MAChB,GAAGnB;AAAA,MACH,GAAGT,GAAW,MAAM;AAAA,MACpB,GAAGR,GAAc,OAAO;AAAA,MACxB,YAAY;AAAA,IAAA;AAAA,IAEd,CAACoC,EAAa,kBAAkBnB,GAAkBT,GAAW,MAAM,kBAAkBR,GAAc,OAAO,gBAAgB;AAAA,EAAA,GAEtHwC,IAAkBxC,GAAc,OAAO,gBAAgBQ,GAAW,MAAM,gBAAgBM,GACxF2B,IAAYzB,EAAM;AAAA,IACtB,MACE0B;AAAA,MACElB,EAAY,OAAO,CAAAE,MAAUa,EAAoBX,EAAYF,CAAM,CAAC,MAAM,OAAU,CAACjB,KAAc,CAACiB,EAAO,YAAY;AAAA,MACvH,KAAK,IAAI,GAAGhB,IAAgBC,CAAc;AAAA,MAC1C6B;AAAA,IAAA;AAAA,IAEJ,CAAChB,GAAae,GAAqB9B,GAAYC,GAAeC,GAAgB6B,CAAe;AAAA,EAAA,GAEzFG,IAAU3B,EAAM;AAAA,IACpB,MAAM;AAAA,MACJ,GAAGQ,EAAY,IAAI,CAAAE,OAAW;AAAA,QAC5B,IAAIE,EAAYF,CAAM;AAAA,QACtB,QAAQ,OAAOA,EAAO,cAAe,WAAWA,EAAO,aAAaE,EAAYF,CAAM;AAAA,QACtF,YAAY,CAACM,GAAQT,MAAkBqB,EAAaZ,GAAKN,GAAQS,EAAW,IAAIH,CAAG,KAAKT,CAAK;AAAA,QAC7F,MAAMkB,EAAUb,EAAYF,CAAM,CAAC,KAAKA,EAAO,SAAS;AAAA,QACxD,SAASA,EAAO,YAAY;AAAA,QAC5B,SAASA,EAAO;AAAA,QAChB,eAAeA,EAAO,aAAa,OAAU,CAAC,CAACA,EAAO,SAAS,CAAC,CAACA,EAAO;AAAA,QACxE,oBAAoB,CAAC,CAACA,EAAO;AAAA,QAC7B,oBAAoB,CAAC,CAACA,EAAO,SAAS,CAAC,CAACA,EAAO;AAAA,QAC/C,gBAAgBA,EAAO,cAAc;AAAA,QACrC,cAAc;AAAA,QACd,eAAe;AAAA,QACf,QACEA,EAAO,iBAAiB,WAAY,UAAoBA,EAAO,iBAAiB,SAAU,aAAwB;AAAA,QACpH,UAAU,CAACM,GAAsBC,GAAYY,MAA2BC,EAAcd,EAAI,SAASC,CAAE,GAAGY,GAAOE,EAAWrB,CAAM,CAAC;AAAA,QACjI,GAAGA,EAAO;AAAA,MAAA,EACV;AAAA,MACF;AAAA,QACE,IAAI;AAAA,QACJ,cAAc;AAAA,QACd,eAAe;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,oBAAoB;AAAA,QACpB,eAAe;AAAA,QACf,UAAU,CAACM,GAAKgB,GAAKC,MAAoCA,EAAUjB,EAAI,QAAQ;AAAA,MAAA;AAAA,IACjF;AAAA,IAEF,CAACR,GAAaW,GAAYM,CAAS;AAAA,EAAA,GAE/BS,IAA8BC,EAA+B;AAAA,IACjE,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,oBAAoB,OAAO,CAAC,CAACjD,MAAiBA,EAAa,kBAAkB8B,EAAI,QAAQ,KAAK;AAAA,IAC9F,yBAAyB9B,GAAc,SAAS;AAAA,IAChD,uBAAuB;AAAA,IACvB,kBAAkB,CAACC;AAAA,IACnB,0BAA0B,CAAAuB,MAAU;AAClC,YAAM0B,IAAavB,EAAgB,IAAIH,EAAO,EAAE;AAChD,aAAO,CAAC,CAAC0B,MAAe,CAAC,CAACA,EAAW,SAAS,CAAC,CAACA,EAAW;AAAA,IAC7D;AAAA,IACA,gBAAgB,CAACpB,GAAKC,GAAIY,MAAU;AAClC,YAAMnB,IAASG,EAAgB,IAAII,CAAE,GAC/BoB,IAAYrB,EAAI,SAASC,CAAE;AACjC,aAAO,OAAOP,GAAQ,qBAAqB,EAAE,MAAMM,EAAI,UAAU,OAAOqB,EAAA,CAAW,KAAKA,KAAa,EAAE,EACpG,kBAAA,EACA,SAAS,OAAOR,CAAK,EAAE,mBAAmB;AAAA,IAC/C;AAAA,IACA,GAAG7C;AAAA,IACH,iBAAiB,CAAAgC,MACf,CAAC,CAAC5B,KAAsBJ,GAAc,oBAAoB,OAAUK,IAAkB2B,CAAG,KAAKhC,GAAc,kBAAkBgC,CAAG,KAAK;AAAA,IACxI,UAAUsB;AAAA,IACV,SAAAX;AAAA,IACA,MAAArB;AAAA,IACA,UAAU,CAACU,GAAKT,MAAUF,EAAUW,GAAKG,EAAW,IAAIH,CAAG,KAAKT,CAAK;AAAA,IACrE,cAAAa;AAAA,IACA,OAAO;AAAA,MACL,GAAG5B,GAAW;AAAA,MACd,GAAGR,GAAc;AAAA,MACjB,cAAcwC;AAAA,MACd,kBAAkBD;AAAA,MAClB,eAAeF;AAAA,MACf,cAAczB;AAAA,IAAA;AAAA,IAEhB,sBAAsB,CAAA2C,MAAW;AAC/B,YAAMC,IAAOC,EAAiBF,GAASL,EAAM,MAAM,aAAa,KAAK;AACrE,MAAAnC,EAAgByC,CAAI,GACpBxD,GAAc,uBAAuBuD,CAAO;AAAA,IAC9C;AAAA,IACA,0BAA0B,CAAAA,MAAW;AACnC,YAAMC,IAAOC,EAAiBF,GAASL,EAAM,MAAM,iBAAiB,KAAK;AACzE,MAAAhC,EAAoBsC,CAAI,GACxBxD,GAAc,2BAA2BuD,CAAO;AAAA,IAClD;AAAA,IACA,uBAAuB,CAAAA,MAAW;AAChC,YAAMG,IAAS,CAACC,MAA8CF,EAAiBF,GAASI,CAAQ,EAAE,OAAO,CAAArB,MAAUA,EAAO,OAAO,YAAY;AAC7I,MAAItC,GAAc,OAAO,kBAAkB,YAA4B0D,CAAM,GAC7E1D,GAAc,wBAAwB0D,CAAM;AAAA,IAC9C;AAAA,IACA,sBAAsB,CAAAH,MAAW;AAC/B,YAAMV,IAAQY,EAAiBF,GAAS3C,CAAU;AAClD,MAAAC,EAAUgC,CAAK,GACfvC,IAA0BuC,CAAK,GAC/B7C,GAAc,uBAAuBuD,CAAO;AAAA,IAC9C;AAAA,IACA,GAAI/C,IACA;AAAA,MACE,sBAAsB,CAAA+C,MAAW;AAC/B,cAAMC,IAAOC,EAAiBF,GAASL,EAAM,MAAM,aAAa,KAAK;AACrE,QAAA1C,EAAU,SAAS,CAAAmD,OAAa,EAAE,GAAGA,GAAU,cAAcH,IAAO,GACpExD,GAAc,uBAAuBuD,CAAO;AAAA,MAC9C;AAAA,MACA,qBAAqB,CAAAA,MAAW;AAC9B,cAAMC,IAAOC,EAAiBF,GAASL,EAAM,MAAM,YAAY,KAAK;AACpE,QAAA1C,EAAU,SAAS,CAAAmD,OAAa,EAAE,GAAGA,GAAU,aAAaH,IAAO,GACnExD,GAAc,sBAAsBuD,CAAO;AAAA,MAC7C;AAAA,MACA,uBAAuB,CAAAA,MAAW;AAChC,cAAMC,IAAOC,EAAiBF,GAASL,EAAM,MAAM,cAAc,KAAK;AACtE,QAAA1C,EAAU,SAAS,CAAAmD,OAAa,EAAE,GAAGA,GAAU,eAAeH,IAAO,GACrExD,GAAc,wBAAwBuD,CAAO;AAAA,MAC/C;AAAA,MACA,0BAA0B,CAAAA,MAAW;AACnC,cAAMC,IAAOC,EAAiBF,GAASL,EAAM,MAAM,iBAAiB,KAAK;AACzE,QAAA1C,EAAU,SAAS,CAAAmD,OAAa,EAAE,GAAGA,GAAU,kBAAkBH,IAAO,GACxExD,GAAc,2BAA2BuD,CAAO;AAAA,MAClD;AAAA,IAAA,IAEF,CAAA;AAAA,EAAC,CACN;AAED,SAAO,EAAE,OAAAL,GAAO,iBAAArB,GAAiB,aAAAC,GAAa,MAAAR,GAAM,YAAAa,GAAY,WAAAd,EAAA;AAClE;"}
|