@tanstack/table-core 8.0.0-alpha.63 → 8.0.0-alpha.67
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/core.js +7 -4
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/features/Cells.js +2 -2
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +68 -143
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +7 -7
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +52 -90
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +213 -191
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +54 -80
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +16 -40
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +6 -5
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +5 -5
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +82 -168
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +67 -119
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +41 -91
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +20 -43
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +51 -108
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +5 -4
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +21 -0
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +2 -2
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModelSync.js +125 -0
- package/build/cjs/utils/getFilteredRowModelSync.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +1 -1
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +1 -1
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js +3 -3
- package/build/cjs/utils/getSortedRowModelSync.js.map +1 -1
- package/build/cjs/utils.js +2 -6
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +899 -1357
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +404 -418
- package/build/types/features/ColumnSizing.d.ts +2 -13
- package/build/types/features/Expanding.d.ts +3 -13
- package/build/types/features/Filters.d.ts +38 -42
- package/build/types/features/Grouping.d.ts +3 -18
- package/build/types/features/Ordering.d.ts +2 -6
- package/build/types/features/Pinning.d.ts +2 -19
- package/build/types/features/RowSelection.d.ts +4 -15
- package/build/types/features/Sorting.d.ts +5 -22
- package/build/types/features/Visibility.d.ts +2 -15
- package/build/types/filterFns.d.ts +10 -52
- package/build/types/index.d.ts +1 -2
- package/build/types/types.d.ts +2 -4
- package/build/types/utils/filterRowsUtils.d.ts +1 -0
- package/build/types/utils/{getColumnFilteredRowModelAsync.d.ts → getFilteredRowModelAsync.d.ts} +1 -1
- package/build/types/utils/getFilteredRowModelSync.d.ts +2 -0
- package/build/types/utils.d.ts +2 -2
- package/build/umd/index.development.js +867 -1323
- 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 +2 -1
- package/src/core.ts +5 -5
- package/src/features/Cells.ts +4 -2
- package/src/features/ColumnSizing.ts +69 -126
- package/src/features/Columns.ts +12 -7
- package/src/features/Expanding.ts +62 -107
- package/src/features/Filters.ts +293 -243
- package/src/features/Grouping.ts +59 -81
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +7 -9
- package/src/features/Pagination.ts +4 -3
- package/src/features/Pinning.ts +77 -164
- package/src/features/RowSelection.ts +76 -123
- package/src/features/Sorting.ts +48 -106
- package/src/features/Visibility.ts +25 -52
- package/src/filterFns.ts +74 -147
- package/src/index.ts +1 -2
- package/src/types.ts +2 -2
- package/src/utils/filterRowsUtils.ts +24 -0
- package/src/utils/getCoreRowModelAsync.ts +1 -1
- package/src/utils/getCoreRowModelSync.ts +1 -1
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFilteredRowModelAsync.ts +157 -0
- package/src/utils/getFilteredRowModelSync.ts +141 -0
- package/src/utils/getGroupedRowModel.ts +1 -1
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/getSortedRowModelAsync.ts +1 -1
- package/src/utils/getSortedRowModelSync.ts +4 -4
- package/src/utils.ts +2 -4
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js +0 -91
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +0 -1
- package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +0 -2
- package/src/utils/getColumnFilteredRowModelAsync.ts +0 -118
- package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
- package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
- package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* table-core
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) TanStack
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
+
|
|
15
|
+
var utils = require('../utils.js');
|
|
16
|
+
var filterRowsUtils = require('./filterRowsUtils.js');
|
|
17
|
+
|
|
18
|
+
function getFilteredRowModelSync() {
|
|
19
|
+
return function (instance) {
|
|
20
|
+
return utils.memo(function () {
|
|
21
|
+
return [instance.getPreFilteredRowModel(), instance.getState().columnFilters, instance.getState().globalFilter];
|
|
22
|
+
}, function (rowModel, columnFilters, globalFilter) {
|
|
23
|
+
if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {
|
|
24
|
+
return rowModel;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var resolvedColumnFilters = [];
|
|
28
|
+
var resolvedGlobalFilters = [];
|
|
29
|
+
(columnFilters != null ? columnFilters : []).forEach(function (d) {
|
|
30
|
+
var _filterFn$resolveFilt;
|
|
31
|
+
|
|
32
|
+
var column = instance.getColumn(d.id);
|
|
33
|
+
|
|
34
|
+
if (!column) {
|
|
35
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
36
|
+
console.warn("Table: Could not find a column to filter with columnId: " + d.id);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var filterFn = column.getFilterFn();
|
|
41
|
+
|
|
42
|
+
if (!filterFn) {
|
|
43
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
44
|
+
console.warn("Could not find a valid 'column.filterFn' for column with the ID: " + column.id + ".");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
resolvedColumnFilters.push({
|
|
51
|
+
id: d.id,
|
|
52
|
+
filterFn: filterFn,
|
|
53
|
+
resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
var filterableIds = columnFilters.map(function (d) {
|
|
57
|
+
return d.id;
|
|
58
|
+
});
|
|
59
|
+
var globalFilterFn = instance.getGlobalFilterFn();
|
|
60
|
+
var globallyFilterableColumns = instance.getAllLeafColumns().filter(function (column) {
|
|
61
|
+
return column.getCanGlobalFilter();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
|
|
65
|
+
filterableIds.push('__global__');
|
|
66
|
+
globallyFilterableColumns.forEach(function (column) {
|
|
67
|
+
var _globalFilterFn$resol;
|
|
68
|
+
|
|
69
|
+
resolvedGlobalFilters.push({
|
|
70
|
+
id: column.id,
|
|
71
|
+
filterFn: globalFilterFn,
|
|
72
|
+
resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
} // Flag the prefiltered row model with each filter state
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
for (var j = 0; j < rowModel.flatRows.length; j++) {
|
|
79
|
+
var row = rowModel.flatRows[j];
|
|
80
|
+
row.columnFilterMap = {};
|
|
81
|
+
|
|
82
|
+
if (resolvedColumnFilters.length) {
|
|
83
|
+
for (var i = 0; i < resolvedColumnFilters.length; i++) {
|
|
84
|
+
var columnFilter = resolvedColumnFilters[i]; // Tag the row with the column filter state
|
|
85
|
+
|
|
86
|
+
row.columnFilterMap[columnFilter.id] = columnFilter.filterFn(row, columnFilter.id, columnFilter.resolvedValue);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (resolvedGlobalFilters.length) {
|
|
91
|
+
for (var _i = 0; _i < resolvedGlobalFilters.length; _i++) {
|
|
92
|
+
var _globalFilter = resolvedGlobalFilters[_i]; // Tag the row with the first truthy global filter state
|
|
93
|
+
|
|
94
|
+
if (_globalFilter.filterFn(row, _globalFilter.id, _globalFilter.resolvedValue)) {
|
|
95
|
+
row.columnFilterMap.__global__ = true;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (row.columnFilterMap.__global__ !== true) {
|
|
101
|
+
row.columnFilterMap.__global__ = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
} // Filter final rows using all of the active filters
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
return filterRowsUtils.filterRows(rowModel.rows, filterableIds, instance);
|
|
108
|
+
}, {
|
|
109
|
+
key: process.env.NODE_ENV === 'development' && 'getFilteredRowModelSync',
|
|
110
|
+
debug: function debug() {
|
|
111
|
+
var _instance$options$deb;
|
|
112
|
+
|
|
113
|
+
return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
|
|
114
|
+
},
|
|
115
|
+
onChange: function onChange() {
|
|
116
|
+
instance.queue(function () {
|
|
117
|
+
instance._autoResetPageIndex();
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
exports.getFilteredRowModelSync = getFilteredRowModelSync;
|
|
125
|
+
//# sourceMappingURL=getFilteredRowModelSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFilteredRowModelSync.js","sources":["../../../src/utils/getFilteredRowModelSync.ts"],"sourcesContent":["import {\n ColumnFilter,\n FilterFn,\n ResolvedColumnFilter,\n} from '../features/Filters'\nimport { TableInstance, RowModel, TableGenerics, Row } from '../types'\nimport { memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFilteredRowModelSync<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getPreFilteredRowModel(),\n instance.getState().columnFilters,\n instance.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TGenerics>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TGenerics>[] = []\n\n ;(columnFilters ?? []).forEach(d => {\n const column = instance.getColumn(d.id)\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Table: Could not find a column to filter with columnId: ${d.id}`\n )\n }\n }\n\n const filterFn = column.getFilterFn()\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`\n )\n }\n return\n }\n\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: filterFn.resolveFilterValue?.(d.value) ?? d.value,\n })\n })\n\n const filterableIds = columnFilters.map(d => d.id)\n\n const globalFilterFn = instance.getGlobalFilterFn()\n\n const globallyFilterableColumns = instance\n .getAllLeafColumns()\n .filter(column => column.getCanGlobalFilter())\n\n if (\n globalFilter &&\n globalFilterFn &&\n globallyFilterableColumns.length\n ) {\n filterableIds.push('__global__')\n\n globallyFilterableColumns.forEach(column => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ??\n globalFilter,\n })\n })\n }\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j]\n\n row.columnFilterMap = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n const columnFilter = resolvedColumnFilters[i]\n\n // Tag the row with the column filter state\n row.columnFilterMap[columnFilter.id] = columnFilter.filterFn(\n row,\n columnFilter.id,\n columnFilter.resolvedValue\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n const globalFilter = resolvedGlobalFilters[i]\n // Tag the row with the first truthy global filter state\n if (\n globalFilter.filterFn(\n row,\n globalFilter.id,\n globalFilter.resolvedValue\n )\n ) {\n row.columnFilterMap.__global__ = true\n break\n }\n }\n\n if (row.columnFilterMap.__global__ !== true) {\n row.columnFilterMap.__global__ = false\n }\n }\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterableIds, instance)\n },\n {\n key:\n process.env.NODE_ENV === 'development' && 'getFilteredRowModelSync',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance.queue(() => {\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n"],"names":["getFilteredRowModelSync","instance","memo","getPreFilteredRowModel","getState","columnFilters","globalFilter","rowModel","rows","length","resolvedColumnFilters","resolvedGlobalFilters","forEach","d","column","getColumn","id","process","env","NODE_ENV","console","warn","filterFn","getFilterFn","push","resolvedValue","resolveFilterValue","value","filterableIds","map","globalFilterFn","getGlobalFilterFn","globallyFilterableColumns","getAllLeafColumns","filter","getCanGlobalFilter","j","flatRows","row","columnFilterMap","i","columnFilter","__global__","filterRows","key","debug","options","debugAll","debugTable","onChange","queue","_autoResetPageIndex"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModelSync<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().grouping, instance.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n instance.getColumn(columnId)\n )\n\n // Find the columns that can or are aggregating\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (\n leafRows: Row<TGenerics>[],\n groupedRows: Row<TGenerics>[],\n depth: number\n ) => {\n const values: Record<string, unknown> = {}\n\n instance.getAllLeafColumns().forEach(column => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(column.id)) {\n values[column.id] = groupedRows[0]\n ? groupedRows[0].values[column.id]\n : null\n return\n }\n\n // Aggregate the values\n const aggregateFn = instance.getColumnAggregationFn(column.id)\n\n if (aggregateFn) {\n values[column.id] = aggregateFn(\n () =>\n leafRows.map(row => {\n let columnValue = row.values[column.id]\n\n if (!depth && column.aggregateValue) {\n columnValue = column.aggregateValue(columnValue)\n }\n\n return columnValue\n }),\n () => groupedRows.map(row => row.values[column.id])\n )\n } else if (column.aggregationFn) {\n console.info({ column })\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `Table: Invalid column.aggregateType option for column listed above`\n : ''\n )\n } else {\n values[column.id] = null\n }\n })\n\n return values\n }\n\n const groupedFlatRows: Row<TGenerics>[] = []\n const groupedRowsById: Record<string, Row<TGenerics>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TGenerics>[],\n depth = 0,\n parentId: string\n ) => {\n // This is the last level, just return the rows\n if (depth === existingGrouping.length) {\n return rows\n }\n\n const columnId = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n const row = instance.createRow(\n id,\n undefined,\n index,\n depth,\n values\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n {\n key: 'getGroupedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance.queue(() => {\n instance._autoResetExpanded()\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TGenerics extends TableGenerics>(\n rows: Row<TGenerics>[],\n columnId: string\n) {\n const groupMap = new Map<any, Row<TGenerics>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.values[columnId]}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n map.set(resKey, [...previous, row])\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModelSync","instance","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","aggregateRowsToValues","leafRows","groupedRows","depth","values","getAllLeafColumns","forEach","column","includes","id","aggregateFn","getColumnAggregationFn","map","row","columnValue","aggregateValue","aggregationFn","console","info","Error","process","env","NODE_ENV","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","index","groupingValue","subRows","flattenBy","createRow","undefined","Object","assign","groupingColumnId","subRow","push","flatRows","rowsById","key","debug","options","debugAll","debugTable","onChange","queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModelSync<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().grouping, instance.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n instance.getColumn(columnId)\n )\n\n // Find the columns that can or are aggregating\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (\n leafRows: Row<TGenerics>[],\n groupedRows: Row<TGenerics>[],\n depth: number\n ) => {\n const values: Record<string, unknown> = {}\n\n instance.getAllLeafColumns().forEach(column => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(column.id)) {\n values[column.id] = groupedRows[0]\n ? groupedRows[0].values[column.id]\n : null\n return\n }\n\n // Aggregate the values\n const aggregateFn = instance.getColumnAggregationFn(column.id)\n\n if (aggregateFn) {\n values[column.id] = aggregateFn(\n () =>\n leafRows.map(row => {\n let columnValue = row.values[column.id]\n\n if (!depth && column.aggregateValue) {\n columnValue = column.aggregateValue(columnValue)\n }\n\n return columnValue\n }),\n () => groupedRows.map(row => row.values[column.id])\n )\n } else if (column.aggregationFn) {\n console.info({ column })\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `Table: Invalid column.aggregateType option for column listed above`\n : ''\n )\n } else {\n values[column.id] = null\n }\n })\n\n return values\n }\n\n const groupedFlatRows: Row<TGenerics>[] = []\n const groupedRowsById: Record<string, Row<TGenerics>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TGenerics>[],\n depth = 0,\n parentId: string\n ) => {\n // This is the last level, just return the rows\n if (depth === existingGrouping.length) {\n return rows\n }\n\n const columnId = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n const row = instance.createRow(\n id,\n undefined,\n index,\n depth,\n values\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance.queue(() => {\n instance._autoResetExpanded()\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TGenerics extends TableGenerics>(\n rows: Row<TGenerics>[],\n columnId: string\n) {\n const groupMap = new Map<any, Row<TGenerics>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.values[columnId]}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n map.set(resKey, [...previous, row])\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModelSync","instance","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","aggregateRowsToValues","leafRows","groupedRows","depth","values","getAllLeafColumns","forEach","column","includes","id","aggregateFn","getColumnAggregationFn","map","row","columnValue","aggregateValue","aggregationFn","console","info","Error","process","env","NODE_ENV","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","index","groupingValue","subRows","flattenBy","createRow","undefined","Object","assign","groupingColumnId","subRow","push","flatRows","rowsById","key","debug","options","debugAll","debugTable","onChange","queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPaginationRowModel.js","sources":["../../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { TableInstance, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {\n initialSync: boolean\n}): (instance: TableInstance<TGenerics>) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().pagination,\n instance.getPrePaginationRowModel(),\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n if (!instance.options.paginateExpandedRows) {\n return expandRows(\n {\n rows,\n flatRows,\n rowsById,\n },\n instance\n )\n }\n\n return {\n rows,\n flatRows,\n rowsById,\n }\n },\n {\n key: 'getPaginationRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n )\n}\n"],"names":["getPaginationRowModel","opts","instance","memo","getState","pagination","getPrePaginationRowModel","rowModel","rows","length","pageSize","pageIndex","flatRows","rowsById","pageStart","pageEnd","slice","options","paginateExpandedRows","expandRows","key","debug","debugAll","debugTable"],"mappings":";;;;;;;;;;;;;;;;;AAIO,SAASA,qBAAT,CAAgEC,IAAhE,EAE+D;AACpE,EAAA,OAAO,UAAAC,QAAQ,EAAA;AAAA,IAAA,OACbC,UAAI,CACF,YAAA;AAAA,MAAM,OAAA,CACJD,QAAQ,CAACE,QAAT,EAAA,CAAoBC,UADhB,EAEJH,QAAQ,CAACI,wBAAT,EAFI,CAAN,CAAA;AAAA,KADE,EAKF,UAACD,UAAD,EAAaE,QAAb,EAA0B;AACxB,MAAA,IAAI,CAACA,QAAQ,CAACC,IAAT,CAAcC,MAAnB,EAA2B;AACzB,QAAA,OAAOF,QAAP,CAAA;AACD,OAAA;;AAED,MAAA,IAAQG,QAAR,GAAgCL,UAAhC,CAAQK,QAAR;AAAA,UAAkBC,SAAlB,GAAgCN,UAAhC,CAAkBM,SAAlB,CAAA;AACA,MAAA,IAAMH,IAAN,GAAmCD,QAAnC,CAAMC,IAAN;AAAA,UAAYI,QAAZ,GAAmCL,QAAnC,CAAYK,QAAZ;AAAA,UAAsBC,QAAtB,GAAmCN,QAAnC,CAAsBM,QAAtB,CAAA;AACA,MAAA,IAAMC,SAAS,GAAGJ,QAAQ,GAAGC,SAA7B,CAAA;AACA,MAAA,IAAMI,OAAO,GAAGD,SAAS,GAAGJ,QAA5B,CAAA;AAEAF,MAAAA,IAAI,GAAGA,IAAI,CAACQ,KAAL,CAAWF,SAAX,EAAsBC,OAAtB,CAAP,CAAA;;AAEA,MAAA,IAAI,CAACb,QAAQ,CAACe,OAAT,CAAiBC,oBAAtB,EAA4C;AAC1C,QAAA,OAAOC,8BAAU,CACf;AACEX,UAAAA,IAAI,EAAJA,IADF;AAEEI,UAAAA,QAAQ,EAARA,QAFF;AAGEC,UAAAA,QAAQ,EAARA,QAAAA;AAHF,SADe,EAMfX,QANe,CAAjB,CAAA;AAQD,OAAA;;AAED,MAAO,OAAA;AACLM,QAAAA,IAAI,EAAJA,IADK;AAELI,QAAAA,QAAQ,EAARA,QAFK;AAGLC,QAAAA,QAAQ,EAARA,QAAAA;AAHK,OAAP,CAAA;AAKD,KAjCC,EAkCF;AACEO,MAAAA,GAAG,
|
|
1
|
+
{"version":3,"file":"getPaginationRowModel.js","sources":["../../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { TableInstance, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {\n initialSync: boolean\n}): (instance: TableInstance<TGenerics>) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().pagination,\n instance.getPrePaginationRowModel(),\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n if (!instance.options.paginateExpandedRows) {\n return expandRows(\n {\n rows,\n flatRows,\n rowsById,\n },\n instance\n )\n }\n\n return {\n rows,\n flatRows,\n rowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n )\n}\n"],"names":["getPaginationRowModel","opts","instance","memo","getState","pagination","getPrePaginationRowModel","rowModel","rows","length","pageSize","pageIndex","flatRows","rowsById","pageStart","pageEnd","slice","options","paginateExpandedRows","expandRows","key","process","env","NODE_ENV","debug","debugAll","debugTable"],"mappings":";;;;;;;;;;;;;;;;;AAIO,SAASA,qBAAT,CAAgEC,IAAhE,EAE+D;AACpE,EAAA,OAAO,UAAAC,QAAQ,EAAA;AAAA,IAAA,OACbC,UAAI,CACF,YAAA;AAAA,MAAM,OAAA,CACJD,QAAQ,CAACE,QAAT,EAAA,CAAoBC,UADhB,EAEJH,QAAQ,CAACI,wBAAT,EAFI,CAAN,CAAA;AAAA,KADE,EAKF,UAACD,UAAD,EAAaE,QAAb,EAA0B;AACxB,MAAA,IAAI,CAACA,QAAQ,CAACC,IAAT,CAAcC,MAAnB,EAA2B;AACzB,QAAA,OAAOF,QAAP,CAAA;AACD,OAAA;;AAED,MAAA,IAAQG,QAAR,GAAgCL,UAAhC,CAAQK,QAAR;AAAA,UAAkBC,SAAlB,GAAgCN,UAAhC,CAAkBM,SAAlB,CAAA;AACA,MAAA,IAAMH,IAAN,GAAmCD,QAAnC,CAAMC,IAAN;AAAA,UAAYI,QAAZ,GAAmCL,QAAnC,CAAYK,QAAZ;AAAA,UAAsBC,QAAtB,GAAmCN,QAAnC,CAAsBM,QAAtB,CAAA;AACA,MAAA,IAAMC,SAAS,GAAGJ,QAAQ,GAAGC,SAA7B,CAAA;AACA,MAAA,IAAMI,OAAO,GAAGD,SAAS,GAAGJ,QAA5B,CAAA;AAEAF,MAAAA,IAAI,GAAGA,IAAI,CAACQ,KAAL,CAAWF,SAAX,EAAsBC,OAAtB,CAAP,CAAA;;AAEA,MAAA,IAAI,CAACb,QAAQ,CAACe,OAAT,CAAiBC,oBAAtB,EAA4C;AAC1C,QAAA,OAAOC,8BAAU,CACf;AACEX,UAAAA,IAAI,EAAJA,IADF;AAEEI,UAAAA,QAAQ,EAARA,QAFF;AAGEC,UAAAA,QAAQ,EAARA,QAAAA;AAHF,SADe,EAMfX,QANe,CAAjB,CAAA;AAQD,OAAA;;AAED,MAAO,OAAA;AACLM,QAAAA,IAAI,EAAJA,IADK;AAELI,QAAAA,QAAQ,EAARA,QAFK;AAGLC,QAAAA,QAAQ,EAARA,QAAAA;AAHK,OAAP,CAAA;AAKD,KAjCC,EAkCF;AACEO,MAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,uBADjD;AAEEC,MAAAA,KAAK,EAAE,SAAA,KAAA,GAAA;AAAA,QAAA,IAAA,qBAAA,CAAA;;AAAA,QAAMtB,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACe,OAAT,CAAiBQ,QAAvB,oCAAmCvB,QAAQ,CAACe,OAAT,CAAiBS,UAApD,CAAA;AAAA,OAAA;AAFT,KAlCE,CADS,CAAA;AAAA,GAAf,CAAA;AAwCD;;;;"}
|
|
@@ -27,7 +27,7 @@ function getSortedRowModelSync() {
|
|
|
27
27
|
var sortedFlatRows = []; // Filter out sortings that correspond to non existing columns
|
|
28
28
|
|
|
29
29
|
var availableSorting = sortingState.filter(function (sort) {
|
|
30
|
-
return instance.
|
|
30
|
+
return instance.getColumn(sort.id).getCanSort();
|
|
31
31
|
});
|
|
32
32
|
var columnInfoById = {};
|
|
33
33
|
availableSorting.forEach(function (sortEntry) {
|
|
@@ -35,7 +35,7 @@ function getSortedRowModelSync() {
|
|
|
35
35
|
columnInfoById[sortEntry.id] = {
|
|
36
36
|
sortUndefined: column.sortUndefined,
|
|
37
37
|
invertSorting: column.invertSorting,
|
|
38
|
-
sortingFn:
|
|
38
|
+
sortingFn: column.getSortingFn()
|
|
39
39
|
};
|
|
40
40
|
});
|
|
41
41
|
|
|
@@ -99,7 +99,7 @@ function getSortedRowModelSync() {
|
|
|
99
99
|
rowsById: rowModel.rowsById
|
|
100
100
|
};
|
|
101
101
|
}, {
|
|
102
|
-
key: 'getSortedRowModel',
|
|
102
|
+
key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',
|
|
103
103
|
debug: function debug() {
|
|
104
104
|
var _instance$options$deb;
|
|
105
105
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSortedRowModelSync.js","sources":["../../../src/utils/getSortedRowModelSync.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { SortingFn } from '../features/Sorting'\nimport { memo } from '../utils'\n\nexport function getSortedRowModelSync<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().sorting, instance.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = instance.getState().sorting\n\n const sortedFlatRows: Row<TGenerics>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n instance.
|
|
1
|
+
{"version":3,"file":"getSortedRowModelSync.js","sources":["../../../src/utils/getSortedRowModelSync.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { SortingFn } from '../features/Sorting'\nimport { memo } from '../utils'\n\nexport function getSortedRowModelSync<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().sorting, instance.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = instance.getState().sorting\n\n const sortedFlatRows: Row<TGenerics>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n instance.getColumn(sort.id).getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1\n invertSorting?: boolean\n sortingFn: SortingFn<TGenerics>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = instance.getColumn(sortEntry.id)\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.sortUndefined,\n invertSorting: column.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TGenerics>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.slice()\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const isDesc = sortEntry?.desc ?? false\n\n if (columnInfo.sortUndefined) {\n const aValue = rowA.values[sortEntry.id]\n const bValue = rowB.values[sortEntry.id]\n\n const aUndefined = typeof aValue === 'undefined'\n const bUndefined = typeof bValue === 'undefined'\n\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined\n ? 0\n : aUndefined\n ? columnInfo.sortUndefined\n : -columnInfo.sortUndefined\n }\n }\n\n // This function should always return in ascending order\n let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length <= 1) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance.queue(() => {\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n"],"names":["getSortedRowModelSync","instance","memo","getState","sorting","getPreSortedRowModel","rowModel","rows","length","sortingState","sortedFlatRows","availableSorting","filter","sort","getColumn","id","getCanSort","columnInfoById","forEach","sortEntry","column","sortUndefined","invertSorting","sortingFn","getSortingFn","sortData","sortedData","slice","rowA","rowB","i","columnInfo","isDesc","desc","aValue","values","bValue","aUndefined","bUndefined","sortInt","index","row","push","subRows","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","queue","_autoResetPageIndex"],"mappings":"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"}
|
package/build/cjs/utils.js
CHANGED
|
@@ -123,9 +123,7 @@ function memo(getDeps, fn, opts) {
|
|
|
123
123
|
var a = _ref[0],
|
|
124
124
|
b = _ref[1];
|
|
125
125
|
return _rollupPluginBabelHelpers["extends"]({}, accu, (_extends3 = {}, _extends3[a] = b, _extends3));
|
|
126
|
-
}, {})
|
|
127
|
-
parent: parent
|
|
128
|
-
}));
|
|
126
|
+
}, {})));
|
|
129
127
|
}
|
|
130
128
|
}
|
|
131
129
|
|
|
@@ -209,9 +207,7 @@ function incrementalMemo(getDeps, getInitialValue, schedule, opts) {
|
|
|
209
207
|
var a = _ref2[0],
|
|
210
208
|
b = _ref2[1];
|
|
211
209
|
return _rollupPluginBabelHelpers["extends"]({}, accu, (_extends4 = {}, _extends4[a] = b, _extends4));
|
|
212
|
-
}, {})
|
|
213
|
-
parent: parent
|
|
214
|
-
}));
|
|
210
|
+
}, {})));
|
|
215
211
|
}
|
|
216
212
|
}
|
|
217
213
|
|
package/build/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { NoInfer, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function getBatchGroups<T>(arr: T[], count: number) {\n const groups: { start: number; end: number; items: T[] }[] = [\n {\n start: 0,\n end: count - 1,\n items: [],\n },\n ]\n\n let groupIndex = 0\n let group = groups[groupIndex]\n\n for (let i = 0; i < arr.length; i++) {\n if (i > group.end) {\n groupIndex++\n groups[groupIndex] = {\n start: i,\n end: i + count - 1,\n items: [],\n }\n }\n group = groups[groupIndex]\n const item = arr[i]\n group.items.push(item)\n }\n\n return groups\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<any>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: string\n debug?: () => any\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n let oldResult = result\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime =\n Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${deps.length} -> ${newDeps.length}`,\n ...newDeps\n .map((_, index) => {\n if (deps[index] !== newDeps[index]) {\n return [index, deps[index], newDeps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\ntype WorkFn = () => void\n\nexport function incrementalMemo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,\n schedule: (\n ...args: NoInfer<[...TDeps]>\n ) => (resultRef: {\n current: TResult\n }) => (scheduler: (workFn: WorkFn) => void) => void,\n opts: {\n key: string\n onProgress: (\n progress: number,\n nextResult: TResult,\n result?: TResult\n ) => void\n onChange: (result: TResult, previousResult?: TResult) => void\n initialSync?: boolean\n timeout?: number\n debug?: () => any\n }\n): () => TResult {\n let oldDeps: any[]\n let deps: any[]\n let result: TResult | undefined\n let nextResultRef: { current: TResult }\n let tasks: WorkFn[] = []\n let totalTaskCount = 0\n let resultStartTime: number\n let batchIndex = 0\n let progress = 0\n let working = false\n let callback: ReturnType<typeof requestIdleCallback>\n\n const timeout = opts.timeout ?? 100\n\n const onProgress = (latestResult: TResult, previousResult?: TResult) => {\n progress = 1 - tasks.length / totalTaskCount\n opts.onProgress(progress, latestResult, previousResult)\n }\n\n return () => {\n const scheduleFn = (workFn: WorkFn) => {\n totalTaskCount++\n tasks.push(workFn)\n }\n\n const newDeps = getDeps()\n\n let first = false\n\n if (!deps) {\n first = true\n deps = []\n result = getInitialValue(...newDeps)\n }\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n cancelIdleCallback(callback)\n oldDeps = deps\n deps = newDeps\n totalTaskCount = 0\n tasks = []\n nextResultRef = { current: getInitialValue(...newDeps) }\n resultStartTime = Date.now()\n schedule(...newDeps)(nextResultRef)(scheduleFn)\n }\n\n const commitResult = () => {\n cancelIdleCallback(callback)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const resultEndTime =\n Math.round((Date.now() - resultStartTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / batchIndex / 16\n\n console.info(\n `%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(\n resultEndTime / batchIndex\n )} ms/task`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${oldDeps.length} -> ${deps.length}`,\n ...deps\n .map((_, index) => {\n if (oldDeps[index] !== deps[index]) {\n return [index, oldDeps[index], deps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n working = false\n let previousResult = result\n result = nextResultRef.current\n onProgress(result, previousResult)\n opts.onChange(result, previousResult)\n }\n\n if (opts.initialSync && first) {\n batchIndex = 1\n first = false\n for (let i = 0; i < tasks.length; i++) {\n tasks[i]()\n }\n tasks = []\n commitResult()\n } else if (!working && tasks.length) {\n cancelIdleCallback(callback)\n working = true\n batchIndex = 0\n\n const workLoop = (deadline: any) => {\n while (tasks.length && deadline.timeRemaining() > 0) {\n tasks.shift()!()\n }\n\n if (!tasks.length) {\n commitResult()\n } else {\n ++batchIndex\n onProgress(nextResultRef.current, result)\n callback = requestIdleCallback(workLoop, { timeout })\n }\n }\n\n callback = requestIdleCallback(workLoop, { timeout })\n }\n\n return result!\n }\n}\n\n// opts?.onChange?.(result, oldResult)\n"],"names":["functionalUpdate","updater","input","noop","getBatchGroups","arr","count","groups","start","end","items","groupIndex","group","i","length","item","push","makeStateUpdater","key","instance","setState","old","_extends","isFunction","d","Function","flattenBy","getChildren","flat","recurse","subArr","forEach","children","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","oldResult","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","map","_","filter","Boolean","reduce","accu","a","b","parent","undefined","incrementalMemo","getInitialValue","schedule","oldDeps","nextResultRef","tasks","totalTaskCount","resultStartTime","batchIndex","progress","working","callback","timeout","onProgress","latestResult","previousResult","scheduleFn","workFn","first","cancelIdleCallback","current","commitResult","initialSync","workLoop","deadline","timeRemaining","shift","requestIdleCallback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { NoInfer, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function getBatchGroups<T>(arr: T[], count: number) {\n const groups: { start: number; end: number; items: T[] }[] = [\n {\n start: 0,\n end: count - 1,\n items: [],\n },\n ]\n\n let groupIndex = 0\n let group = groups[groupIndex]\n\n for (let i = 0; i < arr.length; i++) {\n if (i > group.end) {\n groupIndex++\n groups[groupIndex] = {\n start: i,\n end: i + count - 1,\n items: [],\n }\n }\n group = groups[groupIndex]\n const item = arr[i]\n group.items.push(item)\n }\n\n return groups\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<any>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n let oldResult = result\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime =\n Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${deps.length} -> ${newDeps.length}`,\n ...newDeps\n .map((_, index) => {\n if (deps[index] !== newDeps[index]) {\n return [index, deps[index], newDeps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n }\n )\n }\n }\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\ntype WorkFn = () => void\n\nexport function incrementalMemo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,\n schedule: (\n ...args: NoInfer<[...TDeps]>\n ) => (resultRef: {\n current: TResult\n }) => (scheduler: (workFn: WorkFn) => void) => void,\n opts: {\n key: any\n onProgress: (\n progress: number,\n nextResult: TResult,\n result?: TResult\n ) => void\n onChange: (result: TResult, previousResult?: TResult) => void\n initialSync?: boolean\n timeout?: number\n debug?: () => any\n }\n): () => TResult {\n let oldDeps: any[]\n let deps: any[]\n let result: TResult | undefined\n let nextResultRef: { current: TResult }\n let tasks: WorkFn[] = []\n let totalTaskCount = 0\n let resultStartTime: number\n let batchIndex = 0\n let progress = 0\n let working = false\n let callback: ReturnType<typeof requestIdleCallback>\n\n const timeout = opts.timeout ?? 100\n\n const onProgress = (latestResult: TResult, previousResult?: TResult) => {\n progress = 1 - tasks.length / totalTaskCount\n opts.onProgress(progress, latestResult, previousResult)\n }\n\n return () => {\n const scheduleFn = (workFn: WorkFn) => {\n totalTaskCount++\n tasks.push(workFn)\n }\n\n const newDeps = getDeps()\n\n let first = false\n\n if (!deps) {\n first = true\n deps = []\n result = getInitialValue(...newDeps)\n }\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n cancelIdleCallback(callback)\n oldDeps = deps\n deps = newDeps\n totalTaskCount = 0\n tasks = []\n nextResultRef = { current: getInitialValue(...newDeps) }\n resultStartTime = Date.now()\n schedule(...newDeps)(nextResultRef)(scheduleFn)\n }\n\n const commitResult = () => {\n cancelIdleCallback(callback)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const resultEndTime =\n Math.round((Date.now() - resultStartTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / batchIndex / 16\n\n console.info(\n `%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(\n resultEndTime / batchIndex\n )} ms/task`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${oldDeps.length} -> ${deps.length}`,\n ...deps\n .map((_, index) => {\n if (oldDeps[index] !== deps[index]) {\n return [index, oldDeps[index], deps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n }\n )\n }\n }\n\n working = false\n let previousResult = result\n result = nextResultRef.current\n onProgress(result, previousResult)\n opts.onChange(result, previousResult)\n }\n\n if (opts.initialSync && first) {\n batchIndex = 1\n first = false\n for (let i = 0; i < tasks.length; i++) {\n tasks[i]()\n }\n tasks = []\n commitResult()\n } else if (!working && tasks.length) {\n cancelIdleCallback(callback)\n working = true\n batchIndex = 0\n\n const workLoop = (deadline: any) => {\n while (tasks.length && deadline.timeRemaining() > 0) {\n tasks.shift()!()\n }\n\n if (!tasks.length) {\n commitResult()\n } else {\n ++batchIndex\n onProgress(nextResultRef.current, result)\n callback = requestIdleCallback(workLoop, { timeout })\n }\n }\n\n callback = requestIdleCallback(workLoop, { timeout })\n }\n\n return result!\n }\n}\n\n// opts?.onChange?.(result, oldResult)\n"],"names":["functionalUpdate","updater","input","noop","getBatchGroups","arr","count","groups","start","end","items","groupIndex","group","i","length","item","push","makeStateUpdater","key","instance","setState","old","_extends","isFunction","d","Function","flattenBy","getChildren","flat","recurse","subArr","forEach","children","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","oldResult","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","map","_","filter","Boolean","reduce","accu","a","b","undefined","incrementalMemo","getInitialValue","schedule","oldDeps","nextResultRef","tasks","totalTaskCount","resultStartTime","batchIndex","progress","working","callback","timeout","onProgress","latestResult","previousResult","scheduleFn","workFn","first","cancelIdleCallback","current","commitResult","initialSync","workLoop","deadline","timeRemaining","shift","requestIdleCallback"],"mappings":"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"}
|