@tanstack/table-core 9.0.0-beta.7 → 9.0.0-beta.70
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/README.md +5 -1
- package/dist/core/cells/constructCell.d.ts +4 -6
- package/dist/core/cells/constructCell.js +4 -6
- package/dist/core/cells/coreCellsFeature.d.ts +1 -3
- package/dist/core/cells/coreCellsFeature.js +1 -2
- package/dist/core/cells/coreCellsFeature.types.d.ts +7 -9
- package/dist/core/cells/coreCellsFeature.utils.d.ts +5 -5
- package/dist/core/cells/coreCellsFeature.utils.js +1 -2
- package/dist/core/columns/constructColumn.d.ts +4 -6
- package/dist/core/columns/constructColumn.js +8 -9
- package/dist/core/columns/coreColumnsFeature.d.ts +1 -3
- package/dist/core/columns/coreColumnsFeature.js +13 -20
- package/dist/core/columns/coreColumnsFeature.types.d.ts +13 -15
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +10 -12
- package/dist/core/columns/coreColumnsFeature.utils.js +19 -20
- package/dist/core/coreFeatures.d.ts +3 -3
- package/dist/core/coreFeatures.js +1 -2
- package/dist/core/headers/buildHeaderGroups.d.ts +3 -5
- package/dist/core/headers/buildHeaderGroups.js +99 -85
- package/dist/core/headers/constructHeader.d.ts +3 -5
- package/dist/core/headers/constructHeader.js +4 -6
- package/dist/core/headers/coreHeadersFeature.d.ts +1 -3
- package/dist/core/headers/coreHeadersFeature.js +9 -13
- package/dist/core/headers/coreHeadersFeature.types.d.ts +21 -11
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +8 -8
- package/dist/core/headers/coreHeadersFeature.utils.js +14 -17
- package/dist/core/reactivity/coreReactivityFeature.types.d.ts +8 -3
- package/dist/core/reactivity/coreReactivityFeature.utils.d.ts +1 -3
- package/dist/core/reactivity/coreReactivityFeature.utils.js +1 -2
- package/dist/core/reactivity/renderPhaseReactivity.d.ts +80 -0
- package/dist/core/reactivity/renderPhaseReactivity.js +95 -0
- package/dist/core/row-models/coreRowModelsFeature.d.ts +1 -3
- package/dist/core/row-models/coreRowModelsFeature.js +1 -2
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -17
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +17 -19
- package/dist/core/row-models/coreRowModelsFeature.utils.js +9 -28
- package/dist/core/row-models/createCoreRowModel.d.ts +3 -5
- package/dist/core/row-models/createCoreRowModel.js +25 -24
- package/dist/core/rows/constructRow.d.ts +3 -5
- package/dist/core/rows/constructRow.js +9 -13
- package/dist/core/rows/coreRowsFeature.d.ts +1 -3
- package/dist/core/rows/coreRowsFeature.js +20 -5
- package/dist/core/rows/coreRowsFeature.types.d.ts +42 -10
- package/dist/core/rows/coreRowsFeature.utils.d.ts +26 -9
- package/dist/core/rows/coreRowsFeature.utils.js +65 -14
- package/dist/core/table/constructTable.d.ts +2 -4
- package/dist/core/table/constructTable.js +52 -23
- package/dist/core/table/coreTablesFeature.d.ts +1 -3
- package/dist/core/table/coreTablesFeature.js +1 -2
- package/dist/core/table/coreTablesFeature.types.d.ts +56 -25
- package/dist/core/table/coreTablesFeature.utils.d.ts +34 -12
- package/dist/core/table/coreTablesFeature.utils.js +69 -24
- package/dist/experimental-worker-plugin.d.ts +5 -0
- package/dist/experimental-worker-plugin.js +6 -0
- package/dist/features/cell-selection/cellSelectionFeature.d.ts +8 -0
- package/dist/features/cell-selection/cellSelectionFeature.js +128 -0
- package/dist/features/cell-selection/cellSelectionFeature.types.d.ts +296 -0
- package/dist/features/cell-selection/cellSelectionFeature.utils.d.ts +306 -0
- package/dist/features/cell-selection/cellSelectionFeature.utils.js +873 -0
- package/dist/features/cell-selection/cellSelectionGeometry.js +121 -0
- package/dist/features/cell-spanning/cellSpanningFeature.d.ts +13 -0
- package/dist/features/cell-spanning/cellSpanningFeature.js +47 -0
- package/dist/features/cell-spanning/cellSpanningFeature.types.d.ts +150 -0
- package/dist/features/cell-spanning/cellSpanningFeature.utils.d.ts +74 -0
- package/dist/features/cell-spanning/cellSpanningFeature.utils.js +262 -0
- package/dist/features/column-faceting/columnFacetingFeature.d.ts +1 -3
- package/dist/features/column-faceting/columnFacetingFeature.js +13 -20
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -35
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +10 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +25 -14
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +2 -4
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +9 -7
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +3 -5
- package/dist/features/column-faceting/createFacetedRowModel.js +12 -17
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +2 -4
- package/dist/features/column-faceting/createFacetedUniqueValues.js +12 -9
- package/dist/features/column-filtering/columnFilteringFeature.d.ts +1 -3
- package/dist/features/column-filtering/columnFilteringFeature.js +4 -5
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +85 -33
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +19 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +33 -21
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +11 -7
- package/dist/features/column-filtering/createFilteredRowModel.js +33 -29
- package/dist/features/column-filtering/filterFns.d.ts +208 -0
- package/dist/features/column-filtering/filterFns.js +374 -0
- package/dist/features/column-filtering/filterRowsUtils.js +4 -4
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +2 -4
- package/dist/features/column-grouping/columnGroupingFeature.js +7 -20
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -52
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -51
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -61
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +7 -7
- package/dist/features/column-grouping/createGroupedRowModel.js +69 -38
- package/dist/features/column-ordering/columnOrderingFeature.d.ts +1 -3
- package/dist/features/column-ordering/columnOrderingFeature.js +19 -24
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -5
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -16
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -18
- package/dist/features/column-pinning/columnPinningFeature.d.ts +7 -4
- package/dist/features/column-pinning/columnPinningFeature.js +126 -146
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +53 -44
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +100 -93
- package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -150
- package/dist/features/column-resizing/columnResizingFeature.d.ts +1 -3
- package/dist/features/column-resizing/columnResizingFeature.js +1 -2
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +2 -7
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +7 -9
- package/dist/features/column-resizing/columnResizingFeature.utils.js +86 -48
- package/dist/features/column-sizing/columnSizingFeature.d.ts +1 -3
- package/dist/features/column-sizing/columnSizingFeature.js +35 -70
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -11
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -27
- package/dist/features/column-sizing/columnSizingFeature.utils.js +95 -54
- package/dist/features/column-visibility/columnVisibilityFeature.d.ts +1 -3
- package/dist/features/column-visibility/columnVisibilityFeature.js +26 -38
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +4 -6
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +20 -20
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +32 -32
- package/dist/features/global-filtering/globalFilteringFeature.d.ts +1 -3
- package/dist/features/global-filtering/globalFilteringFeature.js +3 -4
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +4 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -13
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +7 -8
- package/dist/features/row-aggregation/aggregationFns.d.ts +66 -0
- package/dist/features/row-aggregation/aggregationFns.js +279 -0
- package/dist/features/row-aggregation/rowAggregationFeature.d.ts +8 -0
- package/dist/features/row-aggregation/rowAggregationFeature.js +35 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +193 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.js +11 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +46 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.js +235 -0
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +3 -5
- package/dist/features/row-expanding/createExpandedRowModel.js +9 -13
- package/dist/features/row-expanding/rowExpandingFeature.d.ts +1 -3
- package/dist/features/row-expanding/rowExpandingFeature.js +1 -2
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -17
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +11 -16
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +30 -33
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +3 -5
- package/dist/features/row-pagination/createPaginatedRowModel.js +7 -12
- package/dist/features/row-pagination/rowPaginationFeature.d.ts +1 -3
- package/dist/features/row-pagination/rowPaginationFeature.js +1 -2
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -16
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +18 -20
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +10 -17
- package/dist/features/row-pinning/rowPinningFeature.d.ts +1 -3
- package/dist/features/row-pinning/rowPinningFeature.js +5 -18
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +3 -5
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +8 -10
- package/dist/features/row-pinning/rowPinningFeature.utils.js +10 -16
- package/dist/features/row-selection/rowSelectionFeature.d.ts +1 -3
- package/dist/features/row-selection/rowSelectionFeature.js +68 -25
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +51 -15
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +60 -35
- package/dist/features/row-selection/rowSelectionFeature.utils.js +142 -89
- package/dist/features/row-sorting/createSortedRowModel.d.ts +11 -7
- package/dist/features/row-sorting/createSortedRowModel.js +71 -53
- package/dist/features/row-sorting/rowSortingFeature.d.ts +1 -3
- package/dist/features/row-sorting/rowSortingFeature.js +1 -2
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -24
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +19 -22
- package/dist/features/row-sorting/rowSortingFeature.utils.js +36 -25
- package/dist/features/row-sorting/sortFns.d.ts +96 -0
- package/dist/features/row-sorting/sortFns.js +216 -0
- package/dist/features/stockFeatures.d.ts +7 -3
- package/dist/features/stockFeatures.js +7 -2
- package/dist/flex-render.d.ts +2 -4
- package/dist/flex-render.js +10 -3
- package/dist/helpers/columnHelper.d.ts +3 -5
- package/dist/helpers/columnHelper.js +1 -2
- package/dist/helpers/metaHelper.d.ts +25 -0
- package/dist/helpers/metaHelper.js +28 -0
- package/dist/helpers/tableFeatures.d.ts +35 -8
- package/dist/helpers/tableFeatures.js +33 -5
- package/dist/helpers/tableOptions.d.ts +1 -3
- package/dist/helpers/tableOptions.js +1 -2
- package/dist/index.d.ts +34 -27
- package/dist/index.js +10 -5
- package/dist/reactivity.d.ts +2 -1
- package/dist/reactivity.js +2 -1
- package/dist/static-functions.d.ts +11 -8
- package/dist/static-functions.js +11 -8
- package/dist/store-reactivity-bindings.d.ts +2 -4
- package/dist/store-reactivity-bindings.js +4 -5
- package/dist/types/Cell.d.ts +9 -5
- package/dist/types/Column.d.ts +13 -15
- package/dist/types/ColumnDef.d.ts +39 -21
- package/dist/types/Header.d.ts +3 -5
- package/dist/types/HeaderGroup.d.ts +3 -5
- package/dist/types/Row.d.ts +7 -7
- package/dist/types/RowModel.d.ts +11 -25
- package/dist/types/RowModelFns.d.ts +5 -7
- package/dist/types/Table.d.ts +29 -32
- package/dist/types/TableFeatures.d.ts +388 -24
- package/dist/types/TableOptions.d.ts +24 -14
- package/dist/types/TableState.d.ts +8 -8
- package/dist/types/type-utils.d.ts +10 -4
- package/dist/utils.d.ts +32 -26
- package/dist/utils.js +52 -32
- package/dist/worker/createTableWorker.d.ts +100 -0
- package/dist/worker/createTableWorker.js +185 -0
- package/dist/worker/createWorkerRowModel.d.ts +40 -0
- package/dist/worker/createWorkerRowModel.js +77 -0
- package/dist/worker/initTableWorker.d.ts +31 -0
- package/dist/worker/initTableWorker.js +99 -0
- package/dist/worker/rebuildRowModel.d.ts +11 -0
- package/dist/worker/rebuildRowModel.js +71 -0
- package/dist/worker/serializeRowModel.js +51 -0
- package/dist/worker/tableWorkerProtocol.d.ts +88 -0
- package/dist/worker/tableWorkerProtocol.js +26 -0
- package/package.json +12 -28
- package/skills/aggregation/SKILL.md +141 -0
- package/skills/api-not-found/SKILL.md +113 -0
- package/skills/cell-selection/SKILL.md +204 -0
- package/skills/cell-spanning/SKILL.md +162 -0
- package/skills/client-vs-server/SKILL.md +164 -0
- package/skills/column-faceting/SKILL.md +97 -0
- package/skills/column-filtering/SKILL.md +87 -0
- package/skills/column-ordering/SKILL.md +75 -0
- package/skills/column-pinning/SKILL.md +89 -0
- package/skills/column-resizing/SKILL.md +91 -0
- package/skills/column-sizing/SKILL.md +72 -0
- package/skills/column-visibility/SKILL.md +75 -0
- package/skills/core/SKILL.md +175 -0
- package/skills/custom-features/SKILL.md +235 -0
- package/skills/expanding/SKILL.md +80 -0
- package/skills/global-filtering/SKILL.md +84 -0
- package/skills/grouping/SKILL.md +51 -401
- package/skills/migrate-v8-to-v9/SKILL.md +275 -416
- package/skills/pagination/SKILL.md +37 -344
- package/skills/row-pinning/SKILL.md +47 -234
- package/skills/row-selection/SKILL.md +75 -302
- package/skills/sorting/SKILL.md +45 -303
- package/skills/table-features/SKILL.md +159 -0
- package/skills/typescript/SKILL.md +126 -0
- package/dist/core/cells/constructCell.cjs +0 -34
- package/dist/core/cells/constructCell.cjs.map +0 -1
- package/dist/core/cells/constructCell.d.cts +0 -17
- package/dist/core/cells/constructCell.js.map +0 -1
- package/dist/core/cells/coreCellsFeature.cjs +0 -21
- package/dist/core/cells/coreCellsFeature.cjs.map +0 -1
- package/dist/core/cells/coreCellsFeature.d.cts +0 -10
- package/dist/core/cells/coreCellsFeature.js.map +0 -1
- package/dist/core/cells/coreCellsFeature.types.d.cts +0 -57
- package/dist/core/cells/coreCellsFeature.utils.cjs +0 -57
- package/dist/core/cells/coreCellsFeature.utils.cjs.map +0 -1
- package/dist/core/cells/coreCellsFeature.utils.d.cts +0 -53
- package/dist/core/cells/coreCellsFeature.utils.js.map +0 -1
- package/dist/core/columns/constructColumn.cjs +0 -61
- package/dist/core/columns/constructColumn.cjs.map +0 -1
- package/dist/core/columns/constructColumn.d.cts +0 -16
- package/dist/core/columns/constructColumn.js.map +0 -1
- package/dist/core/columns/coreColumnsFeature.cjs +0 -70
- package/dist/core/columns/coreColumnsFeature.cjs.map +0 -1
- package/dist/core/columns/coreColumnsFeature.d.cts +0 -10
- package/dist/core/columns/coreColumnsFeature.js.map +0 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +0 -94
- package/dist/core/columns/coreColumnsFeature.utils.cjs +0 -187
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +0 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +0 -119
- package/dist/core/columns/coreColumnsFeature.utils.js.map +0 -1
- package/dist/core/coreFeatures.cjs +0 -25
- package/dist/core/coreFeatures.cjs.map +0 -1
- package/dist/core/coreFeatures.d.cts +0 -26
- package/dist/core/coreFeatures.js.map +0 -1
- package/dist/core/headers/buildHeaderGroups.cjs +0 -103
- package/dist/core/headers/buildHeaderGroups.cjs.map +0 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +0 -16
- package/dist/core/headers/buildHeaderGroups.js.map +0 -1
- package/dist/core/headers/constructHeader.cjs +0 -41
- package/dist/core/headers/constructHeader.cjs.map +0 -1
- package/dist/core/headers/constructHeader.d.cts +0 -22
- package/dist/core/headers/constructHeader.js.map +0 -1
- package/dist/core/headers/coreHeadersFeature.cjs +0 -55
- package/dist/core/headers/coreHeadersFeature.cjs.map +0 -1
- package/dist/core/headers/coreHeadersFeature.d.cts +0 -10
- package/dist/core/headers/coreHeadersFeature.js.map +0 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +0 -106
- package/dist/core/headers/coreHeadersFeature.utils.cjs +0 -142
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +0 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +0 -85
- package/dist/core/headers/coreHeadersFeature.utils.js.map +0 -1
- package/dist/core/reactivity/coreReactivityFeature.types.d.cts +0 -48
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs +0 -24
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs.map +0 -1
- package/dist/core/reactivity/coreReactivityFeature.utils.d.cts +0 -24
- package/dist/core/reactivity/coreReactivityFeature.utils.js.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.cjs +0 -27
- package/dist/core/row-models/coreRowModelsFeature.cjs.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.d.cts +0 -10
- package/dist/core/row-models/coreRowModelsFeature.js.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +0 -41
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +0 -215
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +0 -153
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +0 -1
- package/dist/core/row-models/createCoreRowModel.cjs +0 -52
- package/dist/core/row-models/createCoreRowModel.cjs.map +0 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +0 -15
- package/dist/core/row-models/createCoreRowModel.js.map +0 -1
- package/dist/core/rows/constructRow.cjs +0 -44
- package/dist/core/rows/constructRow.cjs.map +0 -1
- package/dist/core/rows/constructRow.d.cts +0 -15
- package/dist/core/rows/constructRow.js.map +0 -1
- package/dist/core/rows/coreRowsFeature.cjs +0 -37
- package/dist/core/rows/coreRowsFeature.cjs.map +0 -1
- package/dist/core/rows/coreRowsFeature.d.cts +0 -10
- package/dist/core/rows/coreRowsFeature.js.map +0 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +0 -99
- package/dist/core/rows/coreRowsFeature.utils.cjs +0 -192
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +0 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +0 -127
- package/dist/core/rows/coreRowsFeature.utils.js.map +0 -1
- package/dist/core/table/constructTable.cjs +0 -118
- package/dist/core/table/constructTable.cjs.map +0 -1
- package/dist/core/table/constructTable.d.cts +0 -22
- package/dist/core/table/constructTable.js.map +0 -1
- package/dist/core/table/coreTablesFeature.cjs +0 -17
- package/dist/core/table/coreTablesFeature.cjs.map +0 -1
- package/dist/core/table/coreTablesFeature.d.cts +0 -10
- package/dist/core/table/coreTablesFeature.js.map +0 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +0 -186
- package/dist/core/table/coreTablesFeature.utils.cjs +0 -96
- package/dist/core/table/coreTablesFeature.utils.cjs.map +0 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +0 -57
- package/dist/core/table/coreTablesFeature.utils.js.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.cjs +0 -61
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.d.cts +0 -10
- package/dist/features/column-faceting/columnFacetingFeature.js.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +0 -85
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +0 -103
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +0 -84
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +0 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +0 -44
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +0 -14
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +0 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +0 -50
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +0 -15
- package/dist/features/column-faceting/createFacetedRowModel.js.map +0 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +0 -41
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +0 -14
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +0 -50
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.d.cts +0 -10
- package/dist/features/column-filtering/columnFilteringFeature.js.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +0 -160
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +0 -212
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +0 -143
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +0 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +0 -110
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +0 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +0 -16
- package/dist/features/column-filtering/createFilteredRowModel.js.map +0 -1
- package/dist/features/column-filtering/filterRowsUtils.cjs +0 -81
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +0 -1
- package/dist/features/column-filtering/filterRowsUtils.js.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +0 -67
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +0 -10
- package/dist/features/column-grouping/columnGroupingFeature.js.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +0 -165
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +0 -250
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +0 -190
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +0 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +0 -119
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +0 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +0 -16
- package/dist/features/column-grouping/createGroupedRowModel.js.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +0 -58
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.d.cts +0 -10
- package/dist/features/column-ordering/columnOrderingFeature.js.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +0 -56
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +0 -172
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +0 -107
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +0 -221
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +0 -10
- package/dist/features/column-pinning/columnPinningFeature.js.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +0 -178
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +0 -585
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +0 -375
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.cjs +0 -41
- package/dist/features/column-resizing/columnResizingFeature.cjs.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.d.cts +0 -10
- package/dist/features/column-resizing/columnResizingFeature.js.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +0 -81
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +0 -246
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +0 -109
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +0 -124
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.d.cts +0 -10
- package/dist/features/column-sizing/columnSizingFeature.js.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +0 -96
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +0 -256
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +0 -182
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +0 -94
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.d.cts +0 -10
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +0 -97
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +0 -283
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +0 -189
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +0 -41
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.d.cts +0 -10
- package/dist/features/global-filtering/globalFilteringFeature.js.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +0 -71
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +0 -88
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +0 -74
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +0 -1
- package/dist/features/row-expanding/createExpandedRowModel.cjs +0 -59
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +0 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +0 -21
- package/dist/features/row-expanding/createExpandedRowModel.js.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.cjs +0 -47
- package/dist/features/row-expanding/rowExpandingFeature.cjs.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.d.cts +0 -10
- package/dist/features/row-expanding/rowExpandingFeature.js.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +0 -127
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +0 -281
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +0 -191
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +0 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +0 -62
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +0 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +0 -15
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.cjs +0 -45
- package/dist/features/row-pagination/rowPaginationFeature.cjs.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.d.cts +0 -10
- package/dist/features/row-pagination/rowPaginationFeature.js.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +0 -135
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +0 -312
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +0 -218
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs +0 -67
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.d.cts +0 -10
- package/dist/features/row-pinning/rowPinningFeature.js.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +0 -83
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +0 -229
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +0 -143
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +0 -75
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.d.cts +0 -10
- package/dist/features/row-selection/rowSelectionFeature.js.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +0 -136
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +0 -514
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +0 -318
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +0 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +0 -95
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +0 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +0 -16
- package/dist/features/row-sorting/createSortedRowModel.js.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.cjs +0 -55
- package/dist/features/row-sorting/rowSortingFeature.cjs.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.d.cts +0 -10
- package/dist/features/row-sorting/rowSortingFeature.js.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +0 -188
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +0 -305
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +0 -193
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +0 -1
- package/dist/features/stockFeatures.cjs +0 -41
- package/dist/features/stockFeatures.cjs.map +0 -1
- package/dist/features/stockFeatures.d.cts +0 -41
- package/dist/features/stockFeatures.js.map +0 -1
- package/dist/flex-render.cjs +0 -29
- package/dist/flex-render.cjs.map +0 -1
- package/dist/flex-render.d.cts +0 -34
- package/dist/flex-render.js.map +0 -1
- package/dist/fns/aggregationFns.cjs +0 -161
- package/dist/fns/aggregationFns.cjs.map +0 -1
- package/dist/fns/aggregationFns.d.cts +0 -85
- package/dist/fns/aggregationFns.d.ts +0 -85
- package/dist/fns/aggregationFns.js +0 -151
- package/dist/fns/aggregationFns.js.map +0 -1
- package/dist/fns/filterFns.cjs +0 -201
- package/dist/fns/filterFns.cjs.map +0 -1
- package/dist/fns/filterFns.d.cts +0 -167
- package/dist/fns/filterFns.d.ts +0 -167
- package/dist/fns/filterFns.js +0 -185
- package/dist/fns/filterFns.js.map +0 -1
- package/dist/fns/sortFns.cjs +0 -130
- package/dist/fns/sortFns.cjs.map +0 -1
- package/dist/fns/sortFns.d.cts +0 -65
- package/dist/fns/sortFns.d.ts +0 -65
- package/dist/fns/sortFns.js +0 -122
- package/dist/fns/sortFns.js.map +0 -1
- package/dist/helpers/columnHelper.cjs +0 -41
- package/dist/helpers/columnHelper.cjs.map +0 -1
- package/dist/helpers/columnHelper.d.cts +0 -71
- package/dist/helpers/columnHelper.js.map +0 -1
- package/dist/helpers/tableFeatures.cjs +0 -20
- package/dist/helpers/tableFeatures.cjs.map +0 -1
- package/dist/helpers/tableFeatures.d.cts +0 -18
- package/dist/helpers/tableFeatures.js.map +0 -1
- package/dist/helpers/tableOptions.cjs +0 -15
- package/dist/helpers/tableOptions.cjs.map +0 -1
- package/dist/helpers/tableOptions.d.cts +0 -57
- package/dist/helpers/tableOptions.js.map +0 -1
- package/dist/index.cjs +0 -133
- package/dist/index.d.cts +0 -78
- package/dist/reactivity.cjs +0 -4
- package/dist/reactivity.d.cts +0 -3
- package/dist/static-functions.cjs +0 -263
- package/dist/static-functions.d.cts +0 -21
- package/dist/store-reactivity-bindings.cjs +0 -44
- package/dist/store-reactivity-bindings.cjs.map +0 -1
- package/dist/store-reactivity-bindings.d.cts +0 -22
- package/dist/store-reactivity-bindings.js.map +0 -1
- package/dist/types/Cell.d.cts +0 -14
- package/dist/types/Column.d.cts +0 -36
- package/dist/types/ColumnDef.d.cts +0 -109
- package/dist/types/Header.d.cts +0 -16
- package/dist/types/HeaderGroup.d.cts +0 -10
- package/dist/types/Row.d.cts +0 -26
- package/dist/types/RowModel.d.cts +0 -36
- package/dist/types/RowModelFns.d.cts +0 -18
- package/dist/types/Table.d.cts +0 -70
- package/dist/types/TableFeatures.d.cts +0 -53
- package/dist/types/TableOptions.d.cts +0 -69
- package/dist/types/TableState.d.cts +0 -48
- package/dist/types/type-utils.d.cts +0 -23
- package/dist/utils.cjs +0 -243
- package/dist/utils.cjs.map +0 -1
- package/dist/utils.d.cts +0 -114
- package/dist/utils.js.map +0 -1
- package/skills/column-definitions/SKILL.md +0 -333
- package/skills/column-layout/SKILL.md +0 -328
- package/skills/column-layout/references/subsystems.md +0 -220
- package/skills/customizing-feature-behavior/SKILL.md +0 -416
- package/skills/filtering/SKILL.md +0 -357
- package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
- package/skills/row-expanding/SKILL.md +0 -348
- package/skills/setup/SKILL.md +0 -400
- package/skills/state-management/SKILL.md +0 -388
- package/src/core/cells/constructCell.ts +0 -55
- package/src/core/cells/coreCellsFeature.ts +0 -27
- package/src/core/cells/coreCellsFeature.types.ts +0 -68
- package/src/core/cells/coreCellsFeature.utils.ts +0 -68
- package/src/core/columns/constructColumn.ts +0 -119
- package/src/core/columns/coreColumnsFeature.ts +0 -73
- package/src/core/columns/coreColumnsFeature.types.ts +0 -108
- package/src/core/columns/coreColumnsFeature.utils.ts +0 -275
- package/src/core/coreFeatures.ts +0 -31
- package/src/core/headers/buildHeaderGroups.ts +0 -182
- package/src/core/headers/constructHeader.ts +0 -67
- package/src/core/headers/coreHeadersFeature.ts +0 -56
- package/src/core/headers/coreHeadersFeature.types.ts +0 -125
- package/src/core/headers/coreHeadersFeature.utils.ts +0 -200
- package/src/core/reactivity/coreReactivityFeature.types.ts +0 -56
- package/src/core/reactivity/coreReactivityFeature.utils.ts +0 -44
- package/src/core/row-models/coreRowModelsFeature.ts +0 -62
- package/src/core/row-models/coreRowModelsFeature.types.ts +0 -64
- package/src/core/row-models/coreRowModelsFeature.utils.ts +0 -272
- package/src/core/row-models/createCoreRowModel.ts +0 -93
- package/src/core/rows/constructRow.ts +0 -66
- package/src/core/rows/coreRowsFeature.ts +0 -62
- package/src/core/rows/coreRowsFeature.types.ts +0 -117
- package/src/core/rows/coreRowsFeature.utils.ts +0 -264
- package/src/core/table/constructTable.ts +0 -172
- package/src/core/table/coreTablesFeature.ts +0 -19
- package/src/core/table/coreTablesFeature.types.ts +0 -216
- package/src/core/table/coreTablesFeature.utils.ts +0 -131
- package/src/features/column-faceting/columnFacetingFeature.ts +0 -89
- package/src/features/column-faceting/columnFacetingFeature.types.ts +0 -109
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +0 -145
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +0 -66
- package/src/features/column-faceting/createFacetedRowModel.ts +0 -85
- package/src/features/column-faceting/createFacetedUniqueValues.ts +0 -66
- package/src/features/column-filtering/columnFilteringFeature.ts +0 -86
- package/src/features/column-filtering/columnFilteringFeature.types.ts +0 -232
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +0 -331
- package/src/features/column-filtering/createFilteredRowModel.ts +0 -183
- package/src/features/column-filtering/filterRowsUtils.ts +0 -157
- package/src/features/column-grouping/columnGroupingFeature.ts +0 -115
- package/src/features/column-grouping/columnGroupingFeature.types.ts +0 -226
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +0 -354
- package/src/features/column-grouping/createGroupedRowModel.ts +0 -220
- package/src/features/column-ordering/columnOrderingFeature.ts +0 -73
- package/src/features/column-ordering/columnOrderingFeature.types.ts +0 -60
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +0 -241
- package/src/features/column-pinning/columnPinningFeature.ts +0 -316
- package/src/features/column-pinning/columnPinningFeature.types.ts +0 -192
- package/src/features/column-pinning/columnPinningFeature.utils.ts +0 -908
- package/src/features/column-resizing/columnResizingFeature.ts +0 -65
- package/src/features/column-resizing/columnResizingFeature.types.ts +0 -89
- package/src/features/column-resizing/columnResizingFeature.utils.ts +0 -364
- package/src/features/column-sizing/columnSizingFeature.ts +0 -145
- package/src/features/column-sizing/columnSizingFeature.types.ts +0 -102
- package/src/features/column-sizing/columnSizingFeature.utils.ts +0 -381
- package/src/features/column-visibility/columnVisibilityFeature.ts +0 -122
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +0 -112
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +0 -384
- package/src/features/global-filtering/globalFilteringFeature.ts +0 -65
- package/src/features/global-filtering/globalFilteringFeature.types.ts +0 -91
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +0 -118
- package/src/features/row-expanding/createExpandedRowModel.ts +0 -82
- package/src/features/row-expanding/rowExpandingFeature.ts +0 -94
- package/src/features/row-expanding/rowExpandingFeature.types.ts +0 -147
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +0 -374
- package/src/features/row-pagination/createPaginatedRowModel.ts +0 -83
- package/src/features/row-pagination/rowPaginationFeature.ts +0 -95
- package/src/features/row-pagination/rowPaginationFeature.types.ts +0 -152
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +0 -400
- package/src/features/row-pinning/rowPinningFeature.ts +0 -97
- package/src/features/row-pinning/rowPinningFeature.types.ts +0 -95
- package/src/features/row-pinning/rowPinningFeature.utils.ts +0 -323
- package/src/features/row-selection/rowSelectionFeature.ts +0 -140
- package/src/features/row-selection/rowSelectionFeature.types.ts +0 -151
- package/src/features/row-selection/rowSelectionFeature.utils.ts +0 -745
- package/src/features/row-sorting/createSortedRowModel.ts +0 -157
- package/src/features/row-sorting/rowSortingFeature.ts +0 -103
- package/src/features/row-sorting/rowSortingFeature.types.ts +0 -235
- package/src/features/row-sorting/rowSortingFeature.utils.ts +0 -489
- package/src/features/stockFeatures.ts +0 -53
- package/src/flex-render.ts +0 -70
- package/src/fns/aggregationFns.ts +0 -245
- package/src/fns/filterFns.ts +0 -382
- package/src/fns/sortFns.ts +0 -240
- package/src/helpers/columnHelper.ts +0 -122
- package/src/helpers/tableFeatures.ts +0 -24
- package/src/helpers/tableOptions.ts +0 -117
- package/src/index.ts +0 -138
- package/src/process-env.d.ts +0 -6
- package/src/reactivity.ts +0 -2
- package/src/static-functions.ts +0 -31
- package/src/store-reactivity-bindings.ts +0 -47
- package/src/types/Cell.ts +0 -21
- package/src/types/Column.ts +0 -51
- package/src/types/ColumnDef.ts +0 -228
- package/src/types/Header.ts +0 -23
- package/src/types/HeaderGroup.ts +0 -13
- package/src/types/Row.ts +0 -34
- package/src/types/RowModel.ts +0 -98
- package/src/types/RowModelFns.ts +0 -32
- package/src/types/Table.ts +0 -91
- package/src/types/TableFeatures.ts +0 -101
- package/src/types/TableOptions.ts +0 -101
- package/src/types/TableState.ts +0 -47
- package/src/types/type-utils.ts +0 -84
- package/src/utils.ts +0 -441
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { RowData } from "../types/type-utils.js";
|
|
2
|
+
import { TableOptions } from "../types/TableOptions.js";
|
|
3
|
+
import { TableFeatures } from "../types/TableFeatures.js";
|
|
4
|
+
//#region src/worker/initTableWorker.d.ts
|
|
5
|
+
type TableWorkerConfig<TFeatures extends TableFeatures, TData extends RowData> = Omit<TableOptions<TFeatures, TData>, 'data'>;
|
|
6
|
+
/**
|
|
7
|
+
* Runs a headless "shadow table" inside a dedicated Web Worker.
|
|
8
|
+
*
|
|
9
|
+
* Call this from a user-authored worker entry file, passing the same columns
|
|
10
|
+
* and processing features used on the main thread. The shadow table runs the
|
|
11
|
+
* real table-core row model pipeline (real fns, real Row objects) off the
|
|
12
|
+
* main thread and posts back one payload per stage the main thread requested:
|
|
13
|
+
* a transferable index permutation for flat results, a serialized row tree
|
|
14
|
+
* (with eagerly computed aggregates) when grouping produces synthetic rows.
|
|
15
|
+
*
|
|
16
|
+
* Everything passed here must be thread-portable: `accessorKey` columns or
|
|
17
|
+
* accessors defined in a shared module, and fns from registries or shared
|
|
18
|
+
* modules (no closures over app state).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* // table.worker.ts
|
|
23
|
+
* import { initTableWorker } from '@tanstack/table-core/experimental-worker-plugin'
|
|
24
|
+
* import { columns, sharedFeatures } from './tableConfig'
|
|
25
|
+
*
|
|
26
|
+
* initTableWorker({ features: sharedFeatures, columns })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
declare function initTableWorker<TFeatures extends TableFeatures, TData extends RowData>(config: TableWorkerConfig<TFeatures, TData>): void;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { TableWorkerConfig, initTableWorker };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { makeObjectMap } from "../utils.js";
|
|
2
|
+
import { constructTable } from "../core/table/constructTable.js";
|
|
3
|
+
import { storeReactivityBindings } from "../store-reactivity-bindings.js";
|
|
4
|
+
import { serializeRowModel } from "./serializeRowModel.js";
|
|
5
|
+
|
|
6
|
+
//#region src/worker/initTableWorker.ts
|
|
7
|
+
function capitalize(stage) {
|
|
8
|
+
return stage.charAt(0).toUpperCase() + stage.slice(1);
|
|
9
|
+
}
|
|
10
|
+
/** Flatten column-group defs to leaf defs (mirrors core's id resolution). */
|
|
11
|
+
function flattenColumnDefs(defs) {
|
|
12
|
+
return defs.flatMap((def) => def.columns ? flattenColumnDefs(def.columns) : [def]);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Runs a headless "shadow table" inside a dedicated Web Worker.
|
|
16
|
+
*
|
|
17
|
+
* Call this from a user-authored worker entry file, passing the same columns
|
|
18
|
+
* and processing features used on the main thread. The shadow table runs the
|
|
19
|
+
* real table-core row model pipeline (real fns, real Row objects) off the
|
|
20
|
+
* main thread and posts back one payload per stage the main thread requested:
|
|
21
|
+
* a transferable index permutation for flat results, a serialized row tree
|
|
22
|
+
* (with eagerly computed aggregates) when grouping produces synthetic rows.
|
|
23
|
+
*
|
|
24
|
+
* Everything passed here must be thread-portable: `accessorKey` columns or
|
|
25
|
+
* accessors defined in a shared module, and fns from registries or shared
|
|
26
|
+
* modules (no closures over app state).
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* // table.worker.ts
|
|
31
|
+
* import { initTableWorker } from '@tanstack/table-core/experimental-worker-plugin'
|
|
32
|
+
* import { columns, sharedFeatures } from './tableConfig'
|
|
33
|
+
*
|
|
34
|
+
* initTableWorker({ features: sharedFeatures, columns })
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function initTableWorker(config) {
|
|
38
|
+
let table;
|
|
39
|
+
let dataVersion = 0;
|
|
40
|
+
let coreIndexById = makeObjectMap();
|
|
41
|
+
let aggregateColumnIds = [];
|
|
42
|
+
let lastSentModels = {};
|
|
43
|
+
self.onmessage = (event) => {
|
|
44
|
+
const message = event.data;
|
|
45
|
+
if (message.type === "data") {
|
|
46
|
+
dataVersion = message.dataVersion;
|
|
47
|
+
lastSentModels = {};
|
|
48
|
+
if (!table) {
|
|
49
|
+
table = constructTable({
|
|
50
|
+
...config,
|
|
51
|
+
features: {
|
|
52
|
+
coreReactivityFeature: storeReactivityBindings(),
|
|
53
|
+
...config.features
|
|
54
|
+
},
|
|
55
|
+
data: message.data
|
|
56
|
+
});
|
|
57
|
+
aggregateColumnIds = flattenColumnDefs(config.columns).filter((def) => def.aggregationFn != null || def.aggregatedCell != null).map((def) => def.id ?? (def.accessorKey === void 0 ? void 0 : String(def.accessorKey).replaceAll(".", "_"))).filter((id) => id != null);
|
|
58
|
+
} else table.setOptions((prev) => ({
|
|
59
|
+
...prev,
|
|
60
|
+
data: message.data
|
|
61
|
+
}));
|
|
62
|
+
const coreFlatRows = table.getCoreRowModel().flatRows;
|
|
63
|
+
coreIndexById = makeObjectMap();
|
|
64
|
+
for (let i = 0; i < coreFlatRows.length; i++) coreIndexById[coreFlatRows[i].id] = i;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!table) return;
|
|
68
|
+
const start = performance.now();
|
|
69
|
+
table._reactivity.batch(() => {
|
|
70
|
+
for (const [key, value] of Object.entries(message.state)) {
|
|
71
|
+
const baseAtom = table.baseAtoms[key];
|
|
72
|
+
if (baseAtom && value !== void 0) baseAtom.set(value);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const stages = {};
|
|
76
|
+
const transfer = [];
|
|
77
|
+
for (const stage of message.stages) {
|
|
78
|
+
if (!config.features[`${stage}RowModel`]) continue;
|
|
79
|
+
const model = table[`get${capitalize(stage)}RowModel`]();
|
|
80
|
+
if (lastSentModels[stage] === model) {
|
|
81
|
+
stages[stage] = { kind: "unchanged" };
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
lastSentModels[stage] = model;
|
|
85
|
+
stages[stage] = serializeRowModel(model, coreIndexById, aggregateColumnIds, transfer);
|
|
86
|
+
}
|
|
87
|
+
const response = {
|
|
88
|
+
type: "result",
|
|
89
|
+
requestId: message.requestId,
|
|
90
|
+
dataVersion,
|
|
91
|
+
stages,
|
|
92
|
+
computeMs: performance.now() - start
|
|
93
|
+
};
|
|
94
|
+
postMessage(response, { transfer });
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
export { initTableWorker };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TableWorkerStagePayload } from "./tableWorkerProtocol.js";
|
|
2
|
+
import "../core/row-models/coreRowModelsFeature.types.js";
|
|
3
|
+
import "../types/Table.js";
|
|
4
|
+
import "../types/TableFeatures.js";
|
|
5
|
+
//#region src/worker/rebuildRowModel.d.ts
|
|
6
|
+
/** Payloads that carry data; `unchanged` never reaches the rebuilder. */
|
|
7
|
+
type TableWorkerDataPayload = Exclude<TableWorkerStagePayload, {
|
|
8
|
+
kind: 'unchanged';
|
|
9
|
+
}>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { TableWorkerDataPayload };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { hasOwn } from "../utils.js";
|
|
2
|
+
import { constructRow } from "../core/rows/constructRow.js";
|
|
3
|
+
|
|
4
|
+
//#region src/worker/rebuildRowModel.ts
|
|
5
|
+
function collectLeafRows(subRows, out) {
|
|
6
|
+
for (let i = 0; i < subRows.length; i++) {
|
|
7
|
+
const row = subRows[i];
|
|
8
|
+
if (row.groupingColumnId == null) out.push(row);
|
|
9
|
+
else collectLeafRows(row.subRows, out);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function rebuildRowModel(table, payload, resetDepths) {
|
|
13
|
+
const core = table.getCoreRowModel();
|
|
14
|
+
if (payload.kind === "flat") {
|
|
15
|
+
const { indices } = payload;
|
|
16
|
+
const rows = new Array(indices.length);
|
|
17
|
+
for (let i = 0; i < indices.length; i++) {
|
|
18
|
+
const row = core.flatRows[indices[i]];
|
|
19
|
+
if (resetDepths) {
|
|
20
|
+
row.depth = 0;
|
|
21
|
+
row.parentId = void 0;
|
|
22
|
+
}
|
|
23
|
+
rows[i] = row;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
rows,
|
|
27
|
+
flatRows: rows,
|
|
28
|
+
rowsById: core.rowsById
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const flatRows = [];
|
|
32
|
+
const rowsById = Object.create(core.rowsById);
|
|
33
|
+
const rebuildRows = (nodes, depth, parentId) => {
|
|
34
|
+
const rows = new Array(nodes.length);
|
|
35
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
36
|
+
const node = nodes[i];
|
|
37
|
+
if (typeof node === "number") {
|
|
38
|
+
const row = core.flatRows[node];
|
|
39
|
+
row.depth = depth;
|
|
40
|
+
row.parentId = parentId;
|
|
41
|
+
flatRows.push(row);
|
|
42
|
+
rows[i] = row;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const subRows = rebuildRows(node.children, depth + 1, node.id);
|
|
46
|
+
const leafRows = [];
|
|
47
|
+
collectLeafRows(subRows, leafRows);
|
|
48
|
+
const row = constructRow(table, node.id, leafRows[0]?.original, node.index, depth, void 0, parentId);
|
|
49
|
+
const aggregates = node.aggregates;
|
|
50
|
+
Object.assign(row, {
|
|
51
|
+
groupingColumnId: node.groupingColumnId,
|
|
52
|
+
groupingValue: node.groupingValue,
|
|
53
|
+
subRows,
|
|
54
|
+
leafRows,
|
|
55
|
+
getValue: (columnId) => hasOwn(aggregates, columnId) ? aggregates[columnId] : void 0
|
|
56
|
+
});
|
|
57
|
+
flatRows.push(row);
|
|
58
|
+
rowsById[node.id] = row;
|
|
59
|
+
rows[i] = row;
|
|
60
|
+
}
|
|
61
|
+
return rows;
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
rows: rebuildRows(payload.children, 0, void 0),
|
|
65
|
+
flatRows,
|
|
66
|
+
rowsById
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { rebuildRowModel };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//#region src/worker/serializeRowModel.ts
|
|
2
|
+
function isCloneSafe(value) {
|
|
3
|
+
return typeof value !== "function" && typeof value !== "symbol";
|
|
4
|
+
}
|
|
5
|
+
function serializeRows(rows, coreIndexById, aggregateColumnIds) {
|
|
6
|
+
const nodes = new Array(rows.length);
|
|
7
|
+
for (let i = 0; i < rows.length; i++) {
|
|
8
|
+
const row = rows[i];
|
|
9
|
+
if (row.groupingColumnId == null) {
|
|
10
|
+
nodes[i] = coreIndexById[row.id];
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const aggregates = {};
|
|
14
|
+
for (let c = 0; c < aggregateColumnIds.length; c++) {
|
|
15
|
+
const columnId = aggregateColumnIds[c];
|
|
16
|
+
const value = row.getValue(columnId);
|
|
17
|
+
if (value !== void 0 && isCloneSafe(value)) aggregates[columnId] = value;
|
|
18
|
+
}
|
|
19
|
+
if (!(row.groupingColumnId in aggregates)) {
|
|
20
|
+
const value = row.getValue(row.groupingColumnId);
|
|
21
|
+
if (value !== void 0 && isCloneSafe(value)) aggregates[row.groupingColumnId] = value;
|
|
22
|
+
}
|
|
23
|
+
nodes[i] = {
|
|
24
|
+
id: row.id,
|
|
25
|
+
groupingColumnId: row.groupingColumnId,
|
|
26
|
+
groupingValue: row.groupingValue,
|
|
27
|
+
index: row.index,
|
|
28
|
+
aggregates,
|
|
29
|
+
children: serializeRows(row.subRows, coreIndexById, aggregateColumnIds)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return nodes;
|
|
33
|
+
}
|
|
34
|
+
function serializeRowModel(model, coreIndexById, aggregateColumnIds, transfer) {
|
|
35
|
+
if (model.flatRows.length === model.rows.length) {
|
|
36
|
+
const indices = new Uint32Array(model.rows.length);
|
|
37
|
+
for (let i = 0; i < indices.length; i++) indices[i] = coreIndexById[model.rows[i].id];
|
|
38
|
+
transfer.push(indices.buffer);
|
|
39
|
+
return {
|
|
40
|
+
kind: "flat",
|
|
41
|
+
indices
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
kind: "tree",
|
|
46
|
+
children: serializeRows(model.rows, coreIndexById, aggregateColumnIds)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
export { serializeRowModel };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { RowData } from "../types/type-utils.js";
|
|
2
|
+
//#region src/worker/tableWorkerProtocol.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Row model stages that can be offloaded to the worker, in pipeline order.
|
|
5
|
+
* Everything else in this module is derived from this list; adding a stage
|
|
6
|
+
* means adding an entry here and to `tableWorkerStageStateDeps`.
|
|
7
|
+
*/
|
|
8
|
+
declare const tableWorkerPipeline: readonly ["filtered", "grouped", "sorted", "expanded"];
|
|
9
|
+
type TableWorkerStage = (typeof tableWorkerPipeline)[number];
|
|
10
|
+
/**
|
|
11
|
+
* The state slices each stage's computation depends on. The main thread sends
|
|
12
|
+
* the union of deps for its registered stages; a change to any of them
|
|
13
|
+
* triggers one worker round trip.
|
|
14
|
+
*/
|
|
15
|
+
declare const tableWorkerStageStateDeps: Record<TableWorkerStage, Array<string>>;
|
|
16
|
+
/**
|
|
17
|
+
* A serialized synthetic (group) row. Leaf rows serialize as their position in
|
|
18
|
+
* `options.data`; group rows carry what `constructRow` + the grouped row model
|
|
19
|
+
* need to rebuild them, plus eagerly computed aggregate values so no
|
|
20
|
+
* aggregation runs on the main thread.
|
|
21
|
+
*/
|
|
22
|
+
interface TableWorkerGroupNode {
|
|
23
|
+
id: string;
|
|
24
|
+
groupingColumnId: string;
|
|
25
|
+
groupingValue: unknown;
|
|
26
|
+
index: number;
|
|
27
|
+
aggregates: Record<string, unknown>;
|
|
28
|
+
children: Array<TableWorkerRowNode>;
|
|
29
|
+
}
|
|
30
|
+
type TableWorkerRowNode = number | TableWorkerGroupNode;
|
|
31
|
+
/**
|
|
32
|
+
* A stage result. Flat models (every row is a data row) travel as a
|
|
33
|
+
* transferable index permutation; models containing synthetic rows (grouping)
|
|
34
|
+
* travel as a tree. The kind is chosen from the model's actual shape at
|
|
35
|
+
* runtime, not from the stage name: a sorted model is flat without grouping
|
|
36
|
+
* and a tree with it.
|
|
37
|
+
*
|
|
38
|
+
* `unchanged` means the stage's model is identical to the last one sent for
|
|
39
|
+
* this dataset (its memoized inputs did not change); the main thread keeps
|
|
40
|
+
* its previous result and skips the rebuild entirely.
|
|
41
|
+
*/
|
|
42
|
+
type TableWorkerStagePayload = {
|
|
43
|
+
kind: 'flat';
|
|
44
|
+
indices: Uint32Array;
|
|
45
|
+
} | {
|
|
46
|
+
kind: 'tree';
|
|
47
|
+
children: Array<TableWorkerRowNode>;
|
|
48
|
+
} | {
|
|
49
|
+
kind: 'unchanged';
|
|
50
|
+
};
|
|
51
|
+
type TableWorkerRequest<TData extends RowData = any> = {
|
|
52
|
+
type: 'data';
|
|
53
|
+
dataVersion: number;
|
|
54
|
+
data: Array<TData>;
|
|
55
|
+
} | {
|
|
56
|
+
type: 'process';
|
|
57
|
+
requestId: number;
|
|
58
|
+
dataVersion: number;
|
|
59
|
+
/** The stages the main thread has worker-backed row models for. */
|
|
60
|
+
stages: Array<TableWorkerStage>;
|
|
61
|
+
/** Serializable state slices (union of the stages' deps). */
|
|
62
|
+
state: Record<string, unknown>;
|
|
63
|
+
};
|
|
64
|
+
interface TableWorkerResult {
|
|
65
|
+
type: 'result';
|
|
66
|
+
requestId: number;
|
|
67
|
+
dataVersion: number;
|
|
68
|
+
stages: { [K in TableWorkerStage]?: TableWorkerStagePayload; };
|
|
69
|
+
computeMs: number;
|
|
70
|
+
}
|
|
71
|
+
type TableWorkerResponse = TableWorkerResult;
|
|
72
|
+
/**
|
|
73
|
+
* The state slice added by `workerRowModelsFeature`. `version` bumps when a
|
|
74
|
+
* worker result lands (driving re-renders through the normal state path);
|
|
75
|
+
* `isPending` is true while a request is in flight. The timing fields expose
|
|
76
|
+
* the last result's worker compute time and full round trip for devtools and
|
|
77
|
+
* debugging.
|
|
78
|
+
*/
|
|
79
|
+
interface TableState_WorkerRowModels {
|
|
80
|
+
workerRowModels: {
|
|
81
|
+
version: number;
|
|
82
|
+
isPending: boolean;
|
|
83
|
+
lastComputeMs?: number;
|
|
84
|
+
lastRoundTripMs?: number;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { TableState_WorkerRowModels, TableWorkerGroupNode, TableWorkerRequest, TableWorkerResponse, TableWorkerResult, TableWorkerRowNode, TableWorkerStage, TableWorkerStagePayload, tableWorkerPipeline, tableWorkerStageStateDeps };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/worker/tableWorkerProtocol.ts
|
|
2
|
+
/**
|
|
3
|
+
* Row model stages that can be offloaded to the worker, in pipeline order.
|
|
4
|
+
* Everything else in this module is derived from this list; adding a stage
|
|
5
|
+
* means adding an entry here and to `tableWorkerStageStateDeps`.
|
|
6
|
+
*/
|
|
7
|
+
const tableWorkerPipeline = [
|
|
8
|
+
"filtered",
|
|
9
|
+
"grouped",
|
|
10
|
+
"sorted",
|
|
11
|
+
"expanded"
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* The state slices each stage's computation depends on. The main thread sends
|
|
15
|
+
* the union of deps for its registered stages; a change to any of them
|
|
16
|
+
* triggers one worker round trip.
|
|
17
|
+
*/
|
|
18
|
+
const tableWorkerStageStateDeps = {
|
|
19
|
+
filtered: ["columnFilters", "globalFilter"],
|
|
20
|
+
grouped: ["grouping"],
|
|
21
|
+
sorted: ["sorting"],
|
|
22
|
+
expanded: ["expanded"]
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { tableWorkerPipeline, tableWorkerStageStateDeps };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/table-core",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.70",
|
|
4
4
|
"description": "Headless UI for building powerful tables & datagrids for TS/JS.",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,39 +27,22 @@
|
|
|
27
27
|
"tanstack-intent"
|
|
28
28
|
],
|
|
29
29
|
"type": "module",
|
|
30
|
-
"types": "./dist/index.d.
|
|
31
|
-
"main": "./dist/index.cjs",
|
|
32
|
-
"module": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
33
31
|
"exports": {
|
|
34
|
-
".":
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"./
|
|
39
|
-
|
|
40
|
-
"require": "./dist/flex-render.cjs"
|
|
41
|
-
},
|
|
42
|
-
"./reactivity": {
|
|
43
|
-
"import": "./dist/reactivity.js",
|
|
44
|
-
"require": "./dist/reactivity.cjs"
|
|
45
|
-
},
|
|
46
|
-
"./static-functions": {
|
|
47
|
-
"import": "./dist/static-functions.js",
|
|
48
|
-
"require": "./dist/static-functions.cjs"
|
|
49
|
-
},
|
|
50
|
-
"./store-reactivity-bindings": {
|
|
51
|
-
"import": "./dist/store-reactivity-bindings.js",
|
|
52
|
-
"require": "./dist/store-reactivity-bindings.cjs"
|
|
53
|
-
},
|
|
32
|
+
".": "./dist/index.js",
|
|
33
|
+
"./experimental-worker-plugin": "./dist/experimental-worker-plugin.js",
|
|
34
|
+
"./flex-render": "./dist/flex-render.js",
|
|
35
|
+
"./reactivity": "./dist/reactivity.js",
|
|
36
|
+
"./static-functions": "./dist/static-functions.js",
|
|
37
|
+
"./store-reactivity-bindings": "./dist/store-reactivity-bindings.js",
|
|
54
38
|
"./package.json": "./package.json"
|
|
55
39
|
},
|
|
56
40
|
"sideEffects": false,
|
|
57
41
|
"engines": {
|
|
58
|
-
"node": ">=
|
|
42
|
+
"node": ">=20"
|
|
59
43
|
},
|
|
60
44
|
"files": [
|
|
61
|
-
"dist
|
|
62
|
-
"src",
|
|
45
|
+
"dist",
|
|
63
46
|
"skills"
|
|
64
47
|
],
|
|
65
48
|
"dependencies": {
|
|
@@ -69,10 +52,11 @@
|
|
|
69
52
|
"clean": "rimraf ./build && rimraf ./dist",
|
|
70
53
|
"lint:fix": "eslint ./src --fix",
|
|
71
54
|
"test:eslint": "eslint ./src",
|
|
55
|
+
"test:coverage": "vitest run --coverage",
|
|
72
56
|
"test:lib": "vitest",
|
|
73
57
|
"test:lib:dev": "pnpm test:lib --watch",
|
|
74
58
|
"test:types": "tsc && tsc -p tests/tsconfig.declaration-emit.json",
|
|
75
59
|
"test:build": "publint --strict",
|
|
76
|
-
"build": "tsdown"
|
|
60
|
+
"build": "tsdown && node ../../scripts/rewrite-table-core-dts.mjs"
|
|
77
61
|
}
|
|
78
62
|
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aggregation
|
|
3
|
+
description: >
|
|
4
|
+
Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
type: sub-skill,
|
|
8
|
+
library: '@tanstack/table-core',
|
|
9
|
+
library_version: '9.0.0-beta.70',
|
|
10
|
+
}
|
|
11
|
+
requires: ['core', 'table-features']
|
|
12
|
+
sources:
|
|
13
|
+
- 'TanStack/table:docs/guide/aggregation.md'
|
|
14
|
+
- 'TanStack/table:docs/framework/react/guide/aggregation.md'
|
|
15
|
+
- 'TanStack/table:packages/table-core/src/features/row-aggregation'
|
|
16
|
+
- 'TanStack/table:examples/react/aggregation'
|
|
17
|
+
- 'TanStack/table:examples/react/grouped-aggregation'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
This skill builds on `core` and `table-features`. Aggregation is independent
|
|
21
|
+
from grouping: use it alone for totals, or combine it with the `grouping` skill
|
|
22
|
+
for synthetic grouped rows.
|
|
23
|
+
|
|
24
|
+
## Setup
|
|
25
|
+
|
|
26
|
+
<!-- skill-snippet:check -->
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import {
|
|
30
|
+
rowAggregationFeature,
|
|
31
|
+
aggregationFn_mean,
|
|
32
|
+
aggregationFn_sum,
|
|
33
|
+
tableFeatures,
|
|
34
|
+
} from '@tanstack/table-core'
|
|
35
|
+
|
|
36
|
+
export const features = tableFeatures({
|
|
37
|
+
rowAggregationFeature,
|
|
38
|
+
aggregationFns: {
|
|
39
|
+
mean: aggregationFn_mean,
|
|
40
|
+
sum: aggregationFn_sum,
|
|
41
|
+
},
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Core Patterns
|
|
46
|
+
|
|
47
|
+
### Grand total and selected row scopes
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
const grandTotal = salaryColumn.getAggregationValue()
|
|
51
|
+
const filteredTotal = salaryColumn.getAggregationValue({
|
|
52
|
+
rows: table.getFilteredRowModel().rows,
|
|
53
|
+
})
|
|
54
|
+
const childTotal = salaryColumn.getAggregationValue({
|
|
55
|
+
rows: table.getCoreRowModel().rows,
|
|
56
|
+
maxDepth: 1,
|
|
57
|
+
})
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The default uses the pre-grouped row model. Explicit rows can come from any row
|
|
61
|
+
model or caller-selected subset. `maxAggregationDepth` defaults to `0`, which
|
|
62
|
+
selects the supplied roots; `1` selects direct sub-rows, and `Infinity` selects
|
|
63
|
+
terminal rows. Branches that end early contribute their deepest available row.
|
|
64
|
+
Default calls are cached; explicit-row calls intentionally are not because array
|
|
65
|
+
identity and contents are caller-owned. `table.getMaxSubRowDepth()` returns the
|
|
66
|
+
deepest structural depth in the core row model.
|
|
67
|
+
|
|
68
|
+
### Multiple aggregations
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
columnHelper.accessor('salary', {
|
|
72
|
+
aggregationFn: ['mean', { id: 'range', aggregationFn: 'extent' }],
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
const value = salaryColumn.getAggregationValue<{
|
|
76
|
+
mean: number
|
|
77
|
+
range: [number, number]
|
|
78
|
+
}>()
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
A scalar option returns a scalar. An array returns a keyed object. Named
|
|
82
|
+
functions use their registry name; descriptors provide a stable `id`, which is
|
|
83
|
+
required for inline definitions in an array.
|
|
84
|
+
|
|
85
|
+
### Custom definitions
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
const weightedMean = constructAggregationFn({
|
|
89
|
+
aggregate: ({ rows, getValue }) => {
|
|
90
|
+
const total = rows.reduce((sum, row) => sum + Number(getValue(row)), 0)
|
|
91
|
+
return rows.length ? total / rows.length : undefined
|
|
92
|
+
},
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The context provides depth-selected `rows`, `maxDepth`, `getValue`, `column`,
|
|
97
|
+
`columnId`, `table`, and optional grouped-only `groupingRow` and `subRows`.
|
|
98
|
+
Every aggregation configured on a column receives the same row frontier. Add
|
|
99
|
+
`merge({ subRowResults, subRows, ...context })` when nested groups can more
|
|
100
|
+
efficiently combine already-computed sub-row results; otherwise the engine calls
|
|
101
|
+
`aggregate` with both row sets. `subRowResults[i]` corresponds to `subRows[i]`.
|
|
102
|
+
|
|
103
|
+
### Manual or remote values
|
|
104
|
+
|
|
105
|
+
Set a column definition's `getAggregationValue(context)` to return `{ value }`
|
|
106
|
+
for requests handled by a server or another execution environment. Returning
|
|
107
|
+
`undefined` falls back to the local definition. `manualAggregation: true`
|
|
108
|
+
disables that local fallback.
|
|
109
|
+
|
|
110
|
+
## Common Mistakes
|
|
111
|
+
|
|
112
|
+
### [HIGH] Adding grouping for a grand total
|
|
113
|
+
|
|
114
|
+
Wrong: registering `columnGroupingFeature` solely to total a column.
|
|
115
|
+
|
|
116
|
+
Correct: register `rowAggregationFeature` and call
|
|
117
|
+
`column.getAggregationValue()`. Grouping is only required for grouped rows.
|
|
118
|
+
|
|
119
|
+
### [HIGH] Passing a scope label and rows
|
|
120
|
+
|
|
121
|
+
There is no scope option. Call `getAggregationValue()` for the cached default,
|
|
122
|
+
or pass a single options object containing rows from the desired row model and
|
|
123
|
+
`maxDepth` when the desired frontier is below those rows.
|
|
124
|
+
|
|
125
|
+
### [HIGH] Reusing the legacy callable signature
|
|
126
|
+
|
|
127
|
+
Wrong: `(columnId, leafRows, childRows) => result`.
|
|
128
|
+
|
|
129
|
+
Correct: `constructAggregationFn({ aggregate: ({ rows, subRows, getValue }) => result })`.
|
|
130
|
+
|
|
131
|
+
### [MEDIUM] Assuming arbitrary totals run in the worker
|
|
132
|
+
|
|
133
|
+
The experimental worker computes grouped row-model aggregates. Public
|
|
134
|
+
`getAggregationValue(options?)` totals execute on the main thread, and custom
|
|
135
|
+
grouped results sent by the worker must be structured-cloneable.
|
|
136
|
+
|
|
137
|
+
## API Discovery
|
|
138
|
+
|
|
139
|
+
Inspect `node_modules/@tanstack/table-core/dist/features/row-aggregation/` and the
|
|
140
|
+
Aggregation Guide. Use `Column_RowAggregation`, `AggregationFnDef`,
|
|
141
|
+
`AggregationContext`, and `AggregationResult` for the typed public surface.
|