@tanstack/table-core 8.5.15 → 8.5.17
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/build/cjs/aggregationFns.js +0 -15
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/columnHelper.js +10 -2
- package/build/cjs/columnHelper.js.map +1 -1
- package/build/cjs/core/cell.js +0 -3
- package/build/cjs/core/cell.js.map +1 -1
- package/build/cjs/core/column.js +7 -12
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/core/headers.js +18 -30
- package/build/cjs/core/headers.js.map +1 -1
- package/build/cjs/core/row.js +0 -5
- package/build/cjs/core/row.js.map +1 -1
- package/build/cjs/core/table.js +13 -30
- package/build/cjs/core/table.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +33 -32
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +9 -19
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +6 -34
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +1 -16
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Ordering.js +13 -10
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +11 -22
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +5 -11
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +35 -39
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +14 -29
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +5 -5
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +3 -28
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/sortingFns.js +24 -31
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +7 -19
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +11 -13
- package/build/cjs/utils/getCoreRowModel.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +0 -6
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +0 -6
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
- package/build/cjs/utils/getFacetedRowModel.js +0 -4
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedUniqueValues.js +0 -4
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModel.js +8 -20
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +21 -25
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +0 -6
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +6 -15
- package/build/cjs/utils/getSortedRowModel.js.map +1 -1
- package/build/cjs/utils.js +7 -13
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +267 -504
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +51 -41
- package/build/stats-react.json +369 -369
- package/build/umd/index.development.js +267 -502
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/core/column.ts +5 -0
- package/src/features/ColumnSizing.ts +11 -1
|
@@ -20,37 +20,31 @@ const sum = (columnId, _leafRows, childRows) => {
|
|
|
20
20
|
return sum + (typeof nextValue === 'number' ? nextValue : 0);
|
|
21
21
|
}, 0);
|
|
22
22
|
};
|
|
23
|
-
|
|
24
23
|
const min = (columnId, _leafRows, childRows) => {
|
|
25
24
|
let min;
|
|
26
25
|
childRows.forEach(row => {
|
|
27
26
|
const value = row.getValue(columnId);
|
|
28
|
-
|
|
29
27
|
if (value != null && (min > value || min === undefined && value >= value)) {
|
|
30
28
|
min = value;
|
|
31
29
|
}
|
|
32
30
|
});
|
|
33
31
|
return min;
|
|
34
32
|
};
|
|
35
|
-
|
|
36
33
|
const max = (columnId, _leafRows, childRows) => {
|
|
37
34
|
let max;
|
|
38
35
|
childRows.forEach(row => {
|
|
39
36
|
const value = row.getValue(columnId);
|
|
40
|
-
|
|
41
37
|
if (value != null && (max < value || max === undefined && value >= value)) {
|
|
42
38
|
max = value;
|
|
43
39
|
}
|
|
44
40
|
});
|
|
45
41
|
return max;
|
|
46
42
|
};
|
|
47
|
-
|
|
48
43
|
const extent = (columnId, _leafRows, childRows) => {
|
|
49
44
|
let min;
|
|
50
45
|
let max;
|
|
51
46
|
childRows.forEach(row => {
|
|
52
47
|
const value = row.getValue(columnId);
|
|
53
|
-
|
|
54
48
|
if (value != null) {
|
|
55
49
|
if (min === undefined) {
|
|
56
50
|
if (value >= value) min = max = value;
|
|
@@ -62,13 +56,11 @@ const extent = (columnId, _leafRows, childRows) => {
|
|
|
62
56
|
});
|
|
63
57
|
return [min, max];
|
|
64
58
|
};
|
|
65
|
-
|
|
66
59
|
const mean = (columnId, leafRows) => {
|
|
67
60
|
let count = 0;
|
|
68
61
|
let sum = 0;
|
|
69
62
|
leafRows.forEach(row => {
|
|
70
63
|
let value = row.getValue(columnId);
|
|
71
|
-
|
|
72
64
|
if (value != null && (value = +value) >= value) {
|
|
73
65
|
++count, sum += value;
|
|
74
66
|
}
|
|
@@ -76,17 +68,14 @@ const mean = (columnId, leafRows) => {
|
|
|
76
68
|
if (count) return sum / count;
|
|
77
69
|
return;
|
|
78
70
|
};
|
|
79
|
-
|
|
80
71
|
const median = (columnId, leafRows) => {
|
|
81
72
|
if (!leafRows.length) {
|
|
82
73
|
return;
|
|
83
74
|
}
|
|
84
|
-
|
|
85
75
|
let min = 0;
|
|
86
76
|
let max = 0;
|
|
87
77
|
leafRows.forEach(row => {
|
|
88
78
|
let value = row.getValue(columnId);
|
|
89
|
-
|
|
90
79
|
if (typeof value === 'number') {
|
|
91
80
|
min = Math.min(min, value);
|
|
92
81
|
max = Math.max(max, value);
|
|
@@ -94,19 +83,15 @@ const median = (columnId, leafRows) => {
|
|
|
94
83
|
});
|
|
95
84
|
return (min + max) / 2;
|
|
96
85
|
};
|
|
97
|
-
|
|
98
86
|
const unique = (columnId, leafRows) => {
|
|
99
87
|
return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
|
|
100
88
|
};
|
|
101
|
-
|
|
102
89
|
const uniqueCount = (columnId, leafRows) => {
|
|
103
90
|
return new Set(leafRows.map(d => d.getValue(columnId))).size;
|
|
104
91
|
};
|
|
105
|
-
|
|
106
92
|
const count = (_columnId, leafRows) => {
|
|
107
93
|
return leafRows.length;
|
|
108
94
|
};
|
|
109
|
-
|
|
110
95
|
const aggregationFns = {
|
|
111
96
|
sum,
|
|
112
97
|
min,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["import { AggregationFn } from './features/Grouping'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n let min = 0\n let max = 0\n\n leafRows.forEach(row => {\n let value = row.getValue(columnId)\n if (typeof value === 'number') {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n\n return (min + max) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n"],"names":["sum","columnId","_leafRows","childRows","reduce","next","nextValue","getValue","min","forEach","row","value","undefined","max","extent","mean","leafRows","count","median","length","Math","unique","Array","from","Set","map","d","values","uniqueCount","size","_columnId","aggregationFns"],"mappings":";;;;;;;;;;;;;;AAEA,MAAMA,GAAuB,GAAG,CAACC,
|
|
1
|
+
{"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["import { AggregationFn } from './features/Grouping'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n let min = 0\n let max = 0\n\n leafRows.forEach(row => {\n let value = row.getValue(columnId)\n if (typeof value === 'number') {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n\n return (min + max) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n"],"names":["sum","columnId","_leafRows","childRows","reduce","next","nextValue","getValue","min","forEach","row","value","undefined","max","extent","mean","leafRows","count","median","length","Math","unique","Array","from","Set","map","d","values","uniqueCount","size","_columnId","aggregationFns"],"mappings":"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"}
|
|
@@ -35,24 +35,32 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
35
35
|
// }
|
|
36
36
|
// }
|
|
37
37
|
// }
|
|
38
|
+
|
|
38
39
|
// const test: DeepKeys<Person> = 'nested.foo.0.bar'
|
|
39
40
|
// const test2: DeepKeys<Person> = 'nested.bar'
|
|
41
|
+
|
|
40
42
|
// const helper = createColumnHelper<Person>()
|
|
43
|
+
|
|
41
44
|
// helper.accessor('nested.foo', {
|
|
42
45
|
// cell: info => info.getValue(),
|
|
43
46
|
// })
|
|
47
|
+
|
|
44
48
|
// helper.accessor('nested.foo.0.bar', {
|
|
45
49
|
// cell: info => info.getValue(),
|
|
46
50
|
// })
|
|
51
|
+
|
|
47
52
|
// helper.accessor('nested.bar', {
|
|
48
53
|
// cell: info => info.getValue(),
|
|
49
54
|
// })
|
|
55
|
+
|
|
50
56
|
function createColumnHelper() {
|
|
51
57
|
return {
|
|
52
58
|
accessor: (accessor, column) => {
|
|
53
|
-
return typeof accessor === 'function' ? {
|
|
59
|
+
return typeof accessor === 'function' ? {
|
|
60
|
+
...column,
|
|
54
61
|
accessorFn: accessor
|
|
55
|
-
} : {
|
|
62
|
+
} : {
|
|
63
|
+
...column,
|
|
56
64
|
accessorKey: accessor
|
|
57
65
|
};
|
|
58
66
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnHelper.js","sources":["../../src/columnHelper.ts"],"sourcesContent":["import {\n AccessorFn,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n RowData,\n} from './types'\nimport { DeepKeys, DeepValue, RequiredKeys } from './utils'\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nexport type ColumnHelper<TData extends RowData> = {\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TData, TValue>\n : IdentifiedColumnDef<TData, TValue>\n ) => ColumnDef<TData, TValue>\n display: (column: DisplayColumnDef<TData>) => ColumnDef<TData, unknown>\n group: (column: GroupColumnDef<TData>) => ColumnDef<TData, unknown>\n}\n\nexport function createColumnHelper<\n TData extends RowData\n>(): ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: column => column as ColumnDef<TData, unknown>,\n group: column => column as ColumnDef<TData, unknown>,\n }\n}\n"],"names":["createColumnHelper","accessor","column","accessorFn","accessorKey","display","group"],"mappings":";;;;;;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"file":"columnHelper.js","sources":["../../src/columnHelper.ts"],"sourcesContent":["import {\n AccessorFn,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n RowData,\n} from './types'\nimport { DeepKeys, DeepValue, RequiredKeys } from './utils'\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nexport type ColumnHelper<TData extends RowData> = {\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TData, TValue>\n : IdentifiedColumnDef<TData, TValue>\n ) => ColumnDef<TData, TValue>\n display: (column: DisplayColumnDef<TData>) => ColumnDef<TData, unknown>\n group: (column: GroupColumnDef<TData>) => ColumnDef<TData, unknown>\n}\n\nexport function createColumnHelper<\n TData extends RowData\n>(): ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: column => column as ColumnDef<TData, unknown>,\n group: column => column as ColumnDef<TData, unknown>,\n }\n}\n"],"names":["createColumnHelper","accessor","column","accessorFn","accessorKey","display","group"],"mappings":";;;;;;;;;;;;;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAoBO,SAASA,kBAAkB,GAET;EACvB,OAAO;AACLC,IAAAA,QAAQ,EAAE,CAACA,QAAQ,EAAEC,MAAM,KAAK;AAC9B,MAAA,OAAO,OAAOD,QAAQ,KAAK,UAAU,GAChC;AACC,QAAA,GAAGC,MAAM;AACTC,QAAAA,UAAU,EAAEF,QAAAA;AACd,OAAC,GACD;AACE,QAAA,GAAGC,MAAM;AACTE,QAAAA,WAAW,EAAEH,QAAAA;OACd,CAAA;KACN;IACDI,OAAO,EAAEH,MAAM,IAAIA,MAAmC;IACtDI,KAAK,EAAEJ,MAAM,IAAIA,MAAAA;GAClB,CAAA;AACH;;;;"}
|
package/build/cjs/core/cell.js
CHANGED
|
@@ -16,7 +16,6 @@ var utils = require('../utils.js');
|
|
|
16
16
|
|
|
17
17
|
function createCell(table, row, column, columnId) {
|
|
18
18
|
const getRenderValue = () => cell.getValue() ?? table.options.renderFallbackValue;
|
|
19
|
-
|
|
20
19
|
const cell = {
|
|
21
20
|
id: `${row.id}_${column.id}`,
|
|
22
21
|
row,
|
|
@@ -35,11 +34,9 @@ function createCell(table, row, column, columnId) {
|
|
|
35
34
|
debug: () => table.options.debugAll
|
|
36
35
|
})
|
|
37
36
|
};
|
|
38
|
-
|
|
39
37
|
table._features.forEach(feature => {
|
|
40
38
|
Object.assign(cell, feature.createCell == null ? void 0 : feature.createCell(cell, column, row, table));
|
|
41
39
|
}, {});
|
|
42
|
-
|
|
43
40
|
return cell;
|
|
44
41
|
}
|
|
45
42
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell.js","sources":["../../../src/core/cell.ts"],"sourcesContent":["import { RowData, Cell, Column, Row, Table } from '../types'\nimport { Getter, memo } from '../utils'\n\nexport type CellContext<TData extends RowData, TValue> = {\n table: Table<TData>\n column: Column<TData, TValue>\n row: Row<TData>\n cell: Cell<TData, TValue>\n getValue: Getter<TValue>\n renderValue: Getter<TValue | null>\n}\n\nexport type CoreCell<TData extends RowData, TValue> = {\n id: string\n getValue: CellContext<TData, TValue>['getValue']\n renderValue: CellContext<TData, TValue>['renderValue']\n row: Row<TData>\n column: Column<TData, TValue>\n getContext: () => CellContext<TData, TValue>\n}\n\nexport function createCell<TData extends RowData, TValue>(\n table: Table<TData>,\n row: Row<TData>,\n column: Column<TData, TValue>,\n columnId: string\n) {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n const cell: CoreCell<TData, TValue> = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(\n () => [table, column, row, cell],\n (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell as Cell<TData, TValue>,\n getValue: cell.getValue,\n renderValue: cell.renderValue,\n }),\n {\n key: process.env.NODE_ENV === 'development' && 'cell.getContext',\n debug: () => table.options.debugAll,\n }\n ),\n }\n\n table._features.forEach(feature => {\n Object.assign(\n cell,\n feature.createCell?.(\n cell as Cell<TData, TValue>,\n column,\n row as Row<TData>,\n table\n )\n )\n }, {})\n\n return cell as Cell<TData, TValue>\n}\n"],"names":["createCell","table","row","column","columnId","getRenderValue","cell","getValue","options","renderFallbackValue","id","renderValue","getContext","memo","key","process","env","NODE_ENV","debug","debugAll","_features","forEach","feature","Object","assign"],"mappings":";;;;;;;;;;;;;;;;AAqBO,SAASA,
|
|
1
|
+
{"version":3,"file":"cell.js","sources":["../../../src/core/cell.ts"],"sourcesContent":["import { RowData, Cell, Column, Row, Table } from '../types'\nimport { Getter, memo } from '../utils'\n\nexport type CellContext<TData extends RowData, TValue> = {\n table: Table<TData>\n column: Column<TData, TValue>\n row: Row<TData>\n cell: Cell<TData, TValue>\n getValue: Getter<TValue>\n renderValue: Getter<TValue | null>\n}\n\nexport type CoreCell<TData extends RowData, TValue> = {\n id: string\n getValue: CellContext<TData, TValue>['getValue']\n renderValue: CellContext<TData, TValue>['renderValue']\n row: Row<TData>\n column: Column<TData, TValue>\n getContext: () => CellContext<TData, TValue>\n}\n\nexport function createCell<TData extends RowData, TValue>(\n table: Table<TData>,\n row: Row<TData>,\n column: Column<TData, TValue>,\n columnId: string\n) {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n const cell: CoreCell<TData, TValue> = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(\n () => [table, column, row, cell],\n (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell as Cell<TData, TValue>,\n getValue: cell.getValue,\n renderValue: cell.renderValue,\n }),\n {\n key: process.env.NODE_ENV === 'development' && 'cell.getContext',\n debug: () => table.options.debugAll,\n }\n ),\n }\n\n table._features.forEach(feature => {\n Object.assign(\n cell,\n feature.createCell?.(\n cell as Cell<TData, TValue>,\n column,\n row as Row<TData>,\n table\n )\n )\n }, {})\n\n return cell as Cell<TData, TValue>\n}\n"],"names":["createCell","table","row","column","columnId","getRenderValue","cell","getValue","options","renderFallbackValue","id","renderValue","getContext","memo","key","process","env","NODE_ENV","debug","debugAll","_features","forEach","feature","Object","assign"],"mappings":";;;;;;;;;;;;;;;;AAqBO,SAASA,UAAU,CACxBC,KAAmB,EACnBC,GAAe,EACfC,MAA6B,EAC7BC,QAAgB,EAChB;AACA,EAAA,MAAMC,cAAc,GAAG,MACrBC,IAAI,CAACC,QAAQ,EAAE,IAAIN,KAAK,CAACO,OAAO,CAACC,mBAAmB,CAAA;AAEtD,EAAA,MAAMH,IAA6B,GAAG;IACpCI,EAAE,EAAG,GAAER,GAAG,CAACQ,EAAG,CAAGP,CAAAA,EAAAA,MAAM,CAACO,EAAG,CAAC,CAAA;IAC5BR,GAAG;IACHC,MAAM;AACNI,IAAAA,QAAQ,EAAE,MAAML,GAAG,CAACK,QAAQ,CAACH,QAAQ,CAAC;AACtCO,IAAAA,WAAW,EAAEN,cAAc;IAC3BO,UAAU,EAAEC,UAAI,CACd,MAAM,CAACZ,KAAK,EAAEE,MAAM,EAAED,GAAG,EAAEI,IAAI,CAAC,EAChC,CAACL,KAAK,EAAEE,MAAM,EAAED,GAAG,EAAEI,IAAI,MAAM;MAC7BL,KAAK;MACLE,MAAM;MACND,GAAG;AACHI,MAAAA,IAAI,EAAEA,IAA2B;MACjCC,QAAQ,EAAED,IAAI,CAACC,QAAQ;MACvBI,WAAW,EAAEL,IAAI,CAACK,WAAAA;AACpB,KAAC,CAAC,EACF;MACEG,GAAG,EAAEC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAI,iBAAiB;AAChEC,MAAAA,KAAK,EAAE,MAAMjB,KAAK,CAACO,OAAO,CAACW,QAAAA;KAC5B,CAAA;GAEJ,CAAA;AAEDlB,EAAAA,KAAK,CAACmB,SAAS,CAACC,OAAO,CAACC,OAAO,IAAI;IACjCC,MAAM,CAACC,MAAM,CACXlB,IAAI,EACJgB,OAAO,CAACtB,UAAU,IAAlBsB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAACtB,UAAU,CAChBM,IAAI,EACJH,MAAM,EACND,GAAG,EACHD,KAAK,CACN,CACF,CAAA;GACF,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,OAAOK,IAAI,CAAA;AACb;;;;"}
|
package/build/cjs/core/column.js
CHANGED
|
@@ -16,14 +16,13 @@ var utils = require('../utils.js');
|
|
|
16
16
|
|
|
17
17
|
function createColumn(table, columnDef, depth, parent) {
|
|
18
18
|
const defaultColumn = table._getDefaultColumnDef();
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
const resolvedColumnDef = {
|
|
20
|
+
...defaultColumn,
|
|
21
21
|
...columnDef
|
|
22
22
|
};
|
|
23
23
|
const accessorKey = resolvedColumnDef.accessorKey;
|
|
24
24
|
let id = resolvedColumnDef.id ?? (accessorKey ? accessorKey.replace('.', '_') : undefined) ?? (typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined);
|
|
25
25
|
let accessorFn;
|
|
26
|
-
|
|
27
26
|
if (resolvedColumnDef.accessorFn) {
|
|
28
27
|
accessorFn = resolvedColumnDef.accessorFn;
|
|
29
28
|
} else if (accessorKey) {
|
|
@@ -31,26 +30,24 @@ function createColumn(table, columnDef, depth, parent) {
|
|
|
31
30
|
if (accessorKey.includes('.')) {
|
|
32
31
|
accessorFn = originalRow => {
|
|
33
32
|
let result = originalRow;
|
|
34
|
-
|
|
35
33
|
for (const key of accessorKey.split('.')) {
|
|
36
34
|
result = result[key];
|
|
35
|
+
if (process.env.NODE_ENV !== 'production' && result === undefined) {
|
|
36
|
+
throw new Error(`"${key}" in deeply nested key "${accessorKey}" returned undefined.`);
|
|
37
|
+
}
|
|
37
38
|
}
|
|
38
|
-
|
|
39
39
|
return result;
|
|
40
40
|
};
|
|
41
41
|
} else {
|
|
42
42
|
accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
|
|
46
45
|
if (!id) {
|
|
47
46
|
if (process.env.NODE_ENV !== 'production') {
|
|
48
47
|
throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);
|
|
49
48
|
}
|
|
50
|
-
|
|
51
49
|
throw new Error();
|
|
52
50
|
}
|
|
53
|
-
|
|
54
51
|
let column = {
|
|
55
52
|
id: `${String(id)}`,
|
|
56
53
|
accessorFn,
|
|
@@ -60,7 +57,6 @@ function createColumn(table, columnDef, depth, parent) {
|
|
|
60
57
|
columns: [],
|
|
61
58
|
getFlatColumns: utils.memo(() => [true], () => {
|
|
62
59
|
var _column$columns;
|
|
63
|
-
|
|
64
60
|
return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];
|
|
65
61
|
}, {
|
|
66
62
|
key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',
|
|
@@ -68,12 +64,10 @@ function createColumn(table, columnDef, depth, parent) {
|
|
|
68
64
|
}),
|
|
69
65
|
getLeafColumns: utils.memo(() => [table._getOrderColumnsFn()], orderColumns => {
|
|
70
66
|
var _column$columns2;
|
|
71
|
-
|
|
72
67
|
if ((_column$columns2 = column.columns) != null && _column$columns2.length) {
|
|
73
68
|
let leafColumns = column.columns.flatMap(column => column.getLeafColumns());
|
|
74
69
|
return orderColumns(leafColumns);
|
|
75
70
|
}
|
|
76
|
-
|
|
77
71
|
return [column];
|
|
78
72
|
}, {
|
|
79
73
|
key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',
|
|
@@ -82,8 +76,9 @@ function createColumn(table, columnDef, depth, parent) {
|
|
|
82
76
|
};
|
|
83
77
|
column = table._features.reduce((obj, feature) => {
|
|
84
78
|
return Object.assign(obj, feature.createColumn == null ? void 0 : feature.createColumn(column, table));
|
|
85
|
-
}, column);
|
|
79
|
+
}, column);
|
|
86
80
|
|
|
81
|
+
// Yes, we have to convert table to uknown, because we know more than the compiler here.
|
|
87
82
|
return column;
|
|
88
83
|
}
|
|
89
84
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.js","sources":["../../../src/core/column.ts"],"sourcesContent":["import { TaggedTemplateExpression } from '@babel/types'\nimport {\n Column,\n Table,\n AccessorFn,\n ColumnDef,\n ColumnDefTemplate,\n RowData,\n ColumnMeta,\n ColumnDefResolved,\n} from '../types'\nimport { memo } from '../utils'\n\nexport type CoreColumn<TData extends RowData, TValue> = {\n id: string\n depth: number\n accessorFn?: AccessorFn<TData, TValue>\n columnDef: ColumnDef<TData, TValue>\n columns: Column<TData, TValue>[]\n parent?: Column<TData, TValue>\n getFlatColumns: () => Column<TData, TValue>[]\n getLeafColumns: () => Column<TData, TValue>[]\n}\n\nexport function createColumn<TData extends RowData, TValue>(\n table: Table<TData>,\n columnDef: ColumnDef<TData, TValue>,\n depth: number,\n parent?: Column<TData, TValue>\n) {\n const defaultColumn = table._getDefaultColumnDef()\n\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef,\n } as ColumnDefResolved<TData>\n\n const accessorKey = resolvedColumnDef.accessorKey\n\n let id =\n resolvedColumnDef.id ??\n (accessorKey ? accessorKey.replace('.', '_') : undefined) ??\n (typeof resolvedColumnDef.header === 'string'\n ? resolvedColumnDef.header\n : undefined)\n\n let accessorFn: AccessorFn<TData> | undefined\n\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = (originalRow: TData) => {\n let result = originalRow as Record<string, any>\n\n for (const key of accessorKey.split('.')) {\n result = result[key]\n }\n\n return result\n }\n } else {\n accessorFn = (originalRow: TData) =>\n (originalRow as any)[resolvedColumnDef.accessorKey]\n }\n }\n\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n resolvedColumnDef.accessorFn\n ? `Columns require an id when using an accessorFn`\n : `Columns require an id when using a non-string header`\n )\n }\n throw new Error()\n }\n\n let column: CoreColumn<TData, any> = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent as any,\n depth,\n columnDef: resolvedColumnDef as ColumnDef<TData, any>,\n columns: [],\n getFlatColumns: memo(\n () => [true],\n () => {\n return [\n column as Column<TData, TValue>,\n ...column.columns?.flatMap(d => d.getFlatColumns()),\n ]\n },\n {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n ),\n getLeafColumns: memo(\n () => [table._getOrderColumnsFn()],\n orderColumns => {\n if (column.columns?.length) {\n let leafColumns = column.columns.flatMap(column =>\n column.getLeafColumns()\n )\n\n return orderColumns(leafColumns)\n }\n\n return [column as Column<TData, TValue>]\n },\n {\n key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n ),\n }\n\n column = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.createColumn?.(column, table))\n }, column)\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column as Column<TData, TValue>\n}\n"],"names":["createColumn","table","columnDef","depth","parent","defaultColumn","_getDefaultColumnDef","resolvedColumnDef","accessorKey","id","replace","undefined","header","accessorFn","includes","originalRow","result","key","split","process","env","NODE_ENV","Error","column","String","columns","getFlatColumns","memo","flatMap","d","debug","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","length","leafColumns","_features","reduce","obj","feature","Object","assign"],"mappings":";;;;;;;;;;;;;;;;AAwBO,SAASA,
|
|
1
|
+
{"version":3,"file":"column.js","sources":["../../../src/core/column.ts"],"sourcesContent":["import { TaggedTemplateExpression } from '@babel/types'\nimport {\n Column,\n Table,\n AccessorFn,\n ColumnDef,\n ColumnDefTemplate,\n RowData,\n ColumnMeta,\n ColumnDefResolved,\n} from '../types'\nimport { memo } from '../utils'\n\nexport type CoreColumn<TData extends RowData, TValue> = {\n id: string\n depth: number\n accessorFn?: AccessorFn<TData, TValue>\n columnDef: ColumnDef<TData, TValue>\n columns: Column<TData, TValue>[]\n parent?: Column<TData, TValue>\n getFlatColumns: () => Column<TData, TValue>[]\n getLeafColumns: () => Column<TData, TValue>[]\n}\n\nexport function createColumn<TData extends RowData, TValue>(\n table: Table<TData>,\n columnDef: ColumnDef<TData, TValue>,\n depth: number,\n parent?: Column<TData, TValue>\n) {\n const defaultColumn = table._getDefaultColumnDef()\n\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef,\n } as ColumnDefResolved<TData>\n\n const accessorKey = resolvedColumnDef.accessorKey\n\n let id =\n resolvedColumnDef.id ??\n (accessorKey ? accessorKey.replace('.', '_') : undefined) ??\n (typeof resolvedColumnDef.header === 'string'\n ? resolvedColumnDef.header\n : undefined)\n\n let accessorFn: AccessorFn<TData> | undefined\n\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = (originalRow: TData) => {\n let result = originalRow as Record<string, any>\n\n for (const key of accessorKey.split('.')) {\n result = result[key]\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n throw new Error(\n `\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`\n )\n }\n }\n\n return result\n }\n } else {\n accessorFn = (originalRow: TData) =>\n (originalRow as any)[resolvedColumnDef.accessorKey]\n }\n }\n\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n resolvedColumnDef.accessorFn\n ? `Columns require an id when using an accessorFn`\n : `Columns require an id when using a non-string header`\n )\n }\n throw new Error()\n }\n\n let column: CoreColumn<TData, any> = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent as any,\n depth,\n columnDef: resolvedColumnDef as ColumnDef<TData, any>,\n columns: [],\n getFlatColumns: memo(\n () => [true],\n () => {\n return [\n column as Column<TData, TValue>,\n ...column.columns?.flatMap(d => d.getFlatColumns()),\n ]\n },\n {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n ),\n getLeafColumns: memo(\n () => [table._getOrderColumnsFn()],\n orderColumns => {\n if (column.columns?.length) {\n let leafColumns = column.columns.flatMap(column =>\n column.getLeafColumns()\n )\n\n return orderColumns(leafColumns)\n }\n\n return [column as Column<TData, TValue>]\n },\n {\n key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n ),\n }\n\n column = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.createColumn?.(column, table))\n }, column)\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column as Column<TData, TValue>\n}\n"],"names":["createColumn","table","columnDef","depth","parent","defaultColumn","_getDefaultColumnDef","resolvedColumnDef","accessorKey","id","replace","undefined","header","accessorFn","includes","originalRow","result","key","split","process","env","NODE_ENV","Error","column","String","columns","getFlatColumns","memo","flatMap","d","debug","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","length","leafColumns","_features","reduce","obj","feature","Object","assign"],"mappings":";;;;;;;;;;;;;;;;AAwBO,SAASA,YAAY,CAC1BC,KAAmB,EACnBC,SAAmC,EACnCC,KAAa,EACbC,MAA8B,EAC9B;AACA,EAAA,MAAMC,aAAa,GAAGJ,KAAK,CAACK,oBAAoB,EAAE,CAAA;AAElD,EAAA,MAAMC,iBAAiB,GAAG;AACxB,IAAA,GAAGF,aAAa;IAChB,GAAGH,SAAAA;GACwB,CAAA;AAE7B,EAAA,MAAMM,WAAW,GAAGD,iBAAiB,CAACC,WAAW,CAAA;AAEjD,EAAA,IAAIC,EAAE,GACJF,iBAAiB,CAACE,EAAE,KACnBD,WAAW,GAAGA,WAAW,CAACE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAGC,SAAS,CAAC,KACxD,OAAOJ,iBAAiB,CAACK,MAAM,KAAK,QAAQ,GACzCL,iBAAiB,CAACK,MAAM,GACxBD,SAAS,CAAC,CAAA;AAEhB,EAAA,IAAIE,UAAyC,CAAA;EAE7C,IAAIN,iBAAiB,CAACM,UAAU,EAAE;IAChCA,UAAU,GAAGN,iBAAiB,CAACM,UAAU,CAAA;GAC1C,MAAM,IAAIL,WAAW,EAAE;AACtB;AACA,IAAA,IAAIA,WAAW,CAACM,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC7BD,UAAU,GAAIE,WAAkB,IAAK;QACnC,IAAIC,MAAM,GAAGD,WAAkC,CAAA;QAE/C,KAAK,MAAME,GAAG,IAAIT,WAAW,CAACU,KAAK,CAAC,GAAG,CAAC,EAAE;AACxCF,UAAAA,MAAM,GAAGA,MAAM,CAACC,GAAG,CAAC,CAAA;UACpB,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIL,MAAM,KAAKL,SAAS,EAAE;YACjE,MAAM,IAAIW,KAAK,CACZ,CAAA,CAAA,EAAGL,GAAI,CAA0BT,wBAAAA,EAAAA,WAAY,uBAAsB,CACrE,CAAA;AACH,WAAA;AACF,SAAA;AAEA,QAAA,OAAOQ,MAAM,CAAA;OACd,CAAA;AACH,KAAC,MAAM;MACLH,UAAU,GAAIE,WAAkB,IAC7BA,WAAW,CAASR,iBAAiB,CAACC,WAAW,CAAC,CAAA;AACvD,KAAA;AACF,GAAA;EAEA,IAAI,CAACC,EAAE,EAAE;AACP,IAAA,IAAIU,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC,MAAM,IAAIC,KAAK,CACbf,iBAAiB,CAACM,UAAU,GACvB,CAAA,8CAAA,CAA+C,GAC/C,CAAA,oDAAA,CAAqD,CAC3D,CAAA;AACH,KAAA;IACA,MAAM,IAAIS,KAAK,EAAE,CAAA;AACnB,GAAA;AAEA,EAAA,IAAIC,MAA8B,GAAG;AACnCd,IAAAA,EAAE,EAAG,CAAEe,EAAAA,MAAM,CAACf,EAAE,CAAE,CAAC,CAAA;IACnBI,UAAU;AACVT,IAAAA,MAAM,EAAEA,MAAa;IACrBD,KAAK;AACLD,IAAAA,SAAS,EAAEK,iBAA0C;AACrDkB,IAAAA,OAAO,EAAE,EAAE;IACXC,cAAc,EAAEC,UAAI,CAClB,MAAM,CAAC,IAAI,CAAC,EACZ,MAAM;AAAA,MAAA,IAAA,eAAA,CAAA;AACJ,MAAA,OAAO,CACLJ,MAAM,EACN,uBAAGA,MAAM,CAACE,OAAO,KAAd,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAgBG,OAAO,CAACC,CAAC,IAAIA,CAAC,CAACH,cAAc,EAAE,CAAC,CACpD,CAAA,CAAA;AACH,KAAC,EACD;MACET,GAAG,EAAEE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAI,uBAAuB;MACrES,KAAK,EAAE,MAAM7B,KAAK,CAAC8B,OAAO,CAACC,QAAQ,IAAI/B,KAAK,CAAC8B,OAAO,CAACE,YAAAA;AACvD,KAAC,CACF;AACDC,IAAAA,cAAc,EAAEP,UAAI,CAClB,MAAM,CAAC1B,KAAK,CAACkC,kBAAkB,EAAE,CAAC,EAClCC,YAAY,IAAI;AAAA,MAAA,IAAA,gBAAA,CAAA;AACd,MAAA,IAAA,CAAA,gBAAA,GAAIb,MAAM,CAACE,OAAO,KAAd,IAAA,IAAA,gBAAA,CAAgBY,MAAM,EAAE;AAC1B,QAAA,IAAIC,WAAW,GAAGf,MAAM,CAACE,OAAO,CAACG,OAAO,CAACL,MAAM,IAC7CA,MAAM,CAACW,cAAc,EAAE,CACxB,CAAA;QAED,OAAOE,YAAY,CAACE,WAAW,CAAC,CAAA;AAClC,OAAA;MAEA,OAAO,CAACf,MAAM,CAA0B,CAAA;AAC1C,KAAC,EACD;MACEN,GAAG,EAAEE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAI,uBAAuB;MACrES,KAAK,EAAE,MAAM7B,KAAK,CAAC8B,OAAO,CAACC,QAAQ,IAAI/B,KAAK,CAAC8B,OAAO,CAACE,YAAAA;KACtD,CAAA;GAEJ,CAAA;EAEDV,MAAM,GAAGtB,KAAK,CAACsC,SAAS,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,OAAO,KAAK;AAChD,IAAA,OAAOC,MAAM,CAACC,MAAM,CAACH,GAAG,EAAEC,OAAO,CAAC1C,YAAY,IAApB0C,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAC1C,YAAY,CAAGuB,MAAM,EAAEtB,KAAK,CAAC,CAAC,CAAA;GACjE,EAAEsB,MAAM,CAAC,CAAA;;AAEV;AACA,EAAA,OAAOA,MAAM,CAAA;AACf;;;;"}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
15
15
|
var utils = require('../utils.js');
|
|
16
16
|
|
|
17
17
|
//
|
|
18
|
+
|
|
18
19
|
function createHeader(table, column, options) {
|
|
19
20
|
const id = options.id ?? column.id;
|
|
20
21
|
let header = {
|
|
@@ -30,15 +31,12 @@ function createHeader(table, column, options) {
|
|
|
30
31
|
headerGroup: null,
|
|
31
32
|
getLeafHeaders: () => {
|
|
32
33
|
const leafHeaders = [];
|
|
33
|
-
|
|
34
34
|
const recurseHeader = h => {
|
|
35
35
|
if (h.subHeaders && h.subHeaders.length) {
|
|
36
36
|
h.subHeaders.map(recurseHeader);
|
|
37
37
|
}
|
|
38
|
-
|
|
39
38
|
leafHeaders.push(h);
|
|
40
39
|
};
|
|
41
|
-
|
|
42
40
|
recurseHeader(header);
|
|
43
41
|
return leafHeaders;
|
|
44
42
|
},
|
|
@@ -48,18 +46,16 @@ function createHeader(table, column, options) {
|
|
|
48
46
|
column
|
|
49
47
|
})
|
|
50
48
|
};
|
|
51
|
-
|
|
52
49
|
table._features.forEach(feature => {
|
|
53
50
|
Object.assign(header, feature.createHeader == null ? void 0 : feature.createHeader(header, table));
|
|
54
51
|
});
|
|
55
|
-
|
|
56
52
|
return header;
|
|
57
53
|
}
|
|
58
|
-
|
|
59
54
|
const Headers = {
|
|
60
55
|
createTable: table => {
|
|
61
56
|
return {
|
|
62
57
|
// Header Groups
|
|
58
|
+
|
|
63
59
|
getHeaderGroups: utils.memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {
|
|
64
60
|
const leftColumns = (left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];
|
|
65
61
|
const rightColumns = (right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];
|
|
@@ -92,6 +88,7 @@ const Headers = {
|
|
|
92
88
|
debug: () => table.options.debugAll ?? table.options.debugHeaders
|
|
93
89
|
}),
|
|
94
90
|
// Footer Groups
|
|
91
|
+
|
|
95
92
|
getFooterGroups: utils.memo(() => [table.getHeaderGroups()], headerGroups => {
|
|
96
93
|
return [...headerGroups].reverse();
|
|
97
94
|
}, {
|
|
@@ -117,6 +114,7 @@ const Headers = {
|
|
|
117
114
|
debug: () => table.options.debugAll ?? table.options.debugHeaders
|
|
118
115
|
}),
|
|
119
116
|
// Flat Headers
|
|
117
|
+
|
|
120
118
|
getFlatHeaders: utils.memo(() => [table.getHeaderGroups()], headerGroups => {
|
|
121
119
|
return headerGroups.map(headerGroup => {
|
|
122
120
|
return headerGroup.headers;
|
|
@@ -150,10 +148,10 @@ const Headers = {
|
|
|
150
148
|
debug: () => table.options.debugAll ?? table.options.debugHeaders
|
|
151
149
|
}),
|
|
152
150
|
// Leaf Headers
|
|
151
|
+
|
|
153
152
|
getCenterLeafHeaders: utils.memo(() => [table.getCenterFlatHeaders()], flatHeaders => {
|
|
154
153
|
return flatHeaders.filter(header => {
|
|
155
154
|
var _header$subHeaders;
|
|
156
|
-
|
|
157
155
|
return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);
|
|
158
156
|
});
|
|
159
157
|
}, {
|
|
@@ -163,7 +161,6 @@ const Headers = {
|
|
|
163
161
|
getLeftLeafHeaders: utils.memo(() => [table.getLeftFlatHeaders()], flatHeaders => {
|
|
164
162
|
return flatHeaders.filter(header => {
|
|
165
163
|
var _header$subHeaders2;
|
|
166
|
-
|
|
167
164
|
return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);
|
|
168
165
|
});
|
|
169
166
|
}, {
|
|
@@ -173,7 +170,6 @@ const Headers = {
|
|
|
173
170
|
getRightLeafHeaders: utils.memo(() => [table.getRightFlatHeaders()], flatHeaders => {
|
|
174
171
|
return flatHeaders.filter(header => {
|
|
175
172
|
var _header$subHeaders3;
|
|
176
|
-
|
|
177
173
|
return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);
|
|
178
174
|
});
|
|
179
175
|
}, {
|
|
@@ -182,7 +178,6 @@ const Headers = {
|
|
|
182
178
|
}),
|
|
183
179
|
getLeafHeaders: utils.memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {
|
|
184
180
|
var _left$, _center$, _right$;
|
|
185
|
-
|
|
186
181
|
return [...(((_left$ = left[0]) == null ? void 0 : _left$.headers) ?? []), ...(((_center$ = center[0]) == null ? void 0 : _center$.headers) ?? []), ...(((_right$ = right[0]) == null ? void 0 : _right$.headers) ?? [])].map(header => {
|
|
187
182
|
return header.getLeafHeaders();
|
|
188
183
|
}).flat();
|
|
@@ -195,49 +190,46 @@ const Headers = {
|
|
|
195
190
|
};
|
|
196
191
|
function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
|
|
197
192
|
var _headerGroups$;
|
|
198
|
-
|
|
199
193
|
// Find the max depth of the columns:
|
|
200
194
|
// build the leaf column row
|
|
201
195
|
// build each buffer row going up
|
|
202
196
|
// placeholder for non-existent level
|
|
203
197
|
// real column for existing level
|
|
204
|
-
let maxDepth = 0;
|
|
205
198
|
|
|
199
|
+
let maxDepth = 0;
|
|
206
200
|
const findMaxDepth = function (columns, depth) {
|
|
207
201
|
if (depth === void 0) {
|
|
208
202
|
depth = 1;
|
|
209
203
|
}
|
|
210
|
-
|
|
211
204
|
maxDepth = Math.max(maxDepth, depth);
|
|
212
205
|
columns.filter(column => column.getIsVisible()).forEach(column => {
|
|
213
206
|
var _column$columns;
|
|
214
|
-
|
|
215
207
|
if ((_column$columns = column.columns) != null && _column$columns.length) {
|
|
216
208
|
findMaxDepth(column.columns, depth + 1);
|
|
217
209
|
}
|
|
218
210
|
}, 0);
|
|
219
211
|
};
|
|
220
|
-
|
|
221
212
|
findMaxDepth(allColumns);
|
|
222
213
|
let headerGroups = [];
|
|
223
|
-
|
|
224
214
|
const createHeaderGroup = (headersToGroup, depth) => {
|
|
225
215
|
// The header group we are creating
|
|
226
216
|
const headerGroup = {
|
|
227
217
|
depth,
|
|
228
218
|
id: [headerFamily, `${depth}`].filter(Boolean).join('_'),
|
|
229
219
|
headers: []
|
|
230
|
-
};
|
|
220
|
+
};
|
|
231
221
|
|
|
232
|
-
|
|
222
|
+
// The parent columns we're going to scan next
|
|
223
|
+
const pendingParentHeaders = [];
|
|
233
224
|
|
|
225
|
+
// Scan each column for parents
|
|
234
226
|
headersToGroup.forEach(headerToGroup => {
|
|
235
227
|
// What is the latest (last) parent column?
|
|
228
|
+
|
|
236
229
|
const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];
|
|
237
230
|
const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;
|
|
238
231
|
let column;
|
|
239
232
|
let isPlaceholder = false;
|
|
240
|
-
|
|
241
233
|
if (isLeafHeader && headerToGroup.column.parent) {
|
|
242
234
|
// The parent header is new
|
|
243
235
|
column = headerToGroup.column.parent;
|
|
@@ -246,7 +238,6 @@ function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
|
|
|
246
238
|
column = headerToGroup.column;
|
|
247
239
|
isPlaceholder = true;
|
|
248
240
|
}
|
|
249
|
-
|
|
250
241
|
if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {
|
|
251
242
|
// This column is repeated. Add it as a sub header to the next batch
|
|
252
243
|
latestPendingParentHeader.subHeaders.push(headerToGroup);
|
|
@@ -258,30 +249,30 @@ function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
|
|
|
258
249
|
placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,
|
|
259
250
|
depth,
|
|
260
251
|
index: pendingParentHeaders.length
|
|
261
|
-
});
|
|
252
|
+
});
|
|
262
253
|
|
|
263
|
-
|
|
254
|
+
// Add the headerToGroup as a subHeader of the new header
|
|
255
|
+
header.subHeaders.push(headerToGroup);
|
|
256
|
+
// Add the new header to the pendingParentHeaders to get grouped
|
|
264
257
|
// in the next batch
|
|
265
|
-
|
|
266
258
|
pendingParentHeaders.push(header);
|
|
267
259
|
}
|
|
268
|
-
|
|
269
260
|
headerGroup.headers.push(headerToGroup);
|
|
270
261
|
headerToGroup.headerGroup = headerGroup;
|
|
271
262
|
});
|
|
272
263
|
headerGroups.push(headerGroup);
|
|
273
|
-
|
|
274
264
|
if (depth > 0) {
|
|
275
265
|
createHeaderGroup(pendingParentHeaders, depth - 1);
|
|
276
266
|
}
|
|
277
267
|
};
|
|
278
|
-
|
|
279
268
|
const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {
|
|
280
269
|
depth: maxDepth,
|
|
281
270
|
index
|
|
282
271
|
}));
|
|
283
272
|
createHeaderGroup(bottomHeaders, maxDepth - 1);
|
|
284
|
-
headerGroups.reverse();
|
|
273
|
+
headerGroups.reverse();
|
|
274
|
+
|
|
275
|
+
// headerGroups = headerGroups.filter(headerGroup => {
|
|
285
276
|
// return !headerGroup.headers.every(header => header.isPlaceholder)
|
|
286
277
|
// })
|
|
287
278
|
|
|
@@ -291,7 +282,6 @@ function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
|
|
|
291
282
|
let colSpan = 0;
|
|
292
283
|
let rowSpan = 0;
|
|
293
284
|
let childRowSpans = [0];
|
|
294
|
-
|
|
295
285
|
if (header.subHeaders && header.subHeaders.length) {
|
|
296
286
|
childRowSpans = [];
|
|
297
287
|
recurseHeadersForSpans(header.subHeaders).forEach(_ref => {
|
|
@@ -305,7 +295,6 @@ function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
|
|
|
305
295
|
} else {
|
|
306
296
|
colSpan = 1;
|
|
307
297
|
}
|
|
308
|
-
|
|
309
298
|
const minChildRowSpan = Math.min(...childRowSpans);
|
|
310
299
|
rowSpan = rowSpan + minChildRowSpan;
|
|
311
300
|
header.colSpan = colSpan;
|
|
@@ -316,7 +305,6 @@ function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
|
|
|
316
305
|
};
|
|
317
306
|
});
|
|
318
307
|
};
|
|
319
|
-
|
|
320
308
|
recurseHeadersForSpans(((_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) ?? []);
|
|
321
309
|
return headerGroups;
|
|
322
310
|
}
|