@trsys-tech/matrix-library 1.1.8-alpha.1 → 1.1.8-alpha.3
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 +22 -6
- package/dist/components/data-table/DataTable.types.d.ts.map +1 -1
- package/dist/components/data-table/DataTableHeader.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/datatableheader.es.js +60 -53
- package/dist/datatableheader.es.js.map +1 -1
- package/dist/datatablemodel.es.js.map +1 -1
- package/dist/datatablerowview.es.js +33 -34
- package/dist/datatablerowview.es.js.map +1 -1
- package/dist/styles.css +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 = any, 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 & {});
|
|
@@ -74,7 +74,7 @@ export type DataTableColumnDef<T extends object> = {
|
|
|
74
74
|
value: unknown;
|
|
75
75
|
}) => string;
|
|
76
76
|
cellClass?: string | ((params: DataTableCellParams<T>) => string);
|
|
77
|
-
align?: "start" | "
|
|
77
|
+
align?: "start" | "end";
|
|
78
78
|
/** Omit this column when printing (typically an actions column). */
|
|
79
79
|
hideInPrint?: boolean;
|
|
80
80
|
/** Prevent row selection/click callbacks for interactive content in this column. */
|
|
@@ -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,GAAG,
|
|
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":"DataTableHeader.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"DataTableHeader.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErJ,KAAK,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG;IAC7F,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,eAAe,EAAE,MAAM,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,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;IAC7F,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,GAAG,EACH,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,MAAM,GACP,EAAE,oBAAoB,CAAC,CAAC,CAAC,qBAyGzB"}
|
|
@@ -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,97 +1,104 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { Checkbox as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { jsxs as x, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox as C } from "./checkbox.es.js";
|
|
3
|
+
import { cn as f } from "./utils.es.js";
|
|
4
|
+
import { DataTableColumnHeader as S } from "./datatablecolumnheader.es.js";
|
|
5
|
+
import { DataTableColumnMenu as v } from "./datatablecolumnmenu.es.js";
|
|
6
|
+
function I({
|
|
6
7
|
table: d,
|
|
7
|
-
api:
|
|
8
|
+
api: h,
|
|
8
9
|
headerHeight: c,
|
|
9
|
-
totalWidth:
|
|
10
|
-
isPrinting:
|
|
11
|
-
showExpanders:
|
|
12
|
-
expanderWidth:
|
|
13
|
-
showCheckboxes:
|
|
14
|
-
rowSelection:
|
|
15
|
-
selectionRows:
|
|
16
|
-
selectedInScope:
|
|
17
|
-
visibleColumns:
|
|
10
|
+
totalWidth: b,
|
|
11
|
+
isPrinting: m,
|
|
12
|
+
showExpanders: y,
|
|
13
|
+
expanderWidth: n,
|
|
14
|
+
showCheckboxes: p,
|
|
15
|
+
rowSelection: o,
|
|
16
|
+
selectionRows: s,
|
|
17
|
+
selectedInScope: g,
|
|
18
|
+
visibleColumns: u,
|
|
18
19
|
definitionsById: k,
|
|
19
|
-
columnStyle:
|
|
20
|
-
widths:
|
|
20
|
+
columnStyle: w,
|
|
21
|
+
widths: N
|
|
21
22
|
}) {
|
|
22
|
-
return /* @__PURE__ */
|
|
23
|
+
return /* @__PURE__ */ x(
|
|
23
24
|
"div",
|
|
24
25
|
{
|
|
25
26
|
role: "row",
|
|
26
27
|
className: "mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold",
|
|
27
|
-
style: { height: c, width:
|
|
28
|
+
style: { height: c, width: b, minWidth: "100%", position: m ? "relative" : "sticky" },
|
|
28
29
|
children: [
|
|
29
|
-
|
|
30
|
+
y && /* @__PURE__ */ i(
|
|
30
31
|
"div",
|
|
31
32
|
{
|
|
32
33
|
role: "columnheader",
|
|
33
34
|
"aria-label": "Row details",
|
|
34
35
|
className: "mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50",
|
|
35
|
-
style: { width:
|
|
36
|
+
style: { width: n }
|
|
36
37
|
}
|
|
37
38
|
),
|
|
38
|
-
|
|
39
|
+
p && /* @__PURE__ */ i(
|
|
39
40
|
"div",
|
|
40
41
|
{
|
|
41
42
|
role: "columnheader",
|
|
42
43
|
className: "mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50",
|
|
43
|
-
style: { width: 44, insetInlineStart:
|
|
44
|
-
children:
|
|
45
|
-
|
|
44
|
+
style: { width: 44, insetInlineStart: n },
|
|
45
|
+
children: o?.mode === "multiRow" && /* @__PURE__ */ i(
|
|
46
|
+
C,
|
|
46
47
|
{
|
|
47
48
|
"aria-label": "Select all rows",
|
|
48
|
-
disabled: !
|
|
49
|
-
checked:
|
|
49
|
+
disabled: !s.length,
|
|
50
|
+
checked: s.length > 0 && g === s.length ? !0 : g > 0 ? "indeterminate" : !1,
|
|
50
51
|
onCheckedChange: (e) => {
|
|
51
|
-
e === !0 ?
|
|
52
|
-
(
|
|
52
|
+
e === !0 ? h.selectAll(o.selectAll) : d.setRowSelection(
|
|
53
|
+
(t) => Object.fromEntries(Object.entries(t).filter(([l]) => !s.some((a) => a.id === l)))
|
|
53
54
|
);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
)
|
|
57
58
|
}
|
|
58
59
|
),
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
return /* @__PURE__ */
|
|
62
|
-
|
|
60
|
+
u.map((e) => {
|
|
61
|
+
const t = k.get(e.id), l = d.getFlatHeaders().find((r) => r.column.id === e.id), a = e.getIsSorted();
|
|
62
|
+
return /* @__PURE__ */ x(
|
|
63
|
+
S,
|
|
63
64
|
{
|
|
64
65
|
columnId: e.id,
|
|
65
|
-
label: typeof
|
|
66
|
+
label: typeof t.headerName == "string" ? t.headerName : e.id,
|
|
66
67
|
region: e.getIsPinned(),
|
|
67
|
-
disabled:
|
|
68
|
+
disabled: m,
|
|
68
69
|
"aria-sort": a === "asc" ? "ascending" : a === "desc" ? "descending" : "none",
|
|
69
|
-
className:
|
|
70
|
-
|
|
70
|
+
className: f(
|
|
71
|
+
"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3",
|
|
72
|
+
t.align === "end" && "mtx-flex-row-reverse"
|
|
73
|
+
),
|
|
74
|
+
style: w(e, !0),
|
|
71
75
|
children: [
|
|
72
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ x(
|
|
73
77
|
"button",
|
|
74
78
|
{
|
|
75
79
|
type: "button",
|
|
76
80
|
"data-column-sort": "",
|
|
77
|
-
disabled:
|
|
81
|
+
disabled: m,
|
|
78
82
|
"aria-disabled": !e.getCanSort() || void 0,
|
|
79
|
-
onClick: (
|
|
80
|
-
!
|
|
83
|
+
onClick: (r) => {
|
|
84
|
+
!r.defaultPrevented && e.getCanSort() && e.getToggleSortingHandler()?.(r);
|
|
81
85
|
},
|
|
82
|
-
className:
|
|
83
|
-
|
|
86
|
+
className: f(
|
|
87
|
+
"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default",
|
|
88
|
+
t.align === "end" && "mtx-flex-row-reverse mtx-text-end"
|
|
89
|
+
),
|
|
90
|
+
"aria-label": `Sort ${typeof t.headerName == "string" ? t.headerName : e.id}`,
|
|
84
91
|
children: [
|
|
85
|
-
/* @__PURE__ */ i("span", { className: "mtx-truncate", children:
|
|
86
|
-
a && /* @__PURE__ */
|
|
92
|
+
/* @__PURE__ */ i("span", { className: "mtx-truncate", children: t.headerName ?? e.id }),
|
|
93
|
+
a && /* @__PURE__ */ x("span", { "aria-hidden": "true", children: [
|
|
87
94
|
a === "asc" ? "↑" : "↓",
|
|
88
95
|
d.state.sorting.length > 1 ? e.getSortIndex() + 1 : ""
|
|
89
96
|
] })
|
|
90
97
|
]
|
|
91
98
|
}
|
|
92
99
|
),
|
|
93
|
-
!
|
|
94
|
-
!
|
|
100
|
+
!m && /* @__PURE__ */ i(v, { table: d, column: e, definition: t }),
|
|
101
|
+
!m && e.getCanResize() && /* @__PURE__ */ i(
|
|
95
102
|
"div",
|
|
96
103
|
{
|
|
97
104
|
role: "separator",
|
|
@@ -99,14 +106,14 @@ function j({
|
|
|
99
106
|
"aria-label": `Resize ${e.id}`,
|
|
100
107
|
"aria-orientation": "vertical",
|
|
101
108
|
tabIndex: 0,
|
|
102
|
-
className: "mtx-absolute mtx-inset-y-
|
|
109
|
+
className: "mtx-absolute mtx-inset-y-3 mtx-end-0 mtx-w-2 mtx-cursor-col-resize mtx-touch-none after:mtx-bg-gray-400/70 after:mtx-w-0.5 after:mtx-h-full after:mtx-block after:mtx-absolute after:mtx-start-1/2 after:-mtx-translate-x-1/2",
|
|
103
110
|
onMouseDown: l.getResizeHandler(),
|
|
104
111
|
onTouchStart: l.getResizeHandler(),
|
|
105
112
|
onDoubleClick: () => e.resetSize(),
|
|
106
|
-
onKeyDown: (
|
|
107
|
-
(
|
|
108
|
-
...
|
|
109
|
-
[e.id]: (
|
|
113
|
+
onKeyDown: (r) => {
|
|
114
|
+
(r.key === "ArrowRight" || r.key === "ArrowLeft") && (r.preventDefault(), d.setColumnSizing((z) => ({
|
|
115
|
+
...z,
|
|
116
|
+
[e.id]: (N.get(e.id) ?? e.getSize()) + (r.key === "ArrowRight" ? 10 : -10)
|
|
110
117
|
})));
|
|
111
118
|
}
|
|
112
119
|
}
|
|
@@ -121,6 +128,6 @@ function j({
|
|
|
121
128
|
);
|
|
122
129
|
}
|
|
123
130
|
export {
|
|
124
|
-
|
|
131
|
+
I as DataTableHeader
|
|
125
132
|
};
|
|
126
133
|
//# sourceMappingURL=datatableheader.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatableheader.es.js","sources":["../src/components/data-table/DataTableHeader.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { DataTableColumnHeader } from \"./DataTableColumnHeader\";\nimport { DataTableColumnMenu } from \"./DataTableColumnMenu\";\nimport type { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from \"./DataTable.types\";\n\ntype DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, \"rowSelection\"> & {\n table: DataTableInstance<T>;\n api: DataTableApi<T>;\n headerHeight: number;\n totalWidth: number;\n isPrinting: boolean;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n selectionRows: DataTableRow<T>[];\n selectedInScope: number;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumnDef<T>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n widths: Map<string, number>;\n};\n\nexport function DataTableHeader<T extends object>({\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n}: DataTableHeaderProps<T>) {\n return (\n <div\n role=\"row\"\n className=\"mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold\"\n style={{ height: headerHeight, width: totalWidth, minWidth: \"100%\", position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {showExpanders && (\n <div\n role=\"columnheader\"\n aria-label=\"Row details\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50\"\n style={{ width: expanderWidth }}\n />\n )}\n {showCheckboxes && (\n <div\n role=\"columnheader\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {rowSelection?.mode === \"multiRow\" && (\n <Checkbox\n aria-label=\"Select all rows\"\n disabled={!selectionRows.length}\n checked={selectionRows.length > 0 && selectedInScope === selectionRows.length ? true : selectedInScope > 0 ? \"indeterminate\" : false}\n onCheckedChange={checked => {\n if (checked === true) api.selectAll(rowSelection.selectAll);\n else\n table.setRowSelection(previous =>\n Object.fromEntries(Object.entries(previous).filter(([id]) => !selectionRows.some(row => row.id === id))),\n );\n }}\n />\n )}\n </div>\n )}\n {visibleColumns.map(column => {\n const definition = definitionsById.get(column.id)!;\n const header = table.getFlatHeaders().find(item => item.column.id === column.id)!;\n const sorted = column.getIsSorted();\n return (\n <DataTableColumnHeader\n key={column.id}\n columnId={column.id}\n label={typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n region={column.getIsPinned()}\n disabled={isPrinting}\n aria-sort={sorted === \"asc\" ? \"ascending\" : sorted === \"desc\" ? \"descending\" : \"none\"}\n className=\"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3\"\n style={columnStyle(column, true)}\n >\n <button\n type=\"button\"\n data-column-sort=\"\"\n disabled={isPrinting}\n aria-disabled={!column.getCanSort() || undefined}\n onClick={event => {\n if (!event.defaultPrevented && column.getCanSort()) column.getToggleSortingHandler()?.(event);\n }}\n className=\"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default\"\n aria-label={`Sort ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n >\n <span className=\"mtx-truncate\">{definition.headerName ?? column.id}</span>\n {sorted && (\n <span aria-hidden=\"true\">\n {sorted === \"asc\" ? \"↑\" : \"↓\"}\n {table.state.sorting.length > 1 ? column.getSortIndex() + 1 : \"\"}\n </span>\n )}\n </button>\n {!isPrinting && <DataTableColumnMenu table={table} column={column} definition={definition} />}\n {!isPrinting && column.getCanResize() && (\n <div\n role=\"separator\"\n data-column-drag-ignore=\"\"\n aria-label={`Resize ${column.id}`}\n aria-orientation=\"vertical\"\n tabIndex={0}\n className=\"mtx-absolute mtx-inset-y-0 mtx-end-0 mtx-w-1 mtx-cursor-col-resize mtx-touch-none hover:mtx-bg-primary-300\"\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => column.resetSize()}\n onKeyDown={event => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n table.setColumnSizing(previous => ({\n ...previous,\n [column.id]: (widths.get(column.id) ?? column.getSize()) + (event.key === \"ArrowRight\" ? 10 : -10),\n }));\n }\n }}\n />\n )}\n </DataTableColumnHeader>\n );\n })}\n </div>\n );\n}\n"],"names":["DataTableHeader","table","api","headerHeight","totalWidth","isPrinting","showExpanders","expanderWidth","showCheckboxes","rowSelection","selectionRows","selectedInScope","visibleColumns","definitionsById","columnStyle","widths","jsxs","jsx","Checkbox","checked","previous","id","row","column","definition","header","item","sorted","DataTableColumnHeader","event","DataTableColumnMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datatableheader.es.js","sources":["../src/components/data-table/DataTableHeader.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableColumnHeader } from \"./DataTableColumnHeader\";\nimport { DataTableColumnMenu } from \"./DataTableColumnMenu\";\nimport type { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from \"./DataTable.types\";\n\ntype DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, \"rowSelection\"> & {\n table: DataTableInstance<T>;\n api: DataTableApi<T>;\n headerHeight: number;\n totalWidth: number;\n isPrinting: boolean;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n selectionRows: DataTableRow<T>[];\n selectedInScope: number;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumnDef<T>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n widths: Map<string, number>;\n};\n\nexport function DataTableHeader<T extends object>({\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n}: DataTableHeaderProps<T>) {\n return (\n <div\n role=\"row\"\n className=\"mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold\"\n style={{ height: headerHeight, width: totalWidth, minWidth: \"100%\", position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {showExpanders && (\n <div\n role=\"columnheader\"\n aria-label=\"Row details\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50\"\n style={{ width: expanderWidth }}\n />\n )}\n {showCheckboxes && (\n <div\n role=\"columnheader\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {rowSelection?.mode === \"multiRow\" && (\n <Checkbox\n aria-label=\"Select all rows\"\n disabled={!selectionRows.length}\n checked={selectionRows.length > 0 && selectedInScope === selectionRows.length ? true : selectedInScope > 0 ? \"indeterminate\" : false}\n onCheckedChange={checked => {\n if (checked === true) api.selectAll(rowSelection.selectAll);\n else\n table.setRowSelection(previous =>\n Object.fromEntries(Object.entries(previous).filter(([id]) => !selectionRows.some(row => row.id === id))),\n );\n }}\n />\n )}\n </div>\n )}\n {visibleColumns.map(column => {\n const definition = definitionsById.get(column.id)!;\n const header = table.getFlatHeaders().find(item => item.column.id === column.id)!;\n const sorted = column.getIsSorted();\n return (\n <DataTableColumnHeader\n key={column.id}\n columnId={column.id}\n label={typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n region={column.getIsPinned()}\n disabled={isPrinting}\n aria-sort={sorted === \"asc\" ? \"ascending\" : sorted === \"desc\" ? \"descending\" : \"none\"}\n className={cn(\n \"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3\",\n definition.align === \"end\" && \"mtx-flex-row-reverse\",\n )}\n style={columnStyle(column, true)}\n >\n <button\n type=\"button\"\n data-column-sort=\"\"\n disabled={isPrinting}\n aria-disabled={!column.getCanSort() || undefined}\n onClick={event => {\n if (!event.defaultPrevented && column.getCanSort()) column.getToggleSortingHandler()?.(event);\n }}\n className={cn(\n \"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default\",\n definition.align === \"end\" && \"mtx-flex-row-reverse mtx-text-end\",\n )}\n aria-label={`Sort ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n >\n <span className=\"mtx-truncate\">{definition.headerName ?? column.id}</span>\n {sorted && (\n <span aria-hidden=\"true\">\n {sorted === \"asc\" ? \"↑\" : \"↓\"}\n {table.state.sorting.length > 1 ? column.getSortIndex() + 1 : \"\"}\n </span>\n )}\n </button>\n {!isPrinting && <DataTableColumnMenu table={table} column={column} definition={definition} />}\n {!isPrinting && column.getCanResize() && (\n <div\n role=\"separator\"\n data-column-drag-ignore=\"\"\n aria-label={`Resize ${column.id}`}\n aria-orientation=\"vertical\"\n tabIndex={0}\n className=\"mtx-absolute mtx-inset-y-3 mtx-end-0 mtx-w-2 mtx-cursor-col-resize mtx-touch-none after:mtx-bg-gray-400/70 after:mtx-w-0.5 after:mtx-h-full after:mtx-block after:mtx-absolute after:mtx-start-1/2 after:-mtx-translate-x-1/2\"\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => column.resetSize()}\n onKeyDown={event => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n table.setColumnSizing(previous => ({\n ...previous,\n [column.id]: (widths.get(column.id) ?? column.getSize()) + (event.key === \"ArrowRight\" ? 10 : -10),\n }));\n }\n }}\n />\n )}\n </DataTableColumnHeader>\n );\n })}\n </div>\n );\n}\n"],"names":["DataTableHeader","table","api","headerHeight","totalWidth","isPrinting","showExpanders","expanderWidth","showCheckboxes","rowSelection","selectionRows","selectedInScope","visibleColumns","definitionsById","columnStyle","widths","jsxs","jsx","Checkbox","checked","previous","id","row","column","definition","header","item","sorted","DataTableColumnHeader","cn","event","DataTableColumnMenu"],"mappings":"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"}
|
|
@@ -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;"}
|