@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
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Table_Internal } from './types/Table'
|
|
2
2
|
import type { NoInfer, RowData, Updater } from './types/type-utils'
|
|
3
3
|
import type { TableFeatures } from './types/TableFeatures'
|
|
4
4
|
import type { TableState, TableState_All } from './types/TableState'
|
|
@@ -31,12 +31,17 @@ export function cloneState<T>(value: T): T {
|
|
|
31
31
|
return value
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const copy: Record<string, unknown> = {}
|
|
34
|
+
const copy: Record<string, unknown> = proto === null ? makeObjectMap() : {}
|
|
35
35
|
const keys = Object.keys(value)
|
|
36
36
|
|
|
37
37
|
for (let i = 0; i < keys.length; i++) {
|
|
38
38
|
const key = keys[i]!
|
|
39
|
-
copy
|
|
39
|
+
Object.defineProperty(copy, key, {
|
|
40
|
+
configurable: true,
|
|
41
|
+
enumerable: true,
|
|
42
|
+
value: cloneState((value as Record<string, unknown>)[key]),
|
|
43
|
+
writable: true,
|
|
44
|
+
})
|
|
40
45
|
}
|
|
41
46
|
|
|
42
47
|
return copy as T
|
|
@@ -45,6 +50,45 @@ export function cloneState<T>(value: T): T {
|
|
|
45
50
|
return value
|
|
46
51
|
}
|
|
47
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Copies prototype-instance own properties without carrying over lazy memo
|
|
55
|
+
* closures or the per-row cell cache, both of which are bound to the source
|
|
56
|
+
* instance (cached cells reference the source row).
|
|
57
|
+
*/
|
|
58
|
+
export function copyInstancePropertiesWithoutMemos<
|
|
59
|
+
TTarget extends Record<string, any>,
|
|
60
|
+
TSource extends Record<string, any>,
|
|
61
|
+
>(target: TTarget, source: TSource): TTarget & TSource {
|
|
62
|
+
const keys = Object.keys(source)
|
|
63
|
+
const targetRecord = target as Record<string, any>
|
|
64
|
+
|
|
65
|
+
for (let i = 0; i < keys.length; i++) {
|
|
66
|
+
const key = keys[i]!
|
|
67
|
+
if (!key.startsWith('_memo_') && key !== '_cellsCache') {
|
|
68
|
+
targetRecord[key] = source[key]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return target as TTarget & TSource
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Creates an object intended only for string-keyed dictionary lookups.
|
|
77
|
+
*
|
|
78
|
+
* The null prototype keeps user-controlled ids such as `__proto__` and
|
|
79
|
+
* `hasOwnProperty` as plain data keys.
|
|
80
|
+
*/
|
|
81
|
+
export function makeObjectMap<TValue = unknown>(): Record<string, TValue> {
|
|
82
|
+
return Object.create(null) as Record<string, TValue>
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Checks whether an object owns a key, including null-prototype dictionaries.
|
|
87
|
+
*/
|
|
88
|
+
export function hasOwn(obj: object, key: PropertyKey): boolean {
|
|
89
|
+
return Object.prototype.hasOwnProperty.call(obj, key)
|
|
90
|
+
}
|
|
91
|
+
|
|
48
92
|
/**
|
|
49
93
|
* Creates a table state updater for a single state slice.
|
|
50
94
|
*
|
|
@@ -53,7 +97,16 @@ export function cloneState<T>(value: T): T {
|
|
|
53
97
|
export function makeStateUpdater<
|
|
54
98
|
TFeatures extends TableFeatures,
|
|
55
99
|
K extends (string & {}) | keyof TableState_All | keyof TableState<TFeatures>,
|
|
56
|
-
>(
|
|
100
|
+
>(
|
|
101
|
+
key: K,
|
|
102
|
+
// Minimal structural shape so any table view (public `Table`,
|
|
103
|
+
// `Table_Internal`, or a custom plugin table) can be passed without forcing
|
|
104
|
+
// the compiler to relate the full table types.
|
|
105
|
+
instance: {
|
|
106
|
+
readonly options: { readonly atoms?: object | undefined }
|
|
107
|
+
readonly baseAtoms: object
|
|
108
|
+
},
|
|
109
|
+
) {
|
|
57
110
|
return (updater: Updater<TableState<any>[K & keyof TableState<any>]>) => {
|
|
58
111
|
const externalAtom = (instance.options as any).atoms?.[key]
|
|
59
112
|
const targetAtom = externalAtom ?? (instance.baseAtoms as any)[key]
|
|
@@ -201,8 +254,7 @@ export function tableMemo<
|
|
|
201
254
|
let debugCache: boolean | undefined
|
|
202
255
|
|
|
203
256
|
if (process.env.NODE_ENV === 'development') {
|
|
204
|
-
const {
|
|
205
|
-
debugCache = _debugCache
|
|
257
|
+
const { debugAll } = table.options
|
|
206
258
|
const { parentName } = getFunctionNameInfo(fnName, '.')
|
|
207
259
|
|
|
208
260
|
const debugByParent =
|
|
@@ -307,7 +359,7 @@ export function tableMemo<
|
|
|
307
359
|
})
|
|
308
360
|
}
|
|
309
361
|
|
|
310
|
-
export interface API<
|
|
362
|
+
export interface API<_TDeps extends ReadonlyArray<any>, _TDepArgs> {
|
|
311
363
|
fn: (...args: any) => any
|
|
312
364
|
memoDeps?: (depArgs?: any) => [...any] | undefined
|
|
313
365
|
}
|
|
@@ -362,7 +414,7 @@ export function assignTableAPIs<
|
|
|
362
414
|
}
|
|
363
415
|
}
|
|
364
416
|
|
|
365
|
-
export interface PrototypeAPI<
|
|
417
|
+
export interface PrototypeAPI<_TDeps extends ReadonlyArray<any>, _TDepArgs> {
|
|
366
418
|
fn: (self: any, ...args: any) => any
|
|
367
419
|
memoDeps?: (self: any, depArgs?: any) => [...any] | undefined
|
|
368
420
|
}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { table_autoResetPageIndex } from '../features/row-pagination/rowPaginationFeature.utils'
|
|
2
|
+
import { table_autoResetExpanded } from '../features/row-expanding/rowExpandingFeature.utils'
|
|
3
|
+
import {
|
|
4
|
+
tableWorkerPipeline,
|
|
5
|
+
tableWorkerStageStateDeps,
|
|
6
|
+
} from './tableWorkerProtocol'
|
|
7
|
+
import type { Table_Internal } from '../types/Table'
|
|
8
|
+
import type { TableFeature } from '../types/TableFeatures'
|
|
9
|
+
import type { TableWorkerDataPayload } from './rebuildRowModel'
|
|
10
|
+
import type {
|
|
11
|
+
TableState_WorkerRowModels,
|
|
12
|
+
TableWorkerResponse,
|
|
13
|
+
TableWorkerStage,
|
|
14
|
+
TableWorkerStagePayload,
|
|
15
|
+
} from './tableWorkerProtocol'
|
|
16
|
+
|
|
17
|
+
// Importing anything from this module (e.g. `workerRowModelsFeature`)
|
|
18
|
+
// registers the plugin key and its state slice with the core type maps, so
|
|
19
|
+
// userland needs no `declare module` of its own. Apps that never use worker
|
|
20
|
+
// row models never load this module and never see the types.
|
|
21
|
+
declare module '../types/TableFeatures' {
|
|
22
|
+
interface Plugins {
|
|
23
|
+
workerRowModelsFeature: TableFeature
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
declare module '../types/TableState' {
|
|
27
|
+
interface TableState_FeatureMap {
|
|
28
|
+
workerRowModelsFeature: TableState_WorkerRowModels
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface TableWorkerOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Creates the dedicated worker that runs the shadow table. The worker entry
|
|
35
|
+
* must call `initTableWorker` with the same columns and processing config.
|
|
36
|
+
*
|
|
37
|
+
* The `new Worker(new URL(...))` expression must live in your code (not the
|
|
38
|
+
* library) so your bundler can statically discover and bundle the worker
|
|
39
|
+
* entry file.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* createWorker: () =>
|
|
44
|
+
* new Worker(new URL('./table.worker.ts', import.meta.url), {
|
|
45
|
+
* type: 'module',
|
|
46
|
+
* })
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
createWorker: () => Worker
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface TableWorkerBridge {
|
|
53
|
+
worker: Worker | null
|
|
54
|
+
/** The worker errored (load failure or uncaught throw); stop posting. */
|
|
55
|
+
failed: boolean
|
|
56
|
+
lastData: unknown
|
|
57
|
+
dataVersion: number
|
|
58
|
+
requestId: number
|
|
59
|
+
resultRequestId: number
|
|
60
|
+
/** A process request has been posted and its result has not arrived yet. */
|
|
61
|
+
inFlight: boolean
|
|
62
|
+
/** State changed since the last posted request; post when possible. */
|
|
63
|
+
needsProcess: boolean
|
|
64
|
+
sentAt: number
|
|
65
|
+
/** The stages registered on this table (grows as factories initialize). */
|
|
66
|
+
stages: Set<TableWorkerStage>
|
|
67
|
+
/** Snapshot of state refs + stage count captured at the last post. */
|
|
68
|
+
sentState: Record<string, unknown> | null
|
|
69
|
+
sentStageCount: number
|
|
70
|
+
/** Latest observed state refs, posted on the trailing edge if in flight. */
|
|
71
|
+
lastState: Record<string, unknown>
|
|
72
|
+
results: { [K in TableWorkerStage]?: TableWorkerDataPayload }
|
|
73
|
+
/** Bumped per stage only when that stage's payload actually changed. */
|
|
74
|
+
stageVersions: { [K in TableWorkerStage]?: number }
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
type AnyTable = Table_Internal<any, any>
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* A handle shared by every worker-backed row model on a table. It owns the
|
|
81
|
+
* worker instance and the per-table request/result bookkeeping, so registering
|
|
82
|
+
* one stage or four costs exactly one worker and one round trip per change.
|
|
83
|
+
*/
|
|
84
|
+
export interface TableWorker {
|
|
85
|
+
_options: TableWorkerOptions
|
|
86
|
+
_bridges: WeakMap<object, TableWorkerBridge>
|
|
87
|
+
_liveBridges: Set<TableWorkerBridge>
|
|
88
|
+
/**
|
|
89
|
+
* Terminates every worker created through this handle and resets the
|
|
90
|
+
* bookkeeping. Safe to call at any time: the next row model read lazily
|
|
91
|
+
* recreates the worker and re-sends the data (self-healing). Note that
|
|
92
|
+
* nothing calls this automatically yet; React StrictMode double-mounts and
|
|
93
|
+
* HMR updates still leak a worker in development until the reactivity
|
|
94
|
+
* bindings grow a real `unmount` hook.
|
|
95
|
+
*/
|
|
96
|
+
terminate: () => void
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Registers the `workerRowModels` state slice
|
|
101
|
+
* (`{ version, isPending, lastComputeMs, lastRoundTripMs }`). Worker results
|
|
102
|
+
* land by bumping `version`, so re-renders flow through the exact same state
|
|
103
|
+
* mechanism as every other table state change.
|
|
104
|
+
*/
|
|
105
|
+
export const workerRowModelsFeature: TableFeature = {
|
|
106
|
+
getInitialState: (initialState: any) => ({
|
|
107
|
+
workerRowModels: { version: 0, isPending: false },
|
|
108
|
+
...initialState,
|
|
109
|
+
}),
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Creates the shared worker handle for a table's worker-backed row models.
|
|
114
|
+
* Pass it to `createWorkerRowModel()` once per stage you want offloaded.
|
|
115
|
+
*/
|
|
116
|
+
export function createTableWorker(options: TableWorkerOptions): TableWorker {
|
|
117
|
+
const liveBridges = new Set<TableWorkerBridge>()
|
|
118
|
+
return {
|
|
119
|
+
_options: options,
|
|
120
|
+
_bridges: new WeakMap(),
|
|
121
|
+
_liveBridges: liveBridges,
|
|
122
|
+
terminate: () => {
|
|
123
|
+
for (const bridge of liveBridges) {
|
|
124
|
+
bridge.worker?.terminate()
|
|
125
|
+
bridge.worker = null
|
|
126
|
+
bridge.failed = false
|
|
127
|
+
bridge.lastData = undefined
|
|
128
|
+
bridge.inFlight = false
|
|
129
|
+
bridge.needsProcess = true
|
|
130
|
+
bridge.sentState = null
|
|
131
|
+
bridge.sentStageCount = 0
|
|
132
|
+
}
|
|
133
|
+
liveBridges.clear()
|
|
134
|
+
},
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function getTableWorkerBridge(
|
|
139
|
+
tableWorker: TableWorker,
|
|
140
|
+
table: AnyTable,
|
|
141
|
+
): TableWorkerBridge {
|
|
142
|
+
let bridge = tableWorker._bridges.get(table)
|
|
143
|
+
if (!bridge) {
|
|
144
|
+
bridge = {
|
|
145
|
+
worker: null,
|
|
146
|
+
failed: false,
|
|
147
|
+
lastData: undefined,
|
|
148
|
+
dataVersion: 0,
|
|
149
|
+
requestId: 0,
|
|
150
|
+
resultRequestId: 0,
|
|
151
|
+
inFlight: false,
|
|
152
|
+
needsProcess: true,
|
|
153
|
+
sentAt: 0,
|
|
154
|
+
stages: new Set(),
|
|
155
|
+
sentState: null,
|
|
156
|
+
sentStageCount: 0,
|
|
157
|
+
lastState: {},
|
|
158
|
+
results: {},
|
|
159
|
+
stageVersions: {},
|
|
160
|
+
}
|
|
161
|
+
tableWorker._bridges.set(table, bridge)
|
|
162
|
+
}
|
|
163
|
+
return bridge
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** Shallow reference comparison; atoms return stable refs when unchanged. */
|
|
167
|
+
function statesEqual(
|
|
168
|
+
a: Record<string, unknown> | null,
|
|
169
|
+
b: Record<string, unknown>,
|
|
170
|
+
): boolean {
|
|
171
|
+
if (a === null) return false
|
|
172
|
+
const aKeys = Object.keys(a)
|
|
173
|
+
const bKeys = Object.keys(b)
|
|
174
|
+
if (aKeys.length !== bKeys.length) return false
|
|
175
|
+
for (const key of bKeys) {
|
|
176
|
+
if (a[key] !== b[key]) return false
|
|
177
|
+
}
|
|
178
|
+
return true
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function setWorkerRowModelsState(
|
|
182
|
+
table: AnyTable,
|
|
183
|
+
update: (prev: any) => Record<string, unknown>,
|
|
184
|
+
) {
|
|
185
|
+
const stateAtom = (table.baseAtoms as Record<string, any>).workerRowModels
|
|
186
|
+
stateAtom?.set((prev: any) => update(prev ?? { version: 0 }))
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function postProcess(table: AnyTable, bridge: TableWorkerBridge): void {
|
|
190
|
+
const stages = tableWorkerPipeline.filter((stage) => bridge.stages.has(stage))
|
|
191
|
+
bridge.needsProcess = false
|
|
192
|
+
bridge.sentState = bridge.lastState
|
|
193
|
+
bridge.sentStageCount = bridge.stages.size
|
|
194
|
+
bridge.inFlight = true
|
|
195
|
+
bridge.sentAt = performance.now()
|
|
196
|
+
const requestId = ++bridge.requestId
|
|
197
|
+
bridge.worker!.postMessage({
|
|
198
|
+
type: 'process',
|
|
199
|
+
requestId,
|
|
200
|
+
dataVersion: bridge.dataVersion,
|
|
201
|
+
stages,
|
|
202
|
+
state: bridge.lastState,
|
|
203
|
+
})
|
|
204
|
+
// postProcess can run during render (via sync); defer the pending write.
|
|
205
|
+
table._reactivity.schedule(() => {
|
|
206
|
+
if (bridge.requestId === requestId && bridge.resultRequestId < requestId) {
|
|
207
|
+
setWorkerRowModelsState(table, (prev) => ({ ...prev, isPending: true }))
|
|
208
|
+
}
|
|
209
|
+
})
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function handleResult(
|
|
213
|
+
table: AnyTable,
|
|
214
|
+
bridge: TableWorkerBridge,
|
|
215
|
+
message: TableWorkerResponse,
|
|
216
|
+
) {
|
|
217
|
+
if (message.requestId !== bridge.requestId) return
|
|
218
|
+
bridge.inFlight = false
|
|
219
|
+
bridge.resultRequestId = message.requestId
|
|
220
|
+
|
|
221
|
+
// A data change raced this request: the result is for the old dataset.
|
|
222
|
+
// Drop it and immediately re-process against the new data.
|
|
223
|
+
if (message.dataVersion !== bridge.dataVersion) {
|
|
224
|
+
postProcess(table, bridge)
|
|
225
|
+
return
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Merge stage payloads: `unchanged` keeps the previous result (and its
|
|
229
|
+
// rebuilt model, via the per-stage version), changed payloads replace it.
|
|
230
|
+
let anyChanged = false
|
|
231
|
+
let groupedChanged = false
|
|
232
|
+
for (const [stage, payload] of Object.entries(message.stages) as Array<
|
|
233
|
+
[TableWorkerStage, TableWorkerStagePayload]
|
|
234
|
+
>) {
|
|
235
|
+
if (payload.kind === 'unchanged') continue
|
|
236
|
+
bridge.results[stage] = payload
|
|
237
|
+
bridge.stageVersions[stage] = (bridge.stageVersions[stage] ?? 0) + 1
|
|
238
|
+
anyChanged = true
|
|
239
|
+
if (stage === 'grouped') groupedChanged = true
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
const roundTripMs = performance.now() - bridge.sentAt
|
|
243
|
+
setWorkerRowModelsState(table, (prev) => ({
|
|
244
|
+
version: (prev.version ?? 0) + 1,
|
|
245
|
+
isPending: false,
|
|
246
|
+
lastComputeMs: message.computeMs,
|
|
247
|
+
lastRoundTripMs: roundTripMs,
|
|
248
|
+
}))
|
|
249
|
+
|
|
250
|
+
// The async equivalent of the sync models' `onAfterUpdate` hooks. The
|
|
251
|
+
// worker's unchanged-detection is its memo identity, so `groupedChanged`
|
|
252
|
+
// mirrors exactly when the sync grouped model would have recomputed (and
|
|
253
|
+
// reset expansion).
|
|
254
|
+
if (anyChanged) {
|
|
255
|
+
table._reactivity.schedule(() =>
|
|
256
|
+
table._reactivity.untrack(() => {
|
|
257
|
+
if (groupedChanged) {
|
|
258
|
+
table_autoResetExpanded(table)
|
|
259
|
+
}
|
|
260
|
+
table_autoResetPageIndex(table)
|
|
261
|
+
}),
|
|
262
|
+
)
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Trailing edge: state changed while this request was in flight.
|
|
266
|
+
if (bridge.needsProcess) {
|
|
267
|
+
postProcess(table, bridge)
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function handleError(
|
|
272
|
+
table: AnyTable,
|
|
273
|
+
bridge: TableWorkerBridge,
|
|
274
|
+
event: unknown,
|
|
275
|
+
) {
|
|
276
|
+
if (bridge.failed) return
|
|
277
|
+
bridge.failed = true
|
|
278
|
+
bridge.inFlight = false
|
|
279
|
+
console.error(
|
|
280
|
+
'[table-worker] The table worker failed; worker row models will keep ' +
|
|
281
|
+
'their last results and stop updating. Check that the worker entry ' +
|
|
282
|
+
'loads and that its initTableWorker() config is thread-portable.',
|
|
283
|
+
event,
|
|
284
|
+
)
|
|
285
|
+
bridge.worker?.terminate()
|
|
286
|
+
bridge.worker = null
|
|
287
|
+
setWorkerRowModelsState(table, (prev) => ({ ...prev, isPending: false }))
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function ensureWorker(
|
|
291
|
+
tableWorker: TableWorker,
|
|
292
|
+
table: AnyTable,
|
|
293
|
+
bridge: TableWorkerBridge,
|
|
294
|
+
) {
|
|
295
|
+
if (bridge.worker) return
|
|
296
|
+
bridge.worker = tableWorker._options.createWorker()
|
|
297
|
+
tableWorker._liveBridges.add(bridge)
|
|
298
|
+
bridge.worker.onmessage = (event: MessageEvent<TableWorkerResponse>) => {
|
|
299
|
+
handleResult(table, bridge, event.data)
|
|
300
|
+
}
|
|
301
|
+
bridge.worker.onerror = (event) => handleError(table, bridge, event)
|
|
302
|
+
bridge.worker.onmessageerror = (event) => handleError(table, bridge, event)
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Pull-based sync, called at the top of every worker-backed row model read
|
|
307
|
+
* (i.e. every render). Posts data on identity change and a single-flight
|
|
308
|
+
* process request on state change; both are cheap no-ops otherwise, and
|
|
309
|
+
* multiple stages sharing the handle dedupe onto one request.
|
|
310
|
+
*/
|
|
311
|
+
export function syncTableWorker(tableWorker: TableWorker, table: AnyTable) {
|
|
312
|
+
// SSR: no Worker global. Getters fall back to pre-stage models, so the
|
|
313
|
+
// server renders unprocessed rows and the client takes over after hydration.
|
|
314
|
+
if (typeof Worker === 'undefined') return
|
|
315
|
+
|
|
316
|
+
const bridge = getTableWorkerBridge(tableWorker, table)
|
|
317
|
+
if (bridge.failed) return
|
|
318
|
+
ensureWorker(tableWorker, table, bridge)
|
|
319
|
+
|
|
320
|
+
const data = table.options.data
|
|
321
|
+
if (data !== bridge.lastData) {
|
|
322
|
+
bridge.lastData = data
|
|
323
|
+
bridge.dataVersion++
|
|
324
|
+
bridge.worker!.postMessage({
|
|
325
|
+
type: 'data',
|
|
326
|
+
dataVersion: bridge.dataVersion,
|
|
327
|
+
data,
|
|
328
|
+
})
|
|
329
|
+
bridge.needsProcess = true
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Union of the registered stages' state deps, compared by reference (atoms
|
|
333
|
+
// return stable refs when a slice did not change).
|
|
334
|
+
const atoms = table.atoms as Record<string, any>
|
|
335
|
+
const state: Record<string, unknown> = {}
|
|
336
|
+
for (const stage of bridge.stages) {
|
|
337
|
+
for (const key of tableWorkerStageStateDeps[stage]) {
|
|
338
|
+
state[key] = atoms[key]?.get()
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
bridge.lastState = state
|
|
342
|
+
|
|
343
|
+
if (
|
|
344
|
+
!bridge.needsProcess &&
|
|
345
|
+
(!statesEqual(bridge.sentState, state) ||
|
|
346
|
+
bridge.stages.size !== bridge.sentStageCount)
|
|
347
|
+
) {
|
|
348
|
+
bridge.needsProcess = true
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// Single-flight: at most one request in the worker at a time. If one is in
|
|
352
|
+
// flight, the latest state is posted from the result handler (trailing
|
|
353
|
+
// edge), so rapid input coalesces instead of queueing doomed computes.
|
|
354
|
+
if (bridge.needsProcess && !bridge.inFlight) {
|
|
355
|
+
postProcess(table, bridge)
|
|
356
|
+
}
|
|
357
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { tableMemo } from '../utils'
|
|
2
|
+
import { getTableWorkerBridge, syncTableWorker } from './createTableWorker'
|
|
3
|
+
import { rebuildRowModel } from './rebuildRowModel'
|
|
4
|
+
import { tableWorkerPipeline } from './tableWorkerProtocol'
|
|
5
|
+
import type { RowModel } from '../core/row-models/coreRowModelsFeature.types'
|
|
6
|
+
import type { Table, Table_Internal } from '../types/Table'
|
|
7
|
+
import type { TableFeatures } from '../types/TableFeatures'
|
|
8
|
+
import type { RowData } from '../types/type-utils'
|
|
9
|
+
import type { TableWorker } from './createTableWorker'
|
|
10
|
+
import type { TableWorkerStage } from './tableWorkerProtocol'
|
|
11
|
+
|
|
12
|
+
type AnyTable = Table_Internal<any, any>
|
|
13
|
+
|
|
14
|
+
function capitalize(stage: string) {
|
|
15
|
+
return stage.charAt(0).toUpperCase() + stage.slice(1)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Turns any row model stage into a worker-backed one. The returned factory
|
|
20
|
+
* plugs into the standard feature slot for that stage, so it composes with
|
|
21
|
+
* the rest of the pipeline exactly like the sync factory it replaces.
|
|
22
|
+
*
|
|
23
|
+
* Register only the stages you want offloaded; each import is independent and
|
|
24
|
+
* tree-shakable. All stages on a table share one worker and one round trip
|
|
25
|
+
* per state change via the `tableWorker` handle. Until a result lands, the
|
|
26
|
+
* stage returns its pre-stage model (stale-while-revalidate).
|
|
27
|
+
*
|
|
28
|
+
* Offloaded stages must form a contiguous prefix of the pipeline
|
|
29
|
+
* (filtered -> grouped -> sorted -> expanded): a stage's worker result encodes
|
|
30
|
+
* everything upstream as computed in the worker, so any upstream stage
|
|
31
|
+
* registered on the main thread must be offloaded too. A dev warning fires on
|
|
32
|
+
* mismatches.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const tableWorker = createTableWorker({ createWorker })
|
|
37
|
+
*
|
|
38
|
+
* const features = tableFeatures({
|
|
39
|
+
* rowSortingFeature,
|
|
40
|
+
* columnGroupingFeature,
|
|
41
|
+
* workerRowModelsFeature,
|
|
42
|
+
* filteredRowModel: createWorkerRowModel(tableWorker, 'filtered'),
|
|
43
|
+
* groupedRowModel: createWorkerRowModel(tableWorker, 'grouped'),
|
|
44
|
+
* sortedRowModel: createWorkerRowModel(tableWorker, 'sorted'),
|
|
45
|
+
* })
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function createWorkerRowModel(
|
|
49
|
+
tableWorker: TableWorker,
|
|
50
|
+
stage: TableWorkerStage,
|
|
51
|
+
) {
|
|
52
|
+
return <TFeatures extends TableFeatures, TData extends RowData>(
|
|
53
|
+
_table: Table<TFeatures, TData>,
|
|
54
|
+
): (() => RowModel<TFeatures, TData>) => {
|
|
55
|
+
const table = _table as unknown as AnyTable
|
|
56
|
+
// Stages register per table as their factories initialize (first read).
|
|
57
|
+
// The first render may therefore fire one extra coalesced request while
|
|
58
|
+
// the stage set grows; single-flight makes it a cheap trailing request.
|
|
59
|
+
getTableWorkerBridge(tableWorker, table).stages.add(stage)
|
|
60
|
+
let warned = false
|
|
61
|
+
|
|
62
|
+
const warnOnce = (message: string) => {
|
|
63
|
+
if (process.env.NODE_ENV === 'development' && !warned) {
|
|
64
|
+
warned = true
|
|
65
|
+
console.warn(`[table-worker] ${message}`)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const memoized = tableMemo({
|
|
70
|
+
table,
|
|
71
|
+
fnName: `table.get${capitalize(stage)}RowModel`,
|
|
72
|
+
// The per-stage version bumps only when this stage's payload actually
|
|
73
|
+
// changed, so stages the worker reported as `unchanged` skip the O(n)
|
|
74
|
+
// rebuild entirely (the re-render itself rides the state slice bump).
|
|
75
|
+
memoDeps: () => [
|
|
76
|
+
table.getCoreRowModel(),
|
|
77
|
+
getTableWorkerBridge(tableWorker, table).stageVersions[stage],
|
|
78
|
+
],
|
|
79
|
+
fn: () => {
|
|
80
|
+
const bridge = getTableWorkerBridge(tableWorker, table)
|
|
81
|
+
const payload = bridge.results[stage]
|
|
82
|
+
if (!payload) {
|
|
83
|
+
if (bridge.resultRequestId > 0) {
|
|
84
|
+
warnOnce(
|
|
85
|
+
`The worker returned no '${stage}' result. Make sure the ` +
|
|
86
|
+
`worker's initTableWorker() config registers a ` +
|
|
87
|
+
`${stage}RowModel factory.`,
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
return (table as any)[`getPre${capitalize(stage)}RowModel`]()
|
|
91
|
+
}
|
|
92
|
+
// Contiguous-prefix check: any upstream stage registered on this
|
|
93
|
+
// table must also have a worker result, or it is silently bypassed.
|
|
94
|
+
if (bridge.resultRequestId > 0) {
|
|
95
|
+
for (const upstream of tableWorkerPipeline) {
|
|
96
|
+
if (upstream === stage) break
|
|
97
|
+
if (
|
|
98
|
+
(table.options.features as Record<string, unknown>)[
|
|
99
|
+
`${upstream}RowModel`
|
|
100
|
+
] &&
|
|
101
|
+
!bridge.results[upstream]
|
|
102
|
+
) {
|
|
103
|
+
warnOnce(
|
|
104
|
+
`This table has a ${upstream}RowModel, but the worker result ` +
|
|
105
|
+
`for '${stage}' was computed without an offloaded ` +
|
|
106
|
+
`'${upstream}' stage, so it is bypassed. Offload it too ` +
|
|
107
|
+
`with createWorkerRowModel(tableWorker, '${upstream}').`,
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return rebuildRowModel(table, payload, stage !== 'filtered')
|
|
113
|
+
},
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
return () => {
|
|
117
|
+
syncTableWorker(tableWorker, table)
|
|
118
|
+
return memoized()
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|