@tanstack/table-core 9.0.0-beta.5 → 9.0.0-beta.51
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 +2 -0
- package/dist/core/cells/constructCell.cjs +1 -4
- package/dist/core/cells/constructCell.cjs.map +1 -1
- package/dist/core/cells/constructCell.d.cts +4 -4
- package/dist/core/cells/constructCell.d.ts +4 -4
- package/dist/core/cells/constructCell.js +1 -4
- package/dist/core/cells/constructCell.js.map +1 -1
- package/dist/core/cells/coreCellsFeature.types.d.cts +7 -7
- package/dist/core/cells/coreCellsFeature.types.d.ts +7 -7
- package/dist/core/cells/coreCellsFeature.utils.d.cts +4 -4
- package/dist/core/cells/coreCellsFeature.utils.d.ts +4 -4
- package/dist/core/columns/constructColumn.cjs +4 -5
- package/dist/core/columns/constructColumn.cjs.map +1 -1
- package/dist/core/columns/constructColumn.d.cts +3 -3
- package/dist/core/columns/constructColumn.d.ts +3 -3
- package/dist/core/columns/constructColumn.js +4 -5
- package/dist/core/columns/constructColumn.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.cjs +12 -18
- package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.js +12 -18
- package/dist/core/columns/coreColumnsFeature.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
- package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
- package/dist/core/columns/coreColumnsFeature.utils.cjs +4 -8
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
- package/dist/core/columns/coreColumnsFeature.utils.js +5 -9
- package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
- package/dist/core/coreFeatures.cjs.map +1 -1
- package/dist/core/coreFeatures.d.cts +1 -1
- package/dist/core/coreFeatures.d.ts +1 -1
- package/dist/core/coreFeatures.js.map +1 -1
- package/dist/core/headers/buildHeaderGroups.cjs +1 -2
- package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
- package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
- package/dist/core/headers/buildHeaderGroups.js +1 -2
- package/dist/core/headers/buildHeaderGroups.js.map +1 -1
- package/dist/core/headers/constructHeader.cjs +1 -4
- package/dist/core/headers/constructHeader.cjs.map +1 -1
- package/dist/core/headers/constructHeader.d.cts +2 -2
- package/dist/core/headers/constructHeader.d.ts +2 -2
- package/dist/core/headers/constructHeader.js +1 -4
- package/dist/core/headers/constructHeader.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.cjs +8 -11
- package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.js +8 -11
- package/dist/core/headers/coreHeadersFeature.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
- package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.cjs +8 -10
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.js +8 -10
- package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +7 -15
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -15
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +8 -26
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +16 -16
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +16 -16
- package/dist/core/row-models/coreRowModelsFeature.utils.js +8 -26
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
- package/dist/core/row-models/createCoreRowModel.cjs +4 -6
- package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
- package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
- package/dist/core/row-models/createCoreRowModel.js +5 -7
- package/dist/core/row-models/createCoreRowModel.js.map +1 -1
- package/dist/core/rows/constructRow.cjs +6 -10
- package/dist/core/rows/constructRow.cjs.map +1 -1
- package/dist/core/rows/constructRow.d.cts +2 -2
- package/dist/core/rows/constructRow.d.ts +2 -2
- package/dist/core/rows/constructRow.js +7 -10
- package/dist/core/rows/constructRow.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.cjs +18 -2
- package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.js +19 -3
- package/dist/core/rows/coreRowsFeature.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +41 -7
- package/dist/core/rows/coreRowsFeature.types.d.ts +41 -7
- package/dist/core/rows/coreRowsFeature.utils.cjs +62 -8
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +24 -5
- package/dist/core/rows/coreRowsFeature.utils.d.ts +24 -5
- package/dist/core/rows/coreRowsFeature.utils.js +61 -10
- package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
- package/dist/core/table/constructTable.cjs +24 -14
- package/dist/core/table/constructTable.cjs.map +1 -1
- package/dist/core/table/constructTable.d.cts +1 -1
- package/dist/core/table/constructTable.d.ts +1 -1
- package/dist/core/table/constructTable.js +24 -14
- package/dist/core/table/constructTable.js.map +1 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +32 -19
- package/dist/core/table/coreTablesFeature.types.d.ts +32 -19
- package/dist/core/table/coreTablesFeature.utils.cjs +38 -14
- package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +10 -7
- package/dist/core/table/coreTablesFeature.utils.d.ts +10 -7
- package/dist/core/table/coreTablesFeature.utils.js +38 -14
- package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
- package/dist/experimental-worker-plugin.cjs +14 -0
- package/dist/experimental-worker-plugin.d.cts +5 -0
- package/dist/experimental-worker-plugin.d.ts +5 -0
- package/dist/experimental-worker-plugin.js +6 -0
- package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
- package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
- package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
- package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
- package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
- package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
- package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
- package/dist/features/column-filtering/filterFns.cjs +399 -0
- package/dist/features/column-filtering/filterFns.cjs.map +1 -0
- package/dist/features/column-filtering/filterFns.d.cts +210 -0
- package/dist/features/column-filtering/filterFns.d.ts +210 -0
- package/dist/features/column-filtering/filterFns.js +375 -0
- package/dist/features/column-filtering/filterFns.js.map +1 -0
- package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
- package/dist/features/column-filtering/filterRowsUtils.js +3 -2
- package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
- package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
- package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
- package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
- package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
- package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
- package/dist/features/column-pinning/columnPinningFeature.js +125 -144
- package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
- package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.js +34 -68
- package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
- package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
- package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
- package/dist/features/row-aggregation/aggregationFns.cjs +246 -0
- package/dist/features/row-aggregation/aggregationFns.cjs.map +1 -0
- package/dist/features/row-aggregation/aggregationFns.d.cts +68 -0
- package/dist/features/row-aggregation/aggregationFns.d.ts +68 -0
- package/dist/features/row-aggregation/aggregationFns.js +235 -0
- package/dist/features/row-aggregation/aggregationFns.js.map +1 -0
- package/dist/features/row-aggregation/rowAggregationFeature.cjs +39 -0
- package/dist/features/row-aggregation/rowAggregationFeature.cjs.map +1 -0
- package/dist/features/row-aggregation/rowAggregationFeature.d.cts +10 -0
- package/dist/features/row-aggregation/rowAggregationFeature.d.ts +10 -0
- package/dist/features/row-aggregation/rowAggregationFeature.js +39 -0
- package/dist/features/row-aggregation/rowAggregationFeature.js.map +1 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.cjs +13 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.cjs.map +1 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.d.cts +195 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +195 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.js +12 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.js.map +1 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs +212 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs.map +1 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.d.cts +34 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +34 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.js +206 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.js.map +1 -0
- package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +2 -2
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +2 -2
- package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
- package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +6 -15
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -15
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +28 -26
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +29 -27
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +2 -2
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +2 -2
- package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +5 -14
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -14
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +9 -15
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +9 -15
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.js +4 -16
- package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +9 -14
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
- package/dist/features/row-pinning/rowPinningFeature.utils.js +9 -14
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +66 -22
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.js +67 -23
- package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +49 -11
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +49 -11
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +128 -72
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +57 -30
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +57 -30
- package/dist/features/row-selection/rowSelectionFeature.utils.js +129 -74
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +69 -50
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +10 -4
- package/dist/features/row-sorting/createSortedRowModel.d.ts +10 -4
- package/dist/features/row-sorting/createSortedRowModel.js +70 -51
- package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +54 -22
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -22
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +31 -17
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
- package/dist/features/row-sorting/rowSortingFeature.utils.js +31 -17
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/sortFns.cjs +226 -0
- package/dist/features/row-sorting/sortFns.cjs.map +1 -0
- package/dist/features/row-sorting/sortFns.d.cts +98 -0
- package/dist/features/row-sorting/sortFns.d.ts +98 -0
- package/dist/features/row-sorting/sortFns.js +217 -0
- package/dist/features/row-sorting/sortFns.js.map +1 -0
- package/dist/features/stockFeatures.cjs +2 -0
- package/dist/features/stockFeatures.cjs.map +1 -1
- package/dist/features/stockFeatures.d.cts +2 -0
- package/dist/features/stockFeatures.d.ts +2 -0
- package/dist/features/stockFeatures.js +2 -0
- package/dist/features/stockFeatures.js.map +1 -1
- package/dist/flex-render.d.cts +1 -1
- package/dist/flex-render.d.ts +1 -1
- package/dist/helpers/columnHelper.cjs.map +1 -1
- package/dist/helpers/columnHelper.d.cts +2 -2
- package/dist/helpers/columnHelper.d.ts +2 -2
- package/dist/helpers/columnHelper.js.map +1 -1
- package/dist/helpers/metaHelper.cjs +30 -0
- package/dist/helpers/metaHelper.cjs.map +1 -0
- package/dist/helpers/metaHelper.d.cts +26 -0
- package/dist/helpers/metaHelper.d.ts +26 -0
- package/dist/helpers/metaHelper.js +29 -0
- package/dist/helpers/metaHelper.js.map +1 -0
- package/dist/helpers/tableFeatures.cjs +32 -3
- package/dist/helpers/tableFeatures.cjs.map +1 -1
- package/dist/helpers/tableFeatures.d.cts +34 -5
- package/dist/helpers/tableFeatures.d.ts +34 -5
- package/dist/helpers/tableFeatures.js +32 -3
- package/dist/helpers/tableFeatures.js.map +1 -1
- package/dist/index.cjs +23 -3
- package/dist/index.d.cts +31 -28
- package/dist/index.d.ts +31 -28
- package/dist/index.js +8 -5
- package/dist/static-functions.cjs +30 -19
- package/dist/static-functions.d.cts +8 -7
- package/dist/static-functions.d.ts +8 -7
- package/dist/static-functions.js +8 -7
- package/dist/store-reactivity-bindings.cjs +3 -3
- package/dist/store-reactivity-bindings.cjs.map +1 -1
- package/dist/store-reactivity-bindings.d.cts +1 -1
- package/dist/store-reactivity-bindings.d.ts +1 -1
- package/dist/store-reactivity-bindings.js +3 -3
- package/dist/store-reactivity-bindings.js.map +1 -1
- package/dist/types/Cell.d.cts +4 -2
- package/dist/types/Cell.d.ts +4 -2
- package/dist/types/Column.d.cts +15 -15
- package/dist/types/Column.d.ts +15 -15
- package/dist/types/ColumnDef.d.cts +30 -14
- package/dist/types/ColumnDef.d.ts +30 -14
- package/dist/types/Header.d.cts +2 -2
- package/dist/types/Header.d.ts +2 -2
- package/dist/types/HeaderGroup.d.cts +2 -2
- package/dist/types/HeaderGroup.d.ts +2 -2
- package/dist/types/Row.d.cts +6 -4
- package/dist/types/Row.d.ts +6 -4
- package/dist/types/RowModel.d.cts +11 -23
- package/dist/types/RowModel.d.ts +11 -23
- package/dist/types/RowModelFns.d.cts +4 -4
- package/dist/types/RowModelFns.d.ts +4 -4
- package/dist/types/Table.d.cts +26 -31
- package/dist/types/Table.d.ts +26 -31
- package/dist/types/TableFeatures.d.cts +350 -22
- package/dist/types/TableFeatures.d.ts +350 -22
- package/dist/types/TableOptions.d.cts +22 -14
- package/dist/types/TableOptions.d.ts +22 -14
- package/dist/types/TableState.d.cts +6 -6
- package/dist/types/TableState.d.ts +6 -6
- package/dist/types/type-utils.d.cts +8 -1
- package/dist/types/type-utils.d.ts +8 -1
- package/dist/utils.cjs +51 -29
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +30 -8
- package/dist/utils.d.ts +30 -8
- package/dist/utils.js +49 -30
- package/dist/utils.js.map +1 -1
- package/dist/worker/createTableWorker.cjs +189 -0
- package/dist/worker/createTableWorker.cjs.map +1 -0
- package/dist/worker/createTableWorker.d.cts +102 -0
- package/dist/worker/createTableWorker.d.ts +102 -0
- package/dist/worker/createTableWorker.js +186 -0
- package/dist/worker/createTableWorker.js.map +1 -0
- package/dist/worker/createWorkerRowModel.cjs +78 -0
- package/dist/worker/createWorkerRowModel.cjs.map +1 -0
- package/dist/worker/createWorkerRowModel.d.cts +42 -0
- package/dist/worker/createWorkerRowModel.d.ts +42 -0
- package/dist/worker/createWorkerRowModel.js +78 -0
- package/dist/worker/createWorkerRowModel.js.map +1 -0
- package/dist/worker/initTableWorker.cjs +100 -0
- package/dist/worker/initTableWorker.cjs.map +1 -0
- package/dist/worker/initTableWorker.d.cts +33 -0
- package/dist/worker/initTableWorker.d.ts +33 -0
- package/dist/worker/initTableWorker.js +100 -0
- package/dist/worker/initTableWorker.js.map +1 -0
- package/dist/worker/rebuildRowModel.cjs +72 -0
- package/dist/worker/rebuildRowModel.cjs.map +1 -0
- package/dist/worker/rebuildRowModel.d.cts +9 -0
- package/dist/worker/rebuildRowModel.d.ts +9 -0
- package/dist/worker/rebuildRowModel.js +72 -0
- package/dist/worker/rebuildRowModel.js.map +1 -0
- package/dist/worker/serializeRowModel.cjs +53 -0
- package/dist/worker/serializeRowModel.cjs.map +1 -0
- package/dist/worker/serializeRowModel.js +52 -0
- package/dist/worker/serializeRowModel.js.map +1 -0
- package/dist/worker/tableWorkerProtocol.cjs +29 -0
- package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
- package/dist/worker/tableWorkerProtocol.d.cts +88 -0
- package/dist/worker/tableWorkerProtocol.d.ts +88 -0
- package/dist/worker/tableWorkerProtocol.js +27 -0
- package/dist/worker/tableWorkerProtocol.js.map +1 -0
- package/package.json +8 -3
- package/skills/aggregation/SKILL.md +141 -0
- package/skills/api-not-found/SKILL.md +113 -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 +274 -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/src/core/cells/coreCellsFeature.types.ts +6 -6
- package/src/core/columns/constructColumn.ts +6 -0
- package/src/core/columns/coreColumnsFeature.types.ts +8 -8
- package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
- package/src/core/coreFeatures.ts +1 -1
- package/src/core/headers/buildHeaderGroups.ts +4 -2
- package/src/core/headers/coreHeadersFeature.types.ts +12 -12
- package/src/core/headers/coreHeadersFeature.utils.ts +7 -8
- package/src/core/row-models/coreRowModelsFeature.types.ts +6 -20
- package/src/core/row-models/coreRowModelsFeature.utils.ts +8 -8
- package/src/core/row-models/createCoreRowModel.ts +7 -6
- package/src/core/rows/constructRow.ts +4 -2
- package/src/core/rows/coreRowsFeature.ts +21 -0
- package/src/core/rows/coreRowsFeature.types.ts +45 -8
- package/src/core/rows/coreRowsFeature.utils.ts +93 -5
- package/src/core/table/constructTable.ts +44 -6
- package/src/core/table/coreTablesFeature.types.ts +45 -20
- package/src/core/table/coreTablesFeature.utils.ts +59 -19
- package/src/experimental-worker-plugin.ts +22 -0
- package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
- package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
- package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
- package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
- package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
- package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
- package/src/features/column-filtering/filterFns.ts +533 -0
- package/src/features/column-filtering/filterRowsUtils.ts +3 -2
- package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
- package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
- package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
- package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
- package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
- package/src/features/column-pinning/columnPinningFeature.ts +76 -59
- package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
- package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
- package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
- package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
- package/src/features/column-sizing/columnSizingFeature.ts +24 -24
- package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
- package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
- package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
- package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
- package/src/features/row-aggregation/aggregationFns.ts +345 -0
- package/src/features/row-aggregation/rowAggregationFeature.ts +60 -0
- package/src/features/row-aggregation/rowAggregationFeature.types.ts +339 -0
- package/src/features/row-aggregation/rowAggregationFeature.utils.ts +430 -0
- package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
- package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
- package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
- package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
- package/src/features/row-selection/rowSelectionFeature.ts +53 -3
- package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
- package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
- package/src/features/row-sorting/createSortedRowModel.ts +107 -75
- package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
- package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
- package/src/features/row-sorting/sortFns.ts +366 -0
- package/src/features/stockFeatures.ts +3 -0
- package/src/helpers/columnHelper.ts +4 -4
- package/src/helpers/metaHelper.ts +24 -0
- package/src/helpers/tableFeatures.ts +37 -5
- package/src/index.ts +8 -8
- package/src/static-functions.ts +1 -0
- package/src/store-reactivity-bindings.ts +1 -1
- package/src/types/Cell.ts +4 -2
- package/src/types/Column.ts +13 -9
- package/src/types/ColumnDef.ts +40 -10
- package/src/types/Header.ts +2 -2
- package/src/types/HeaderGroup.ts +6 -6
- package/src/types/Row.ts +6 -4
- package/src/types/RowModel.ts +19 -74
- package/src/types/RowModelFns.ts +10 -10
- package/src/types/Table.ts +52 -27
- package/src/types/TableFeatures.ts +392 -14
- package/src/types/TableOptions.ts +67 -14
- package/src/types/TableState.ts +15 -1
- package/src/types/type-utils.ts +8 -0
- package/src/utils.ts +60 -8
- package/src/worker/createTableWorker.ts +357 -0
- package/src/worker/createWorkerRowModel.ts +121 -0
- package/src/worker/initTableWorker.ts +164 -0
- package/src/worker/rebuildRowModel.ts +120 -0
- package/src/worker/serializeRowModel.ts +80 -0
- package/src/worker/tableWorkerProtocol.ts +105 -0
- 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 -118
- 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 -110
- package/dist/fns/sortFns.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/fns/aggregationFns.ts +0 -245
- package/src/fns/filterFns.ts +0 -382
- package/src/fns/sortFns.ts +0 -217
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: state-management
|
|
3
|
-
description: >
|
|
4
|
-
Coordinate TanStack Table v9 state across `initialState`, controlled
|
|
5
|
-
`state`+`on*Change`, and external `atoms`. Covers the atom model
|
|
6
|
-
(`table.atoms.<slice>`, `table.baseAtoms.<slice>`, `table.store`, `table.state`),
|
|
7
|
-
per-slice precedence (atoms beat state beat initialState beat baseAtoms),
|
|
8
|
-
`manualSorting` / `manualFiltering` / `manualPagination` / `manualGrouping` /
|
|
9
|
-
`manualExpanding` for server-side data, `autoResetPageIndex` / `autoResetAll`,
|
|
10
|
-
reset APIs (`resetSorting`, `resetPagination`, `reset()`), and the
|
|
11
|
-
`SortingState` / `PaginationState` / `RowSelectionState` / `ColumnFiltersState` /
|
|
12
|
-
`GroupingState` shapes. Foundational for every other skill.
|
|
13
|
-
type: core
|
|
14
|
-
library: tanstack-table
|
|
15
|
-
library_version: '9.0.0-alpha.48'
|
|
16
|
-
sources:
|
|
17
|
-
- TanStack/table:docs/framework/vanilla/guide/table-state.md
|
|
18
|
-
- TanStack/table:docs/framework/react/guide/table-state.md
|
|
19
|
-
- TanStack/table:packages/table-core/src/store-reactivity-bindings.ts
|
|
20
|
-
- TanStack/table:packages/table-core/src/reactivity.ts
|
|
21
|
-
- TanStack/table:packages/table-core/src/core/table/constructTable.ts
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Setup
|
|
25
|
-
|
|
26
|
-
TanStack Table v9 is built on TanStack Store. Each state slice (sorting, pagination, columnFilters, rowSelection, columnVisibility, …) is a separate atom. There are four ownership patterns, and the table reads from them in a fixed precedence.
|
|
27
|
-
|
|
28
|
-
```ts
|
|
29
|
-
import {
|
|
30
|
-
constructTable,
|
|
31
|
-
tableFeatures,
|
|
32
|
-
rowSortingFeature,
|
|
33
|
-
rowPaginationFeature,
|
|
34
|
-
createSortedRowModel,
|
|
35
|
-
createPaginatedRowModel,
|
|
36
|
-
sortFns,
|
|
37
|
-
} from '@tanstack/table-core'
|
|
38
|
-
|
|
39
|
-
const features = tableFeatures({ rowSortingFeature, rowPaginationFeature })
|
|
40
|
-
|
|
41
|
-
const table = constructTable({
|
|
42
|
-
features,
|
|
43
|
-
rowModels: {
|
|
44
|
-
sortedRowModel: createSortedRowModel(sortFns),
|
|
45
|
-
paginatedRowModel: createPaginatedRowModel(),
|
|
46
|
-
},
|
|
47
|
-
columns,
|
|
48
|
-
data,
|
|
49
|
-
// 1. initialState — set starting values; read once at construction
|
|
50
|
-
initialState: {
|
|
51
|
-
sorting: [{ id: 'lastName', desc: false }],
|
|
52
|
-
pagination: { pageIndex: 0, pageSize: 10 },
|
|
53
|
-
},
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
// Read APIs:
|
|
57
|
-
table.store.state // flat snapshot of every slice (no subscription)
|
|
58
|
-
table.atoms.sorting.get() // single-slice atom read (no subscription)
|
|
59
|
-
table.state // typed output of the `useTable` selector (framework adapters)
|
|
60
|
-
|
|
61
|
-
// Write APIs use the feature setters — they're atom-aware:
|
|
62
|
-
table.setSorting([{ id: 'firstName', desc: true }])
|
|
63
|
-
table.setPageIndex(2)
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
The four ownership patterns per slice:
|
|
67
|
-
|
|
68
|
-
| Pattern | When to use | Wins over |
|
|
69
|
-
| ----------------------------------- | ---------------------------------------------------- | ------------------------------- |
|
|
70
|
-
| internal (default) | Most slices in a simple table | nothing — baseline |
|
|
71
|
-
| `initialState.<slice>` | Set starting value only | internal default |
|
|
72
|
-
| `state.<slice>` + `on<Slice>Change` | v8-style controlled state | `initialState` |
|
|
73
|
-
| `atoms.<slice>` | v9 preferred — share with other components / queries | `state`+`on*Change` (silently!) |
|
|
74
|
-
|
|
75
|
-
## Core Patterns
|
|
76
|
-
|
|
77
|
-
### Internal state with `initialState`
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
const table = constructTable({
|
|
81
|
-
features,
|
|
82
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
83
|
-
columns,
|
|
84
|
-
data,
|
|
85
|
-
initialState: { sorting: [{ id: 'age', desc: false }] },
|
|
86
|
-
})
|
|
87
|
-
// State lives entirely inside the table.
|
|
88
|
-
table.setSorting([{ id: 'firstName', desc: true }])
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Controlled state with `state` + `on*Change` (v8-style)
|
|
92
|
-
|
|
93
|
-
```tsx
|
|
94
|
-
const [sorting, setSorting] = React.useState<SortingState>([])
|
|
95
|
-
|
|
96
|
-
const table = useTable({
|
|
97
|
-
features,
|
|
98
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
99
|
-
columns,
|
|
100
|
-
data,
|
|
101
|
-
state: { sorting },
|
|
102
|
-
onSortingChange: setSorting,
|
|
103
|
-
})
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
`state` and `on*Change` must be paired. Without the callback the table cannot update React state, so toggling sort appears to do nothing.
|
|
107
|
-
|
|
108
|
-
### External atom (v9 preferred for shared slices)
|
|
109
|
-
|
|
110
|
-
```tsx
|
|
111
|
-
import { useCreateAtom } from '@tanstack/react-store'
|
|
112
|
-
|
|
113
|
-
function MyTable() {
|
|
114
|
-
// Hoist or pass via context to share with queries / other components.
|
|
115
|
-
const paginationAtom = useCreateAtom<PaginationState>({
|
|
116
|
-
pageIndex: 0,
|
|
117
|
-
pageSize: 10,
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
const table = useTable({
|
|
121
|
-
features,
|
|
122
|
-
rowModels: { paginatedRowModel: createPaginatedRowModel() },
|
|
123
|
-
columns,
|
|
124
|
-
data,
|
|
125
|
-
atoms: { pagination: paginationAtom },
|
|
126
|
-
// no state.pagination, no onPaginationChange needed
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
return <Pager paginationAtom={paginationAtom} />
|
|
130
|
-
}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
The atom IS the source of truth; `table.atoms.pagination` derives from it.
|
|
134
|
-
|
|
135
|
-
### Server-side / manual mode
|
|
136
|
-
|
|
137
|
-
```tsx
|
|
138
|
-
const [pagination, setPagination] = React.useState({
|
|
139
|
-
pageIndex: 0,
|
|
140
|
-
pageSize: 10,
|
|
141
|
-
})
|
|
142
|
-
const dataQuery = useQuery({
|
|
143
|
-
queryKey: ['rows', pagination],
|
|
144
|
-
queryFn: () => fetchPage(pagination),
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
const table = useTable({
|
|
148
|
-
features: tableFeatures({ rowPaginationFeature }),
|
|
149
|
-
rowModels: {}, // can drop paginatedRowModel — server paginates
|
|
150
|
-
columns,
|
|
151
|
-
data: dataQuery.data?.rows ?? EMPTY,
|
|
152
|
-
rowCount: dataQuery.data?.rowCount, // server tells the table the total
|
|
153
|
-
state: { pagination },
|
|
154
|
-
onPaginationChange: setPagination,
|
|
155
|
-
manualPagination: true, // ← tell the table to NOT re-paginate
|
|
156
|
-
})
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
The same shape applies to `manualSorting`, `manualFiltering`, `manualGrouping`, `manualExpanding`. Without the flag, the table re-applies its client-side pipeline on top of already-prepared server data.
|
|
160
|
-
|
|
161
|
-
## Common Mistakes
|
|
162
|
-
|
|
163
|
-
### [CRITICAL] Passing both `state.<slice>` and `atoms.<slice>`
|
|
164
|
-
|
|
165
|
-
Wrong:
|
|
166
|
-
|
|
167
|
-
```tsx
|
|
168
|
-
// both ownership paths for the same slice
|
|
169
|
-
const paginationAtom = useCreateAtom<PaginationState>({ pageIndex: 0, pageSize: 10 })
|
|
170
|
-
const [pagination, setPagination] = React.useState(...)
|
|
171
|
-
|
|
172
|
-
const table = useTable({
|
|
173
|
-
features, rowModels: {...}, columns, data,
|
|
174
|
-
state: { pagination }, // ignored
|
|
175
|
-
onPaginationChange: setPagination,
|
|
176
|
-
atoms: { pagination: paginationAtom }, // wins
|
|
177
|
-
})
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Correct:
|
|
181
|
-
|
|
182
|
-
```tsx
|
|
183
|
-
// pick one ownership path per slice — here, external atoms
|
|
184
|
-
const paginationAtom = useCreateAtom<PaginationState>({ pageIndex: 0, pageSize: 10 })
|
|
185
|
-
|
|
186
|
-
const table = useTable({
|
|
187
|
-
features, rowModels: {...}, columns, data,
|
|
188
|
-
atoms: { pagination: paginationAtom },
|
|
189
|
-
})
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
When both are supplied, the external atom wins silently. `state.pagination` becomes dead config and `setPagination` writes never reach the table.
|
|
193
|
-
|
|
194
|
-
Source: docs/framework/react/guide/table-state.md; packages/table-core/src/core/table/constructTable.ts
|
|
195
|
-
|
|
196
|
-
### [CRITICAL] Using external `state` without the matching `on*Change` callback
|
|
197
|
-
|
|
198
|
-
Wrong:
|
|
199
|
-
|
|
200
|
-
```tsx
|
|
201
|
-
const [sorting, setSorting] = React.useState<SortingState>([])
|
|
202
|
-
const table = useTable({
|
|
203
|
-
features,
|
|
204
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
205
|
-
columns,
|
|
206
|
-
data,
|
|
207
|
-
state: { sorting }, // no onSortingChange
|
|
208
|
-
})
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Correct:
|
|
212
|
-
|
|
213
|
-
```tsx
|
|
214
|
-
const [sorting, setSorting] = React.useState<SortingState>([])
|
|
215
|
-
const table = useTable({
|
|
216
|
-
features,
|
|
217
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
218
|
-
columns,
|
|
219
|
-
data,
|
|
220
|
-
state: { sorting },
|
|
221
|
-
onSortingChange: setSorting,
|
|
222
|
-
})
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
The table keeps reading from `state.sorting`, so the UI looks stuck — sort toggles never make it back into React state.
|
|
226
|
-
|
|
227
|
-
Source: docs/framework/react/guide/table-state.md; examples/react/basic-external-state/src/main.tsx
|
|
228
|
-
|
|
229
|
-
### [HIGH] Using `initialState` to control or update state
|
|
230
|
-
|
|
231
|
-
Wrong:
|
|
232
|
-
|
|
233
|
-
```tsx
|
|
234
|
-
// updates to initialState are ignored after first render
|
|
235
|
-
function MyTable({ defaultSort }: { defaultSort: SortingState }) {
|
|
236
|
-
const table = useTable({
|
|
237
|
-
features,
|
|
238
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
239
|
-
columns,
|
|
240
|
-
data,
|
|
241
|
-
initialState: { sorting: defaultSort }, // later changes never sync
|
|
242
|
-
})
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
Correct:
|
|
247
|
-
|
|
248
|
-
```tsx
|
|
249
|
-
function MyTable({ defaultSort }: { defaultSort: SortingState }) {
|
|
250
|
-
const [sorting, setSorting] = React.useState(defaultSort)
|
|
251
|
-
const table = useTable({
|
|
252
|
-
features,
|
|
253
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
254
|
-
columns,
|
|
255
|
-
data,
|
|
256
|
-
state: { sorting },
|
|
257
|
-
onSortingChange: setSorting,
|
|
258
|
-
})
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
`initialState` is read once at construction to seed `baseAtoms`. Mutating it later does nothing.
|
|
263
|
-
|
|
264
|
-
Source: docs/framework/vanilla/guide/table-state.md; docs/framework/react/guide/table-state.md
|
|
265
|
-
|
|
266
|
-
### [HIGH] Writing to `table.baseAtoms.<slice>` while `atoms.<slice>` owns the slice
|
|
267
|
-
|
|
268
|
-
Wrong:
|
|
269
|
-
|
|
270
|
-
```ts
|
|
271
|
-
const paginationAtom = useCreateAtom<PaginationState>({ pageIndex: 0, pageSize: 10 })
|
|
272
|
-
const table = useTable({ features, rowModels: {...}, columns, data, atoms: { pagination: paginationAtom } })
|
|
273
|
-
|
|
274
|
-
table.baseAtoms.pagination.set((old) => ({ ...old, pageIndex: 0 }))
|
|
275
|
-
// baseAtom updated, but table.atoms.pagination still reads from paginationAtom
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
Correct:
|
|
279
|
-
|
|
280
|
-
```ts
|
|
281
|
-
// Write to the external atom directly, OR use the feature's setter API
|
|
282
|
-
paginationAtom.set((old) => ({ ...old, pageIndex: 0 }))
|
|
283
|
-
// or
|
|
284
|
-
table.setPageIndex(0) // setter writes through the slice's updater (atom-aware)
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
When an external atom owns a slice, `table.atoms.<slice>` derives from it — not from `baseAtoms`. Direct base-atom writes drift and never surface in the UI.
|
|
288
|
-
|
|
289
|
-
Source: docs/framework/vanilla/guide/table-state.md; packages/table-core/src/core/table/constructTable.ts
|
|
290
|
-
|
|
291
|
-
### [CRITICAL] Forgetting `manualSorting` / `manualFiltering` / `manualPagination` for server-side data
|
|
292
|
-
|
|
293
|
-
Wrong:
|
|
294
|
-
|
|
295
|
-
```tsx
|
|
296
|
-
// data is already paginated server-side, but table still slices it
|
|
297
|
-
const dataQuery = useQuery({
|
|
298
|
-
queryKey: ['data', pagination],
|
|
299
|
-
queryFn: fetchPage,
|
|
300
|
-
})
|
|
301
|
-
const table = useTable({
|
|
302
|
-
features,
|
|
303
|
-
rowModels: { paginatedRowModel: createPaginatedRowModel() },
|
|
304
|
-
columns,
|
|
305
|
-
data: dataQuery.data?.rows ?? [],
|
|
306
|
-
rowCount: dataQuery.data?.rowCount,
|
|
307
|
-
atoms: { pagination: paginationAtom },
|
|
308
|
-
// ❌ missing manualPagination: true
|
|
309
|
-
})
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
Correct:
|
|
313
|
-
|
|
314
|
-
```tsx
|
|
315
|
-
const table = useTable({
|
|
316
|
-
features,
|
|
317
|
-
rowModels: {}, // drop paginatedRowModel if fully server-side
|
|
318
|
-
columns,
|
|
319
|
-
data: dataQuery.data?.rows ?? [],
|
|
320
|
-
rowCount: dataQuery.data?.rowCount,
|
|
321
|
-
atoms: { pagination: paginationAtom },
|
|
322
|
-
manualPagination: true,
|
|
323
|
-
})
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
Without the manual flag, the table re-applies its client-side row models on top of already-prepared server data — wrong rows, broken page math, blank pages.
|
|
327
|
-
|
|
328
|
-
Source: docs/framework/react/guide/table-state.md; packages/table-core/src/features/row-pagination/rowPaginationFeature.types.ts
|
|
329
|
-
|
|
330
|
-
### [HIGH] Using `table.reset()` to clear externally owned state
|
|
331
|
-
|
|
332
|
-
Wrong:
|
|
333
|
-
|
|
334
|
-
```ts
|
|
335
|
-
// external atom keeps its current value; only baseAtoms reset
|
|
336
|
-
const sortingAtom = useCreateAtom<SortingState>([])
|
|
337
|
-
const table = useTable({
|
|
338
|
-
features, rowModels: {...}, columns, data,
|
|
339
|
-
atoms: { sorting: sortingAtom },
|
|
340
|
-
})
|
|
341
|
-
table.reset() // sortingAtom is NOT cleared
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
Correct:
|
|
345
|
-
|
|
346
|
-
```ts
|
|
347
|
-
// Use feature-specific reset — atom-aware
|
|
348
|
-
table.resetSorting()
|
|
349
|
-
// or, to clear the external atom specifically:
|
|
350
|
-
sortingAtom.set([])
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
`table.reset()` only resets `baseAtoms` to `initialState`; slices owned by external atoms or external `state` are untouched. The atom split makes `reset()` less safe than v8.
|
|
354
|
-
|
|
355
|
-
Source: docs/framework/vanilla/guide/table-state.md; packages/table-core/src/core/table/coreTablesFeature.utils.ts
|
|
356
|
-
|
|
357
|
-
### [CRITICAL] Reimplementing what built-in setters provide
|
|
358
|
-
|
|
359
|
-
Wrong:
|
|
360
|
-
|
|
361
|
-
```ts
|
|
362
|
-
// Reimplements sorting state manually instead of using the API
|
|
363
|
-
const [sorting, setSorting] = useState([])
|
|
364
|
-
const sortedData = useMemo(() => [...data].sort(/* ... */), [data, sorting])
|
|
365
|
-
// then uses sortedData directly, bypassing the table
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
Correct:
|
|
369
|
-
|
|
370
|
-
```ts
|
|
371
|
-
const table = useTable({
|
|
372
|
-
features: tableFeatures({ rowSortingFeature }),
|
|
373
|
-
rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
374
|
-
columns,
|
|
375
|
-
data,
|
|
376
|
-
})
|
|
377
|
-
// table.setSorting(...), column.toggleSorting(), header.getToggleSortingHandler()
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
The setters honor reset behavior, multi-sort, internal invariants. Hand-rolled state loops skip all of that.
|
|
381
|
-
|
|
382
|
-
Source: maintainer interview (Phase 4, 2026-05-17)
|
|
383
|
-
|
|
384
|
-
## See also
|
|
385
|
-
|
|
386
|
-
- `tanstack-table/setup` — how `features` and `rowModels` are wired
|
|
387
|
-
- `tanstack-table/pagination`, `tanstack-table/sorting`, `tanstack-table/filtering` — feature-specific `manual*` and reset semantics
|
|
388
|
-
- `tanstack-table/migrate-v8-to-v9` — `table.getState()` → `table.store.state` / `table.atoms.<slice>.get()`
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
import type { RowData } from '../types/type-utils'
|
|
2
|
-
import type { TableFeatures } from '../types/TableFeatures'
|
|
3
|
-
import type { Row } from '../types/Row'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Sums numeric child-row values for a grouped column.
|
|
7
|
-
*
|
|
8
|
-
* Non-number values contribute `0`. Child rows are used so nested group totals
|
|
9
|
-
* can reuse already aggregated values.
|
|
10
|
-
*/
|
|
11
|
-
export function aggregationFn_sum<
|
|
12
|
-
TFeatures extends TableFeatures,
|
|
13
|
-
TData extends RowData,
|
|
14
|
-
>(
|
|
15
|
-
columnId: string,
|
|
16
|
-
_leafRows: Array<Row<TFeatures, TData>>,
|
|
17
|
-
childRows: Array<Row<TFeatures, TData>>,
|
|
18
|
-
) {
|
|
19
|
-
// It's faster to just add the aggregations together instead of
|
|
20
|
-
// process leaf nodes individually
|
|
21
|
-
return childRows.reduce((sumValue, next) => {
|
|
22
|
-
const nextValue = next.getValue(columnId)
|
|
23
|
-
return sumValue + (typeof nextValue === 'number' ? nextValue : 0)
|
|
24
|
-
}, 0)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Finds the minimum numeric child-row value for a grouped column.
|
|
29
|
-
*
|
|
30
|
-
* Nullish and non-number values are ignored. Returns `undefined` when no
|
|
31
|
-
* numeric value is found.
|
|
32
|
-
*/
|
|
33
|
-
export function aggregationFn_min<
|
|
34
|
-
TFeatures extends TableFeatures,
|
|
35
|
-
TData extends RowData,
|
|
36
|
-
>(
|
|
37
|
-
columnId: string,
|
|
38
|
-
_leafRows: Array<Row<TFeatures, TData>>,
|
|
39
|
-
childRows: Array<Row<TFeatures, TData>>,
|
|
40
|
-
) {
|
|
41
|
-
let minValue: number | undefined
|
|
42
|
-
|
|
43
|
-
childRows.forEach((row) => {
|
|
44
|
-
const value = row.getValue(columnId)
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
value != null &&
|
|
48
|
-
typeof value === 'number' &&
|
|
49
|
-
(minValue === undefined || value < minValue)
|
|
50
|
-
) {
|
|
51
|
-
minValue = value
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
return minValue
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Finds the maximum numeric child-row value for a grouped column.
|
|
60
|
-
*
|
|
61
|
-
* Nullish and non-number values are ignored. Returns `undefined` when no
|
|
62
|
-
* numeric value is found.
|
|
63
|
-
*/
|
|
64
|
-
export function aggregationFn_max<
|
|
65
|
-
TFeatures extends TableFeatures,
|
|
66
|
-
TData extends RowData,
|
|
67
|
-
>(
|
|
68
|
-
columnId: string,
|
|
69
|
-
_leafRows: Array<Row<TFeatures, TData>>,
|
|
70
|
-
childRows: Array<Row<TFeatures, TData>>,
|
|
71
|
-
) {
|
|
72
|
-
let maxValue: number | undefined
|
|
73
|
-
|
|
74
|
-
childRows.forEach((row) => {
|
|
75
|
-
const value = row.getValue(columnId)
|
|
76
|
-
if (
|
|
77
|
-
value != null &&
|
|
78
|
-
typeof value === 'number' &&
|
|
79
|
-
(maxValue === undefined || value > maxValue)
|
|
80
|
-
) {
|
|
81
|
-
maxValue = value
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
return maxValue
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Finds the numeric extent for a grouped column.
|
|
90
|
-
*
|
|
91
|
-
* Returns `[min, max]`, where each entry is `undefined` when no numeric value is
|
|
92
|
-
* present.
|
|
93
|
-
*/
|
|
94
|
-
export function aggregationFn_extent<
|
|
95
|
-
TFeatures extends TableFeatures,
|
|
96
|
-
TData extends RowData,
|
|
97
|
-
>(
|
|
98
|
-
columnId: string,
|
|
99
|
-
_leafRows: Array<Row<TFeatures, TData>>,
|
|
100
|
-
childRows: Array<Row<TFeatures, TData>>,
|
|
101
|
-
) {
|
|
102
|
-
let minValue: number | undefined
|
|
103
|
-
let maxValue: number | undefined
|
|
104
|
-
|
|
105
|
-
childRows.forEach((row) => {
|
|
106
|
-
const value = row.getValue(columnId)
|
|
107
|
-
if (value != null && typeof value === 'number') {
|
|
108
|
-
if (minValue === undefined) {
|
|
109
|
-
minValue = maxValue = value
|
|
110
|
-
} else {
|
|
111
|
-
if (minValue > value) minValue = value
|
|
112
|
-
if (maxValue! < value) maxValue = value
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
return [minValue, maxValue]
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Averages numeric leaf-row values for a grouped column.
|
|
122
|
-
*
|
|
123
|
-
* Number-like values are coerced with unary `+`; nullish and non-numeric values
|
|
124
|
-
* are ignored.
|
|
125
|
-
*/
|
|
126
|
-
export function aggregationFn_mean<
|
|
127
|
-
TFeatures extends TableFeatures,
|
|
128
|
-
TData extends RowData,
|
|
129
|
-
>(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
|
|
130
|
-
let count = 0
|
|
131
|
-
let sumValue = 0
|
|
132
|
-
|
|
133
|
-
leafRows.forEach((row) => {
|
|
134
|
-
const value = row.getValue(columnId)
|
|
135
|
-
if (value != null && typeof value === 'number') {
|
|
136
|
-
++count
|
|
137
|
-
sumValue += value
|
|
138
|
-
} else if (value != null) {
|
|
139
|
-
const numValue = +value
|
|
140
|
-
if (!Number.isNaN(numValue)) {
|
|
141
|
-
++count
|
|
142
|
-
sumValue += numValue
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
if (count) return sumValue / count
|
|
148
|
-
|
|
149
|
-
return
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Computes the median of numeric leaf-row values for a grouped column.
|
|
154
|
-
*
|
|
155
|
-
* All values must be numbers. If any value is non-numeric, or no leaf rows are
|
|
156
|
-
* present, the result is `undefined`.
|
|
157
|
-
*/
|
|
158
|
-
export function aggregationFn_median<
|
|
159
|
-
TFeatures extends TableFeatures,
|
|
160
|
-
TData extends RowData,
|
|
161
|
-
>(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
|
|
162
|
-
if (!leafRows.length) {
|
|
163
|
-
return
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const values: Array<number> = new Array(leafRows.length)
|
|
167
|
-
for (let i = 0; i < leafRows.length; i++) {
|
|
168
|
-
const v = leafRows[i]!.getValue(columnId)
|
|
169
|
-
if (typeof v !== 'number') return
|
|
170
|
-
values[i] = v
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if (values.length === 1) {
|
|
174
|
-
return values[0]
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const mid = Math.floor(values.length / 2)
|
|
178
|
-
values.sort((a, b) => a - b)
|
|
179
|
-
return values.length % 2 !== 0
|
|
180
|
-
? values[mid]
|
|
181
|
-
: (values[mid - 1]! + values[mid]!) / 2
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Collects unique leaf-row values for a grouped column.
|
|
186
|
-
*
|
|
187
|
-
* Values are compared with JavaScript `Set` semantics.
|
|
188
|
-
*/
|
|
189
|
-
export function aggregationFn_unique<
|
|
190
|
-
TFeatures extends TableFeatures,
|
|
191
|
-
TData extends RowData,
|
|
192
|
-
>(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
|
|
193
|
-
const set = new Set<unknown>()
|
|
194
|
-
for (let i = 0; i < leafRows.length; i++) {
|
|
195
|
-
set.add(leafRows[i]!.getValue(columnId))
|
|
196
|
-
}
|
|
197
|
-
return Array.from(set.values())
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Counts unique leaf-row values for a grouped column.
|
|
202
|
-
*
|
|
203
|
-
* Values are compared with JavaScript `Set` semantics.
|
|
204
|
-
*/
|
|
205
|
-
export function aggregationFn_uniqueCount<
|
|
206
|
-
TFeatures extends TableFeatures,
|
|
207
|
-
TData extends RowData,
|
|
208
|
-
>(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
|
|
209
|
-
const set = new Set<unknown>()
|
|
210
|
-
for (let i = 0; i < leafRows.length; i++) {
|
|
211
|
-
set.add(leafRows[i]!.getValue(columnId))
|
|
212
|
-
}
|
|
213
|
-
return set.size
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Counts the number of leaf rows in the group.
|
|
218
|
-
*
|
|
219
|
-
* The column id is ignored because the result is based only on group size.
|
|
220
|
-
*/
|
|
221
|
-
export function aggregationFn_count<
|
|
222
|
-
TFeatures extends TableFeatures,
|
|
223
|
-
TData extends RowData,
|
|
224
|
-
>(_columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
|
|
225
|
-
return leafRows.length
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* The built-in aggregation function registry.
|
|
230
|
-
*
|
|
231
|
-
* Pass this object to grouped row model creation or extend it with custom aggregation functions for grouped columns.
|
|
232
|
-
*/
|
|
233
|
-
export const aggregationFns = {
|
|
234
|
-
sum: aggregationFn_sum,
|
|
235
|
-
min: aggregationFn_min,
|
|
236
|
-
max: aggregationFn_max,
|
|
237
|
-
extent: aggregationFn_extent,
|
|
238
|
-
mean: aggregationFn_mean,
|
|
239
|
-
median: aggregationFn_median,
|
|
240
|
-
unique: aggregationFn_unique,
|
|
241
|
-
uniqueCount: aggregationFn_uniqueCount,
|
|
242
|
-
count: aggregationFn_count,
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
export type BuiltInAggregationFn = keyof typeof aggregationFns
|