@tanstack/table-core 8.0.0-alpha.65 → 8.0.0-alpha.69
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 +25 -37
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/core.js +167 -48
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +24 -40
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +28 -34
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +136 -225
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +57 -84
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +79 -126
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +137 -288
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +71 -117
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +125 -205
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +32 -44
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +79 -82
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +99 -178
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +133 -204
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +32 -22
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +67 -136
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +56 -118
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +48 -72
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +13 -13
- package/build/cjs/sortingFns.js +21 -21
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +49 -55
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +98 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +18 -22
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
- package/build/cjs/utils/getFacetedRowModel.js +50 -0
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
- package/build/cjs/utils/getFilteredRowModel.js +130 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +126 -136
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +39 -39
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +112 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +36 -207
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +2024 -2971
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +421 -481
- package/build/types/core.d.ts +3 -5
- package/build/types/features/Cells.d.ts +1 -1
- package/build/types/features/ColumnSizing.d.ts +4 -15
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +2 -7
- package/build/types/features/Filters.d.ts +24 -21
- package/build/types/features/Grouping.d.ts +5 -11
- package/build/types/features/Ordering.d.ts +1 -1
- package/build/types/features/Pagination.d.ts +3 -3
- package/build/types/features/Pinning.d.ts +1 -5
- package/build/types/features/RowSelection.d.ts +2 -8
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +5 -15
- package/build/types/features/Visibility.d.ts +1 -4
- package/build/types/index.d.ts +6 -4
- package/build/types/types.d.ts +3 -15
- package/build/types/utils/filterRowsUtils.d.ts +3 -3
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
- package/build/types/utils/getFacetedRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
- package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
- package/build/types/utils/getGroupedRowModel.d.ts +1 -1
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +1 -17
- package/build/umd/index.development.js +2053 -3002
- 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.ts +197 -47
- package/src/features/Cells.ts +7 -11
- package/src/features/ColumnSizing.ts +89 -139
- package/src/features/Columns.ts +10 -13
- package/src/features/Expanding.ts +62 -107
- package/src/features/Filters.ts +201 -308
- package/src/features/Grouping.ts +55 -81
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +6 -4
- package/src/features/Pagination.ts +31 -17
- package/src/features/Pinning.ts +79 -96
- package/src/features/RowSelection.ts +68 -118
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +47 -103
- package/src/features/Visibility.ts +24 -47
- package/src/filterFns.ts +9 -9
- package/src/index.ts +12 -4
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +3 -18
- package/src/utils/filterRowsUtils.ts +47 -68
- package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFacetedMinMaxValues.ts +37 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +150 -0
- package/src/utils/getGroupedRowModel.ts +53 -62
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
- package/src/utils.ts +28 -236
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
- package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelSync.js +0 -102
- package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
- package/build/cjs/utils/getFilteredRowModelSync.js +0 -130
- package/build/cjs/utils/getFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getSortedRowModelSync.js +0 -118
- package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
- package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
- package/build/types/utils/getFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
- package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
- package/src/utils/getCoreRowModelAsync.ts +0 -104
- package/src/utils/getFilteredRowModelAsync.ts +0 -49
- package/src/utils/getFilteredRowModelSync.ts +0 -150
- package/src/utils/getSortedRowModelAsync.ts +0 -200
|
@@ -12,34 +12,28 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
uniqueCount: uniqueCount,
|
|
26
|
-
count: count
|
|
15
|
+
const aggregationFns = {
|
|
16
|
+
sum,
|
|
17
|
+
min,
|
|
18
|
+
max,
|
|
19
|
+
extent,
|
|
20
|
+
mean,
|
|
21
|
+
median,
|
|
22
|
+
unique,
|
|
23
|
+
uniqueCount,
|
|
24
|
+
count
|
|
27
25
|
};
|
|
28
26
|
|
|
29
27
|
function sum(_getLeafValues, getChildValues) {
|
|
30
28
|
// It's faster to just add the aggregations together instead of
|
|
31
29
|
// process leaf nodes individually
|
|
32
|
-
return getChildValues().reduce(
|
|
33
|
-
return sum + (typeof next === 'number' ? next : 0);
|
|
34
|
-
}, 0);
|
|
30
|
+
return getChildValues().reduce((sum, next) => sum + (typeof next === 'number' ? next : 0), 0);
|
|
35
31
|
}
|
|
36
32
|
|
|
37
33
|
function min(_getLeafValues, getChildValues) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
for (var _iterator = _rollupPluginBabelHelpers.createForOfIteratorHelperLoose(getChildValues()), _step; !(_step = _iterator()).done;) {
|
|
41
|
-
var value = _step.value;
|
|
34
|
+
let min;
|
|
42
35
|
|
|
36
|
+
for (const value of getChildValues()) {
|
|
43
37
|
if (value != null && (min > value || min === undefined && value >= value)) {
|
|
44
38
|
min = value;
|
|
45
39
|
}
|
|
@@ -49,11 +43,9 @@ function min(_getLeafValues, getChildValues) {
|
|
|
49
43
|
}
|
|
50
44
|
|
|
51
45
|
function max(_getLeafValues, getChildValues) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
for (var _iterator2 = _rollupPluginBabelHelpers.createForOfIteratorHelperLoose(getChildValues()), _step2; !(_step2 = _iterator2()).done;) {
|
|
55
|
-
var value = _step2.value;
|
|
46
|
+
let max;
|
|
56
47
|
|
|
48
|
+
for (const value of getChildValues()) {
|
|
57
49
|
if (value != null && (max < value || max === undefined && value >= value)) {
|
|
58
50
|
max = value;
|
|
59
51
|
}
|
|
@@ -63,12 +55,10 @@ function max(_getLeafValues, getChildValues) {
|
|
|
63
55
|
}
|
|
64
56
|
|
|
65
57
|
function extent(_getLeafValues, getChildValues) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
for (var _iterator3 = _rollupPluginBabelHelpers.createForOfIteratorHelperLoose(getChildValues()), _step3; !(_step3 = _iterator3()).done;) {
|
|
70
|
-
var value = _step3.value;
|
|
58
|
+
let min;
|
|
59
|
+
let max;
|
|
71
60
|
|
|
61
|
+
for (const value of getChildValues()) {
|
|
72
62
|
if (value != null) {
|
|
73
63
|
if (min === undefined) {
|
|
74
64
|
if (value >= value) min = max = value;
|
|
@@ -83,12 +73,10 @@ function extent(_getLeafValues, getChildValues) {
|
|
|
83
73
|
}
|
|
84
74
|
|
|
85
75
|
function mean(getLeafValues) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
for (var _iterator4 = _rollupPluginBabelHelpers.createForOfIteratorHelperLoose(getLeafValues()), _step4; !(_step4 = _iterator4()).done;) {
|
|
90
|
-
var value = _step4.value;
|
|
76
|
+
let count = 0;
|
|
77
|
+
let sum = 0;
|
|
91
78
|
|
|
79
|
+
for (let value of getLeafValues()) {
|
|
92
80
|
if (value != null && (value = +value) >= value) {
|
|
93
81
|
++count, sum += value;
|
|
94
82
|
}
|
|
@@ -99,15 +87,15 @@ function mean(getLeafValues) {
|
|
|
99
87
|
}
|
|
100
88
|
|
|
101
89
|
function median(getLeafValues) {
|
|
102
|
-
|
|
90
|
+
const leafValues = getLeafValues();
|
|
103
91
|
|
|
104
92
|
if (!leafValues.length) {
|
|
105
93
|
return;
|
|
106
94
|
}
|
|
107
95
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
leafValues.forEach(
|
|
96
|
+
let min = 0;
|
|
97
|
+
let max = 0;
|
|
98
|
+
leafValues.forEach(value => {
|
|
111
99
|
if (typeof value === 'number') {
|
|
112
100
|
min = Math.min(min, value);
|
|
113
101
|
max = Math.max(max, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["export 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\nfunction sum(_getLeafValues: () => unknown[], getChildValues: () => unknown[]) {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return getChildValues().reduce(\n (sum: number, next: unknown) => sum + (typeof next === 'number' ? next : 0),\n 0\n )\n}\n\nfunction min(_getLeafValues: () => unknown[], getChildValues: () => unknown[]) {\n let min: number | undefined\n\n for (const value of getChildValues() as number[]) {\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n }\n\n return min\n}\n\nfunction max(_getLeafValues: () => unknown[], getChildValues: () => unknown[]) {\n let max: number | undefined\n\n for (const value of getChildValues() as number[]) {\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n }\n\n return max\n}\n\nfunction extent(\n _getLeafValues: () => unknown[],\n getChildValues: () => unknown[]\n) {\n let min: number | undefined\n let max: number | undefined\n\n for (const value of getChildValues() as number[]) {\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\nexport function mean(getLeafValues: () => unknown[]) {\n let count = 0\n let sum = 0\n\n for (let value of getLeafValues() as number[]) {\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\nfunction median(getLeafValues: () => unknown[]) {\n const leafValues = getLeafValues()\n if (!leafValues.length) {\n return\n }\n\n let min = 0\n let max = 0\n\n leafValues.forEach(value => {\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\nfunction unique<T>(getLeafValues: () => T[]) {\n return Array.from(new Set(getLeafValues()).values())\n}\n\nfunction uniqueCount(getLeafValues: () => unknown[]) {\n return new Set(getLeafValues()).size\n}\n\nfunction count(getLeafValues: () => unknown[]) {\n return getLeafValues().length\n}\n"],"names":["aggregationFns","sum","min","max","extent","mean","median","unique","uniqueCount","count","_getLeafValues","getChildValues","reduce","next","value","undefined","getLeafValues","leafValues","length","forEach","Math","Array","from","Set","values","size"],"mappings":"
|
|
1
|
+
{"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["export 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\nfunction sum(_getLeafValues: () => unknown[], getChildValues: () => unknown[]) {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return getChildValues().reduce(\n (sum: number, next: unknown) => sum + (typeof next === 'number' ? next : 0),\n 0\n )\n}\n\nfunction min(_getLeafValues: () => unknown[], getChildValues: () => unknown[]) {\n let min: number | undefined\n\n for (const value of getChildValues() as number[]) {\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n }\n\n return min\n}\n\nfunction max(_getLeafValues: () => unknown[], getChildValues: () => unknown[]) {\n let max: number | undefined\n\n for (const value of getChildValues() as number[]) {\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n }\n\n return max\n}\n\nfunction extent(\n _getLeafValues: () => unknown[],\n getChildValues: () => unknown[]\n) {\n let min: number | undefined\n let max: number | undefined\n\n for (const value of getChildValues() as number[]) {\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\nexport function mean(getLeafValues: () => unknown[]) {\n let count = 0\n let sum = 0\n\n for (let value of getLeafValues() as number[]) {\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\nfunction median(getLeafValues: () => unknown[]) {\n const leafValues = getLeafValues()\n if (!leafValues.length) {\n return\n }\n\n let min = 0\n let max = 0\n\n leafValues.forEach(value => {\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\nfunction unique<T>(getLeafValues: () => T[]) {\n return Array.from(new Set(getLeafValues()).values())\n}\n\nfunction uniqueCount(getLeafValues: () => unknown[]) {\n return new Set(getLeafValues()).size\n}\n\nfunction count(getLeafValues: () => unknown[]) {\n return getLeafValues().length\n}\n"],"names":["aggregationFns","sum","min","max","extent","mean","median","unique","uniqueCount","count","_getLeafValues","getChildValues","reduce","next","value","undefined","getLeafValues","leafValues","length","forEach","Math","Array","from","Set","values","size"],"mappings":"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"}
|
package/build/cjs/core.js
CHANGED
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
-
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
16
15
|
var utils = require('./utils.js');
|
|
17
16
|
var Columns = require('./features/Columns.js');
|
|
18
17
|
var Rows = require('./features/Rows.js');
|
|
@@ -28,8 +27,19 @@ var RowSelection = require('./features/RowSelection.js');
|
|
|
28
27
|
var Sorting = require('./features/Sorting.js');
|
|
29
28
|
var Visibility = require('./features/Visibility.js');
|
|
30
29
|
var Headers = require('./features/Headers.js');
|
|
31
|
-
var aggregationFns = require('./aggregationFns.js');
|
|
32
30
|
|
|
31
|
+
// export type Batch = {
|
|
32
|
+
// id: number
|
|
33
|
+
// priority: keyof CoreBatches
|
|
34
|
+
// tasks: (() => void)[]
|
|
35
|
+
// schedule: (cb: () => void) => void
|
|
36
|
+
// cancel: () => void
|
|
37
|
+
// }
|
|
38
|
+
// type CoreBatches = {
|
|
39
|
+
// data: Batch[]
|
|
40
|
+
// facets: Batch[]
|
|
41
|
+
// }
|
|
42
|
+
// export type TaskPriority = keyof CoreBatches
|
|
33
43
|
function createTableInstance(options) {
|
|
34
44
|
var _options$initialState;
|
|
35
45
|
|
|
@@ -37,71 +47,168 @@ function createTableInstance(options) {
|
|
|
37
47
|
console.info('Creating Table Instance...');
|
|
38
48
|
}
|
|
39
49
|
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
let instance = {
|
|
51
|
+
_features: [Columns.Columns, Rows.Rows, Cells.Cells, Headers.Headers, Visibility.Visibility, Ordering.Ordering, Pinning.Pinning, Filters.Filters, Sorting.Sorting, Grouping.Grouping, Expanding.Expanding, Pagination.Pagination, RowSelection.RowSelection, ColumnSizing.ColumnSizing]
|
|
52
|
+
};
|
|
42
53
|
|
|
43
|
-
|
|
54
|
+
const defaultOptions = instance._features.reduce((obj, feature) => {
|
|
44
55
|
return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(instance));
|
|
45
56
|
}, {});
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
const mergeOptions = options => {
|
|
48
59
|
if (instance.options.mergeOptions) {
|
|
49
60
|
return instance.options.mergeOptions(defaultOptions, options);
|
|
50
61
|
}
|
|
51
62
|
|
|
52
|
-
return
|
|
63
|
+
return { ...defaultOptions,
|
|
64
|
+
...options
|
|
65
|
+
};
|
|
53
66
|
};
|
|
54
67
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
const coreInitialState = {// coreProgress: 1,
|
|
69
|
+
};
|
|
70
|
+
let initialState = { ...coreInitialState,
|
|
71
|
+
...((_options$initialState = options.initialState) != null ? _options$initialState : {})
|
|
58
72
|
};
|
|
59
73
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
instance._features.forEach(function (feature) {
|
|
74
|
+
instance._features.forEach(feature => {
|
|
63
75
|
var _feature$getInitialSt;
|
|
64
76
|
|
|
65
77
|
initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;
|
|
66
78
|
});
|
|
67
79
|
|
|
68
|
-
|
|
69
|
-
|
|
80
|
+
const queued = [];
|
|
81
|
+
let queuedTimeout = false; // let workScheduled = false
|
|
82
|
+
// let working = false
|
|
83
|
+
// let latestCallback: ReturnType<typeof requestIdleCallback>
|
|
84
|
+
// let batchUid = 0
|
|
85
|
+
// const onProgress = () => {}
|
|
86
|
+
// const getBatch = () => {
|
|
87
|
+
// instance.batches.data = instance.batches.data.filter(d => d.tasks.length)
|
|
88
|
+
// instance.batches.facets = instance.batches.facets.filter(
|
|
89
|
+
// d => d.tasks.length
|
|
90
|
+
// )
|
|
91
|
+
// return (
|
|
92
|
+
// instance.batches.data.find(d => d.tasks.length) ??
|
|
93
|
+
// instance.batches.facets.find(d => d.tasks.length)
|
|
94
|
+
// )
|
|
95
|
+
// }
|
|
96
|
+
// const startWorkLoop = () => {
|
|
97
|
+
// working = true
|
|
98
|
+
// const workLoop = (deadline: IdleDeadline) => {
|
|
99
|
+
// const batch = getBatch()
|
|
100
|
+
// if (!batch) {
|
|
101
|
+
// working = false
|
|
102
|
+
// return
|
|
103
|
+
// }
|
|
104
|
+
// // Prioritize tasks
|
|
105
|
+
// while (deadline.timeRemaining() > 0 && batch.tasks.length) {
|
|
106
|
+
// batch.tasks.shift()!()
|
|
107
|
+
// }
|
|
108
|
+
// onProgress()
|
|
109
|
+
// if (working) {
|
|
110
|
+
// latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })
|
|
111
|
+
// }
|
|
112
|
+
// }
|
|
113
|
+
// latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })
|
|
114
|
+
// }
|
|
115
|
+
// const startWork = () => {
|
|
116
|
+
// if (getBatch() && !working) {
|
|
117
|
+
// if (
|
|
118
|
+
// (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??
|
|
119
|
+
// instance.options.debugTable
|
|
120
|
+
// ) {
|
|
121
|
+
// console.info('Starting work...')
|
|
122
|
+
// }
|
|
123
|
+
// startWorkLoop()
|
|
124
|
+
// }
|
|
125
|
+
// }
|
|
126
|
+
// const stopWork = () => {
|
|
127
|
+
// if (working) {
|
|
128
|
+
// if (
|
|
129
|
+
// (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??
|
|
130
|
+
// instance.options.debugTable
|
|
131
|
+
// ) {
|
|
132
|
+
// console.info('Stopping work...')
|
|
133
|
+
// }
|
|
134
|
+
// working = false
|
|
135
|
+
// cancelIdleCallback(latestCallback)
|
|
136
|
+
// }
|
|
137
|
+
// }
|
|
70
138
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
139
|
+
const midInstance = { ...instance,
|
|
140
|
+
// init: () => {
|
|
141
|
+
// startWork()
|
|
142
|
+
// },
|
|
143
|
+
// willUpdate: () => {
|
|
144
|
+
// startWork()
|
|
145
|
+
// },
|
|
146
|
+
// destroy: () => {
|
|
147
|
+
// stopWork()
|
|
148
|
+
// },
|
|
149
|
+
options: { ...defaultOptions,
|
|
150
|
+
...options
|
|
151
|
+
},
|
|
152
|
+
initialState,
|
|
153
|
+
queue: cb => {
|
|
75
154
|
queued.push(cb);
|
|
76
155
|
|
|
77
156
|
if (!queuedTimeout) {
|
|
78
157
|
queuedTimeout = true; // Schedule a microtask to run the queued callbacks after
|
|
79
158
|
// the current call stack (render, etc) has finished.
|
|
80
159
|
|
|
81
|
-
Promise.resolve().then(
|
|
160
|
+
Promise.resolve().then(() => {
|
|
82
161
|
while (queued.length) {
|
|
83
|
-
console.log('queue');
|
|
84
162
|
queued.shift()();
|
|
85
163
|
}
|
|
86
164
|
|
|
87
165
|
queuedTimeout = false;
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
});
|
|
166
|
+
}).catch(error => setTimeout(() => {
|
|
167
|
+
throw error;
|
|
168
|
+
}));
|
|
93
169
|
}
|
|
94
170
|
},
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
171
|
+
// batches: {
|
|
172
|
+
// data: [],
|
|
173
|
+
// facets: [],
|
|
174
|
+
// },
|
|
175
|
+
// createBatch: priority => {
|
|
176
|
+
// const batchId = batchUid++
|
|
177
|
+
// let canceled: boolean
|
|
178
|
+
// const batch: Batch = {
|
|
179
|
+
// id: batchId,
|
|
180
|
+
// priority,
|
|
181
|
+
// tasks: [],
|
|
182
|
+
// schedule: cb => {
|
|
183
|
+
// if (canceled) return
|
|
184
|
+
// batch.tasks.push(cb)
|
|
185
|
+
// if (!working && !workScheduled) {
|
|
186
|
+
// workScheduled = true
|
|
187
|
+
// instance.queue(() => {
|
|
188
|
+
// workScheduled = false
|
|
189
|
+
// instance.setState(old => ({ ...old }))
|
|
190
|
+
// })
|
|
191
|
+
// }
|
|
192
|
+
// },
|
|
193
|
+
// cancel: () => {
|
|
194
|
+
// canceled = true
|
|
195
|
+
// batch.tasks = []
|
|
196
|
+
// instance.batches[priority] = instance.batches[priority].filter(
|
|
197
|
+
// b => b.id !== batchId
|
|
198
|
+
// )
|
|
199
|
+
// },
|
|
200
|
+
// }
|
|
201
|
+
// instance.batches[priority].push(batch)
|
|
202
|
+
// return batch
|
|
203
|
+
// },
|
|
204
|
+
reset: () => {
|
|
98
205
|
instance.setState(instance.initialState);
|
|
99
206
|
},
|
|
100
|
-
setOptions:
|
|
101
|
-
|
|
207
|
+
setOptions: updater => {
|
|
208
|
+
const newOptions = utils.functionalUpdate(updater, instance.options);
|
|
102
209
|
instance.options = mergeOptions(newOptions);
|
|
103
210
|
},
|
|
104
|
-
render:
|
|
211
|
+
render: (template, props) => {
|
|
105
212
|
if (typeof instance.options.render === 'function') {
|
|
106
213
|
return instance.options.render(template, props);
|
|
107
214
|
}
|
|
@@ -112,27 +219,39 @@ function createTableInstance(options) {
|
|
|
112
219
|
|
|
113
220
|
return template;
|
|
114
221
|
},
|
|
115
|
-
getState:
|
|
222
|
+
getState: () => {
|
|
116
223
|
return instance.options.state;
|
|
117
224
|
},
|
|
118
|
-
setState:
|
|
225
|
+
setState: updater => {
|
|
119
226
|
instance.options.onStateChange == null ? void 0 : instance.options.onStateChange(updater);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
227
|
+
} // getOverallProgress: () => {
|
|
228
|
+
// const { coreProgress, filtersProgress, facetProgress } =
|
|
229
|
+
// instance.getState()
|
|
230
|
+
// return mean(() =>
|
|
231
|
+
// [coreProgress, filtersProgress].filter(d => d < 1)
|
|
232
|
+
// ) as number
|
|
233
|
+
// },
|
|
234
|
+
// getProgressStage: () => {
|
|
235
|
+
// const { coreProgress, filtersProgress, facetProgress } =
|
|
236
|
+
// instance.getState()
|
|
237
|
+
// if (coreProgress < 1) {
|
|
238
|
+
// return 'coreRowModel'
|
|
239
|
+
// }
|
|
240
|
+
// if (filtersProgress < 1) {
|
|
241
|
+
// return 'filteredRowModel'
|
|
242
|
+
// }
|
|
243
|
+
// if (Object.values(facetProgress).some(d => d < 1)) {
|
|
244
|
+
// return 'facetedRowModel'
|
|
245
|
+
// }
|
|
246
|
+
// },
|
|
247
|
+
|
|
248
|
+
};
|
|
249
|
+
instance = Object.assign(instance, midInstance);
|
|
250
|
+
|
|
251
|
+
instance._features.forEach(feature => {
|
|
252
|
+
return Object.assign(instance, feature.createInstance == null ? void 0 : feature.createInstance(instance));
|
|
133
253
|
});
|
|
134
254
|
|
|
135
|
-
instance = Object.assign(instance, finalInstance);
|
|
136
255
|
return instance;
|
|
137
256
|
}
|
|
138
257
|
|
package/build/cjs/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../../src/core.ts"],"sourcesContent":["import { functionalUpdate, RequiredKeys } from './utils'\n\nimport {\n Updater,\n TableOptions,\n TableState,\n TableInstance,\n Renderable,\n TableFeature,\n TableGenerics,\n InitialTableState,\n} from './types'\n\nimport { Columns } from './features/Columns'\nimport { Rows } from './features/Rows'\nimport { Cells } from './features/Cells'\nimport { ColumnSizing } from './features/ColumnSizing'\nimport { Expanding } from './features/Expanding'\nimport { Filters } from './features/Filters'\nimport { Grouping } from './features/Grouping'\nimport { Ordering } from './features/Ordering'\nimport { Pagination } from './features/Pagination'\nimport { Pinning } from './features/Pinning'\nimport { RowSelection } from './features/RowSelection'\nimport { Sorting } from './features/Sorting'\nimport { Visibility } from './features/Visibility'\nimport { Headers } from './features/Headers'\n//\nimport { mean } from './aggregationFns'\n\nexport type CoreTableState = {\n coreProgress: number\n}\n\nexport type CoreOptions<TGenerics extends TableGenerics> = {\n data: TGenerics['Row'][]\n state: Partial<TableState>\n onStateChange: (updater: Updater<TableState>) => void\n render: TGenerics['Renderer']\n debugAll?: boolean\n debugTable?: boolean\n debugHeaders?: boolean\n debugColumns?: boolean\n debugRows?: boolean\n initialState?: InitialTableState\n autoResetAll?: boolean\n mergeOptions?: <T>(defaultOptions: T, options: Partial<T>) => T\n meta?: TGenerics['TableMeta']\n}\n\nexport type TableCore<TGenerics extends TableGenerics> = {\n // generics: TGenerics\n initialState: TableState\n reset: () => void\n options: RequiredKeys<TableOptions<TGenerics>, 'state'>\n setOptions: (newOptions: Updater<TableOptions<TGenerics>>) => void\n queue: (cb: () => void) => void\n // willUpdate: () => void\n getState: () => TableState\n setState: (updater: Updater<TableState>) => void\n render: <TProps>(\n template: Renderable<TGenerics, TProps>,\n props: TProps\n ) => string | null | TGenerics['Rendered']\n getOverallProgress: () => number\n _features: readonly TableFeature[]\n}\n\nexport function createTableInstance<TGenerics extends TableGenerics>(\n options: TableOptions<TGenerics>\n): TableInstance<TGenerics> {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...')\n }\n\n let instance = {} as TableInstance<TGenerics>\n\n instance._features = [\n Columns,\n Rows,\n Cells,\n Headers,\n Visibility,\n Ordering,\n Pinning,\n Filters,\n Sorting,\n Grouping,\n Expanding,\n Pagination,\n RowSelection,\n ColumnSizing,\n ] as const\n\n const defaultOptions = instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(instance))\n }, {}) as TableOptions<TGenerics>\n\n const mergeOptions = (options: TableOptions<TGenerics>) => {\n if (instance.options.mergeOptions) {\n return instance.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n instance.options = {\n ...defaultOptions,\n ...options,\n }\n\n const coreInitialState: CoreTableState = {\n coreProgress: 1,\n }\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n instance._features.forEach(feature => {\n initialState = feature.getInitialState?.(initialState) ?? initialState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n const finalInstance: TableInstance<TGenerics> = {\n ...instance,\n ...(instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.createInstance?.(instance))\n }, {}) as unknown as TableInstance<TGenerics>),\n queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n console.log('queue')\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n // willUpdate: () => {},\n initialState,\n reset: () => {\n instance.setState(instance.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, instance.options)\n instance.options = mergeOptions(newOptions)\n },\n render: (template, props) => {\n if (typeof instance.options.render === 'function') {\n return instance.options.render(template, props)\n }\n\n if (typeof template === 'function') {\n return (template as Function)(props)\n }\n\n return template\n },\n\n getState: () => {\n return instance.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n instance.options.onStateChange?.(updater)\n },\n\n getOverallProgress: () => {\n const { coreProgress, columnFiltersProgress, globalFilterProgress } =\n instance.getState()\n\n return mean(() =>\n [coreProgress, columnFiltersProgress, globalFilterProgress].filter(\n d => d < 1\n )\n ) as number\n },\n }\n\n instance = Object.assign(instance, finalInstance)\n\n return instance\n}\n"],"names":["createTableInstance","options","debugAll","debugTable","console","info","instance","_features","Columns","Rows","Cells","Headers","Visibility","Ordering","Pinning","Filters","Sorting","Grouping","Expanding","Pagination","RowSelection","ColumnSizing","defaultOptions","reduce","obj","feature","Object","assign","getDefaultOptions","mergeOptions","coreInitialState","coreProgress","initialState","forEach","getInitialState","queued","queuedTimeout","finalInstance","_extends","createInstance","queue","cb","push","Promise","resolve","then","length","log","shift","error","setTimeout","reset","setState","setOptions","updater","newOptions","functionalUpdate","render","template","props","getState","state","onStateChange","getOverallProgress","columnFiltersProgress","globalFilterProgress","mean","filter","d"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEO,SAASA,mBAAT,CACLC,OADK,EAEqB;AAAA,EAAA,IAAA,qBAAA,CAAA;;AAC1B,EAAA,IAAIA,OAAO,CAACC,QAAR,IAAoBD,OAAO,CAACE,UAAhC,EAA4C;AAC1CC,IAAAA,OAAO,CAACC,IAAR,CAAa,4BAAb,CAAA,CAAA;AACD,GAAA;;AAED,EAAIC,IAAAA,QAAQ,GAAG,EAAf,CAAA;AAEAA,EAAAA,QAAQ,CAACC,SAAT,GAAqB,CACnBC,eADmB,EAEnBC,SAFmB,EAGnBC,WAHmB,EAInBC,eAJmB,EAKnBC,qBALmB,EAMnBC,iBANmB,EAOnBC,eAPmB,EAQnBC,eARmB,EASnBC,eATmB,EAUnBC,iBAVmB,EAWnBC,mBAXmB,EAYnBC,qBAZmB,EAanBC,yBAbmB,EAcnBC,yBAdmB,CAArB,CAAA;;AAiBA,EAAA,IAAMC,cAAc,GAAGhB,QAAQ,CAACC,SAAT,CAAmBgB,MAAnB,CAA0B,UAACC,GAAD,EAAMC,OAAN,EAAkB;AACjE,IAAA,OAAOC,MAAM,CAACC,MAAP,CAAcH,GAAd,EAAmBC,OAAO,CAACG,iBAA3B,IAAA,IAAA,GAAA,KAAA,CAAA,GAAmBH,OAAO,CAACG,iBAAR,CAA4BtB,QAA5B,CAAnB,CAAP,CAAA;AACD,GAFsB,EAEpB,EAFoB,CAAvB,CAAA;;AAIA,EAAA,IAAMuB,YAAY,GAAG,SAAfA,YAAe,CAAC5B,OAAD,EAAsC;AACzD,IAAA,IAAIK,QAAQ,CAACL,OAAT,CAAiB4B,YAArB,EAAmC;AACjC,MAAOvB,OAAAA,QAAQ,CAACL,OAAT,CAAiB4B,YAAjB,CAA8BP,cAA9B,EAA8CrB,OAA9C,CAAP,CAAA;AACD,KAAA;;AAED,IACKqB,OAAAA,oCAAAA,CAAAA,EAAAA,EAAAA,cADL,EAEKrB,OAFL,CAAA,CAAA;AAID,GATD,CAAA;;AAWAK,EAAAA,QAAQ,CAACL,OAAT,GACKqB,oCAAAA,CAAAA,EAAAA,EAAAA,cADL,EAEKrB,OAFL,CAAA,CAAA;AAKA,EAAA,IAAM6B,gBAAgC,GAAG;AACvCC,IAAAA,YAAY,EAAE,CAAA;AADyB,GAAzC,CAAA;;AAIA,EAAIC,IAAAA,YAAY,4CACXF,gBADW,EAAA,CAAA,qBAAA,GAEV7B,OAAO,CAAC+B,YAFE,KAEc,IAAA,GAAA,qBAAA,GAAA,EAFd,CAAhB,CAAA;;AAKA1B,EAAAA,QAAQ,CAACC,SAAT,CAAmB0B,OAAnB,CAA2B,UAAAR,OAAO,EAAI;AAAA,IAAA,IAAA,qBAAA,CAAA;;AACpCO,IAAAA,YAAY,GAAA,CAAA,qBAAA,GAAGP,OAAO,CAACS,eAAX,IAAA,IAAA,GAAA,KAAA,CAAA,GAAGT,OAAO,CAACS,eAAR,CAA0BF,YAA1B,CAAH,oCAA8CA,YAA1D,CAAA;AACD,GAFD,CAAA,CAAA;;AAIA,EAAMG,IAAAA,MAAsB,GAAG,EAA/B,CAAA;AACA,EAAIC,IAAAA,aAAa,GAAG,KAApB,CAAA;;AAEA,EAAA,IAAMC,aAAuC,GAAAC,oCAAA,CAAA,EAAA,EACxChC,QADwC,EAEvCA,QAAQ,CAACC,SAAT,CAAmBgB,MAAnB,CAA0B,UAACC,GAAD,EAAMC,OAAN,EAAkB;AAC9C,IAAA,OAAOC,MAAM,CAACC,MAAP,CAAcH,GAAd,EAAmBC,OAAO,CAACc,cAA3B,IAAA,IAAA,GAAA,KAAA,CAAA,GAAmBd,OAAO,CAACc,cAAR,CAAyBjC,QAAzB,CAAnB,CAAP,CAAA;AACD,GAFG,EAED,EAFC,CAFuC,EAAA;AAK3CkC,IAAAA,KAAK,EAAE,SAAAC,KAAAA,CAAAA,EAAE,EAAI;AACXN,MAAAA,MAAM,CAACO,IAAP,CAAYD,EAAZ,CAAA,CAAA;;AAEA,MAAI,IAAA,CAACL,aAAL,EAAoB;AAClBA,QAAAA,aAAa,GAAG,IAAhB,CADkB;AAIlB;;AACAO,QAAAA,OAAO,CAACC,OAAR,EACGC,CAAAA,IADH,CACQ,YAAM;AACV,UAAOV,OAAAA,MAAM,CAACW,MAAd,EAAsB;AACpB1C,YAAAA,OAAO,CAAC2C,GAAR,CAAY,OAAZ,CAAA,CAAA;AACAZ,YAAAA,MAAM,CAACa,KAAP,EAAA,EAAA,CAAA;AACD,WAAA;;AACDZ,UAAAA,aAAa,GAAG,KAAhB,CAAA;AACD,SAPH,CAAA,CAAA,OAAA,CAAA,CAQS,UAAAa,KAAK,EAAA;AAAA,UACVC,OAAAA,UAAU,CAAC,YAAM;AACf,YAAA,MAAMD,KAAN,CAAA;AACD,WAFS,CADA,CAAA;AAAA,SARd,CAAA,CAAA;AAaD,OAAA;AACF,KA3B0C;AA4B3C;AACAjB,IAAAA,YAAY,EAAZA,YA7B2C;AA8B3CmB,IAAAA,KAAK,EAAE,SAAM,KAAA,GAAA;AACX7C,MAAAA,QAAQ,CAAC8C,QAAT,CAAkB9C,QAAQ,CAAC0B,YAA3B,CAAA,CAAA;AACD,KAhC0C;AAiC3CqB,IAAAA,UAAU,EAAE,SAAAC,UAAAA,CAAAA,OAAO,EAAI;AACrB,MAAMC,IAAAA,UAAU,GAAGC,sBAAgB,CAACF,OAAD,EAAUhD,QAAQ,CAACL,OAAnB,CAAnC,CAAA;AACAK,MAAAA,QAAQ,CAACL,OAAT,GAAmB4B,YAAY,CAAC0B,UAAD,CAA/B,CAAA;AACD,KApC0C;AAqC3CE,IAAAA,MAAM,EAAE,SAAA,MAAA,CAACC,QAAD,EAAWC,KAAX,EAAqB;AAC3B,MAAI,IAAA,OAAOrD,QAAQ,CAACL,OAAT,CAAiBwD,MAAxB,KAAmC,UAAvC,EAAmD;AACjD,QAAOnD,OAAAA,QAAQ,CAACL,OAAT,CAAiBwD,MAAjB,CAAwBC,QAAxB,EAAkCC,KAAlC,CAAP,CAAA;AACD,OAAA;;AAED,MAAA,IAAI,OAAOD,QAAP,KAAoB,UAAxB,EAAoC;AAClC,QAAQA,OAAAA,QAAD,CAAuBC,KAAvB,CAAP,CAAA;AACD,OAAA;;AAED,MAAA,OAAOD,QAAP,CAAA;AACD,KA/C0C;AAiD3CE,IAAAA,QAAQ,EAAE,SAAM,QAAA,GAAA;AACd,MAAA,OAAOtD,QAAQ,CAACL,OAAT,CAAiB4D,KAAxB,CAAA;AACD,KAnD0C;AAqD3CT,IAAAA,QAAQ,EAAE,SAACE,QAAAA,CAAAA,OAAD,EAAkC;AAC1ChD,MAAAA,QAAQ,CAACL,OAAT,CAAiB6D,aAAjB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAxD,QAAQ,CAACL,OAAT,CAAiB6D,aAAjB,CAAiCR,OAAjC,CAAA,CAAA;AACD,KAvD0C;AAyD3CS,IAAAA,kBAAkB,EAAE,SAAM,kBAAA,GAAA;AACxB,MACEzD,IAAAA,kBAAAA,GAAAA,QAAQ,CAACsD,QAAT,EADF;AAAA,UAAQ7B,YAAR,sBAAQA,YAAR;AAAA,UAAsBiC,qBAAtB,sBAAsBA,qBAAtB;AAAA,UAA6CC,oBAA7C,sBAA6CA,oBAA7C,CAAA;;AAGA,MAAA,OAAOC,mBAAI,CAAC,YAAA;AAAA,QACV,OAAA,CAACnC,YAAD,EAAeiC,qBAAf,EAAsCC,oBAAtC,CAA4DE,CAAAA,MAA5D,CACE,UAAAC,CAAC,EAAA;AAAA,UAAIA,OAAAA,CAAC,GAAG,CAAR,CAAA;AAAA,SADH,CADU,CAAA;AAAA,OAAD,CAAX,CAAA;AAKD,KAAA;AAlE0C,GAA7C,CAAA,CAAA;;AAqEA9D,EAAAA,QAAQ,GAAGoB,MAAM,CAACC,MAAP,CAAcrB,QAAd,EAAwB+B,aAAxB,CAAX,CAAA;AAEA,EAAA,OAAO/B,QAAP,CAAA;AACD;;;;"}
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../../src/core.ts"],"sourcesContent":["import { functionalUpdate, RequiredKeys } from './utils'\n\nimport {\n Updater,\n TableOptions,\n TableState,\n TableInstance,\n Renderable,\n TableFeature,\n TableGenerics,\n InitialTableState,\n} from './types'\n\nimport { Columns } from './features/Columns'\nimport { Rows } from './features/Rows'\nimport { Cells } from './features/Cells'\nimport { ColumnSizing } from './features/ColumnSizing'\nimport { Expanding } from './features/Expanding'\nimport { Filters } from './features/Filters'\nimport { Grouping } from './features/Grouping'\nimport { Ordering } from './features/Ordering'\nimport { Pagination } from './features/Pagination'\nimport { Pinning } from './features/Pinning'\nimport { RowSelection } from './features/RowSelection'\nimport { Sorting } from './features/Sorting'\nimport { Visibility } from './features/Visibility'\nimport { Headers } from './features/Headers'\n//\n\nexport type CoreTableState = {\n // coreProgress: number\n}\n\nexport type CoreOptions<TGenerics extends TableGenerics> = {\n data: TGenerics['Row'][]\n state: Partial<TableState>\n onStateChange: (updater: Updater<TableState>) => void\n render: TGenerics['Renderer']\n debugAll?: boolean\n debugTable?: boolean\n debugHeaders?: boolean\n debugColumns?: boolean\n debugRows?: boolean\n initialState?: InitialTableState\n autoResetAll?: boolean\n mergeOptions?: <T>(defaultOptions: T, options: Partial<T>) => T\n keepPreviousData?: boolean\n meta?: TGenerics['TableMeta']\n}\n\nexport type CoreInstance<TGenerics extends TableGenerics> = {\n // generics: TGenerics\n initialState: TableState\n reset: () => void\n options: RequiredKeys<TableOptions<TGenerics>, 'state'>\n setOptions: (newOptions: Updater<TableOptions<TGenerics>>) => void\n queue: (cb: () => void) => void\n getState: () => TableState\n setState: (updater: Updater<TableState>) => void\n render: <TProps>(\n template: Renderable<TGenerics, TProps>,\n props: TProps\n ) => string | null | TGenerics['Rendered']\n // getOverallProgress: () => number\n // getProgressStage: () =>\n // | undefined\n // | 'coreRowModel'\n // | 'filteredRowModel'\n // | 'facetedRowModel'\n _features: readonly TableFeature[]\n // createBatch: (priority: keyof CoreBatches) => Batch\n // init: () => void\n // willUpdate: () => void\n // destroy: () => void\n // batches: CoreBatches\n}\n\n// export type Batch = {\n// id: number\n// priority: keyof CoreBatches\n// tasks: (() => void)[]\n// schedule: (cb: () => void) => void\n// cancel: () => void\n// }\n\n// type CoreBatches = {\n// data: Batch[]\n// facets: Batch[]\n// }\n\n// export type TaskPriority = keyof CoreBatches\n\nexport function createTableInstance<TGenerics extends TableGenerics>(\n options: TableOptions<TGenerics>\n): TableInstance<TGenerics> {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...')\n }\n\n let instance = {\n _features: [\n Columns,\n Rows,\n Cells,\n Headers,\n Visibility,\n Ordering,\n Pinning,\n Filters,\n Sorting,\n Grouping,\n Expanding,\n Pagination,\n RowSelection,\n ColumnSizing,\n ] as const,\n } as unknown as CoreInstance<TGenerics>\n\n const defaultOptions = instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(instance))\n }, {}) as TableOptions<TGenerics>\n\n const mergeOptions = (options: TableOptions<TGenerics>) => {\n if (instance.options.mergeOptions) {\n return instance.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {\n // coreProgress: 1,\n }\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n instance._features.forEach(feature => {\n initialState = feature.getInitialState?.(initialState) ?? initialState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n // let workScheduled = false\n // let working = false\n // let latestCallback: ReturnType<typeof requestIdleCallback>\n // let batchUid = 0\n // const onProgress = () => {}\n // const getBatch = () => {\n // instance.batches.data = instance.batches.data.filter(d => d.tasks.length)\n // instance.batches.facets = instance.batches.facets.filter(\n // d => d.tasks.length\n // )\n\n // return (\n // instance.batches.data.find(d => d.tasks.length) ??\n // instance.batches.facets.find(d => d.tasks.length)\n // )\n // }\n\n // const startWorkLoop = () => {\n // working = true\n\n // const workLoop = (deadline: IdleDeadline) => {\n // const batch = getBatch()\n\n // if (!batch) {\n // working = false\n // return\n // }\n // // Prioritize tasks\n // while (deadline.timeRemaining() > 0 && batch.tasks.length) {\n // batch.tasks.shift()!()\n // }\n\n // onProgress()\n\n // if (working) {\n // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })\n // }\n // }\n\n // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })\n // }\n\n // const startWork = () => {\n // if (getBatch() && !working) {\n // if (\n // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??\n // instance.options.debugTable\n // ) {\n // console.info('Starting work...')\n // }\n // startWorkLoop()\n // }\n // }\n\n // const stopWork = () => {\n // if (working) {\n // if (\n // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??\n // instance.options.debugTable\n // ) {\n // console.info('Stopping work...')\n // }\n\n // working = false\n // cancelIdleCallback(latestCallback)\n // }\n // }\n\n const midInstance: CoreInstance<TGenerics> = {\n ...instance,\n // init: () => {\n // startWork()\n // },\n // willUpdate: () => {\n // startWork()\n // },\n // destroy: () => {\n // stopWork()\n // },\n options: {\n ...defaultOptions,\n ...options,\n },\n initialState,\n queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n // batches: {\n // data: [],\n // facets: [],\n // },\n // createBatch: priority => {\n // const batchId = batchUid++\n // let canceled: boolean\n\n // const batch: Batch = {\n // id: batchId,\n // priority,\n // tasks: [],\n // schedule: cb => {\n // if (canceled) return\n // batch.tasks.push(cb)\n\n // if (!working && !workScheduled) {\n // workScheduled = true\n // instance.queue(() => {\n // workScheduled = false\n // instance.setState(old => ({ ...old }))\n // })\n // }\n // },\n // cancel: () => {\n // canceled = true\n // batch.tasks = []\n // instance.batches[priority] = instance.batches[priority].filter(\n // b => b.id !== batchId\n // )\n // },\n // }\n\n // instance.batches[priority].push(batch)\n\n // return batch\n // },\n reset: () => {\n instance.setState(instance.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, instance.options)\n instance.options = mergeOptions(newOptions)\n },\n render: (template, props) => {\n if (typeof instance.options.render === 'function') {\n return instance.options.render(template, props)\n }\n\n if (typeof template === 'function') {\n return (template as Function)(props)\n }\n\n return template\n },\n\n getState: () => {\n return instance.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n instance.options.onStateChange?.(updater)\n },\n\n // getOverallProgress: () => {\n // const { coreProgress, filtersProgress, facetProgress } =\n // instance.getState()\n\n // return mean(() =>\n // [coreProgress, filtersProgress].filter(d => d < 1)\n // ) as number\n // },\n // getProgressStage: () => {\n // const { coreProgress, filtersProgress, facetProgress } =\n // instance.getState()\n\n // if (coreProgress < 1) {\n // return 'coreRowModel'\n // }\n\n // if (filtersProgress < 1) {\n // return 'filteredRowModel'\n // }\n\n // if (Object.values(facetProgress).some(d => d < 1)) {\n // return 'facetedRowModel'\n // }\n // },\n }\n\n instance = Object.assign(instance, midInstance)\n\n instance._features.forEach(feature => {\n return Object.assign(instance, feature.createInstance?.(instance))\n })\n\n return instance as TableInstance<TGenerics>\n}\n"],"names":["createTableInstance","options","debugAll","debugTable","console","info","instance","_features","Columns","Rows","Cells","Headers","Visibility","Ordering","Pinning","Filters","Sorting","Grouping","Expanding","Pagination","RowSelection","ColumnSizing","defaultOptions","reduce","obj","feature","Object","assign","getDefaultOptions","mergeOptions","coreInitialState","initialState","forEach","getInitialState","queued","queuedTimeout","midInstance","queue","cb","push","Promise","resolve","then","length","shift","catch","error","setTimeout","reset","setState","setOptions","updater","newOptions","functionalUpdate","render","template","props","getState","state","onStateChange","createInstance"],"mappings":"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"}
|
package/build/cjs/createTable.js
CHANGED
|
@@ -12,68 +12,52 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
-
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
16
|
-
|
|
17
15
|
//
|
|
18
16
|
function createTableFactory(opts) {
|
|
19
|
-
return
|
|
20
|
-
return createTable(undefined, undefined, opts);
|
|
21
|
-
};
|
|
17
|
+
return () => createTable(undefined, undefined, opts);
|
|
22
18
|
} // A lot of returns in here are `as any` for a reason. Unless you
|
|
23
19
|
// can find a better way to do this, then don't worry about them
|
|
24
20
|
|
|
25
21
|
function createTable(_, __, options) {
|
|
26
|
-
|
|
22
|
+
const table = {
|
|
27
23
|
generics: undefined,
|
|
28
24
|
options: options != null ? options : {
|
|
29
|
-
render:
|
|
25
|
+
render: (() => {
|
|
30
26
|
throw new Error('');
|
|
31
|
-
}()
|
|
32
|
-
},
|
|
33
|
-
setGenerics: function setGenerics() {
|
|
34
|
-
return table;
|
|
35
|
-
},
|
|
36
|
-
setRowType: function setRowType() {
|
|
37
|
-
return table;
|
|
38
|
-
},
|
|
39
|
-
setTableMetaType: function setTableMetaType() {
|
|
40
|
-
return table;
|
|
41
|
-
},
|
|
42
|
-
setColumnMetaType: function setColumnMetaType() {
|
|
43
|
-
return table;
|
|
44
|
-
},
|
|
45
|
-
setOptions: function setOptions(newOptions) {
|
|
46
|
-
return createTable(_, __, _rollupPluginBabelHelpers["extends"]({}, options, newOptions));
|
|
47
|
-
},
|
|
48
|
-
createDisplayColumn: function createDisplayColumn(column) {
|
|
49
|
-
return _rollupPluginBabelHelpers["extends"]({}, column, {
|
|
50
|
-
columnDefType: 'display'
|
|
51
|
-
});
|
|
52
|
-
},
|
|
53
|
-
createGroup: function createGroup(column) {
|
|
54
|
-
return _rollupPluginBabelHelpers["extends"]({}, column, {
|
|
55
|
-
columnDefType: 'group'
|
|
56
|
-
});
|
|
27
|
+
})()
|
|
57
28
|
},
|
|
58
|
-
|
|
59
|
-
|
|
29
|
+
setGenerics: () => table,
|
|
30
|
+
setRowType: () => table,
|
|
31
|
+
setTableMetaType: () => table,
|
|
32
|
+
setColumnMetaType: () => table,
|
|
33
|
+
setOptions: newOptions => createTable(_, __, { ...options,
|
|
34
|
+
...newOptions
|
|
35
|
+
}),
|
|
36
|
+
createDisplayColumn: column => ({ ...column,
|
|
37
|
+
columnDefType: 'display'
|
|
38
|
+
}),
|
|
39
|
+
createGroup: column => ({ ...column,
|
|
40
|
+
columnDefType: 'group'
|
|
41
|
+
}),
|
|
42
|
+
createDataColumn: (accessor, column) => {
|
|
43
|
+
column = { ...column,
|
|
60
44
|
columnDefType: 'data',
|
|
61
45
|
id: column.id
|
|
62
|
-
}
|
|
46
|
+
};
|
|
63
47
|
|
|
64
48
|
if (typeof accessor === 'string') {
|
|
65
49
|
var _column$id;
|
|
66
50
|
|
|
67
|
-
return
|
|
51
|
+
return { ...column,
|
|
68
52
|
id: (_column$id = column.id) != null ? _column$id : accessor,
|
|
69
53
|
accessorKey: accessor
|
|
70
|
-
}
|
|
54
|
+
};
|
|
71
55
|
}
|
|
72
56
|
|
|
73
57
|
if (typeof accessor === 'function') {
|
|
74
|
-
return
|
|
58
|
+
return { ...column,
|
|
75
59
|
accessorFn: accessor
|
|
76
|
-
}
|
|
60
|
+
};
|
|
77
61
|
}
|
|
78
62
|
|
|
79
63
|
throw new Error('Invalid accessor');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTable.js","sources":["../../src/createTable.ts"],"sourcesContent":["import { CustomFilterFns, FilterFn } from './features/Filters'\nimport { AggregationFn, CustomAggregationFns } from './features/Grouping'\nimport { CustomSortingFns, SortingFn } from './features/Sorting'\nimport {\n ColumnDef,\n AccessorFn,\n AnyRender,\n TableGenerics,\n TableOptions,\n} from './types'\nimport { IfDefined, Overwrite } from './utils'\n\nexport type TableFactory<TGenerics extends TableGenerics> =\n () => Table<TGenerics>\n\nexport type CreateTableOptions<\n TRender extends AnyRender,\n TFilterFns extends CustomFilterFns<any>,\n TSortingFns extends CustomSortingFns<any>,\n TAggregationFns extends CustomAggregationFns<any>,\n TGenerics extends TableGenerics\n> = Partial<\n {\n render?: TRender\n filterFns?: TFilterFns\n sortingFns?: TSortingFns\n aggregationFns?: TAggregationFns\n } & Omit<\n TableOptions<TGenerics>,\n 'filterFns' | 'sortingFns' | 'aggregationFns'\n >\n>\n\nexport type Table<TGenerics extends TableGenerics> = {\n generics: TGenerics\n options: Partial<TableOptions<TGenerics>>\n setGenerics: <T extends TableGenerics>() => Table<T>\n setRowType: <TRow>() => Table<Overwrite<TGenerics, { Row: TRow }>>\n setTableMetaType: <TTableMeta>() => Table<\n Overwrite<TGenerics, { TableMeta: TTableMeta }>\n >\n setColumnMetaType: <TColumnMeta>() => Table<\n Overwrite<TGenerics, { ColumnMeta: TColumnMeta }>\n >\n setOptions: <\n TFilterFns extends Record<string, FilterFn<any>>,\n TSortingFns extends Record<string, SortingFn<any>>,\n TAggregationFns extends Record<string, AggregationFn<any>>\n >(\n options: CreateTableOptions<\n any,\n TFilterFns,\n TSortingFns,\n TAggregationFns,\n TGenerics\n >\n ) => Table<\n Overwrite<\n TGenerics,\n {\n FilterFns: IfDefined<TFilterFns, TGenerics['FilterFns']>\n SortingFns: IfDefined<TSortingFns, TGenerics['SortingFns']>\n AggregationFns: IfDefined<TAggregationFns, TGenerics['AggregationFns']>\n }\n >\n >\n createGroup: (\n column: Overwrite<\n | Overwrite<\n ColumnDef<any>,\n {\n header: string\n id?: string\n }\n >\n | Overwrite<\n ColumnDef<any>,\n {\n id: string\n header?: string | ((...any: any) => any)\n }\n >,\n {\n accessorFn?: never\n accessorKey?: never\n columns?: ColumnDef<any>[]\n }\n >\n ) => ColumnDef<TGenerics>\n createDisplayColumn: (\n column: Omit<ColumnDef<TGenerics>, 'columns'>\n ) => ColumnDef<TGenerics>\n createDataColumn: <\n TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']\n >(\n accessor: TAccessor,\n column: Overwrite<\n TAccessor extends (...args: any[]) => any\n ? // Accessor Fn\n ColumnDef<Overwrite<TGenerics, { Value: ReturnType<TAccessor> }>>\n : TAccessor extends keyof TGenerics['Row']\n ? // Accessor Key\n Overwrite<\n ColumnDef<\n Overwrite<TGenerics, { Value: TGenerics['Row'][TAccessor] }>\n >,\n {\n id?: string\n }\n >\n : never,\n {\n accessorFn?: never\n accessorKey?: never\n columns?: ColumnDef<any>[]\n }\n >\n ) => ColumnDef<TGenerics>\n}\n\n//\n\nexport function createTableFactory<TRenderer extends AnyRender>(opts: {\n render: TRenderer\n}): () => Table<{ Renderer: TRenderer; Rendered: ReturnType<TRenderer> }> {\n return () => createTable(undefined, undefined, opts)\n}\n\n// A lot of returns in here are `as any` for a reason. Unless you\n// can find a better way to do this, then don't worry about them\nfunction createTable<TGenerics extends TableGenerics>(\n _?: undefined,\n __?: undefined,\n options?: CreateTableOptions<any, any, any, any, TGenerics>\n): Table<TGenerics> {\n const table: Table<TGenerics> = {\n generics: undefined!,\n options: options ?? {\n render: (() => {\n throw new Error('')\n })(),\n },\n setGenerics: () => table as any,\n setRowType: () => table as any,\n setTableMetaType: () => table as any,\n setColumnMetaType: () => table as any,\n setOptions: newOptions =>\n createTable(_, __, {\n ...options,\n ...newOptions,\n } as any),\n createDisplayColumn: column => ({ ...column, columnDefType: 'display' }),\n createGroup: column => ({ ...column, columnDefType: 'group' } as any),\n createDataColumn: (accessor, column): any => {\n column = {\n ...column,\n columnDefType: 'data',\n id: column.id,\n }\n\n if (typeof accessor === 'string') {\n return {\n ...column,\n id: column.id ?? accessor,\n accessorKey: accessor,\n }\n }\n\n if (typeof accessor === 'function') {\n return {\n ...column,\n accessorFn: accessor,\n }\n }\n\n throw new Error('Invalid accessor')\n },\n }\n\n return table\n}\n"],"names":["createTableFactory","opts","createTable","undefined","_","__","options","table","generics","render","Error","setGenerics","setRowType","setTableMetaType","setColumnMetaType","setOptions","newOptions","createDisplayColumn","column","
|
|
1
|
+
{"version":3,"file":"createTable.js","sources":["../../src/createTable.ts"],"sourcesContent":["import { CustomFilterFns, FilterFn } from './features/Filters'\nimport { AggregationFn, CustomAggregationFns } from './features/Grouping'\nimport { CustomSortingFns, SortingFn } from './features/Sorting'\nimport {\n ColumnDef,\n AccessorFn,\n AnyRender,\n TableGenerics,\n TableOptions,\n} from './types'\nimport { IfDefined, Overwrite } from './utils'\n\nexport type TableFactory<TGenerics extends TableGenerics> =\n () => Table<TGenerics>\n\nexport type CreateTableOptions<\n TRender extends AnyRender,\n TFilterFns extends CustomFilterFns<any>,\n TSortingFns extends CustomSortingFns<any>,\n TAggregationFns extends CustomAggregationFns<any>,\n TGenerics extends TableGenerics\n> = Partial<\n {\n render?: TRender\n filterFns?: TFilterFns\n sortingFns?: TSortingFns\n aggregationFns?: TAggregationFns\n } & Omit<\n TableOptions<TGenerics>,\n 'filterFns' | 'sortingFns' | 'aggregationFns'\n >\n>\n\nexport type Table<TGenerics extends TableGenerics> = {\n generics: TGenerics\n options: Partial<TableOptions<TGenerics>>\n setGenerics: <T extends TableGenerics>() => Table<T>\n setRowType: <TRow>() => Table<Overwrite<TGenerics, { Row: TRow }>>\n setTableMetaType: <TTableMeta>() => Table<\n Overwrite<TGenerics, { TableMeta: TTableMeta }>\n >\n setColumnMetaType: <TColumnMeta>() => Table<\n Overwrite<TGenerics, { ColumnMeta: TColumnMeta }>\n >\n setOptions: <\n TFilterFns extends Record<string, FilterFn<any>>,\n TSortingFns extends Record<string, SortingFn<any>>,\n TAggregationFns extends Record<string, AggregationFn<any>>\n >(\n options: CreateTableOptions<\n any,\n TFilterFns,\n TSortingFns,\n TAggregationFns,\n TGenerics\n >\n ) => Table<\n Overwrite<\n TGenerics,\n {\n FilterFns: IfDefined<TFilterFns, TGenerics['FilterFns']>\n SortingFns: IfDefined<TSortingFns, TGenerics['SortingFns']>\n AggregationFns: IfDefined<TAggregationFns, TGenerics['AggregationFns']>\n }\n >\n >\n createGroup: (\n column: Overwrite<\n | Overwrite<\n ColumnDef<any>,\n {\n header: string\n id?: string\n }\n >\n | Overwrite<\n ColumnDef<any>,\n {\n id: string\n header?: string | ((...any: any) => any)\n }\n >,\n {\n accessorFn?: never\n accessorKey?: never\n columns?: ColumnDef<any>[]\n }\n >\n ) => ColumnDef<TGenerics>\n createDisplayColumn: (\n column: Omit<ColumnDef<TGenerics>, 'columns'>\n ) => ColumnDef<TGenerics>\n createDataColumn: <\n TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']\n >(\n accessor: TAccessor,\n column: Overwrite<\n TAccessor extends (...args: any[]) => any\n ? // Accessor Fn\n ColumnDef<Overwrite<TGenerics, { Value: ReturnType<TAccessor> }>>\n : TAccessor extends keyof TGenerics['Row']\n ? // Accessor Key\n Overwrite<\n ColumnDef<\n Overwrite<TGenerics, { Value: TGenerics['Row'][TAccessor] }>\n >,\n {\n id?: string\n }\n >\n : never,\n {\n accessorFn?: never\n accessorKey?: never\n columns?: ColumnDef<any>[]\n }\n >\n ) => ColumnDef<TGenerics>\n}\n\n//\n\nexport function createTableFactory<TRenderer extends AnyRender>(opts: {\n render: TRenderer\n}): () => Table<{ Renderer: TRenderer; Rendered: ReturnType<TRenderer> }> {\n return () => createTable(undefined, undefined, opts)\n}\n\n// A lot of returns in here are `as any` for a reason. Unless you\n// can find a better way to do this, then don't worry about them\nfunction createTable<TGenerics extends TableGenerics>(\n _?: undefined,\n __?: undefined,\n options?: CreateTableOptions<any, any, any, any, TGenerics>\n): Table<TGenerics> {\n const table: Table<TGenerics> = {\n generics: undefined!,\n options: options ?? {\n render: (() => {\n throw new Error('')\n })(),\n },\n setGenerics: () => table as any,\n setRowType: () => table as any,\n setTableMetaType: () => table as any,\n setColumnMetaType: () => table as any,\n setOptions: newOptions =>\n createTable(_, __, {\n ...options,\n ...newOptions,\n } as any),\n createDisplayColumn: column => ({ ...column, columnDefType: 'display' }),\n createGroup: column => ({ ...column, columnDefType: 'group' } as any),\n createDataColumn: (accessor, column): any => {\n column = {\n ...column,\n columnDefType: 'data',\n id: column.id,\n }\n\n if (typeof accessor === 'string') {\n return {\n ...column,\n id: column.id ?? accessor,\n accessorKey: accessor,\n }\n }\n\n if (typeof accessor === 'function') {\n return {\n ...column,\n accessorFn: accessor,\n }\n }\n\n throw new Error('Invalid accessor')\n },\n }\n\n return table\n}\n"],"names":["createTableFactory","opts","createTable","undefined","_","__","options","table","generics","render","Error","setGenerics","setRowType","setTableMetaType","setColumnMetaType","setOptions","newOptions","createDisplayColumn","column","columnDefType","createGroup","createDataColumn","accessor","id","accessorKey","accessorFn"],"mappings":";;;;;;;;;;;;;;AAwHA;AAEO,SAASA,kBAAT,CAAyDC,IAAzD,EAEmE;AACxE,EAAO,OAAA,MAAMC,WAAW,CAACC,SAAD,EAAYA,SAAZ,EAAuBF,IAAvB,CAAxB,CAAA;AACD;AAGD;;AACA,SAASC,WAAT,CACEE,CADF,EAEEC,EAFF,EAGEC,OAHF,EAIoB;AAClB,EAAA,MAAMC,KAAuB,GAAG;AAC9BC,IAAAA,QAAQ,EAAEL,SADoB;AAE9BG,IAAAA,OAAO,EAAEA,OAAF,IAAA,IAAA,GAAEA,OAAF,GAAa;AAClBG,MAAAA,MAAM,EAAE,CAAC,MAAM;AACb,QAAA,MAAM,IAAIC,KAAJ,CAAU,EAAV,CAAN,CAAA;AACD,OAFO,GAAA;AADU,KAFU;AAO9BC,IAAAA,WAAW,EAAE,MAAMJ,KAPW;AAQ9BK,IAAAA,UAAU,EAAE,MAAML,KARY;AAS9BM,IAAAA,gBAAgB,EAAE,MAAMN,KATM;AAU9BO,IAAAA,iBAAiB,EAAE,MAAMP,KAVK;AAW9BQ,IAAAA,UAAU,EAAEC,UAAU,IACpBd,WAAW,CAACE,CAAD,EAAIC,EAAJ,EAAQ,EACjB,GAAGC,OADc;AAEjB,MAAGU,GAAAA,UAAAA;AAFc,KAAR,CAZiB;AAgB9BC,IAAAA,mBAAmB,EAAEC,MAAM,KAAK,EAAE,GAAGA,MAAL;AAAaC,MAAAA,aAAa,EAAE,SAAA;AAA5B,KAAL,CAhBG;AAiB9BC,IAAAA,WAAW,EAAEF,MAAM,KAAK,EAAE,GAAGA,MAAL;AAAaC,MAAAA,aAAa,EAAE,OAAA;AAA5B,KAAL,CAjBW;AAkB9BE,IAAAA,gBAAgB,EAAE,CAACC,QAAD,EAAWJ,MAAX,KAA2B;AAC3CA,MAAAA,MAAM,GAAG,EACP,GAAGA,MADI;AAEPC,QAAAA,aAAa,EAAE,MAFR;AAGPI,QAAAA,EAAE,EAAEL,MAAM,CAACK,EAAAA;AAHJ,OAAT,CAAA;;AAMA,MAAA,IAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC;AAAA,QAAA,IAAA,UAAA,CAAA;;AAChC,QAAO,OAAA,EACL,GAAGJ,MADE;AAELK,UAAAA,EAAE,EAAEL,CAAAA,UAAAA,GAAAA,MAAM,CAACK,EAAT,yBAAeD,QAFZ;AAGLE,UAAAA,WAAW,EAAEF,QAAAA;AAHR,SAAP,CAAA;AAKD,OAAA;;AAED,MAAA,IAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClC,QAAO,OAAA,EACL,GAAGJ,MADE;AAELO,UAAAA,UAAU,EAAEH,QAAAA;AAFP,SAAP,CAAA;AAID,OAAA;;AAED,MAAA,MAAM,IAAIZ,KAAJ,CAAU,kBAAV,CAAN,CAAA;AACD,KAAA;AAzC6B,GAAhC,CAAA;AA4CA,EAAA,OAAOH,KAAP,CAAA;AACD;;;;"}
|