@tanstack/table-core 9.0.0-beta.7 → 9.0.0-beta.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/core/cells/constructCell.d.ts +4 -6
- package/dist/core/cells/constructCell.js +4 -6
- package/dist/core/cells/coreCellsFeature.d.ts +1 -3
- package/dist/core/cells/coreCellsFeature.js +1 -2
- package/dist/core/cells/coreCellsFeature.types.d.ts +7 -9
- package/dist/core/cells/coreCellsFeature.utils.d.ts +5 -5
- package/dist/core/cells/coreCellsFeature.utils.js +1 -2
- package/dist/core/columns/constructColumn.d.ts +4 -6
- package/dist/core/columns/constructColumn.js +8 -9
- package/dist/core/columns/coreColumnsFeature.d.ts +1 -3
- package/dist/core/columns/coreColumnsFeature.js +13 -20
- package/dist/core/columns/coreColumnsFeature.types.d.ts +13 -15
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +10 -12
- package/dist/core/columns/coreColumnsFeature.utils.js +19 -20
- package/dist/core/coreFeatures.d.ts +3 -3
- package/dist/core/coreFeatures.js +1 -2
- package/dist/core/headers/buildHeaderGroups.d.ts +3 -5
- package/dist/core/headers/buildHeaderGroups.js +99 -85
- package/dist/core/headers/constructHeader.d.ts +3 -5
- package/dist/core/headers/constructHeader.js +4 -6
- package/dist/core/headers/coreHeadersFeature.d.ts +1 -3
- package/dist/core/headers/coreHeadersFeature.js +9 -13
- package/dist/core/headers/coreHeadersFeature.types.d.ts +21 -11
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +8 -8
- package/dist/core/headers/coreHeadersFeature.utils.js +14 -17
- package/dist/core/reactivity/coreReactivityFeature.types.d.ts +8 -3
- package/dist/core/reactivity/coreReactivityFeature.utils.d.ts +1 -3
- package/dist/core/reactivity/coreReactivityFeature.utils.js +1 -2
- package/dist/core/reactivity/renderPhaseReactivity.d.ts +80 -0
- package/dist/core/reactivity/renderPhaseReactivity.js +95 -0
- package/dist/core/row-models/coreRowModelsFeature.d.ts +1 -3
- package/dist/core/row-models/coreRowModelsFeature.js +1 -2
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -17
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +17 -19
- package/dist/core/row-models/coreRowModelsFeature.utils.js +9 -28
- package/dist/core/row-models/createCoreRowModel.d.ts +3 -5
- package/dist/core/row-models/createCoreRowModel.js +27 -24
- package/dist/core/rows/constructRow.d.ts +3 -5
- package/dist/core/rows/constructRow.js +9 -13
- package/dist/core/rows/coreRowsFeature.d.ts +1 -3
- package/dist/core/rows/coreRowsFeature.js +20 -5
- package/dist/core/rows/coreRowsFeature.types.d.ts +42 -10
- package/dist/core/rows/coreRowsFeature.utils.d.ts +26 -9
- package/dist/core/rows/coreRowsFeature.utils.js +65 -14
- package/dist/core/table/constructTable.d.ts +2 -4
- package/dist/core/table/constructTable.js +52 -23
- package/dist/core/table/coreTablesFeature.d.ts +1 -3
- package/dist/core/table/coreTablesFeature.js +1 -2
- package/dist/core/table/coreTablesFeature.types.d.ts +56 -25
- package/dist/core/table/coreTablesFeature.utils.d.ts +34 -12
- package/dist/core/table/coreTablesFeature.utils.js +69 -24
- package/dist/experimental-worker-plugin.d.ts +5 -0
- package/dist/experimental-worker-plugin.js +6 -0
- package/dist/features/cell-selection/cellSelectionFeature.d.ts +8 -0
- package/dist/features/cell-selection/cellSelectionFeature.js +128 -0
- package/dist/features/cell-selection/cellSelectionFeature.types.d.ts +296 -0
- package/dist/features/cell-selection/cellSelectionFeature.utils.d.ts +306 -0
- package/dist/features/cell-selection/cellSelectionFeature.utils.js +873 -0
- package/dist/features/cell-selection/cellSelectionGeometry.js +121 -0
- package/dist/features/cell-spanning/cellSpanningFeature.d.ts +13 -0
- package/dist/features/cell-spanning/cellSpanningFeature.js +47 -0
- package/dist/features/cell-spanning/cellSpanningFeature.types.d.ts +150 -0
- package/dist/features/cell-spanning/cellSpanningFeature.utils.d.ts +74 -0
- package/dist/features/cell-spanning/cellSpanningFeature.utils.js +262 -0
- package/dist/features/column-faceting/columnFacetingFeature.d.ts +1 -3
- package/dist/features/column-faceting/columnFacetingFeature.js +13 -20
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -35
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +10 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +25 -14
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +2 -4
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +9 -7
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +3 -5
- package/dist/features/column-faceting/createFacetedRowModel.js +12 -17
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +2 -4
- package/dist/features/column-faceting/createFacetedUniqueValues.js +12 -9
- package/dist/features/column-filtering/columnFilteringFeature.d.ts +1 -3
- package/dist/features/column-filtering/columnFilteringFeature.js +4 -5
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +85 -33
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +19 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +33 -21
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +11 -7
- package/dist/features/column-filtering/createFilteredRowModel.js +33 -29
- package/dist/features/column-filtering/filterFns.d.ts +208 -0
- package/dist/features/column-filtering/filterFns.js +374 -0
- package/dist/features/column-filtering/filterRowsUtils.js +4 -4
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +2 -4
- package/dist/features/column-grouping/columnGroupingFeature.js +7 -20
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -52
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -51
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -61
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +7 -7
- package/dist/features/column-grouping/createGroupedRowModel.js +69 -38
- package/dist/features/column-ordering/columnOrderingFeature.d.ts +1 -3
- package/dist/features/column-ordering/columnOrderingFeature.js +19 -24
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -5
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -16
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -18
- package/dist/features/column-pinning/columnPinningFeature.d.ts +7 -4
- package/dist/features/column-pinning/columnPinningFeature.js +126 -146
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +53 -44
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +100 -93
- package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -150
- package/dist/features/column-resizing/columnResizingFeature.d.ts +1 -3
- package/dist/features/column-resizing/columnResizingFeature.js +1 -2
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +2 -7
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +7 -9
- package/dist/features/column-resizing/columnResizingFeature.utils.js +86 -48
- package/dist/features/column-sizing/columnSizingFeature.d.ts +1 -3
- package/dist/features/column-sizing/columnSizingFeature.js +35 -70
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -11
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -27
- package/dist/features/column-sizing/columnSizingFeature.utils.js +95 -54
- package/dist/features/column-visibility/columnVisibilityFeature.d.ts +1 -3
- package/dist/features/column-visibility/columnVisibilityFeature.js +26 -38
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +4 -6
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +20 -20
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +32 -32
- package/dist/features/global-filtering/globalFilteringFeature.d.ts +1 -3
- package/dist/features/global-filtering/globalFilteringFeature.js +3 -4
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +4 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -13
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +7 -8
- package/dist/features/row-aggregation/aggregationFns.d.ts +66 -0
- package/dist/features/row-aggregation/aggregationFns.js +279 -0
- package/dist/features/row-aggregation/rowAggregationFeature.d.ts +8 -0
- package/dist/features/row-aggregation/rowAggregationFeature.js +35 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +193 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.js +11 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +46 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.js +235 -0
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +3 -5
- package/dist/features/row-expanding/createExpandedRowModel.js +9 -13
- package/dist/features/row-expanding/rowExpandingFeature.d.ts +1 -3
- package/dist/features/row-expanding/rowExpandingFeature.js +1 -2
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -17
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +11 -16
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +30 -33
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +3 -5
- package/dist/features/row-pagination/createPaginatedRowModel.js +7 -12
- package/dist/features/row-pagination/rowPaginationFeature.d.ts +1 -3
- package/dist/features/row-pagination/rowPaginationFeature.js +1 -2
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -16
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +18 -20
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +10 -17
- package/dist/features/row-pinning/rowPinningFeature.d.ts +1 -3
- package/dist/features/row-pinning/rowPinningFeature.js +5 -18
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +3 -5
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +8 -10
- package/dist/features/row-pinning/rowPinningFeature.utils.js +10 -16
- package/dist/features/row-selection/rowSelectionFeature.d.ts +1 -3
- package/dist/features/row-selection/rowSelectionFeature.js +68 -25
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +51 -15
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +60 -35
- package/dist/features/row-selection/rowSelectionFeature.utils.js +142 -89
- package/dist/features/row-sorting/createSortedRowModel.d.ts +11 -7
- package/dist/features/row-sorting/createSortedRowModel.js +71 -53
- package/dist/features/row-sorting/rowSortingFeature.d.ts +1 -3
- package/dist/features/row-sorting/rowSortingFeature.js +2 -2
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +61 -24
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +31 -22
- package/dist/features/row-sorting/rowSortingFeature.utils.js +51 -25
- package/dist/features/row-sorting/sortFns.d.ts +96 -0
- package/dist/features/row-sorting/sortFns.js +216 -0
- package/dist/features/stockFeatures.d.ts +7 -3
- package/dist/features/stockFeatures.js +7 -2
- package/dist/flex-render.d.ts +2 -4
- package/dist/flex-render.js +10 -3
- package/dist/helpers/columnHelper.d.ts +3 -5
- package/dist/helpers/columnHelper.js +1 -2
- package/dist/helpers/metaHelper.d.ts +25 -0
- package/dist/helpers/metaHelper.js +28 -0
- package/dist/helpers/tableFeatures.d.ts +35 -8
- package/dist/helpers/tableFeatures.js +33 -5
- package/dist/helpers/tableOptions.d.ts +1 -3
- package/dist/helpers/tableOptions.js +1 -2
- package/dist/index.d.ts +34 -27
- package/dist/index.js +10 -5
- package/dist/reactivity.d.ts +2 -1
- package/dist/reactivity.js +2 -1
- package/dist/static-functions.d.ts +12 -9
- package/dist/static-functions.js +12 -9
- package/dist/store-reactivity-bindings.d.ts +2 -4
- package/dist/store-reactivity-bindings.js +4 -5
- package/dist/types/Cell.d.ts +9 -5
- package/dist/types/Column.d.ts +13 -15
- package/dist/types/ColumnDef.d.ts +39 -21
- package/dist/types/Header.d.ts +3 -5
- package/dist/types/HeaderGroup.d.ts +3 -5
- package/dist/types/Row.d.ts +7 -7
- package/dist/types/RowModel.d.ts +11 -25
- package/dist/types/RowModelFns.d.ts +5 -7
- package/dist/types/Table.d.ts +29 -32
- package/dist/types/TableFeatures.d.ts +388 -24
- package/dist/types/TableOptions.d.ts +24 -14
- package/dist/types/TableState.d.ts +8 -8
- package/dist/types/type-utils.d.ts +10 -4
- package/dist/utils.d.ts +32 -26
- package/dist/utils.js +52 -32
- package/dist/worker/createTableWorker.d.ts +100 -0
- package/dist/worker/createTableWorker.js +185 -0
- package/dist/worker/createWorkerRowModel.d.ts +40 -0
- package/dist/worker/createWorkerRowModel.js +77 -0
- package/dist/worker/initTableWorker.d.ts +31 -0
- package/dist/worker/initTableWorker.js +99 -0
- package/dist/worker/rebuildRowModel.d.ts +11 -0
- package/dist/worker/rebuildRowModel.js +71 -0
- package/dist/worker/serializeRowModel.js +51 -0
- package/dist/worker/tableWorkerProtocol.d.ts +88 -0
- package/dist/worker/tableWorkerProtocol.js +26 -0
- package/package.json +12 -28
- package/skills/aggregation/SKILL.md +141 -0
- package/skills/api-not-found/SKILL.md +113 -0
- package/skills/cell-selection/SKILL.md +204 -0
- package/skills/cell-spanning/SKILL.md +162 -0
- package/skills/client-vs-server/SKILL.md +164 -0
- package/skills/column-faceting/SKILL.md +97 -0
- package/skills/column-filtering/SKILL.md +87 -0
- package/skills/column-ordering/SKILL.md +75 -0
- package/skills/column-pinning/SKILL.md +89 -0
- package/skills/column-resizing/SKILL.md +91 -0
- package/skills/column-sizing/SKILL.md +72 -0
- package/skills/column-visibility/SKILL.md +75 -0
- package/skills/core/SKILL.md +175 -0
- package/skills/custom-features/SKILL.md +235 -0
- package/skills/expanding/SKILL.md +80 -0
- package/skills/global-filtering/SKILL.md +84 -0
- package/skills/grouping/SKILL.md +51 -401
- package/skills/migrate-v8-to-v9/SKILL.md +275 -416
- package/skills/pagination/SKILL.md +37 -344
- package/skills/row-pinning/SKILL.md +47 -234
- package/skills/row-selection/SKILL.md +75 -302
- package/skills/sorting/SKILL.md +45 -303
- package/skills/table-features/SKILL.md +159 -0
- package/skills/typescript/SKILL.md +126 -0
- package/dist/core/cells/constructCell.cjs +0 -34
- package/dist/core/cells/constructCell.cjs.map +0 -1
- package/dist/core/cells/constructCell.d.cts +0 -17
- package/dist/core/cells/constructCell.js.map +0 -1
- package/dist/core/cells/coreCellsFeature.cjs +0 -21
- package/dist/core/cells/coreCellsFeature.cjs.map +0 -1
- package/dist/core/cells/coreCellsFeature.d.cts +0 -10
- package/dist/core/cells/coreCellsFeature.js.map +0 -1
- package/dist/core/cells/coreCellsFeature.types.d.cts +0 -57
- package/dist/core/cells/coreCellsFeature.utils.cjs +0 -57
- package/dist/core/cells/coreCellsFeature.utils.cjs.map +0 -1
- package/dist/core/cells/coreCellsFeature.utils.d.cts +0 -53
- package/dist/core/cells/coreCellsFeature.utils.js.map +0 -1
- package/dist/core/columns/constructColumn.cjs +0 -61
- package/dist/core/columns/constructColumn.cjs.map +0 -1
- package/dist/core/columns/constructColumn.d.cts +0 -16
- package/dist/core/columns/constructColumn.js.map +0 -1
- package/dist/core/columns/coreColumnsFeature.cjs +0 -70
- package/dist/core/columns/coreColumnsFeature.cjs.map +0 -1
- package/dist/core/columns/coreColumnsFeature.d.cts +0 -10
- package/dist/core/columns/coreColumnsFeature.js.map +0 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +0 -94
- package/dist/core/columns/coreColumnsFeature.utils.cjs +0 -187
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +0 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +0 -119
- package/dist/core/columns/coreColumnsFeature.utils.js.map +0 -1
- package/dist/core/coreFeatures.cjs +0 -25
- package/dist/core/coreFeatures.cjs.map +0 -1
- package/dist/core/coreFeatures.d.cts +0 -26
- package/dist/core/coreFeatures.js.map +0 -1
- package/dist/core/headers/buildHeaderGroups.cjs +0 -103
- package/dist/core/headers/buildHeaderGroups.cjs.map +0 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +0 -16
- package/dist/core/headers/buildHeaderGroups.js.map +0 -1
- package/dist/core/headers/constructHeader.cjs +0 -41
- package/dist/core/headers/constructHeader.cjs.map +0 -1
- package/dist/core/headers/constructHeader.d.cts +0 -22
- package/dist/core/headers/constructHeader.js.map +0 -1
- package/dist/core/headers/coreHeadersFeature.cjs +0 -55
- package/dist/core/headers/coreHeadersFeature.cjs.map +0 -1
- package/dist/core/headers/coreHeadersFeature.d.cts +0 -10
- package/dist/core/headers/coreHeadersFeature.js.map +0 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +0 -106
- package/dist/core/headers/coreHeadersFeature.utils.cjs +0 -142
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +0 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +0 -85
- package/dist/core/headers/coreHeadersFeature.utils.js.map +0 -1
- package/dist/core/reactivity/coreReactivityFeature.types.d.cts +0 -48
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs +0 -24
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs.map +0 -1
- package/dist/core/reactivity/coreReactivityFeature.utils.d.cts +0 -24
- package/dist/core/reactivity/coreReactivityFeature.utils.js.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.cjs +0 -27
- package/dist/core/row-models/coreRowModelsFeature.cjs.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.d.cts +0 -10
- package/dist/core/row-models/coreRowModelsFeature.js.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +0 -41
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +0 -215
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +0 -153
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +0 -1
- package/dist/core/row-models/createCoreRowModel.cjs +0 -52
- package/dist/core/row-models/createCoreRowModel.cjs.map +0 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +0 -15
- package/dist/core/row-models/createCoreRowModel.js.map +0 -1
- package/dist/core/rows/constructRow.cjs +0 -44
- package/dist/core/rows/constructRow.cjs.map +0 -1
- package/dist/core/rows/constructRow.d.cts +0 -15
- package/dist/core/rows/constructRow.js.map +0 -1
- package/dist/core/rows/coreRowsFeature.cjs +0 -37
- package/dist/core/rows/coreRowsFeature.cjs.map +0 -1
- package/dist/core/rows/coreRowsFeature.d.cts +0 -10
- package/dist/core/rows/coreRowsFeature.js.map +0 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +0 -99
- package/dist/core/rows/coreRowsFeature.utils.cjs +0 -192
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +0 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +0 -127
- package/dist/core/rows/coreRowsFeature.utils.js.map +0 -1
- package/dist/core/table/constructTable.cjs +0 -118
- package/dist/core/table/constructTable.cjs.map +0 -1
- package/dist/core/table/constructTable.d.cts +0 -22
- package/dist/core/table/constructTable.js.map +0 -1
- package/dist/core/table/coreTablesFeature.cjs +0 -17
- package/dist/core/table/coreTablesFeature.cjs.map +0 -1
- package/dist/core/table/coreTablesFeature.d.cts +0 -10
- package/dist/core/table/coreTablesFeature.js.map +0 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +0 -186
- package/dist/core/table/coreTablesFeature.utils.cjs +0 -96
- package/dist/core/table/coreTablesFeature.utils.cjs.map +0 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +0 -57
- package/dist/core/table/coreTablesFeature.utils.js.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.cjs +0 -61
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.d.cts +0 -10
- package/dist/features/column-faceting/columnFacetingFeature.js.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +0 -85
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +0 -103
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +0 -84
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +0 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +0 -44
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +0 -14
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +0 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +0 -50
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +0 -15
- package/dist/features/column-faceting/createFacetedRowModel.js.map +0 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +0 -41
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +0 -14
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +0 -50
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.d.cts +0 -10
- package/dist/features/column-filtering/columnFilteringFeature.js.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +0 -160
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +0 -212
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +0 -143
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +0 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +0 -110
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +0 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +0 -16
- package/dist/features/column-filtering/createFilteredRowModel.js.map +0 -1
- package/dist/features/column-filtering/filterRowsUtils.cjs +0 -81
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +0 -1
- package/dist/features/column-filtering/filterRowsUtils.js.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +0 -67
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +0 -10
- package/dist/features/column-grouping/columnGroupingFeature.js.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +0 -165
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +0 -250
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +0 -190
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +0 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +0 -119
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +0 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +0 -16
- package/dist/features/column-grouping/createGroupedRowModel.js.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +0 -58
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.d.cts +0 -10
- package/dist/features/column-ordering/columnOrderingFeature.js.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +0 -56
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +0 -172
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +0 -107
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +0 -221
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +0 -10
- package/dist/features/column-pinning/columnPinningFeature.js.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +0 -178
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +0 -585
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +0 -375
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.cjs +0 -41
- package/dist/features/column-resizing/columnResizingFeature.cjs.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.d.cts +0 -10
- package/dist/features/column-resizing/columnResizingFeature.js.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +0 -81
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +0 -246
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +0 -109
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +0 -124
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.d.cts +0 -10
- package/dist/features/column-sizing/columnSizingFeature.js.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +0 -96
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +0 -256
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +0 -182
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +0 -94
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.d.cts +0 -10
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +0 -97
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +0 -283
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +0 -189
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +0 -41
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.d.cts +0 -10
- package/dist/features/global-filtering/globalFilteringFeature.js.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +0 -71
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +0 -88
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +0 -74
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +0 -1
- package/dist/features/row-expanding/createExpandedRowModel.cjs +0 -59
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +0 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +0 -21
- package/dist/features/row-expanding/createExpandedRowModel.js.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.cjs +0 -47
- package/dist/features/row-expanding/rowExpandingFeature.cjs.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.d.cts +0 -10
- package/dist/features/row-expanding/rowExpandingFeature.js.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +0 -127
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +0 -281
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +0 -191
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +0 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +0 -62
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +0 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +0 -15
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.cjs +0 -45
- package/dist/features/row-pagination/rowPaginationFeature.cjs.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.d.cts +0 -10
- package/dist/features/row-pagination/rowPaginationFeature.js.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +0 -135
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +0 -312
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +0 -218
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs +0 -67
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.d.cts +0 -10
- package/dist/features/row-pinning/rowPinningFeature.js.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +0 -83
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +0 -229
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +0 -143
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +0 -75
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.d.cts +0 -10
- package/dist/features/row-selection/rowSelectionFeature.js.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +0 -136
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +0 -514
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +0 -318
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +0 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +0 -95
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +0 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +0 -16
- package/dist/features/row-sorting/createSortedRowModel.js.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.cjs +0 -55
- package/dist/features/row-sorting/rowSortingFeature.cjs.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.d.cts +0 -10
- package/dist/features/row-sorting/rowSortingFeature.js.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +0 -188
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +0 -305
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +0 -193
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +0 -1
- package/dist/features/stockFeatures.cjs +0 -41
- package/dist/features/stockFeatures.cjs.map +0 -1
- package/dist/features/stockFeatures.d.cts +0 -41
- package/dist/features/stockFeatures.js.map +0 -1
- package/dist/flex-render.cjs +0 -29
- package/dist/flex-render.cjs.map +0 -1
- package/dist/flex-render.d.cts +0 -34
- package/dist/flex-render.js.map +0 -1
- package/dist/fns/aggregationFns.cjs +0 -161
- package/dist/fns/aggregationFns.cjs.map +0 -1
- package/dist/fns/aggregationFns.d.cts +0 -85
- package/dist/fns/aggregationFns.d.ts +0 -85
- package/dist/fns/aggregationFns.js +0 -151
- package/dist/fns/aggregationFns.js.map +0 -1
- package/dist/fns/filterFns.cjs +0 -201
- package/dist/fns/filterFns.cjs.map +0 -1
- package/dist/fns/filterFns.d.cts +0 -167
- package/dist/fns/filterFns.d.ts +0 -167
- package/dist/fns/filterFns.js +0 -185
- package/dist/fns/filterFns.js.map +0 -1
- package/dist/fns/sortFns.cjs +0 -130
- package/dist/fns/sortFns.cjs.map +0 -1
- package/dist/fns/sortFns.d.cts +0 -65
- package/dist/fns/sortFns.d.ts +0 -65
- package/dist/fns/sortFns.js +0 -122
- package/dist/fns/sortFns.js.map +0 -1
- package/dist/helpers/columnHelper.cjs +0 -41
- package/dist/helpers/columnHelper.cjs.map +0 -1
- package/dist/helpers/columnHelper.d.cts +0 -71
- package/dist/helpers/columnHelper.js.map +0 -1
- package/dist/helpers/tableFeatures.cjs +0 -20
- package/dist/helpers/tableFeatures.cjs.map +0 -1
- package/dist/helpers/tableFeatures.d.cts +0 -18
- package/dist/helpers/tableFeatures.js.map +0 -1
- package/dist/helpers/tableOptions.cjs +0 -15
- package/dist/helpers/tableOptions.cjs.map +0 -1
- package/dist/helpers/tableOptions.d.cts +0 -57
- package/dist/helpers/tableOptions.js.map +0 -1
- package/dist/index.cjs +0 -133
- package/dist/index.d.cts +0 -78
- package/dist/reactivity.cjs +0 -4
- package/dist/reactivity.d.cts +0 -3
- package/dist/static-functions.cjs +0 -263
- package/dist/static-functions.d.cts +0 -21
- package/dist/store-reactivity-bindings.cjs +0 -44
- package/dist/store-reactivity-bindings.cjs.map +0 -1
- package/dist/store-reactivity-bindings.d.cts +0 -22
- package/dist/store-reactivity-bindings.js.map +0 -1
- package/dist/types/Cell.d.cts +0 -14
- package/dist/types/Column.d.cts +0 -36
- package/dist/types/ColumnDef.d.cts +0 -109
- package/dist/types/Header.d.cts +0 -16
- package/dist/types/HeaderGroup.d.cts +0 -10
- package/dist/types/Row.d.cts +0 -26
- package/dist/types/RowModel.d.cts +0 -36
- package/dist/types/RowModelFns.d.cts +0 -18
- package/dist/types/Table.d.cts +0 -70
- package/dist/types/TableFeatures.d.cts +0 -53
- package/dist/types/TableOptions.d.cts +0 -69
- package/dist/types/TableState.d.cts +0 -48
- package/dist/types/type-utils.d.cts +0 -23
- package/dist/utils.cjs +0 -243
- package/dist/utils.cjs.map +0 -1
- package/dist/utils.d.cts +0 -114
- package/dist/utils.js.map +0 -1
- package/skills/column-definitions/SKILL.md +0 -333
- package/skills/column-layout/SKILL.md +0 -328
- package/skills/column-layout/references/subsystems.md +0 -220
- package/skills/customizing-feature-behavior/SKILL.md +0 -416
- package/skills/filtering/SKILL.md +0 -357
- package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
- package/skills/row-expanding/SKILL.md +0 -348
- package/skills/setup/SKILL.md +0 -400
- package/skills/state-management/SKILL.md +0 -388
- package/src/core/cells/constructCell.ts +0 -55
- package/src/core/cells/coreCellsFeature.ts +0 -27
- package/src/core/cells/coreCellsFeature.types.ts +0 -68
- package/src/core/cells/coreCellsFeature.utils.ts +0 -68
- package/src/core/columns/constructColumn.ts +0 -119
- package/src/core/columns/coreColumnsFeature.ts +0 -73
- package/src/core/columns/coreColumnsFeature.types.ts +0 -108
- package/src/core/columns/coreColumnsFeature.utils.ts +0 -275
- package/src/core/coreFeatures.ts +0 -31
- package/src/core/headers/buildHeaderGroups.ts +0 -182
- package/src/core/headers/constructHeader.ts +0 -67
- package/src/core/headers/coreHeadersFeature.ts +0 -56
- package/src/core/headers/coreHeadersFeature.types.ts +0 -125
- package/src/core/headers/coreHeadersFeature.utils.ts +0 -200
- package/src/core/reactivity/coreReactivityFeature.types.ts +0 -56
- package/src/core/reactivity/coreReactivityFeature.utils.ts +0 -44
- package/src/core/row-models/coreRowModelsFeature.ts +0 -62
- package/src/core/row-models/coreRowModelsFeature.types.ts +0 -64
- package/src/core/row-models/coreRowModelsFeature.utils.ts +0 -272
- package/src/core/row-models/createCoreRowModel.ts +0 -93
- package/src/core/rows/constructRow.ts +0 -66
- package/src/core/rows/coreRowsFeature.ts +0 -62
- package/src/core/rows/coreRowsFeature.types.ts +0 -117
- package/src/core/rows/coreRowsFeature.utils.ts +0 -264
- package/src/core/table/constructTable.ts +0 -172
- package/src/core/table/coreTablesFeature.ts +0 -19
- package/src/core/table/coreTablesFeature.types.ts +0 -216
- package/src/core/table/coreTablesFeature.utils.ts +0 -131
- package/src/features/column-faceting/columnFacetingFeature.ts +0 -89
- package/src/features/column-faceting/columnFacetingFeature.types.ts +0 -109
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +0 -145
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +0 -66
- package/src/features/column-faceting/createFacetedRowModel.ts +0 -85
- package/src/features/column-faceting/createFacetedUniqueValues.ts +0 -66
- package/src/features/column-filtering/columnFilteringFeature.ts +0 -86
- package/src/features/column-filtering/columnFilteringFeature.types.ts +0 -232
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +0 -331
- package/src/features/column-filtering/createFilteredRowModel.ts +0 -183
- package/src/features/column-filtering/filterRowsUtils.ts +0 -157
- package/src/features/column-grouping/columnGroupingFeature.ts +0 -115
- package/src/features/column-grouping/columnGroupingFeature.types.ts +0 -226
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +0 -354
- package/src/features/column-grouping/createGroupedRowModel.ts +0 -220
- package/src/features/column-ordering/columnOrderingFeature.ts +0 -73
- package/src/features/column-ordering/columnOrderingFeature.types.ts +0 -60
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +0 -241
- package/src/features/column-pinning/columnPinningFeature.ts +0 -316
- package/src/features/column-pinning/columnPinningFeature.types.ts +0 -192
- package/src/features/column-pinning/columnPinningFeature.utils.ts +0 -908
- package/src/features/column-resizing/columnResizingFeature.ts +0 -65
- package/src/features/column-resizing/columnResizingFeature.types.ts +0 -89
- package/src/features/column-resizing/columnResizingFeature.utils.ts +0 -364
- package/src/features/column-sizing/columnSizingFeature.ts +0 -145
- package/src/features/column-sizing/columnSizingFeature.types.ts +0 -102
- package/src/features/column-sizing/columnSizingFeature.utils.ts +0 -381
- package/src/features/column-visibility/columnVisibilityFeature.ts +0 -122
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +0 -112
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +0 -384
- package/src/features/global-filtering/globalFilteringFeature.ts +0 -65
- package/src/features/global-filtering/globalFilteringFeature.types.ts +0 -91
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +0 -118
- package/src/features/row-expanding/createExpandedRowModel.ts +0 -82
- package/src/features/row-expanding/rowExpandingFeature.ts +0 -94
- package/src/features/row-expanding/rowExpandingFeature.types.ts +0 -147
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +0 -374
- package/src/features/row-pagination/createPaginatedRowModel.ts +0 -83
- package/src/features/row-pagination/rowPaginationFeature.ts +0 -95
- package/src/features/row-pagination/rowPaginationFeature.types.ts +0 -152
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +0 -400
- package/src/features/row-pinning/rowPinningFeature.ts +0 -97
- package/src/features/row-pinning/rowPinningFeature.types.ts +0 -95
- package/src/features/row-pinning/rowPinningFeature.utils.ts +0 -323
- package/src/features/row-selection/rowSelectionFeature.ts +0 -140
- package/src/features/row-selection/rowSelectionFeature.types.ts +0 -151
- package/src/features/row-selection/rowSelectionFeature.utils.ts +0 -745
- package/src/features/row-sorting/createSortedRowModel.ts +0 -157
- package/src/features/row-sorting/rowSortingFeature.ts +0 -103
- package/src/features/row-sorting/rowSortingFeature.types.ts +0 -235
- package/src/features/row-sorting/rowSortingFeature.utils.ts +0 -489
- package/src/features/stockFeatures.ts +0 -53
- package/src/flex-render.ts +0 -70
- package/src/fns/aggregationFns.ts +0 -245
- package/src/fns/filterFns.ts +0 -382
- package/src/fns/sortFns.ts +0 -240
- package/src/helpers/columnHelper.ts +0 -122
- package/src/helpers/tableFeatures.ts +0 -24
- package/src/helpers/tableOptions.ts +0 -117
- package/src/index.ts +0 -138
- package/src/process-env.d.ts +0 -6
- package/src/reactivity.ts +0 -2
- package/src/static-functions.ts +0 -31
- package/src/store-reactivity-bindings.ts +0 -47
- package/src/types/Cell.ts +0 -21
- package/src/types/Column.ts +0 -51
- package/src/types/ColumnDef.ts +0 -228
- package/src/types/Header.ts +0 -23
- package/src/types/HeaderGroup.ts +0 -13
- package/src/types/Row.ts +0 -34
- package/src/types/RowModel.ts +0 -98
- package/src/types/RowModelFns.ts +0 -32
- package/src/types/Table.ts +0 -91
- package/src/types/TableFeatures.ts +0 -101
- package/src/types/TableOptions.ts +0 -101
- package/src/types/TableState.ts +0 -47
- package/src/types/type-utils.ts +0 -84
- package/src/utils.ts +0 -441
package/dist/utils.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { NoInfer, RowData, Updater } from "./types/type-utils.js";
|
|
2
2
|
import { TableState, TableState_All } from "./types/TableState.js";
|
|
3
|
+
import { Table } from "./types/Table.js";
|
|
3
4
|
import { TableFeatures } from "./types/TableFeatures.js";
|
|
4
|
-
import { Table, Table_Internal } from "./types/Table.js";
|
|
5
|
-
|
|
6
5
|
//#region src/utils.d.ts
|
|
7
6
|
/**
|
|
8
7
|
* Applies a TanStack updater to a value.
|
|
@@ -16,12 +15,34 @@ declare function functionalUpdate<T>(updater: Updater<T>, input: T): T;
|
|
|
16
15
|
* Plain objects and arrays are copied recursively so state updates can avoid mutating existing references.
|
|
17
16
|
*/
|
|
18
17
|
declare function cloneState<T>(value: T): T;
|
|
18
|
+
/**
|
|
19
|
+
* Copies prototype-instance own properties without carrying over lazy memo
|
|
20
|
+
* closures or the per-row cell cache, both of which are bound to the source
|
|
21
|
+
* instance (cached cells reference the source row).
|
|
22
|
+
*/
|
|
23
|
+
declare function copyInstancePropertiesWithoutMemos<TTarget extends Record<string, any>, TSource extends Record<string, any>>(target: TTarget, source: TSource): TTarget & TSource;
|
|
24
|
+
/**
|
|
25
|
+
* Creates an object intended only for string-keyed dictionary lookups.
|
|
26
|
+
*
|
|
27
|
+
* The null prototype keeps user-controlled ids such as `__proto__` and
|
|
28
|
+
* `hasOwnProperty` as plain data keys.
|
|
29
|
+
*/
|
|
30
|
+
declare function makeObjectMap<TValue = unknown>(): Record<string, TValue>;
|
|
31
|
+
/**
|
|
32
|
+
* Checks whether an object owns a key, including null-prototype dictionaries.
|
|
33
|
+
*/
|
|
34
|
+
declare function hasOwn(obj: object, key: PropertyKey): boolean;
|
|
19
35
|
/**
|
|
20
36
|
* Creates a table state updater for a single state slice.
|
|
21
37
|
*
|
|
22
38
|
* The updater writes through the table base atom for the slice and supports both value and functional updater forms.
|
|
23
39
|
*/
|
|
24
|
-
declare function makeStateUpdater<TFeatures extends TableFeatures, K extends (string & {}) | keyof TableState_All | keyof TableState<TFeatures>>(key: K, instance:
|
|
40
|
+
declare function makeStateUpdater<TFeatures extends TableFeatures, K extends (string & {}) | keyof TableState_All | keyof TableState<TFeatures>>(key: K, instance: {
|
|
41
|
+
readonly options: {
|
|
42
|
+
readonly atoms?: object | undefined;
|
|
43
|
+
};
|
|
44
|
+
readonly baseAtoms: object;
|
|
45
|
+
}): (updater: Updater<TableState<any>[K & keyof TableState<any>]>) => void;
|
|
25
46
|
type AnyFunction = (...args: any) => any;
|
|
26
47
|
/**
|
|
27
48
|
* Returns whether a value is a function.
|
|
@@ -46,35 +67,21 @@ interface MemoOptions<TDeps extends ReadonlyArray<any>, TDepArgs, TResult> {
|
|
|
46
67
|
*
|
|
47
68
|
* The memo recomputes only when its dependency tuple changes and can emit debug timing information.
|
|
48
69
|
*/
|
|
49
|
-
declare const memo: <TDeps extends ReadonlyArray<any>, TDepArgs, TResult>({
|
|
50
|
-
fn,
|
|
51
|
-
memoDeps,
|
|
52
|
-
onAfterCompare,
|
|
53
|
-
onAfterUpdate,
|
|
54
|
-
onBeforeCompare,
|
|
55
|
-
onBeforeUpdate
|
|
56
|
-
}: MemoOptions<TDeps, TDepArgs, TResult>) => ((depArgs?: TDepArgs) => TResult);
|
|
70
|
+
declare const memo: <TDeps extends ReadonlyArray<any>, TDepArgs, TResult>({ fn, memoDeps, onAfterCompare, onAfterUpdate, onBeforeCompare, onBeforeUpdate }: MemoOptions<TDeps, TDepArgs, TResult>) => ((depArgs?: TDepArgs) => TResult);
|
|
57
71
|
interface TableMemoOptions<TFeatures extends TableFeatures, TDeps extends ReadonlyArray<any>, TDepArgs, TResult> extends MemoOptions<TDeps, TDepArgs, TResult> {
|
|
58
72
|
feature?: keyof TFeatures & string;
|
|
59
73
|
fnName: string;
|
|
60
74
|
objectId?: string;
|
|
61
75
|
onAfterUpdate?: () => void;
|
|
62
|
-
table:
|
|
76
|
+
table: Table<TFeatures, any>;
|
|
63
77
|
}
|
|
64
78
|
/**
|
|
65
79
|
* Creates a table-aware memoized function.
|
|
66
80
|
*
|
|
67
81
|
* This wraps `memo` with table debug options and feature metadata so row models and derived APIs can share consistent diagnostics.
|
|
68
82
|
*/
|
|
69
|
-
declare function tableMemo<TFeatures extends TableFeatures, TDeps extends ReadonlyArray<any>, TDepArgs, TResult>({
|
|
70
|
-
|
|
71
|
-
fnName,
|
|
72
|
-
objectId,
|
|
73
|
-
onAfterUpdate,
|
|
74
|
-
table,
|
|
75
|
-
...memoOptions
|
|
76
|
-
}: TableMemoOptions<TFeatures, TDeps, TDepArgs, TResult>): (depArgs?: TDepArgs | undefined) => TResult;
|
|
77
|
-
interface API<TDeps extends ReadonlyArray<any>, TDepArgs> {
|
|
83
|
+
declare function tableMemo<TFeatures extends TableFeatures, TDeps extends ReadonlyArray<any>, TDepArgs, TResult>({ feature, fnName, objectId, onAfterUpdate, table, ...memoOptions }: TableMemoOptions<TFeatures, TDeps, TDepArgs, TResult>): (depArgs?: TDepArgs | undefined) => TResult;
|
|
84
|
+
interface API<_TDeps extends ReadonlyArray<any>, _TDepArgs> {
|
|
78
85
|
fn: (...args: any) => any;
|
|
79
86
|
memoDeps?: (depArgs?: any) => [...any] | undefined;
|
|
80
87
|
}
|
|
@@ -91,8 +98,8 @@ declare function getFunctionNameInfo(staticFnName: string, splitBy?: '_' | '.'):
|
|
|
91
98
|
* Assigns Table API methods directly to the table instance.
|
|
92
99
|
* Unlike row/cell/column/header, the table is a singleton so methods are assigned directly.
|
|
93
100
|
*/
|
|
94
|
-
declare function assignTableAPIs<TFeatures extends TableFeatures, TData extends RowData, TDeps extends ReadonlyArray<any>, TDepArgs>(feature: keyof TFeatures & string, table:
|
|
95
|
-
interface PrototypeAPI<
|
|
101
|
+
declare function assignTableAPIs<TFeatures extends TableFeatures, TData extends RowData, TDeps extends ReadonlyArray<any>, TDepArgs>(feature: keyof TFeatures & string, table: Table<TFeatures, TData>, apis: APIObject<TDeps, NoInfer<TDepArgs>>): void;
|
|
102
|
+
interface PrototypeAPI<_TDeps extends ReadonlyArray<any>, _TDepArgs> {
|
|
96
103
|
fn: (self: any, ...args: any) => any;
|
|
97
104
|
memoDeps?: (self: any, depArgs?: any) => [...any] | undefined;
|
|
98
105
|
}
|
|
@@ -104,11 +111,10 @@ type PrototypeAPIObject<TDeps extends ReadonlyArray<any>, TDepArgs> = Record<str
|
|
|
104
111
|
* For memoized methods, the memo state is lazily created and stored on each instance.
|
|
105
112
|
* This provides the best of both worlds: shared method code + per-instance caching.
|
|
106
113
|
*/
|
|
107
|
-
declare function assignPrototypeAPIs<TFeatures extends TableFeatures, TData extends RowData, TDeps extends ReadonlyArray<any>, TDepArgs>(feature: keyof TFeatures & string, prototype: Record<string, any>, table:
|
|
114
|
+
declare function assignPrototypeAPIs<TFeatures extends TableFeatures, TData extends RowData, TDeps extends ReadonlyArray<any>, TDepArgs>(feature: keyof TFeatures & string, prototype: Record<string, any>, table: Table<TFeatures, TData>, apis: PrototypeAPIObject<TDeps, NoInfer<TDepArgs>>): void;
|
|
108
115
|
/**
|
|
109
116
|
* Looks to run the memoized function with the builder pattern on the object if it exists, otherwise fallback to the static method passed in.
|
|
110
117
|
*/
|
|
111
118
|
declare function callMemoOrStaticFn<TObject extends Record<string, any>, TArgs extends Array<any>, TReturn>(obj: TObject, fnKey: string, staticFn: (obj: TObject, ...args: TArgs) => TReturn, ...args: TArgs): TReturn;
|
|
112
119
|
//#endregion
|
|
113
|
-
export { API, APIObject, PrototypeAPI, PrototypeAPIObject, assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, flattenBy, functionalUpdate, getFunctionNameInfo, isFunction, makeStateUpdater, memo, tableMemo };
|
|
114
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
120
|
+
export { API, APIObject, PrototypeAPI, PrototypeAPIObject, assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, copyInstancePropertiesWithoutMemos, flattenBy, functionalUpdate, getFunctionNameInfo, hasOwn, isFunction, makeObjectMap, makeStateUpdater, memo, tableMemo };
|
package/dist/utils.js
CHANGED
|
@@ -17,25 +17,58 @@ function cloneState(value) {
|
|
|
17
17
|
if (value && typeof value === "object") {
|
|
18
18
|
const proto = Object.getPrototypeOf(value);
|
|
19
19
|
if (proto !== Object.prototype && proto !== null) return value;
|
|
20
|
-
const copy = {};
|
|
20
|
+
const copy = proto === null ? makeObjectMap() : {};
|
|
21
21
|
const keys = Object.keys(value);
|
|
22
22
|
for (let i = 0; i < keys.length; i++) {
|
|
23
23
|
const key = keys[i];
|
|
24
|
-
copy
|
|
24
|
+
Object.defineProperty(copy, key, {
|
|
25
|
+
configurable: true,
|
|
26
|
+
enumerable: true,
|
|
27
|
+
value: cloneState(value[key]),
|
|
28
|
+
writable: true
|
|
29
|
+
});
|
|
25
30
|
}
|
|
26
31
|
return copy;
|
|
27
32
|
}
|
|
28
33
|
return value;
|
|
29
34
|
}
|
|
30
35
|
/**
|
|
36
|
+
* Copies prototype-instance own properties without carrying over lazy memo
|
|
37
|
+
* closures or the per-row cell cache, both of which are bound to the source
|
|
38
|
+
* instance (cached cells reference the source row).
|
|
39
|
+
*/
|
|
40
|
+
function copyInstancePropertiesWithoutMemos(target, source) {
|
|
41
|
+
const keys = Object.keys(source);
|
|
42
|
+
const targetRecord = target;
|
|
43
|
+
for (let i = 0; i < keys.length; i++) {
|
|
44
|
+
const key = keys[i];
|
|
45
|
+
if (!key.startsWith("_memo_") && key !== "_cellsCache") targetRecord[key] = source[key];
|
|
46
|
+
}
|
|
47
|
+
return target;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates an object intended only for string-keyed dictionary lookups.
|
|
51
|
+
*
|
|
52
|
+
* The null prototype keeps user-controlled ids such as `__proto__` and
|
|
53
|
+
* `hasOwnProperty` as plain data keys.
|
|
54
|
+
*/
|
|
55
|
+
function makeObjectMap() {
|
|
56
|
+
return Object.create(null);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Checks whether an object owns a key, including null-prototype dictionaries.
|
|
60
|
+
*/
|
|
61
|
+
function hasOwn(obj, key) {
|
|
62
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
31
65
|
* Creates a table state updater for a single state slice.
|
|
32
66
|
*
|
|
33
67
|
* The updater writes through the table base atom for the slice and supports both value and functional updater forms.
|
|
34
68
|
*/
|
|
35
69
|
function makeStateUpdater(key, instance) {
|
|
36
70
|
return (updater) => {
|
|
37
|
-
|
|
38
|
-
(((_atoms = instance.options.atoms) === null || _atoms === void 0 ? void 0 : _atoms[key]) ?? instance.baseAtoms[key]).set((old) => functionalUpdate(updater, old));
|
|
71
|
+
(instance.options.atoms?.[key] ?? instance.baseAtoms[key]).set((old) => functionalUpdate(updater, old));
|
|
39
72
|
};
|
|
40
73
|
}
|
|
41
74
|
/**
|
|
@@ -70,21 +103,21 @@ const memo = ({ fn, memoDeps, onAfterCompare, onAfterUpdate, onBeforeCompare, on
|
|
|
70
103
|
let deps = [];
|
|
71
104
|
let result;
|
|
72
105
|
const memoizedFn = (depArgs) => {
|
|
73
|
-
onBeforeCompare
|
|
74
|
-
const newDeps = memoDeps
|
|
75
|
-
let depsChanged = !newDeps || newDeps.length !==
|
|
106
|
+
onBeforeCompare?.();
|
|
107
|
+
const newDeps = memoDeps?.(depArgs);
|
|
108
|
+
let depsChanged = !newDeps || newDeps.length !== deps?.length;
|
|
76
109
|
if (!depsChanged && newDeps) {
|
|
77
110
|
for (let i = 0; i < newDeps.length; i++) if (newDeps[i] !== deps[i]) {
|
|
78
111
|
depsChanged = true;
|
|
79
112
|
break;
|
|
80
113
|
}
|
|
81
114
|
}
|
|
82
|
-
onAfterCompare
|
|
115
|
+
onAfterCompare?.(depsChanged);
|
|
83
116
|
if (!depsChanged) return result;
|
|
84
117
|
deps = newDeps;
|
|
85
|
-
onBeforeUpdate
|
|
118
|
+
onBeforeUpdate?.();
|
|
86
119
|
result = fn(...newDeps ?? []);
|
|
87
|
-
onAfterUpdate
|
|
120
|
+
onAfterUpdate?.(result);
|
|
88
121
|
return result;
|
|
89
122
|
};
|
|
90
123
|
return memoizedFn;
|
|
@@ -100,21 +133,18 @@ const pad = (str, num) => {
|
|
|
100
133
|
* This wraps `memo` with table debug options and feature metadata so row models and derived APIs can share consistent diagnostics.
|
|
101
134
|
*/
|
|
102
135
|
function tableMemo({ feature, fnName, objectId, onAfterUpdate, table, ...memoOptions }) {
|
|
103
|
-
let beforeCompareTime;
|
|
104
|
-
let afterCompareTime;
|
|
105
136
|
let startCalcTime;
|
|
106
137
|
let endCalcTime;
|
|
107
138
|
let runCount = 0;
|
|
108
139
|
let debug;
|
|
109
|
-
let debugCache;
|
|
110
140
|
if (process.env.NODE_ENV === "development") {
|
|
111
|
-
const {
|
|
112
|
-
debugCache = _debugCache;
|
|
141
|
+
const { debugAll } = table.options;
|
|
113
142
|
const { parentName } = getFunctionNameInfo(fnName, ".");
|
|
114
|
-
|
|
143
|
+
const debugByParent = table.options[`debug${(parentName != "table" ? parentName + "s" : parentName).replace(parentName, parentName.charAt(0).toUpperCase() + parentName.slice(1))}`];
|
|
144
|
+
const debugByFeature = feature ? table.options[`debug${feature.charAt(0).toUpperCase() + feature.slice(1)}`] : false;
|
|
145
|
+
debug = debugAll || debugByParent || debugByFeature;
|
|
115
146
|
}
|
|
116
147
|
function logTime(time, depsChanged) {
|
|
117
|
-
var _memoOptions$memoDeps;
|
|
118
148
|
const runType = runCount === 0 ? "(1st run)" : depsChanged ? "(rerun #" + runCount + ")" : "(cache)";
|
|
119
149
|
runCount++;
|
|
120
150
|
console.groupCollapsed(`%c⏱ ${pad(`${time.toFixed(1)} ms`, 12)} %c${runType}%c ${fnName}%c ${objectId ? `(${fnName.split(".")[0]}Id: ${objectId})` : ""}`, `font-size: .6rem; font-weight: bold; ${depsChanged ? `color: hsl(
|
|
@@ -122,7 +152,7 @@ function tableMemo({ feature, fnName, objectId, onAfterUpdate, table, ...memoOpt
|
|
|
122
152
|
console.info({
|
|
123
153
|
feature,
|
|
124
154
|
state: table.store.state,
|
|
125
|
-
deps:
|
|
155
|
+
deps: memoOptions.memoDeps?.toString()
|
|
126
156
|
});
|
|
127
157
|
console.trace();
|
|
128
158
|
console.groupEnd();
|
|
@@ -133,16 +163,8 @@ function tableMemo({ feature, fnName, objectId, onAfterUpdate, table, ...memoOpt
|
|
|
133
163
|
schedule(() => untrack(() => onAfterUpdate()));
|
|
134
164
|
};
|
|
135
165
|
const debugOptions = process.env.NODE_ENV === "development" ? {
|
|
136
|
-
onBeforeCompare: () => {
|
|
137
|
-
|
|
138
|
-
},
|
|
139
|
-
onAfterCompare: (depsChanged) => {
|
|
140
|
-
if (debugCache) {
|
|
141
|
-
afterCompareTime = performance.now();
|
|
142
|
-
const compareTime = Math.round((afterCompareTime - beforeCompareTime) * 100) / 100;
|
|
143
|
-
if (!depsChanged) logTime(compareTime, depsChanged);
|
|
144
|
-
}
|
|
145
|
-
},
|
|
166
|
+
onBeforeCompare: () => {},
|
|
167
|
+
onAfterCompare: (depsChanged) => {},
|
|
146
168
|
onBeforeUpdate: () => {
|
|
147
169
|
if (debug) startCalcTime = performance.now();
|
|
148
170
|
},
|
|
@@ -223,10 +245,8 @@ function assignPrototypeAPIs(feature, prototype, table, apis) {
|
|
|
223
245
|
* Looks to run the memoized function with the builder pattern on the object if it exists, otherwise fallback to the static method passed in.
|
|
224
246
|
*/
|
|
225
247
|
function callMemoOrStaticFn(obj, fnKey, staticFn, ...args) {
|
|
226
|
-
|
|
227
|
-
return ((_obj$fnKey = obj[fnKey]) === null || _obj$fnKey === void 0 ? void 0 : _obj$fnKey.call(obj, ...args)) ?? staticFn(obj, ...args);
|
|
248
|
+
return obj[fnKey]?.(...args) ?? staticFn(obj, ...args);
|
|
228
249
|
}
|
|
229
250
|
|
|
230
251
|
//#endregion
|
|
231
|
-
export { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, flattenBy, functionalUpdate, getFunctionNameInfo, isFunction, makeStateUpdater, memo, tableMemo };
|
|
232
|
-
//# sourceMappingURL=utils.js.map
|
|
252
|
+
export { assignPrototypeAPIs, assignTableAPIs, callMemoOrStaticFn, cloneState, copyInstancePropertiesWithoutMemos, flattenBy, functionalUpdate, getFunctionNameInfo, hasOwn, isFunction, makeObjectMap, makeStateUpdater, memo, tableMemo };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { TableState_WorkerRowModels, TableWorkerStage } from "./tableWorkerProtocol.js";
|
|
2
|
+
import { Table } from "../types/Table.js";
|
|
3
|
+
import { TableFeature } from "../types/TableFeatures.js";
|
|
4
|
+
import { TableWorkerDataPayload } from "./rebuildRowModel.js";
|
|
5
|
+
//#region src/worker/createTableWorker.d.ts
|
|
6
|
+
declare module '../types/TableFeatures' {
|
|
7
|
+
interface Plugins {
|
|
8
|
+
workerRowModelsFeature: TableFeature;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
declare module '../types/TableState' {
|
|
12
|
+
interface TableState_FeatureMap {
|
|
13
|
+
workerRowModelsFeature: TableState_WorkerRowModels;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
interface TableWorkerOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Creates the dedicated worker that runs the shadow table. The worker entry
|
|
19
|
+
* must call `initTableWorker` with the same columns and processing config.
|
|
20
|
+
*
|
|
21
|
+
* The `new Worker(new URL(...))` expression must live in your code (not the
|
|
22
|
+
* library) so your bundler can statically discover and bundle the worker
|
|
23
|
+
* entry file.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* createWorker: () =>
|
|
28
|
+
* new Worker(new URL('./table.worker.ts', import.meta.url), {
|
|
29
|
+
* type: 'module',
|
|
30
|
+
* })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
createWorker: () => Worker;
|
|
34
|
+
}
|
|
35
|
+
interface TableWorkerBridge {
|
|
36
|
+
worker: Worker | null;
|
|
37
|
+
/** The worker errored (load failure or uncaught throw); stop posting. */
|
|
38
|
+
failed: boolean;
|
|
39
|
+
lastData: unknown;
|
|
40
|
+
dataVersion: number;
|
|
41
|
+
requestId: number;
|
|
42
|
+
resultRequestId: number;
|
|
43
|
+
/** A process request has been posted and its result has not arrived yet. */
|
|
44
|
+
inFlight: boolean;
|
|
45
|
+
/** State changed since the last posted request; post when possible. */
|
|
46
|
+
needsProcess: boolean;
|
|
47
|
+
sentAt: number;
|
|
48
|
+
/** The stages registered on this table (grows as factories initialize). */
|
|
49
|
+
stages: Set<TableWorkerStage>;
|
|
50
|
+
/** Snapshot of state refs + stage count captured at the last post. */
|
|
51
|
+
sentState: Record<string, unknown> | null;
|
|
52
|
+
sentStageCount: number;
|
|
53
|
+
/** Latest observed state refs, posted on the trailing edge if in flight. */
|
|
54
|
+
lastState: Record<string, unknown>;
|
|
55
|
+
results: { [K in TableWorkerStage]?: TableWorkerDataPayload; };
|
|
56
|
+
/** Bumped per stage only when that stage's payload actually changed. */
|
|
57
|
+
stageVersions: { [K in TableWorkerStage]?: number; };
|
|
58
|
+
}
|
|
59
|
+
type AnyTable = Table<any, any>;
|
|
60
|
+
/**
|
|
61
|
+
* A handle shared by every worker-backed row model on a table. It owns the
|
|
62
|
+
* worker instance and the per-table request/result bookkeeping, so registering
|
|
63
|
+
* one stage or four costs exactly one worker and one round trip per change.
|
|
64
|
+
*/
|
|
65
|
+
interface TableWorker {
|
|
66
|
+
_options: TableWorkerOptions;
|
|
67
|
+
_bridges: WeakMap<object, TableWorkerBridge>;
|
|
68
|
+
_liveBridges: Set<TableWorkerBridge>;
|
|
69
|
+
/**
|
|
70
|
+
* Terminates every worker created through this handle and resets the
|
|
71
|
+
* bookkeeping. Safe to call at any time: the next row model read lazily
|
|
72
|
+
* recreates the worker and re-sends the data (self-healing). Note that
|
|
73
|
+
* nothing calls this automatically yet; React StrictMode double-mounts and
|
|
74
|
+
* HMR updates still leak a worker in development until the reactivity
|
|
75
|
+
* bindings grow a real `unmount` hook.
|
|
76
|
+
*/
|
|
77
|
+
terminate: () => void;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Registers the `workerRowModels` state slice
|
|
81
|
+
* (`{ version, isPending, lastComputeMs, lastRoundTripMs }`). Worker results
|
|
82
|
+
* land by bumping `version`, so re-renders flow through the exact same state
|
|
83
|
+
* mechanism as every other table state change.
|
|
84
|
+
*/
|
|
85
|
+
declare const workerRowModelsFeature: TableFeature;
|
|
86
|
+
/**
|
|
87
|
+
* Creates the shared worker handle for a table's worker-backed row models.
|
|
88
|
+
* Pass it to `createWorkerRowModel()` once per stage you want offloaded.
|
|
89
|
+
*/
|
|
90
|
+
declare function createTableWorker(options: TableWorkerOptions): TableWorker;
|
|
91
|
+
declare function getTableWorkerBridge(tableWorker: TableWorker, table: AnyTable): TableWorkerBridge;
|
|
92
|
+
/**
|
|
93
|
+
* Pull-based sync, called at the top of every worker-backed row model read
|
|
94
|
+
* (i.e. every render). Posts data on identity change and a single-flight
|
|
95
|
+
* process request on state change; both are cheap no-ops otherwise, and
|
|
96
|
+
* multiple stages sharing the handle dedupe onto one request.
|
|
97
|
+
*/
|
|
98
|
+
declare function syncTableWorker(tableWorker: TableWorker, table: AnyTable): void;
|
|
99
|
+
//#endregion
|
|
100
|
+
export { TableWorker, TableWorkerBridge, TableWorkerOptions, createTableWorker, getTableWorkerBridge, syncTableWorker, workerRowModelsFeature };
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { table_autoResetPageIndex } from "../features/row-pagination/rowPaginationFeature.utils.js";
|
|
2
|
+
import { table_autoResetExpanded } from "../features/row-expanding/rowExpandingFeature.utils.js";
|
|
3
|
+
import { tableWorkerPipeline, tableWorkerStageStateDeps } from "./tableWorkerProtocol.js";
|
|
4
|
+
|
|
5
|
+
//#region src/worker/createTableWorker.ts
|
|
6
|
+
/**
|
|
7
|
+
* Registers the `workerRowModels` state slice
|
|
8
|
+
* (`{ version, isPending, lastComputeMs, lastRoundTripMs }`). Worker results
|
|
9
|
+
* land by bumping `version`, so re-renders flow through the exact same state
|
|
10
|
+
* mechanism as every other table state change.
|
|
11
|
+
*/
|
|
12
|
+
const workerRowModelsFeature = { getInitialState: (initialState) => ({
|
|
13
|
+
workerRowModels: {
|
|
14
|
+
version: 0,
|
|
15
|
+
isPending: false
|
|
16
|
+
},
|
|
17
|
+
...initialState
|
|
18
|
+
}) };
|
|
19
|
+
/**
|
|
20
|
+
* Creates the shared worker handle for a table's worker-backed row models.
|
|
21
|
+
* Pass it to `createWorkerRowModel()` once per stage you want offloaded.
|
|
22
|
+
*/
|
|
23
|
+
function createTableWorker(options) {
|
|
24
|
+
const liveBridges = /* @__PURE__ */ new Set();
|
|
25
|
+
return {
|
|
26
|
+
_options: options,
|
|
27
|
+
_bridges: /* @__PURE__ */ new WeakMap(),
|
|
28
|
+
_liveBridges: liveBridges,
|
|
29
|
+
terminate: () => {
|
|
30
|
+
for (const bridge of liveBridges) {
|
|
31
|
+
bridge.worker?.terminate();
|
|
32
|
+
bridge.worker = null;
|
|
33
|
+
bridge.failed = false;
|
|
34
|
+
bridge.lastData = void 0;
|
|
35
|
+
bridge.inFlight = false;
|
|
36
|
+
bridge.needsProcess = true;
|
|
37
|
+
bridge.sentState = null;
|
|
38
|
+
bridge.sentStageCount = 0;
|
|
39
|
+
}
|
|
40
|
+
liveBridges.clear();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function getTableWorkerBridge(tableWorker, table) {
|
|
45
|
+
let bridge = tableWorker._bridges.get(table);
|
|
46
|
+
if (!bridge) {
|
|
47
|
+
bridge = {
|
|
48
|
+
worker: null,
|
|
49
|
+
failed: false,
|
|
50
|
+
lastData: void 0,
|
|
51
|
+
dataVersion: 0,
|
|
52
|
+
requestId: 0,
|
|
53
|
+
resultRequestId: 0,
|
|
54
|
+
inFlight: false,
|
|
55
|
+
needsProcess: true,
|
|
56
|
+
sentAt: 0,
|
|
57
|
+
stages: /* @__PURE__ */ new Set(),
|
|
58
|
+
sentState: null,
|
|
59
|
+
sentStageCount: 0,
|
|
60
|
+
lastState: {},
|
|
61
|
+
results: {},
|
|
62
|
+
stageVersions: {}
|
|
63
|
+
};
|
|
64
|
+
tableWorker._bridges.set(table, bridge);
|
|
65
|
+
}
|
|
66
|
+
return bridge;
|
|
67
|
+
}
|
|
68
|
+
/** Shallow reference comparison; atoms return stable refs when unchanged. */
|
|
69
|
+
function statesEqual(a, b) {
|
|
70
|
+
if (a === null) return false;
|
|
71
|
+
const aKeys = Object.keys(a);
|
|
72
|
+
const bKeys = Object.keys(b);
|
|
73
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
74
|
+
for (const key of bKeys) if (a[key] !== b[key]) return false;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
function setWorkerRowModelsState(table, update) {
|
|
78
|
+
table.baseAtoms.workerRowModels?.set((prev) => update(prev ?? { version: 0 }));
|
|
79
|
+
}
|
|
80
|
+
function postProcess(table, bridge) {
|
|
81
|
+
const stages = tableWorkerPipeline.filter((stage) => bridge.stages.has(stage));
|
|
82
|
+
bridge.needsProcess = false;
|
|
83
|
+
bridge.sentState = bridge.lastState;
|
|
84
|
+
bridge.sentStageCount = bridge.stages.size;
|
|
85
|
+
bridge.inFlight = true;
|
|
86
|
+
bridge.sentAt = performance.now();
|
|
87
|
+
const requestId = ++bridge.requestId;
|
|
88
|
+
bridge.worker.postMessage({
|
|
89
|
+
type: "process",
|
|
90
|
+
requestId,
|
|
91
|
+
dataVersion: bridge.dataVersion,
|
|
92
|
+
stages,
|
|
93
|
+
state: bridge.lastState
|
|
94
|
+
});
|
|
95
|
+
table._reactivity.schedule(() => {
|
|
96
|
+
if (bridge.requestId === requestId && bridge.resultRequestId < requestId) setWorkerRowModelsState(table, (prev) => ({
|
|
97
|
+
...prev,
|
|
98
|
+
isPending: true
|
|
99
|
+
}));
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function handleResult(table, bridge, message) {
|
|
103
|
+
if (message.requestId !== bridge.requestId) return;
|
|
104
|
+
bridge.inFlight = false;
|
|
105
|
+
bridge.resultRequestId = message.requestId;
|
|
106
|
+
if (message.dataVersion !== bridge.dataVersion) {
|
|
107
|
+
postProcess(table, bridge);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
let anyChanged = false;
|
|
111
|
+
let groupedChanged = false;
|
|
112
|
+
for (const [stage, payload] of Object.entries(message.stages)) {
|
|
113
|
+
if (payload.kind === "unchanged") continue;
|
|
114
|
+
bridge.results[stage] = payload;
|
|
115
|
+
bridge.stageVersions[stage] = (bridge.stageVersions[stage] ?? 0) + 1;
|
|
116
|
+
anyChanged = true;
|
|
117
|
+
if (stage === "grouped") groupedChanged = true;
|
|
118
|
+
}
|
|
119
|
+
const roundTripMs = performance.now() - bridge.sentAt;
|
|
120
|
+
setWorkerRowModelsState(table, (prev) => ({
|
|
121
|
+
version: (prev.version ?? 0) + 1,
|
|
122
|
+
isPending: false,
|
|
123
|
+
lastComputeMs: message.computeMs,
|
|
124
|
+
lastRoundTripMs: roundTripMs
|
|
125
|
+
}));
|
|
126
|
+
if (anyChanged) table._reactivity.schedule(() => table._reactivity.untrack(() => {
|
|
127
|
+
if (groupedChanged) table_autoResetExpanded(table);
|
|
128
|
+
table_autoResetPageIndex(table);
|
|
129
|
+
}));
|
|
130
|
+
if (bridge.needsProcess) postProcess(table, bridge);
|
|
131
|
+
}
|
|
132
|
+
function handleError(table, bridge, event) {
|
|
133
|
+
if (bridge.failed) return;
|
|
134
|
+
bridge.failed = true;
|
|
135
|
+
bridge.inFlight = false;
|
|
136
|
+
console.error("[table-worker] The table worker failed; worker row models will keep their last results and stop updating. Check that the worker entry loads and that its initTableWorker() config is thread-portable.", event);
|
|
137
|
+
bridge.worker?.terminate();
|
|
138
|
+
bridge.worker = null;
|
|
139
|
+
setWorkerRowModelsState(table, (prev) => ({
|
|
140
|
+
...prev,
|
|
141
|
+
isPending: false
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
function ensureWorker(tableWorker, table, bridge) {
|
|
145
|
+
if (bridge.worker) return;
|
|
146
|
+
bridge.worker = tableWorker._options.createWorker();
|
|
147
|
+
tableWorker._liveBridges.add(bridge);
|
|
148
|
+
bridge.worker.onmessage = (event) => {
|
|
149
|
+
handleResult(table, bridge, event.data);
|
|
150
|
+
};
|
|
151
|
+
bridge.worker.onerror = (event) => handleError(table, bridge, event);
|
|
152
|
+
bridge.worker.onmessageerror = (event) => handleError(table, bridge, event);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Pull-based sync, called at the top of every worker-backed row model read
|
|
156
|
+
* (i.e. every render). Posts data on identity change and a single-flight
|
|
157
|
+
* process request on state change; both are cheap no-ops otherwise, and
|
|
158
|
+
* multiple stages sharing the handle dedupe onto one request.
|
|
159
|
+
*/
|
|
160
|
+
function syncTableWorker(tableWorker, table) {
|
|
161
|
+
if (typeof Worker === "undefined") return;
|
|
162
|
+
const bridge = getTableWorkerBridge(tableWorker, table);
|
|
163
|
+
if (bridge.failed) return;
|
|
164
|
+
ensureWorker(tableWorker, table, bridge);
|
|
165
|
+
const data = table.options.data;
|
|
166
|
+
if (data !== bridge.lastData) {
|
|
167
|
+
bridge.lastData = data;
|
|
168
|
+
bridge.dataVersion++;
|
|
169
|
+
bridge.worker.postMessage({
|
|
170
|
+
type: "data",
|
|
171
|
+
dataVersion: bridge.dataVersion,
|
|
172
|
+
data
|
|
173
|
+
});
|
|
174
|
+
bridge.needsProcess = true;
|
|
175
|
+
}
|
|
176
|
+
const atoms = table.atoms;
|
|
177
|
+
const state = {};
|
|
178
|
+
for (const stage of bridge.stages) for (const key of tableWorkerStageStateDeps[stage]) state[key] = atoms[key]?.get();
|
|
179
|
+
bridge.lastState = state;
|
|
180
|
+
if (!bridge.needsProcess && (!statesEqual(bridge.sentState, state) || bridge.stages.size !== bridge.sentStageCount)) bridge.needsProcess = true;
|
|
181
|
+
if (bridge.needsProcess && !bridge.inFlight) postProcess(table, bridge);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
//#endregion
|
|
185
|
+
export { createTableWorker, getTableWorkerBridge, syncTableWorker, workerRowModelsFeature };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { RowData } from "../types/type-utils.js";
|
|
2
|
+
import { TableWorkerStage } from "./tableWorkerProtocol.js";
|
|
3
|
+
import { RowModel } from "../core/row-models/coreRowModelsFeature.types.js";
|
|
4
|
+
import { Table } from "../types/Table.js";
|
|
5
|
+
import { TableFeatures } from "../types/TableFeatures.js";
|
|
6
|
+
import { TableWorker } from "./createTableWorker.js";
|
|
7
|
+
//#region src/worker/createWorkerRowModel.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Turns any row model stage into a worker-backed one. The returned factory
|
|
10
|
+
* plugs into the standard feature slot for that stage, so it composes with
|
|
11
|
+
* the rest of the pipeline exactly like the sync factory it replaces.
|
|
12
|
+
*
|
|
13
|
+
* Register only the stages you want offloaded; each import is independent and
|
|
14
|
+
* tree-shakable. All stages on a table share one worker and one round trip
|
|
15
|
+
* per state change via the `tableWorker` handle. Until a result lands, the
|
|
16
|
+
* stage returns its pre-stage model (stale-while-revalidate).
|
|
17
|
+
*
|
|
18
|
+
* Offloaded stages must form a contiguous prefix of the pipeline
|
|
19
|
+
* (filtered -> grouped -> sorted -> expanded): a stage's worker result encodes
|
|
20
|
+
* everything upstream as computed in the worker, so any upstream stage
|
|
21
|
+
* registered on the main thread must be offloaded too. A dev warning fires on
|
|
22
|
+
* mismatches.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const tableWorker = createTableWorker({ createWorker })
|
|
27
|
+
*
|
|
28
|
+
* const features = tableFeatures({
|
|
29
|
+
* rowSortingFeature,
|
|
30
|
+
* columnGroupingFeature,
|
|
31
|
+
* workerRowModelsFeature,
|
|
32
|
+
* filteredRowModel: createWorkerRowModel(tableWorker, 'filtered'),
|
|
33
|
+
* groupedRowModel: createWorkerRowModel(tableWorker, 'grouped'),
|
|
34
|
+
* sortedRowModel: createWorkerRowModel(tableWorker, 'sorted'),
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
declare function createWorkerRowModel(tableWorker: TableWorker, stage: TableWorkerStage): <TFeatures extends TableFeatures, TData extends RowData>(_table: Table<TFeatures, TData>) => (() => RowModel<TFeatures, TData>);
|
|
39
|
+
//#endregion
|
|
40
|
+
export { createWorkerRowModel };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { tableMemo } from "../utils.js";
|
|
2
|
+
import { tableWorkerPipeline } from "./tableWorkerProtocol.js";
|
|
3
|
+
import { getTableWorkerBridge, syncTableWorker } from "./createTableWorker.js";
|
|
4
|
+
import { rebuildRowModel } from "./rebuildRowModel.js";
|
|
5
|
+
|
|
6
|
+
//#region src/worker/createWorkerRowModel.ts
|
|
7
|
+
function capitalize(stage) {
|
|
8
|
+
return stage.charAt(0).toUpperCase() + stage.slice(1);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Turns any row model stage into a worker-backed one. The returned factory
|
|
12
|
+
* plugs into the standard feature slot for that stage, so it composes with
|
|
13
|
+
* the rest of the pipeline exactly like the sync factory it replaces.
|
|
14
|
+
*
|
|
15
|
+
* Register only the stages you want offloaded; each import is independent and
|
|
16
|
+
* tree-shakable. All stages on a table share one worker and one round trip
|
|
17
|
+
* per state change via the `tableWorker` handle. Until a result lands, the
|
|
18
|
+
* stage returns its pre-stage model (stale-while-revalidate).
|
|
19
|
+
*
|
|
20
|
+
* Offloaded stages must form a contiguous prefix of the pipeline
|
|
21
|
+
* (filtered -> grouped -> sorted -> expanded): a stage's worker result encodes
|
|
22
|
+
* everything upstream as computed in the worker, so any upstream stage
|
|
23
|
+
* registered on the main thread must be offloaded too. A dev warning fires on
|
|
24
|
+
* mismatches.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const tableWorker = createTableWorker({ createWorker })
|
|
29
|
+
*
|
|
30
|
+
* const features = tableFeatures({
|
|
31
|
+
* rowSortingFeature,
|
|
32
|
+
* columnGroupingFeature,
|
|
33
|
+
* workerRowModelsFeature,
|
|
34
|
+
* filteredRowModel: createWorkerRowModel(tableWorker, 'filtered'),
|
|
35
|
+
* groupedRowModel: createWorkerRowModel(tableWorker, 'grouped'),
|
|
36
|
+
* sortedRowModel: createWorkerRowModel(tableWorker, 'sorted'),
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
function createWorkerRowModel(tableWorker, stage) {
|
|
41
|
+
return (_table) => {
|
|
42
|
+
const table = _table;
|
|
43
|
+
getTableWorkerBridge(tableWorker, table).stages.add(stage);
|
|
44
|
+
let warned = false;
|
|
45
|
+
const warnOnce = (message) => {
|
|
46
|
+
if (process.env.NODE_ENV === "development" && !warned) {
|
|
47
|
+
warned = true;
|
|
48
|
+
console.warn(`[table-worker] ${message}`);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const memoized = tableMemo({
|
|
52
|
+
table,
|
|
53
|
+
fnName: `table.get${capitalize(stage)}RowModel`,
|
|
54
|
+
memoDeps: () => [table.getCoreRowModel(), getTableWorkerBridge(tableWorker, table).stageVersions[stage]],
|
|
55
|
+
fn: () => {
|
|
56
|
+
const bridge = getTableWorkerBridge(tableWorker, table);
|
|
57
|
+
const payload = bridge.results[stage];
|
|
58
|
+
if (!payload) {
|
|
59
|
+
if (bridge.resultRequestId > 0) warnOnce(`The worker returned no '${stage}' result. Make sure the worker's initTableWorker() config registers a ${stage}RowModel factory.`);
|
|
60
|
+
return table[`getPre${capitalize(stage)}RowModel`]();
|
|
61
|
+
}
|
|
62
|
+
if (bridge.resultRequestId > 0) for (const upstream of tableWorkerPipeline) {
|
|
63
|
+
if (upstream === stage) break;
|
|
64
|
+
if (table.options.features[`${upstream}RowModel`] && !bridge.results[upstream]) warnOnce(`This table has a ${upstream}RowModel, but the worker result for '${stage}' was computed without an offloaded '${upstream}' stage, so it is bypassed. Offload it too with createWorkerRowModel(tableWorker, '${upstream}').`);
|
|
65
|
+
}
|
|
66
|
+
return rebuildRowModel(table, payload, stage !== "filtered");
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return () => {
|
|
70
|
+
syncTableWorker(tableWorker, table);
|
|
71
|
+
return memoized();
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
export { createWorkerRowModel };
|