@tanstack/table-core 8.17.3 → 9.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/aggregationFns.cjs +98 -0
- package/dist/cjs/aggregationFns.cjs.map +1 -0
- package/dist/cjs/aggregationFns.d.cts +14 -0
- package/dist/cjs/columnHelper.cjs +19 -0
- package/dist/cjs/columnHelper.cjs.map +1 -0
- package/dist/cjs/columnHelper.d.cts +9 -0
- package/dist/cjs/core/cell.cjs +38 -0
- package/dist/cjs/core/cell.cjs.map +1 -0
- package/dist/cjs/core/cell.d.cts +50 -0
- package/dist/cjs/core/column.cjs +81 -0
- package/dist/cjs/core/column.cjs.map +1 -0
- package/dist/cjs/core/column.d.cts +56 -0
- package/dist/cjs/core/headers.cjs +310 -0
- package/dist/cjs/core/headers.cjs.map +1 -0
- package/dist/cjs/core/headers.d.cts +195 -0
- package/dist/cjs/core/row.cjs +93 -0
- package/dist/cjs/core/row.cjs.map +1 -0
- package/dist/cjs/core/row.d.cts +92 -0
- package/dist/cjs/core/table.cjs +228 -0
- package/dist/cjs/core/table.cjs.map +1 -0
- package/dist/cjs/core/table.d.cts +221 -0
- package/dist/cjs/features/ColumnFaceting.cjs +29 -0
- package/dist/cjs/features/ColumnFaceting.cjs.map +1 -0
- package/dist/cjs/features/ColumnFaceting.d.cts +35 -0
- package/dist/cjs/features/ColumnFiltering.cjs +137 -0
- package/dist/cjs/features/ColumnFiltering.cjs.map +1 -0
- package/dist/cjs/features/ColumnFiltering.d.cts +195 -0
- package/dist/cjs/features/ColumnGrouping.cjs +134 -0
- package/dist/cjs/features/ColumnGrouping.cjs.map +1 -0
- package/dist/cjs/features/ColumnGrouping.d.cts +202 -0
- package/dist/cjs/features/ColumnOrdering.cjs +76 -0
- package/dist/cjs/features/ColumnOrdering.cjs.map +1 -0
- package/dist/cjs/features/ColumnOrdering.d.cts +54 -0
- package/dist/cjs/features/ColumnPinning.cjs +145 -0
- package/dist/cjs/features/ColumnPinning.cjs.map +1 -0
- package/dist/cjs/features/ColumnPinning.d.cts +127 -0
- package/dist/cjs/features/ColumnSizing.cjs +308 -0
- package/dist/cjs/features/ColumnSizing.cjs.map +1 -0
- package/dist/cjs/features/ColumnSizing.d.cts +194 -0
- package/dist/cjs/features/ColumnVisibility.cjs +144 -0
- package/dist/cjs/features/ColumnVisibility.cjs.map +1 -0
- package/dist/cjs/features/ColumnVisibility.d.cts +130 -0
- package/dist/cjs/features/GlobalFaceting.cjs +29 -0
- package/dist/cjs/features/GlobalFaceting.cjs.map +1 -0
- package/dist/cjs/features/GlobalFaceting.d.cts +27 -0
- package/dist/cjs/features/GlobalFiltering.cjs +50 -0
- package/dist/cjs/features/GlobalFiltering.cjs.map +1 -0
- package/dist/cjs/features/GlobalFiltering.d.cts +80 -0
- package/dist/cjs/features/RowExpanding.cjs +154 -0
- package/dist/cjs/features/RowExpanding.cjs.map +1 -0
- package/dist/cjs/features/RowExpanding.d.cts +155 -0
- package/dist/cjs/features/RowPagination.cjs +162 -0
- package/dist/cjs/features/RowPagination.cjs.map +1 -0
- package/dist/cjs/features/RowPagination.d.cts +166 -0
- package/dist/cjs/features/RowPinning.cjs +133 -0
- package/dist/cjs/features/RowPinning.cjs.map +1 -0
- package/dist/cjs/features/RowPinning.d.cts +99 -0
- package/dist/cjs/features/RowSelection.cjs +298 -0
- package/dist/cjs/features/RowSelection.cjs.map +1 -0
- package/dist/cjs/features/RowSelection.d.cts +177 -0
- package/dist/cjs/features/RowSorting.cjs +201 -0
- package/dist/cjs/features/RowSorting.cjs.map +1 -0
- package/dist/cjs/features/RowSorting.d.cts +238 -0
- package/dist/cjs/filterFns.cjs +88 -0
- package/dist/cjs/filterFns.cjs.map +1 -0
- package/dist/cjs/filterFns.d.cts +14 -0
- package/{build/lib/index.js → dist/cjs/index.cjs} +36 -49
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +34 -0
- package/{build/lib/sortingFns.js → dist/cjs/sortingFns.cjs} +23 -52
- package/dist/cjs/sortingFns.cjs.map +1 -0
- package/dist/cjs/sortingFns.d.cts +12 -0
- package/dist/cjs/types.d.cts +120 -0
- package/{build/lib/utils/filterRowsUtils.js → dist/cjs/utils/filterRowsUtils.cjs} +34 -46
- package/dist/cjs/utils/filterRowsUtils.cjs.map +1 -0
- package/dist/cjs/utils/filterRowsUtils.d.cts +3 -0
- package/dist/cjs/utils/getCoreRowModel.cjs +54 -0
- package/dist/cjs/utils/getCoreRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getCoreRowModel.d.cts +3 -0
- package/dist/cjs/utils/getExpandedRowModel.cjs +41 -0
- package/dist/cjs/utils/getExpandedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getExpandedRowModel.d.cts +8 -0
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs +36 -0
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +1 -0
- package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +3 -0
- package/dist/cjs/utils/getFacetedRowModel.cjs +35 -0
- package/dist/cjs/utils/getFacetedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getFacetedRowModel.d.cts +3 -0
- package/dist/cjs/utils/getFacetedUniqueValues.cjs +38 -0
- package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +1 -0
- package/dist/cjs/utils/getFacetedUniqueValues.d.cts +3 -0
- package/dist/cjs/utils/getFilteredRowModel.cjs +116 -0
- package/dist/cjs/utils/getFilteredRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getFilteredRowModel.d.cts +3 -0
- package/dist/cjs/utils/getGroupedRowModel.cjs +118 -0
- package/dist/cjs/utils/getGroupedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getGroupedRowModel.d.cts +3 -0
- package/dist/cjs/utils/getPaginationRowModel.cjs +49 -0
- package/dist/cjs/utils/getPaginationRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getPaginationRowModel.d.cts +5 -0
- package/dist/cjs/utils/getSortedRowModel.cjs +91 -0
- package/dist/cjs/utils/getSortedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getSortedRowModel.d.cts +3 -0
- package/{build/lib/utils.js → dist/cjs/utils.cjs} +30 -41
- package/dist/cjs/utils.cjs.map +1 -0
- package/dist/cjs/utils.d.cts +39 -0
- package/{build/lib → dist/esm}/aggregationFns.d.ts +2 -1
- package/dist/esm/aggregationFns.js +98 -0
- package/dist/esm/aggregationFns.js.map +1 -0
- package/{build/lib → dist/esm}/columnHelper.d.ts +3 -2
- package/dist/esm/columnHelper.js +19 -0
- package/{build/lib → dist/esm}/columnHelper.js.map +1 -1
- package/{build/lib → dist/esm}/core/cell.d.ts +1 -0
- package/dist/esm/core/cell.js +38 -0
- package/{build/lib → dist/esm}/core/cell.js.map +1 -1
- package/{build/lib → dist/esm}/core/column.d.ts +1 -0
- package/dist/esm/core/column.js +81 -0
- package/{build/lib → dist/esm}/core/column.js.map +1 -1
- package/{build/lib → dist/esm}/core/headers.d.ts +1 -0
- package/dist/esm/core/headers.js +310 -0
- package/{build/lib → dist/esm}/core/headers.js.map +1 -1
- package/{build/lib → dist/esm}/core/row.d.ts +1 -0
- package/dist/esm/core/row.js +93 -0
- package/{build/lib → dist/esm}/core/row.js.map +1 -1
- package/{build/lib → dist/esm}/core/table.d.ts +1 -0
- package/dist/esm/core/table.js +228 -0
- package/{build/lib → dist/esm}/core/table.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnFaceting.d.ts +1 -0
- package/{build/lib → dist/esm}/features/ColumnFaceting.js +5 -18
- package/{build/lib → dist/esm}/features/ColumnFaceting.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnFiltering.d.ts +1 -0
- package/dist/esm/features/ColumnFiltering.js +137 -0
- package/{build/lib → dist/esm}/features/ColumnFiltering.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnGrouping.d.ts +1 -0
- package/dist/esm/features/ColumnGrouping.js +134 -0
- package/{build/lib → dist/esm}/features/ColumnGrouping.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnOrdering.d.ts +1 -0
- package/dist/esm/features/ColumnOrdering.js +76 -0
- package/{build/lib → dist/esm}/features/ColumnOrdering.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnPinning.d.ts +1 -0
- package/dist/esm/features/ColumnPinning.js +145 -0
- package/{build/lib → dist/esm}/features/ColumnPinning.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnSizing.d.ts +2 -1
- package/dist/esm/features/ColumnSizing.js +308 -0
- package/{build/lib → dist/esm}/features/ColumnSizing.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnVisibility.d.ts +1 -0
- package/dist/esm/features/ColumnVisibility.js +144 -0
- package/{build/lib → dist/esm}/features/ColumnVisibility.js.map +1 -1
- package/{build/lib → dist/esm}/features/GlobalFaceting.d.ts +1 -0
- package/{build/lib → dist/esm}/features/GlobalFaceting.js +8 -21
- package/{build/lib → dist/esm}/features/GlobalFaceting.js.map +1 -1
- package/{build/lib → dist/esm}/features/GlobalFiltering.d.ts +1 -0
- package/dist/esm/features/GlobalFiltering.js +50 -0
- package/{build/lib → dist/esm}/features/GlobalFiltering.js.map +1 -1
- package/{build/lib → dist/esm}/features/RowExpanding.d.ts +1 -0
- package/{build/lib → dist/esm}/features/RowExpanding.js +40 -59
- package/{build/lib → dist/esm}/features/RowExpanding.js.map +1 -1
- package/{build/lib → dist/esm}/features/RowPagination.d.ts +1 -0
- package/dist/esm/features/RowPagination.js +162 -0
- package/{build/lib → dist/esm}/features/RowPagination.js.map +1 -1
- package/{build/lib → dist/esm}/features/RowPinning.d.ts +1 -0
- package/dist/esm/features/RowPinning.js +133 -0
- package/{build/lib → dist/esm}/features/RowPinning.js.map +1 -1
- package/{build/lib → dist/esm}/features/RowSelection.d.ts +1 -0
- package/dist/esm/features/RowSelection.js +298 -0
- package/{build/lib → dist/esm}/features/RowSelection.js.map +1 -1
- package/{build/lib → dist/esm}/features/RowSorting.d.ts +1 -0
- package/dist/esm/features/RowSorting.js +201 -0
- package/{build/lib → dist/esm}/features/RowSorting.js.map +1 -1
- package/{build/lib → dist/esm}/filterFns.d.ts +2 -1
- package/dist/esm/filterFns.js +88 -0
- package/dist/esm/filterFns.js.map +1 -0
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.js +87 -0
- package/dist/esm/index.js.map +1 -0
- package/{build/lib → dist/esm}/sortingFns.d.ts +2 -1
- package/dist/esm/sortingFns.js +91 -0
- package/dist/esm/sortingFns.js.map +1 -0
- package/{build/lib → dist/esm}/types.d.ts +21 -20
- package/{build/lib → dist/esm}/utils/filterRowsUtils.d.ts +1 -0
- package/dist/esm/utils/filterRowsUtils.js +99 -0
- package/dist/esm/utils/filterRowsUtils.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getCoreRowModel.d.ts +1 -0
- package/dist/esm/utils/getCoreRowModel.js +54 -0
- package/{build/lib → dist/esm}/utils/getCoreRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils/getExpandedRowModel.d.ts +1 -0
- package/dist/esm/utils/getExpandedRowModel.js +41 -0
- package/dist/esm/utils/getExpandedRowModel.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getFacetedMinMaxValues.d.ts +1 -0
- package/dist/esm/utils/getFacetedMinMaxValues.js +36 -0
- package/dist/esm/utils/getFacetedMinMaxValues.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getFacetedRowModel.d.ts +1 -0
- package/dist/esm/utils/getFacetedRowModel.js +35 -0
- package/{build/lib → dist/esm}/utils/getFacetedRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils/getFacetedUniqueValues.d.ts +1 -0
- package/dist/esm/utils/getFacetedUniqueValues.js +38 -0
- package/dist/esm/utils/getFacetedUniqueValues.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getFilteredRowModel.d.ts +1 -0
- package/dist/esm/utils/getFilteredRowModel.js +116 -0
- package/{build/lib → dist/esm}/utils/getFilteredRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils/getGroupedRowModel.d.ts +1 -0
- package/dist/esm/utils/getGroupedRowModel.js +118 -0
- package/{build/lib → dist/esm}/utils/getGroupedRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils/getPaginationRowModel.d.ts +1 -0
- package/dist/esm/utils/getPaginationRowModel.js +49 -0
- package/dist/esm/utils/getPaginationRowModel.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getSortedRowModel.d.ts +1 -0
- package/dist/esm/utils/getSortedRowModel.js +91 -0
- package/{build/lib → dist/esm}/utils/getSortedRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils.d.ts +2 -1
- package/dist/esm/utils.js +100 -0
- package/{build/lib → dist/esm}/utils.js.map +1 -1
- package/package.json +15 -19
- package/build/lib/aggregationFns.js +0 -108
- package/build/lib/aggregationFns.js.map +0 -1
- package/build/lib/columnHelper.js +0 -71
- package/build/lib/core/cell.js +0 -42
- package/build/lib/core/column.js +0 -80
- package/build/lib/core/headers.js +0 -270
- package/build/lib/core/row.js +0 -89
- package/build/lib/core/table.js +0 -212
- package/build/lib/features/ColumnFiltering.js +0 -151
- package/build/lib/features/ColumnGrouping.js +0 -142
- package/build/lib/features/ColumnOrdering.js +0 -84
- package/build/lib/features/ColumnPinning.js +0 -130
- package/build/lib/features/ColumnSizing.js +0 -270
- package/build/lib/features/ColumnVisibility.js +0 -99
- package/build/lib/features/GlobalFiltering.js +0 -63
- package/build/lib/features/RowPagination.js +0 -169
- package/build/lib/features/RowPinning.js +0 -145
- package/build/lib/features/RowSelection.js +0 -391
- package/build/lib/features/RowSorting.js +0 -226
- package/build/lib/filterFns.js +0 -96
- package/build/lib/filterFns.js.map +0 -1
- package/build/lib/index.d.ts +0 -34
- package/build/lib/index.esm.js +0 -3522
- package/build/lib/index.esm.js.map +0 -1
- package/build/lib/index.js.map +0 -1
- package/build/lib/index.mjs +0 -3522
- package/build/lib/index.mjs.map +0 -1
- package/build/lib/sortingFns.js.map +0 -1
- package/build/lib/utils/filterRowsUtils.js.map +0 -1
- package/build/lib/utils/getCoreRowModel.js +0 -65
- package/build/lib/utils/getExpandedRowModel.js +0 -46
- package/build/lib/utils/getExpandedRowModel.js.map +0 -1
- package/build/lib/utils/getFacetedMinMaxValues.js +0 -43
- package/build/lib/utils/getFacetedMinMaxValues.js.map +0 -1
- package/build/lib/utils/getFacetedRowModel.js +0 -36
- package/build/lib/utils/getFacetedUniqueValues.js +0 -39
- package/build/lib/utils/getFacetedUniqueValues.js.map +0 -1
- package/build/lib/utils/getFilteredRowModel.js +0 -111
- package/build/lib/utils/getGroupedRowModel.js +0 -150
- package/build/lib/utils/getPaginationRowModel.js +0 -60
- package/build/lib/utils/getPaginationRowModel.js.map +0 -1
- package/build/lib/utils/getSortedRowModel.js +0 -102
- package/build/umd/index.development.js +0 -3578
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -12
- package/build/umd/index.production.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
import { filterRows } from "./filterRowsUtils.js";
|
|
3
|
+
function getFacetedRowModel() {
|
|
4
|
+
return (table, columnId) => memo(
|
|
5
|
+
() => [
|
|
6
|
+
table.getPreFilteredRowModel(),
|
|
7
|
+
table.getState().columnFilters,
|
|
8
|
+
table.getState().globalFilter,
|
|
9
|
+
table.getFilteredRowModel()
|
|
10
|
+
],
|
|
11
|
+
(preRowModel, columnFilters, globalFilter) => {
|
|
12
|
+
if (!preRowModel.rows.length || !(columnFilters == null ? void 0 : columnFilters.length) && !globalFilter) {
|
|
13
|
+
return preRowModel;
|
|
14
|
+
}
|
|
15
|
+
const filterableIds = [
|
|
16
|
+
...columnFilters.map((d) => d.id).filter((d) => d !== columnId),
|
|
17
|
+
globalFilter ? "__global__" : void 0
|
|
18
|
+
].filter(Boolean);
|
|
19
|
+
const filterRowsImpl = (row) => {
|
|
20
|
+
for (let i = 0; i < filterableIds.length; i++) {
|
|
21
|
+
if (row.columnFilters[filterableIds[i]] === false) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
return filterRows(preRowModel.rows, filterRowsImpl, table);
|
|
28
|
+
},
|
|
29
|
+
getMemoOptions(table.options, "debugTable", "getFacetedRowModel")
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
getFacetedRowModel
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=getFacetedRowModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFacetedRowModel.js","sources":["../../../src/utils/getFacetedRowModel.ts"],"sourcesContent":["import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map(d => d.id).filter(d => d !== columnId),\n globalFilter ? '__global__' : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel')\n )\n}\n"],"names":[
|
|
1
|
+
{"version":3,"file":"getFacetedRowModel.js","sources":["../../../src/utils/getFacetedRowModel.ts"],"sourcesContent":["import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map(d => d.id).filter(d => d !== columnId),\n globalFilter ? '__global__' : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel')\n )\n}\n"],"names":[],"mappings":";;AAIO,SAAS,qBAGW;AAClB,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAM;AAAA,MACJ,MAAM,uBAAuB;AAAA,MAC7B,MAAM,WAAW;AAAA,MACjB,MAAM,WAAW;AAAA,MACjB,MAAM,oBAAoB;AAAA,IAC5B;AAAA,IACA,CAAC,aAAa,eAAe,iBAAiB;AAE1C,UAAA,CAAC,YAAY,KAAK,UACjB,EAAC,+CAAe,WAAU,CAAC,cAC5B;AACO,eAAA;AAAA,MACT;AAEA,YAAM,gBAAgB;AAAA,QACpB,GAAG,cAAc,IAAI,CAAK,MAAA,EAAE,EAAE,EAAE,OAAO,CAAK,MAAA,MAAM,QAAQ;AAAA,QAC1D,eAAe,eAAe;AAAA,MAAA,EAC9B,OAAO,OAAO;AAEV,YAAA,iBAAiB,CAAC,QAAoB;AAE1C,iBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,cAAI,IAAI,cAAc,cAAc,CAAC,CAAE,MAAM,OAAO;AAC3C,mBAAA;AAAA,UACT;AAAA,QACF;AACO,eAAA;AAAA,MAAA;AAGT,aAAO,WAAW,YAAY,MAAM,gBAAgB,KAAK;AAAA,IAC3D;AAAA,IACA,eAAe,MAAM,SAAS,cAAc,oBAAoB;AAAA,EAAA;AAEtE;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
function getFacetedUniqueValues() {
|
|
3
|
+
return (table, columnId) => memo(
|
|
4
|
+
() => {
|
|
5
|
+
var _a;
|
|
6
|
+
return [(_a = table.getColumn(columnId)) == null ? void 0 : _a.getFacetedRowModel()];
|
|
7
|
+
},
|
|
8
|
+
(facetedRowModel) => {
|
|
9
|
+
if (!facetedRowModel)
|
|
10
|
+
return /* @__PURE__ */ new Map();
|
|
11
|
+
let facetedUniqueValues = /* @__PURE__ */ new Map();
|
|
12
|
+
for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
|
|
13
|
+
const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
|
|
14
|
+
for (let j = 0; j < values.length; j++) {
|
|
15
|
+
const value = values[j];
|
|
16
|
+
if (facetedUniqueValues.has(value)) {
|
|
17
|
+
facetedUniqueValues.set(
|
|
18
|
+
value,
|
|
19
|
+
(facetedUniqueValues.get(value) ?? 0) + 1
|
|
20
|
+
);
|
|
21
|
+
} else {
|
|
22
|
+
facetedUniqueValues.set(value, 1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return facetedUniqueValues;
|
|
27
|
+
},
|
|
28
|
+
getMemoOptions(
|
|
29
|
+
table.options,
|
|
30
|
+
"debugTable",
|
|
31
|
+
`getFacetedUniqueValues_${columnId}`
|
|
32
|
+
)
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
getFacetedUniqueValues
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=getFacetedUniqueValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFacetedUniqueValues.js","sources":["../../../src/utils/getFacetedUniqueValues.ts"],"sourcesContent":["import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedUniqueValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => Map<any, number> {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return new Map()\n\n let facetedUniqueValues = new Map<any, number>()\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(\n value,\n (facetedUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n facetedUniqueValues.set(value, 1)\n }\n }\n }\n\n return facetedUniqueValues\n },\n getMemoOptions(\n table.options,\n 'debugTable',\n `getFacetedUniqueValues_${columnId}`\n )\n )\n}\n"],"names":[],"mappings":";AAGO,SAAS,yBAGY;AACnB,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAA;;AAAM,eAAC,WAAM,UAAU,QAAQ,MAAxB,mBAA2B,oBAAoB;AAAA;AAAA,IACtD,CAAmB,oBAAA;AACjB,UAAI,CAAC;AAAiB,mCAAW,IAAI;AAEjC,UAAA,0CAA0B;AAE9B,eAAS,IAAI,GAAG,IAAI,gBAAgB,SAAS,QAAQ,KAAK;AACxD,cAAM,SACJ,gBAAgB,SAAS,CAAC,EAAG,gBAAwB,QAAQ;AAE/D,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAChC,gBAAA,QAAQ,OAAO,CAAC;AAElB,cAAA,oBAAoB,IAAI,KAAK,GAAG;AACd,gCAAA;AAAA,cAClB;AAAA,eACC,oBAAoB,IAAI,KAAK,KAAK,KAAK;AAAA,YAAA;AAAA,UAC1C,OACK;AACe,gCAAA,IAAI,OAAO,CAAC;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN;AAAA,MACA,0BAA0B,QAAQ;AAAA,IACpC;AAAA,EAAA;AAEN;"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
import { filterRows } from "./filterRowsUtils.js";
|
|
3
|
+
function getFilteredRowModel() {
|
|
4
|
+
return (table) => memo(
|
|
5
|
+
() => [
|
|
6
|
+
table.getPreFilteredRowModel(),
|
|
7
|
+
table.getState().columnFilters,
|
|
8
|
+
table.getState().globalFilter
|
|
9
|
+
],
|
|
10
|
+
(rowModel, columnFilters, globalFilter) => {
|
|
11
|
+
if (!rowModel.rows.length || !(columnFilters == null ? void 0 : columnFilters.length) && !globalFilter) {
|
|
12
|
+
for (let i = 0; i < rowModel.flatRows.length; i++) {
|
|
13
|
+
rowModel.flatRows[i].columnFilters = {};
|
|
14
|
+
rowModel.flatRows[i].columnFiltersMeta = {};
|
|
15
|
+
}
|
|
16
|
+
return rowModel;
|
|
17
|
+
}
|
|
18
|
+
const resolvedColumnFilters = [];
|
|
19
|
+
const resolvedGlobalFilters = [];
|
|
20
|
+
(columnFilters ?? []).forEach((d) => {
|
|
21
|
+
var _a;
|
|
22
|
+
const column = table.getColumn(d.id);
|
|
23
|
+
if (!column) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const filterFn = column.getFilterFn();
|
|
27
|
+
if (!filterFn) {
|
|
28
|
+
if (process.env.NODE_ENV !== "production") {
|
|
29
|
+
console.warn(
|
|
30
|
+
`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
resolvedColumnFilters.push({
|
|
36
|
+
id: d.id,
|
|
37
|
+
filterFn,
|
|
38
|
+
resolvedValue: ((_a = filterFn.resolveFilterValue) == null ? void 0 : _a.call(filterFn, d.value)) ?? d.value
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const filterableIds = (columnFilters ?? []).map((d) => d.id);
|
|
42
|
+
const globalFilterFn = table.getGlobalFilterFn();
|
|
43
|
+
const globallyFilterableColumns = table.getAllLeafColumns().filter((column) => column.getCanGlobalFilter());
|
|
44
|
+
if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
|
|
45
|
+
filterableIds.push("__global__");
|
|
46
|
+
globallyFilterableColumns.forEach((column) => {
|
|
47
|
+
var _a;
|
|
48
|
+
resolvedGlobalFilters.push({
|
|
49
|
+
id: column.id,
|
|
50
|
+
filterFn: globalFilterFn,
|
|
51
|
+
resolvedValue: ((_a = globalFilterFn.resolveFilterValue) == null ? void 0 : _a.call(globalFilterFn, globalFilter)) ?? globalFilter
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
let currentColumnFilter;
|
|
56
|
+
let currentGlobalFilter;
|
|
57
|
+
for (let j = 0; j < rowModel.flatRows.length; j++) {
|
|
58
|
+
const row = rowModel.flatRows[j];
|
|
59
|
+
row.columnFilters = {};
|
|
60
|
+
if (resolvedColumnFilters.length) {
|
|
61
|
+
for (let i = 0; i < resolvedColumnFilters.length; i++) {
|
|
62
|
+
currentColumnFilter = resolvedColumnFilters[i];
|
|
63
|
+
const id = currentColumnFilter.id;
|
|
64
|
+
row.columnFilters[id] = currentColumnFilter.filterFn(
|
|
65
|
+
row,
|
|
66
|
+
id,
|
|
67
|
+
currentColumnFilter.resolvedValue,
|
|
68
|
+
(filterMeta) => {
|
|
69
|
+
row.columnFiltersMeta[id] = filterMeta;
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (resolvedGlobalFilters.length) {
|
|
75
|
+
for (let i = 0; i < resolvedGlobalFilters.length; i++) {
|
|
76
|
+
currentGlobalFilter = resolvedGlobalFilters[i];
|
|
77
|
+
const id = currentGlobalFilter.id;
|
|
78
|
+
if (currentGlobalFilter.filterFn(
|
|
79
|
+
row,
|
|
80
|
+
id,
|
|
81
|
+
currentGlobalFilter.resolvedValue,
|
|
82
|
+
(filterMeta) => {
|
|
83
|
+
row.columnFiltersMeta[id] = filterMeta;
|
|
84
|
+
}
|
|
85
|
+
)) {
|
|
86
|
+
row.columnFilters.__global__ = true;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (row.columnFilters.__global__ !== true) {
|
|
91
|
+
row.columnFilters.__global__ = false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const filterRowsImpl = (row) => {
|
|
96
|
+
for (let i = 0; i < filterableIds.length; i++) {
|
|
97
|
+
if (row.columnFilters[filterableIds[i]] === false) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
};
|
|
103
|
+
return filterRows(rowModel.rows, filterRowsImpl, table);
|
|
104
|
+
},
|
|
105
|
+
getMemoOptions(
|
|
106
|
+
table.options,
|
|
107
|
+
"debugTable",
|
|
108
|
+
"getFilteredRowModel",
|
|
109
|
+
() => table._autoResetPageIndex()
|
|
110
|
+
)
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
export {
|
|
114
|
+
getFilteredRowModel
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=getFilteredRowModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFilteredRowModel.js","sources":["../../../src/utils/getFilteredRowModel.ts"],"sourcesContent":["import { ResolvedColumnFilter } from '../features/ColumnFiltering'\nimport { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFilteredRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i]!.columnFilters = {}\n rowModel.flatRows[i]!.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\n\n ;(columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id)\n\n if (!column) {\n return\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 = table.getGlobalFilterFn()\n\n const globallyFilterableColumns = table\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 let currentColumnFilter\n let currentGlobalFilter\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.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i]!\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i]!\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":[
|
|
1
|
+
{"version":3,"file":"getFilteredRowModel.js","sources":["../../../src/utils/getFilteredRowModel.ts"],"sourcesContent":["import { ResolvedColumnFilter } from '../features/ColumnFiltering'\nimport { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFilteredRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i]!.columnFilters = {}\n rowModel.flatRows[i]!.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\n\n ;(columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id)\n\n if (!column) {\n return\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 = table.getGlobalFilterFn()\n\n const globallyFilterableColumns = table\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 let currentColumnFilter\n let currentGlobalFilter\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.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i]!\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i]!\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { createRow } from "../core/row.js";
|
|
2
|
+
import { memo, getMemoOptions, flattenBy } from "../utils.js";
|
|
3
|
+
function getGroupedRowModel() {
|
|
4
|
+
return (table) => memo(
|
|
5
|
+
() => [table.getState().grouping, table.getPreGroupedRowModel()],
|
|
6
|
+
(grouping, rowModel) => {
|
|
7
|
+
if (!rowModel.rows.length || !grouping.length) {
|
|
8
|
+
return rowModel;
|
|
9
|
+
}
|
|
10
|
+
const existingGrouping = grouping.filter(
|
|
11
|
+
(columnId) => table.getColumn(columnId)
|
|
12
|
+
);
|
|
13
|
+
const groupedFlatRows = [];
|
|
14
|
+
const groupedRowsById = {};
|
|
15
|
+
const groupUpRecursively = (rows, depth = 0, parentId) => {
|
|
16
|
+
if (depth >= existingGrouping.length) {
|
|
17
|
+
return rows.map((row) => {
|
|
18
|
+
row.depth = depth;
|
|
19
|
+
groupedFlatRows.push(row);
|
|
20
|
+
groupedRowsById[row.id] = row;
|
|
21
|
+
if (row.subRows) {
|
|
22
|
+
row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);
|
|
23
|
+
}
|
|
24
|
+
return row;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const columnId = existingGrouping[depth];
|
|
28
|
+
const rowGroupsMap = groupBy(rows, columnId);
|
|
29
|
+
const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(
|
|
30
|
+
([groupingValue, groupedRows2], index) => {
|
|
31
|
+
let id = `${columnId}:${groupingValue}`;
|
|
32
|
+
id = parentId ? `${parentId}>${id}` : id;
|
|
33
|
+
const subRows = groupUpRecursively(groupedRows2, depth + 1, id);
|
|
34
|
+
const leafRows = depth ? flattenBy(groupedRows2, (row2) => row2.subRows) : groupedRows2;
|
|
35
|
+
const row = createRow(
|
|
36
|
+
table,
|
|
37
|
+
id,
|
|
38
|
+
leafRows[0].original,
|
|
39
|
+
index,
|
|
40
|
+
depth,
|
|
41
|
+
void 0,
|
|
42
|
+
parentId
|
|
43
|
+
);
|
|
44
|
+
Object.assign(row, {
|
|
45
|
+
groupingColumnId: columnId,
|
|
46
|
+
groupingValue,
|
|
47
|
+
subRows,
|
|
48
|
+
leafRows,
|
|
49
|
+
getValue: (columnId2) => {
|
|
50
|
+
if (existingGrouping.includes(columnId2)) {
|
|
51
|
+
if (row._valuesCache.hasOwnProperty(columnId2)) {
|
|
52
|
+
return row._valuesCache[columnId2];
|
|
53
|
+
}
|
|
54
|
+
if (groupedRows2[0]) {
|
|
55
|
+
row._valuesCache[columnId2] = groupedRows2[0].getValue(columnId2) ?? void 0;
|
|
56
|
+
}
|
|
57
|
+
return row._valuesCache[columnId2];
|
|
58
|
+
}
|
|
59
|
+
if (row._groupingValuesCache.hasOwnProperty(columnId2)) {
|
|
60
|
+
return row._groupingValuesCache[columnId2];
|
|
61
|
+
}
|
|
62
|
+
const column = table.getColumn(columnId2);
|
|
63
|
+
const aggregateFn = column == null ? void 0 : column.getAggregationFn();
|
|
64
|
+
if (aggregateFn) {
|
|
65
|
+
row._groupingValuesCache[columnId2] = aggregateFn(
|
|
66
|
+
columnId2,
|
|
67
|
+
leafRows,
|
|
68
|
+
groupedRows2
|
|
69
|
+
);
|
|
70
|
+
return row._groupingValuesCache[columnId2];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
subRows.forEach((subRow) => {
|
|
75
|
+
groupedFlatRows.push(subRow);
|
|
76
|
+
groupedRowsById[subRow.id] = subRow;
|
|
77
|
+
});
|
|
78
|
+
return row;
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
return aggregatedGroupedRows;
|
|
82
|
+
};
|
|
83
|
+
const groupedRows = groupUpRecursively(rowModel.rows, 0);
|
|
84
|
+
groupedRows.forEach((subRow) => {
|
|
85
|
+
groupedFlatRows.push(subRow);
|
|
86
|
+
groupedRowsById[subRow.id] = subRow;
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
rows: groupedRows,
|
|
90
|
+
flatRows: groupedFlatRows,
|
|
91
|
+
rowsById: groupedRowsById
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
getMemoOptions(table.options, "debugTable", "getGroupedRowModel", () => {
|
|
95
|
+
table._queue(() => {
|
|
96
|
+
table._autoResetExpanded();
|
|
97
|
+
table._autoResetPageIndex();
|
|
98
|
+
});
|
|
99
|
+
})
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
function groupBy(rows, columnId) {
|
|
103
|
+
const groupMap = /* @__PURE__ */ new Map();
|
|
104
|
+
return rows.reduce((map, row) => {
|
|
105
|
+
const resKey = `${row.getGroupingValue(columnId)}`;
|
|
106
|
+
const previous = map.get(resKey);
|
|
107
|
+
if (!previous) {
|
|
108
|
+
map.set(resKey, [row]);
|
|
109
|
+
} else {
|
|
110
|
+
previous.push(row);
|
|
111
|
+
}
|
|
112
|
+
return map;
|
|
113
|
+
}, groupMap);
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
getGroupedRowModel
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=getGroupedRowModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.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 table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\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<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = 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 row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\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 getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n })\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModel","table","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","map","row","push","id","subRows","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","_ref","index","groupingValue","groupedRows","leafRows","flattenBy","createRow","original","undefined","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","_groupedRows$0$getVal","_groupingValuesCache","column","aggregateFn","getAggregationFn","forEach","subRow","flatRows","rowsById","getMemoOptions","options","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","getGroupingValue","previous","get","set"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.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 table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\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<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = 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 row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\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 getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n })\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"names":["groupedRows","row","columnId"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
import { expandRows } from "./getExpandedRowModel.js";
|
|
3
|
+
function getPaginationRowModel(opts) {
|
|
4
|
+
return (table) => memo(
|
|
5
|
+
() => [
|
|
6
|
+
table.getState().pagination,
|
|
7
|
+
table.getPrePaginationRowModel(),
|
|
8
|
+
table.options.paginateExpandedRows ? void 0 : table.getState().expanded
|
|
9
|
+
],
|
|
10
|
+
(pagination, rowModel) => {
|
|
11
|
+
if (!rowModel.rows.length) {
|
|
12
|
+
return rowModel;
|
|
13
|
+
}
|
|
14
|
+
const { pageSize, pageIndex } = pagination;
|
|
15
|
+
let { rows, flatRows, rowsById } = rowModel;
|
|
16
|
+
const pageStart = pageSize * pageIndex;
|
|
17
|
+
const pageEnd = pageStart + pageSize;
|
|
18
|
+
rows = rows.slice(pageStart, pageEnd);
|
|
19
|
+
let paginatedRowModel;
|
|
20
|
+
if (!table.options.paginateExpandedRows) {
|
|
21
|
+
paginatedRowModel = expandRows({
|
|
22
|
+
rows,
|
|
23
|
+
flatRows,
|
|
24
|
+
rowsById
|
|
25
|
+
});
|
|
26
|
+
} else {
|
|
27
|
+
paginatedRowModel = {
|
|
28
|
+
rows,
|
|
29
|
+
flatRows,
|
|
30
|
+
rowsById
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
paginatedRowModel.flatRows = [];
|
|
34
|
+
const handleRow = (row) => {
|
|
35
|
+
paginatedRowModel.flatRows.push(row);
|
|
36
|
+
if (row.subRows.length) {
|
|
37
|
+
row.subRows.forEach(handleRow);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
paginatedRowModel.rows.forEach(handleRow);
|
|
41
|
+
return paginatedRowModel;
|
|
42
|
+
},
|
|
43
|
+
getMemoOptions(table.options, "debugTable", "getPaginationRowModel")
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
getPaginationRowModel
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=getPaginationRowModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPaginationRowModel.js","sources":["../../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TData extends RowData>(opts?: {\n initialSync: boolean\n}): (table: Table<TData>) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getState().pagination,\n table.getPrePaginationRowModel(),\n table.options.paginateExpandedRows\n ? undefined\n : table.getState().expanded,\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 let paginatedRowModel: RowModel<TData>\n\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById,\n })\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById,\n }\n }\n\n paginatedRowModel.flatRows = []\n\n const handleRow = (row: Row<TData>) => {\n paginatedRowModel.flatRows.push(row)\n if (row.subRows.length) {\n row.subRows.forEach(handleRow)\n }\n }\n\n paginatedRowModel.rows.forEach(handleRow)\n\n return paginatedRowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel')\n )\n}\n"],"names":[],"mappings":";;AAIO,SAAS,sBAA6C,MAEV;AACjD,SAAO,CACL,UAAA;AAAA,IACE,MAAM;AAAA,MACJ,MAAM,WAAW;AAAA,MACjB,MAAM,yBAAyB;AAAA,MAC/B,MAAM,QAAQ,uBACV,SACA,MAAM,WAAW;AAAA,IACvB;AAAA,IACA,CAAC,YAAY,aAAa;AACpB,UAAA,CAAC,SAAS,KAAK,QAAQ;AAClB,eAAA;AAAA,MACT;AAEM,YAAA,EAAE,UAAU,UAAc,IAAA;AAChC,UAAI,EAAE,MAAM,UAAU,SAAA,IAAa;AACnC,YAAM,YAAY,WAAW;AAC7B,YAAM,UAAU,YAAY;AAErB,aAAA,KAAK,MAAM,WAAW,OAAO;AAEhC,UAAA;AAEA,UAAA,CAAC,MAAM,QAAQ,sBAAsB;AACvC,4BAAoB,WAAW;AAAA,UAC7B;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACe,4BAAA;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAEA,wBAAkB,WAAW;AAEvB,YAAA,YAAY,CAAC,QAAoB;AACnB,0BAAA,SAAS,KAAK,GAAG;AAC/B,YAAA,IAAI,QAAQ,QAAQ;AAClB,cAAA,QAAQ,QAAQ,SAAS;AAAA,QAC/B;AAAA,MAAA;AAGgB,wBAAA,KAAK,QAAQ,SAAS;AAEjC,aAAA;AAAA,IACT;AAAA,IACA,eAAe,MAAM,SAAS,cAAc,uBAAuB;AAAA,EAAA;AAEzE;"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
function getSortedRowModel() {
|
|
3
|
+
return (table) => memo(
|
|
4
|
+
() => [table.getState().sorting, table.getPreSortedRowModel()],
|
|
5
|
+
(sorting, rowModel) => {
|
|
6
|
+
if (!rowModel.rows.length || !(sorting == null ? void 0 : sorting.length)) {
|
|
7
|
+
return rowModel;
|
|
8
|
+
}
|
|
9
|
+
const sortingState = table.getState().sorting;
|
|
10
|
+
const sortedFlatRows = [];
|
|
11
|
+
const availableSorting = sortingState.filter(
|
|
12
|
+
(sort) => {
|
|
13
|
+
var _a;
|
|
14
|
+
return (_a = table.getColumn(sort.id)) == null ? void 0 : _a.getCanSort();
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
const columnInfoById = {};
|
|
18
|
+
availableSorting.forEach((sortEntry) => {
|
|
19
|
+
const column = table.getColumn(sortEntry.id);
|
|
20
|
+
if (!column)
|
|
21
|
+
return;
|
|
22
|
+
columnInfoById[sortEntry.id] = {
|
|
23
|
+
sortUndefined: column.columnDef.sortUndefined,
|
|
24
|
+
invertSorting: column.columnDef.invertSorting,
|
|
25
|
+
sortingFn: column.getSortingFn()
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
const sortData = (rows) => {
|
|
29
|
+
const sortedData = rows.map((row) => ({ ...row }));
|
|
30
|
+
sortedData.sort((rowA, rowB) => {
|
|
31
|
+
for (let i = 0; i < availableSorting.length; i += 1) {
|
|
32
|
+
const sortEntry = availableSorting[i];
|
|
33
|
+
const columnInfo = columnInfoById[sortEntry.id];
|
|
34
|
+
const sortUndefined = columnInfo.sortUndefined;
|
|
35
|
+
const isDesc = (sortEntry == null ? void 0 : sortEntry.desc) ?? false;
|
|
36
|
+
let sortInt = 0;
|
|
37
|
+
if (sortUndefined) {
|
|
38
|
+
const aValue = rowA.getValue(sortEntry.id);
|
|
39
|
+
const bValue = rowB.getValue(sortEntry.id);
|
|
40
|
+
const aUndefined = aValue === void 0;
|
|
41
|
+
const bUndefined = bValue === void 0;
|
|
42
|
+
if (aUndefined || bUndefined) {
|
|
43
|
+
if (sortUndefined === "first")
|
|
44
|
+
return aUndefined ? -1 : 1;
|
|
45
|
+
if (sortUndefined === "last")
|
|
46
|
+
return aUndefined ? 1 : -1;
|
|
47
|
+
sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (sortInt === 0) {
|
|
51
|
+
sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
|
|
52
|
+
}
|
|
53
|
+
if (sortInt !== 0) {
|
|
54
|
+
if (isDesc) {
|
|
55
|
+
sortInt *= -1;
|
|
56
|
+
}
|
|
57
|
+
if (columnInfo.invertSorting) {
|
|
58
|
+
sortInt *= -1;
|
|
59
|
+
}
|
|
60
|
+
return sortInt;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return rowA.index - rowB.index;
|
|
64
|
+
});
|
|
65
|
+
sortedData.forEach((row) => {
|
|
66
|
+
var _a;
|
|
67
|
+
sortedFlatRows.push(row);
|
|
68
|
+
if ((_a = row.subRows) == null ? void 0 : _a.length) {
|
|
69
|
+
row.subRows = sortData(row.subRows);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return sortedData;
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
rows: sortData(rowModel.rows),
|
|
76
|
+
flatRows: sortedFlatRows,
|
|
77
|
+
rowsById: rowModel.rowsById
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
getMemoOptions(
|
|
81
|
+
table.options,
|
|
82
|
+
"debugTable",
|
|
83
|
+
"getSortedRowModel",
|
|
84
|
+
() => table._autoResetPageIndex()
|
|
85
|
+
)
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
getSortedRowModel
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=getSortedRowModel.js.map
|