@tanstack/table-core 9.0.0-alpha.10 → 9.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/core/cells/constructCell.d.ts +7 -0
- package/dist/esm/core/cells/constructCell.js +21 -0
- package/dist/esm/core/cells/constructCell.js.map +1 -0
- package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
- package/dist/esm/core/cells/coreCellsFeature.js +26 -0
- package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
- package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
- package/dist/esm/core/columns/constructColumn.d.ts +6 -0
- package/dist/esm/core/columns/constructColumn.js +60 -0
- package/dist/esm/core/columns/constructColumn.js.map +1 -0
- package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
- package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
- package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
- package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
- package/dist/esm/core/coreFeatures.d.ts +15 -0
- package/dist/esm/core/coreFeatures.js +18 -0
- package/dist/esm/core/coreFeatures.js.map +1 -0
- package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
- package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
- package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
- package/dist/esm/core/headers/constructHeader.d.ts +12 -0
- package/dist/esm/core/headers/constructHeader.js +28 -0
- package/dist/esm/core/headers/constructHeader.js.map +1 -0
- package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
- package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
- package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
- package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
- package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
- package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
- package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
- package/dist/esm/core/rows/constructRow.d.ts +5 -0
- package/dist/esm/core/rows/constructRow.js +29 -0
- package/dist/esm/core/rows/constructRow.js.map +1 -0
- package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
- package/dist/esm/core/rows/coreRowsFeature.js +52 -0
- package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
- package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
- package/dist/esm/core/table/constructTable.d.ts +9 -0
- package/dist/esm/core/table/constructTable.js +62 -0
- package/dist/esm/core/table/constructTable.js.map +1 -0
- package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
- package/dist/esm/core/table/coreTablesFeature.js +22 -0
- package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
- package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
- package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
- package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
- package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
- package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
- package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
- package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
- package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
- package/dist/esm/features/stockFeatures.d.ts +31 -0
- package/dist/esm/features/stockFeatures.js +34 -0
- package/dist/esm/features/stockFeatures.js.map +1 -0
- package/dist/esm/fns/aggregationFns.d.ts +49 -0
- package/dist/esm/fns/aggregationFns.js +110 -0
- package/dist/esm/fns/aggregationFns.js.map +1 -0
- package/dist/esm/fns/filterFns.d.ts +76 -0
- package/dist/esm/fns/filterFns.js +134 -0
- package/dist/esm/fns/filterFns.js.map +1 -0
- package/dist/esm/fns/sortFns.d.ts +17 -0
- package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
- package/dist/esm/fns/sortFns.js.map +1 -0
- package/dist/esm/helpers/columnHelper.d.ts +61 -0
- package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
- package/dist/esm/helpers/columnHelper.js.map +1 -0
- package/dist/esm/helpers/tableFeatures.d.ts +13 -0
- package/dist/esm/helpers/tableFeatures.js +7 -0
- package/dist/esm/helpers/tableFeatures.js.map +1 -0
- package/dist/esm/helpers/tableHelper.d.ts +25 -0
- package/dist/esm/helpers/tableHelper.js +13 -0
- package/dist/esm/helpers/tableHelper.js.map +1 -0
- package/dist/esm/helpers/tableOptions.d.ts +23 -0
- package/dist/esm/helpers/tableOptions.js +7 -0
- package/dist/esm/helpers/tableOptions.js.map +1 -0
- package/dist/esm/index.d.ts +109 -33
- package/dist/esm/index.js +397 -66
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/Cell.d.ts +13 -0
- package/dist/esm/types/Column.d.ts +26 -0
- package/dist/esm/types/ColumnDef.d.ts +64 -0
- package/dist/esm/types/Header.d.ts +14 -0
- package/dist/esm/types/HeaderGroup.d.ts +12 -0
- package/dist/esm/types/Row.d.ts +19 -0
- package/dist/esm/types/RowModel.d.ts +23 -0
- package/dist/esm/types/RowModelFns.d.ts +15 -0
- package/dist/esm/types/Table.d.ts +53 -0
- package/dist/esm/types/TableFeatures.d.ts +77 -0
- package/dist/esm/types/TableOptions.d.ts +39 -0
- package/dist/esm/types/TableState.d.ts +23 -0
- package/dist/esm/types/type-utils.d.ts +22 -0
- package/dist/esm/utils.d.ts +66 -33
- package/dist/esm/utils.js +183 -50
- package/dist/esm/utils.js.map +1 -1
- package/package.json +21 -12
- package/src/core/cells/constructCell.ts +49 -0
- package/src/core/cells/coreCellsFeature.ts +44 -0
- package/src/core/cells/coreCellsFeature.types.ts +68 -0
- package/src/core/cells/coreCellsFeature.utils.ts +35 -0
- package/src/core/columns/constructColumn.ts +111 -0
- package/src/core/columns/coreColumnsFeature.ts +90 -0
- package/src/core/columns/coreColumnsFeature.types.ts +103 -0
- package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
- package/src/core/coreFeatures.ts +24 -0
- package/src/core/headers/buildHeaderGroups.ts +177 -0
- package/src/core/headers/constructHeader.ts +61 -0
- package/src/core/headers/coreHeadersFeature.ts +98 -0
- package/src/core/headers/coreHeadersFeature.types.ts +123 -0
- package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
- package/src/core/row-models/coreRowModelsFeature.ts +78 -0
- package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
- package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
- package/src/core/row-models/createCoreRowModel.ts +88 -0
- package/src/core/rows/constructRow.ts +59 -0
- package/src/core/rows/coreRowsFeature.ts +84 -0
- package/src/core/rows/coreRowsFeature.types.ts +111 -0
- package/src/core/rows/coreRowsFeature.utils.ts +152 -0
- package/src/core/table/constructTable.ts +89 -0
- package/src/core/table/coreTablesFeature.ts +36 -0
- package/src/core/table/coreTablesFeature.types.ts +123 -0
- package/src/core/table/coreTablesFeature.utils.ts +40 -0
- package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
- package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
- package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
- package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
- package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
- package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
- package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
- package/src/features/column-filtering/filterRowsUtils.ts +152 -0
- package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
- package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
- package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
- package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
- package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
- package/src/features/column-pinning/columnPinningFeature.ts +324 -0
- package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
- package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
- package/src/features/column-resizing/columnResizingFeature.ts +92 -0
- package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
- package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
- package/src/features/column-sizing/columnSizingFeature.ts +146 -0
- package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
- package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
- package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
- package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
- package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
- package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
- package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
- package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
- package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
- package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
- package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
- package/src/features/row-pinning/rowPinningFeature.ts +121 -0
- package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
- package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
- package/src/features/row-selection/rowSelectionFeature.ts +164 -0
- package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
- package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
- package/src/features/row-sorting/createSortedRowModel.ts +147 -0
- package/src/features/row-sorting/rowSortingFeature.ts +136 -0
- package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
- package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
- package/src/features/stockFeatures.ts +48 -0
- package/src/fns/aggregationFns.ts +220 -0
- package/src/fns/filterFns.ts +379 -0
- package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
- package/src/helpers/columnHelper.ts +117 -0
- package/src/helpers/tableFeatures.ts +24 -0
- package/src/helpers/tableHelper.ts +61 -0
- package/src/helpers/tableOptions.ts +82 -0
- package/src/index.ts +156 -42
- package/src/types/Cell.ts +41 -0
- package/src/types/Column.ts +86 -0
- package/src/types/ColumnDef.ts +217 -0
- package/src/types/Header.ts +45 -0
- package/src/types/HeaderGroup.ts +24 -0
- package/src/types/Row.ts +55 -0
- package/src/types/RowModel.ts +137 -0
- package/src/types/RowModelFns.ts +51 -0
- package/src/types/Table.ts +125 -0
- package/src/types/TableFeatures.ts +150 -0
- package/src/types/TableOptions.ts +125 -0
- package/src/types/TableState.ts +88 -0
- package/src/types/type-utils.ts +84 -0
- package/src/utils.ts +344 -164
- package/dist/cjs/aggregationFns.cjs +0 -94
- package/dist/cjs/aggregationFns.cjs.map +0 -1
- package/dist/cjs/aggregationFns.d.cts +0 -14
- package/dist/cjs/columnHelper.cjs +0 -19
- package/dist/cjs/columnHelper.cjs.map +0 -1
- package/dist/cjs/columnHelper.d.cts +0 -9
- package/dist/cjs/core/cell.cjs +0 -38
- package/dist/cjs/core/cell.cjs.map +0 -1
- package/dist/cjs/core/cell.d.cts +0 -50
- package/dist/cjs/core/column.cjs +0 -81
- package/dist/cjs/core/column.cjs.map +0 -1
- package/dist/cjs/core/column.d.cts +0 -56
- package/dist/cjs/core/headers.cjs +0 -310
- package/dist/cjs/core/headers.cjs.map +0 -1
- package/dist/cjs/core/headers.d.cts +0 -195
- package/dist/cjs/core/row.cjs +0 -92
- package/dist/cjs/core/row.cjs.map +0 -1
- package/dist/cjs/core/row.d.cts +0 -92
- package/dist/cjs/core/table.cjs +0 -232
- package/dist/cjs/core/table.cjs.map +0 -1
- package/dist/cjs/core/table.d.cts +0 -229
- package/dist/cjs/features/ColumnFaceting.cjs +0 -29
- package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
- package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
- package/dist/cjs/features/ColumnFiltering.cjs +0 -137
- package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
- package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
- package/dist/cjs/features/ColumnGrouping.cjs +0 -133
- package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
- package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
- package/dist/cjs/features/ColumnOrdering.cjs +0 -76
- package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
- package/dist/cjs/features/ColumnPinning.cjs +0 -145
- package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
- package/dist/cjs/features/ColumnPinning.d.cts +0 -127
- package/dist/cjs/features/ColumnSizing.cjs +0 -307
- package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
- package/dist/cjs/features/ColumnSizing.d.cts +0 -194
- package/dist/cjs/features/ColumnVisibility.cjs +0 -144
- package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
- package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
- package/dist/cjs/features/GlobalFaceting.cjs +0 -29
- package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
- package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
- package/dist/cjs/features/GlobalFiltering.cjs +0 -50
- package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
- package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
- package/dist/cjs/features/RowExpanding.cjs +0 -152
- package/dist/cjs/features/RowExpanding.cjs.map +0 -1
- package/dist/cjs/features/RowExpanding.d.cts +0 -155
- package/dist/cjs/features/RowPagination.cjs +0 -161
- package/dist/cjs/features/RowPagination.cjs.map +0 -1
- package/dist/cjs/features/RowPagination.d.cts +0 -166
- package/dist/cjs/features/RowPinning.cjs +0 -132
- package/dist/cjs/features/RowPinning.cjs.map +0 -1
- package/dist/cjs/features/RowPinning.d.cts +0 -99
- package/dist/cjs/features/RowSelection.cjs +0 -296
- package/dist/cjs/features/RowSelection.cjs.map +0 -1
- package/dist/cjs/features/RowSelection.d.cts +0 -177
- package/dist/cjs/features/RowSorting.cjs +0 -200
- package/dist/cjs/features/RowSorting.cjs.map +0 -1
- package/dist/cjs/features/RowSorting.d.cts +0 -238
- package/dist/cjs/filterFns.cjs +0 -88
- package/dist/cjs/filterFns.cjs.map +0 -1
- package/dist/cjs/filterFns.d.cts +0 -14
- package/dist/cjs/index.cjs +0 -88
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.d.cts +0 -34
- package/dist/cjs/sortingFns.cjs +0 -91
- package/dist/cjs/sortingFns.cjs.map +0 -1
- package/dist/cjs/sortingFns.d.cts +0 -12
- package/dist/cjs/types.d.cts +0 -120
- package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
- package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
- package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
- package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
- package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
- package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
- package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -35
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
- package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
- package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
- package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -37
- package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
- package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
- package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
- package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
- package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
- package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
- package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
- package/dist/cjs/utils/getSortedRowModel.cjs +0 -88
- package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
- package/dist/cjs/utils.cjs +0 -98
- package/dist/cjs/utils.cjs.map +0 -1
- package/dist/cjs/utils.d.cts +0 -39
- package/dist/esm/aggregationFns.d.ts +0 -14
- package/dist/esm/aggregationFns.js +0 -94
- package/dist/esm/aggregationFns.js.map +0 -1
- package/dist/esm/columnHelper.d.ts +0 -9
- package/dist/esm/columnHelper.js.map +0 -1
- package/dist/esm/core/cell.d.ts +0 -50
- package/dist/esm/core/cell.js +0 -38
- package/dist/esm/core/cell.js.map +0 -1
- package/dist/esm/core/column.d.ts +0 -56
- package/dist/esm/core/column.js +0 -81
- package/dist/esm/core/column.js.map +0 -1
- package/dist/esm/core/headers.d.ts +0 -195
- package/dist/esm/core/headers.js +0 -310
- package/dist/esm/core/headers.js.map +0 -1
- package/dist/esm/core/row.d.ts +0 -92
- package/dist/esm/core/row.js +0 -92
- package/dist/esm/core/row.js.map +0 -1
- package/dist/esm/core/table.d.ts +0 -229
- package/dist/esm/core/table.js +0 -232
- package/dist/esm/core/table.js.map +0 -1
- package/dist/esm/features/ColumnFaceting.d.ts +0 -35
- package/dist/esm/features/ColumnFaceting.js +0 -29
- package/dist/esm/features/ColumnFaceting.js.map +0 -1
- package/dist/esm/features/ColumnFiltering.d.ts +0 -195
- package/dist/esm/features/ColumnFiltering.js +0 -137
- package/dist/esm/features/ColumnFiltering.js.map +0 -1
- package/dist/esm/features/ColumnGrouping.d.ts +0 -202
- package/dist/esm/features/ColumnGrouping.js +0 -133
- package/dist/esm/features/ColumnGrouping.js.map +0 -1
- package/dist/esm/features/ColumnOrdering.d.ts +0 -54
- package/dist/esm/features/ColumnOrdering.js +0 -76
- package/dist/esm/features/ColumnOrdering.js.map +0 -1
- package/dist/esm/features/ColumnPinning.d.ts +0 -127
- package/dist/esm/features/ColumnPinning.js +0 -145
- package/dist/esm/features/ColumnPinning.js.map +0 -1
- package/dist/esm/features/ColumnSizing.d.ts +0 -194
- package/dist/esm/features/ColumnSizing.js +0 -307
- package/dist/esm/features/ColumnSizing.js.map +0 -1
- package/dist/esm/features/ColumnVisibility.d.ts +0 -130
- package/dist/esm/features/ColumnVisibility.js +0 -144
- package/dist/esm/features/ColumnVisibility.js.map +0 -1
- package/dist/esm/features/GlobalFaceting.d.ts +0 -27
- package/dist/esm/features/GlobalFaceting.js +0 -29
- package/dist/esm/features/GlobalFaceting.js.map +0 -1
- package/dist/esm/features/GlobalFiltering.d.ts +0 -80
- package/dist/esm/features/GlobalFiltering.js +0 -50
- package/dist/esm/features/GlobalFiltering.js.map +0 -1
- package/dist/esm/features/RowExpanding.d.ts +0 -155
- package/dist/esm/features/RowExpanding.js +0 -152
- package/dist/esm/features/RowExpanding.js.map +0 -1
- package/dist/esm/features/RowPagination.d.ts +0 -166
- package/dist/esm/features/RowPagination.js +0 -161
- package/dist/esm/features/RowPagination.js.map +0 -1
- package/dist/esm/features/RowPinning.d.ts +0 -99
- package/dist/esm/features/RowPinning.js +0 -132
- package/dist/esm/features/RowPinning.js.map +0 -1
- package/dist/esm/features/RowSelection.d.ts +0 -177
- package/dist/esm/features/RowSelection.js +0 -296
- package/dist/esm/features/RowSelection.js.map +0 -1
- package/dist/esm/features/RowSorting.d.ts +0 -238
- package/dist/esm/features/RowSorting.js +0 -200
- package/dist/esm/features/RowSorting.js.map +0 -1
- package/dist/esm/filterFns.d.ts +0 -14
- package/dist/esm/filterFns.js +0 -88
- package/dist/esm/filterFns.js.map +0 -1
- package/dist/esm/sortingFns.d.ts +0 -12
- package/dist/esm/sortingFns.js.map +0 -1
- package/dist/esm/types.d.ts +0 -120
- package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
- package/dist/esm/utils/filterRowsUtils.js.map +0 -1
- package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
- package/dist/esm/utils/getCoreRowModel.js +0 -54
- package/dist/esm/utils/getCoreRowModel.js.map +0 -1
- package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
- package/dist/esm/utils/getExpandedRowModel.js +0 -41
- package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
- package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
- package/dist/esm/utils/getFacetedMinMaxValues.js +0 -35
- package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
- package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
- package/dist/esm/utils/getFacetedRowModel.js +0 -35
- package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
- package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
- package/dist/esm/utils/getFacetedUniqueValues.js +0 -37
- package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
- package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
- package/dist/esm/utils/getFilteredRowModel.js +0 -116
- package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
- package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
- package/dist/esm/utils/getGroupedRowModel.js +0 -118
- package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
- package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
- package/dist/esm/utils/getPaginationRowModel.js +0 -49
- package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
- package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
- package/dist/esm/utils/getSortedRowModel.js +0 -88
- package/dist/esm/utils/getSortedRowModel.js.map +0 -1
- package/src/aggregationFns.ts +0 -123
- package/src/columnHelper.ts +0 -91
- package/src/core/cell.ts +0 -91
- package/src/core/column.ts +0 -165
- package/src/core/headers.ts +0 -639
- package/src/core/row.ts +0 -201
- package/src/core/table.ts +0 -563
- package/src/features/ColumnFaceting.ts +0 -84
- package/src/features/ColumnFiltering.ts +0 -429
- package/src/features/ColumnGrouping.ts +0 -422
- package/src/features/ColumnOrdering.ts +0 -161
- package/src/features/ColumnPinning.ts +0 -336
- package/src/features/ColumnSizing.ts +0 -579
- package/src/features/ColumnVisibility.ts +0 -317
- package/src/features/GlobalFaceting.ts +0 -66
- package/src/features/GlobalFiltering.ts +0 -162
- package/src/features/RowExpanding.ts +0 -355
- package/src/features/RowPagination.ts +0 -396
- package/src/features/RowPinning.ts +0 -277
- package/src/features/RowSelection.ts +0 -668
- package/src/features/RowSorting.ts +0 -542
- package/src/filterFns.ts +0 -150
- package/src/types.ts +0 -361
- package/src/utils/filterRowsUtils.ts +0 -130
- package/src/utils/getCoreRowModel.ts +0 -82
- package/src/utils/getExpandedRowModel.ts +0 -51
- package/src/utils/getFacetedMinMaxValues.ts +0 -42
- package/src/utils/getFacetedRowModel.ts +0 -44
- package/src/utils/getFacetedUniqueValues.ts +0 -42
- package/src/utils/getFilteredRowModel.ts +0 -151
- package/src/utils/getGroupedRowModel.ts +0 -181
- package/src/utils/getPaginationRowModel.ts +0 -60
- package/src/utils/getSortedRowModel.ts +0 -121
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {} from '../../utils'
|
|
2
|
+
import type { Table_Internal } from '../../types/Table'
|
|
3
|
+
import type { CellData, RowData } from '../../types/type-utils'
|
|
4
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
5
|
+
import type {
|
|
6
|
+
AccessorFn,
|
|
7
|
+
ColumnDef,
|
|
8
|
+
ColumnDefResolved,
|
|
9
|
+
} from '../../types/ColumnDef'
|
|
10
|
+
import type { Column } from '../../types/Column'
|
|
11
|
+
import type { Column_CoreProperties } from './coreColumnsFeature.types'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Creates or retrieves the column prototype for a table.
|
|
15
|
+
* The prototype is cached on the table and shared by all column instances.
|
|
16
|
+
*/
|
|
17
|
+
function getColumnPrototype<
|
|
18
|
+
TFeatures extends TableFeatures,
|
|
19
|
+
TData extends RowData,
|
|
20
|
+
>(table: Table_Internal<TFeatures, TData>): object {
|
|
21
|
+
if (!table._columnPrototype) {
|
|
22
|
+
table._columnPrototype = { table }
|
|
23
|
+
for (const feature of Object.values(table._features)) {
|
|
24
|
+
feature.assignColumnPrototype?.(table._columnPrototype, table)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return table._columnPrototype
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function constructColumn<
|
|
31
|
+
TFeatures extends TableFeatures,
|
|
32
|
+
TData extends RowData,
|
|
33
|
+
TValue extends CellData = CellData,
|
|
34
|
+
>(
|
|
35
|
+
table: Table_Internal<TFeatures, TData>,
|
|
36
|
+
columnDef: ColumnDef<TFeatures, TData, TValue>,
|
|
37
|
+
depth: number,
|
|
38
|
+
parent?: Column<TFeatures, TData, TValue>,
|
|
39
|
+
): Column<TFeatures, TData, TValue> {
|
|
40
|
+
const defaultColumn = table.getDefaultColumnDef()
|
|
41
|
+
|
|
42
|
+
const resolvedColumnDef = {
|
|
43
|
+
...defaultColumn,
|
|
44
|
+
...columnDef,
|
|
45
|
+
} as ColumnDefResolved<{}, TData, TValue>
|
|
46
|
+
|
|
47
|
+
const accessorKey = resolvedColumnDef.accessorKey
|
|
48
|
+
|
|
49
|
+
const id =
|
|
50
|
+
resolvedColumnDef.id ??
|
|
51
|
+
(accessorKey ? accessorKey.replaceAll('.', '_') : undefined) ??
|
|
52
|
+
(typeof resolvedColumnDef.header === 'string'
|
|
53
|
+
? resolvedColumnDef.header
|
|
54
|
+
: undefined)
|
|
55
|
+
|
|
56
|
+
let accessorFn: AccessorFn<TData, TValue> | undefined
|
|
57
|
+
|
|
58
|
+
if (resolvedColumnDef.accessorFn) {
|
|
59
|
+
accessorFn = resolvedColumnDef.accessorFn
|
|
60
|
+
} else if (accessorKey) {
|
|
61
|
+
// Support deep accessor keys
|
|
62
|
+
if (accessorKey.includes('.')) {
|
|
63
|
+
accessorFn = (originalRow: TData) => {
|
|
64
|
+
let result = originalRow as Record<string, any> | undefined
|
|
65
|
+
|
|
66
|
+
for (const key of accessorKey.split('.')) {
|
|
67
|
+
result = result?.[key]
|
|
68
|
+
if (process.env.NODE_ENV === 'development' && result === undefined) {
|
|
69
|
+
console.warn(
|
|
70
|
+
`"${key}" in deeply nested key "${accessorKey}" returned undefined.`,
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return result as TValue
|
|
76
|
+
}
|
|
77
|
+
} else {
|
|
78
|
+
accessorFn = (originalRow: TData) =>
|
|
79
|
+
(originalRow as any)[resolvedColumnDef.accessorKey]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (!id) {
|
|
84
|
+
if (process.env.NODE_ENV === 'development') {
|
|
85
|
+
throw new Error(
|
|
86
|
+
resolvedColumnDef.accessorFn
|
|
87
|
+
? `coreColumnsFeature require an id when using an accessorFn`
|
|
88
|
+
: `coreColumnsFeature require an id when using a non-string header`,
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
throw new Error()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Create column with shared prototype for memory efficiency
|
|
95
|
+
const columnPrototype = getColumnPrototype(table)
|
|
96
|
+
const column = Object.create(columnPrototype) as Column_CoreProperties<
|
|
97
|
+
TFeatures,
|
|
98
|
+
TData,
|
|
99
|
+
TValue
|
|
100
|
+
>
|
|
101
|
+
|
|
102
|
+
// Only assign instance-specific properties
|
|
103
|
+
column.accessorFn = accessorFn
|
|
104
|
+
column.columnDef = resolvedColumnDef as ColumnDef<TFeatures, TData, TValue>
|
|
105
|
+
column.columns = []
|
|
106
|
+
column.depth = depth
|
|
107
|
+
column.id = `${String(id)}`
|
|
108
|
+
column.parent = parent
|
|
109
|
+
|
|
110
|
+
return column as Column<TFeatures, TData, TValue>
|
|
111
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { assignPrototypeAPIs, assignTableAPIs } from '../../utils'
|
|
2
|
+
import {
|
|
3
|
+
column_getFlatColumns,
|
|
4
|
+
column_getLeafColumns,
|
|
5
|
+
table_getAllColumns,
|
|
6
|
+
table_getAllFlatColumns,
|
|
7
|
+
table_getAllFlatColumnsById,
|
|
8
|
+
table_getAllLeafColumns,
|
|
9
|
+
table_getColumn,
|
|
10
|
+
table_getDefaultColumnDef,
|
|
11
|
+
} from './coreColumnsFeature.utils'
|
|
12
|
+
import type { RowData } from '../../types/type-utils'
|
|
13
|
+
import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
|
|
14
|
+
// import type {
|
|
15
|
+
// Column_Column,
|
|
16
|
+
// TableOptions_Columns,
|
|
17
|
+
// Table_Columns,
|
|
18
|
+
// } from './coreColumnsFeature.types'
|
|
19
|
+
|
|
20
|
+
interface CoreColumnsFeatureConstructors<
|
|
21
|
+
TFeatures extends TableFeatures,
|
|
22
|
+
TData extends RowData,
|
|
23
|
+
> {
|
|
24
|
+
// Column: Column_Column<TFeatures, TData>
|
|
25
|
+
// Table: Table_Columns<TFeatures, TData>
|
|
26
|
+
// TableOptions: TableOptions_Columns<TFeatures, TData>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function constructCoreColumnsFeature<
|
|
30
|
+
TFeatures extends TableFeatures,
|
|
31
|
+
TData extends RowData,
|
|
32
|
+
>(): TableFeature<CoreColumnsFeatureConstructors<TFeatures, TData>> {
|
|
33
|
+
return {
|
|
34
|
+
assignColumnPrototype: (prototype, table) => {
|
|
35
|
+
assignPrototypeAPIs('coreColumnsFeature', prototype, table, {
|
|
36
|
+
column_getFlatColumns: {
|
|
37
|
+
fn: (column) => column_getFlatColumns(column),
|
|
38
|
+
memoDeps: (column) => [column.table.options.columns],
|
|
39
|
+
},
|
|
40
|
+
column_getLeafColumns: {
|
|
41
|
+
fn: (column) => column_getLeafColumns(column),
|
|
42
|
+
memoDeps: (column) => [
|
|
43
|
+
column.table.store.state.columnOrder,
|
|
44
|
+
column.table.store.state.grouping,
|
|
45
|
+
column.table.options.columns,
|
|
46
|
+
column.table.options.groupedColumnMode,
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
constructTableAPIs: (table) => {
|
|
53
|
+
assignTableAPIs('coreColumnsFeature', table, {
|
|
54
|
+
table_getDefaultColumnDef: {
|
|
55
|
+
fn: () => table_getDefaultColumnDef(table),
|
|
56
|
+
memoDeps: () => [table.options.defaultColumn],
|
|
57
|
+
},
|
|
58
|
+
table_getAllColumns: {
|
|
59
|
+
fn: () => table_getAllColumns(table),
|
|
60
|
+
memoDeps: () => [table.options.columns],
|
|
61
|
+
},
|
|
62
|
+
table_getAllFlatColumns: {
|
|
63
|
+
fn: () => table_getAllFlatColumns(table),
|
|
64
|
+
memoDeps: () => [table.options.columns],
|
|
65
|
+
},
|
|
66
|
+
table_getAllFlatColumnsById: {
|
|
67
|
+
fn: () => table_getAllFlatColumnsById(table),
|
|
68
|
+
memoDeps: () => [table.options.columns],
|
|
69
|
+
},
|
|
70
|
+
table_getAllLeafColumns: {
|
|
71
|
+
fn: () => table_getAllLeafColumns(table),
|
|
72
|
+
memoDeps: () => [
|
|
73
|
+
table.store.state.columnOrder,
|
|
74
|
+
table.store.state.grouping,
|
|
75
|
+
table.options.columns,
|
|
76
|
+
table.options.groupedColumnMode,
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
table_getColumn: {
|
|
80
|
+
fn: (columnId) => table_getColumn(table, columnId),
|
|
81
|
+
},
|
|
82
|
+
})
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The Core Columns feature provides the core column functionality.
|
|
89
|
+
*/
|
|
90
|
+
export const coreColumnsFeature = constructCoreColumnsFeature()
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { Table_Internal } from '../../types/Table'
|
|
2
|
+
import type { CellData, RowData } from '../../types/type-utils'
|
|
3
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
4
|
+
import type { AccessorFn, ColumnDef } from '../../types/ColumnDef'
|
|
5
|
+
import type { Column } from '../../types/Column'
|
|
6
|
+
|
|
7
|
+
export interface Column_CoreProperties<
|
|
8
|
+
TFeatures extends TableFeatures,
|
|
9
|
+
TData extends RowData,
|
|
10
|
+
TValue extends CellData = CellData,
|
|
11
|
+
> {
|
|
12
|
+
/**
|
|
13
|
+
* The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.
|
|
14
|
+
*/
|
|
15
|
+
accessorFn?: AccessorFn<TData, TValue>
|
|
16
|
+
/**
|
|
17
|
+
* The original column def used to create the column.
|
|
18
|
+
*/
|
|
19
|
+
columnDef: ColumnDef<TFeatures, TData, TValue>
|
|
20
|
+
/**
|
|
21
|
+
* The child column (if the column is a group column). Will be an empty array if the column is not a group column.
|
|
22
|
+
*/
|
|
23
|
+
columns: Array<Column<TFeatures, TData, TValue>>
|
|
24
|
+
/**
|
|
25
|
+
* The depth of the column (if grouped) relative to the root column def array.
|
|
26
|
+
*/
|
|
27
|
+
depth: number
|
|
28
|
+
/**
|
|
29
|
+
* The resolved unique identifier for the column resolved in this priority:
|
|
30
|
+
- A manual `id` property from the column def
|
|
31
|
+
- The accessor key from the column def
|
|
32
|
+
- The header string from the column def
|
|
33
|
+
*/
|
|
34
|
+
id: string
|
|
35
|
+
/**
|
|
36
|
+
* The parent column for this column. Will be undefined if this is a root column.
|
|
37
|
+
*/
|
|
38
|
+
parent?: Column<TFeatures, TData, TValue>
|
|
39
|
+
/**
|
|
40
|
+
* Reference to the parent table instance.
|
|
41
|
+
*/
|
|
42
|
+
table: Table_Internal<TFeatures, TData>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface Column_Column<
|
|
46
|
+
TFeatures extends TableFeatures,
|
|
47
|
+
TData extends RowData,
|
|
48
|
+
TValue extends CellData = CellData,
|
|
49
|
+
> extends Column_CoreProperties<TFeatures, TData, TValue> {
|
|
50
|
+
/**
|
|
51
|
+
* Returns the flattened array of this column and all child/grand-child columns for this column.
|
|
52
|
+
*/
|
|
53
|
+
getFlatColumns: () => Array<Column<TFeatures, TData, TValue>>
|
|
54
|
+
/**
|
|
55
|
+
* Returns an array of all leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column.
|
|
56
|
+
*/
|
|
57
|
+
getLeafColumns: () => Array<Column<TFeatures, TData, TValue>>
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface TableOptions_Columns<
|
|
61
|
+
TFeatures extends TableFeatures,
|
|
62
|
+
TData extends RowData,
|
|
63
|
+
TValue extends CellData = CellData,
|
|
64
|
+
> {
|
|
65
|
+
/**
|
|
66
|
+
* The array of column defs to use for the table.
|
|
67
|
+
*/
|
|
68
|
+
columns: Array<ColumnDef<TFeatures, TData, TValue>>
|
|
69
|
+
/**
|
|
70
|
+
* Default column options to use for all column defs supplied to the table.
|
|
71
|
+
*/
|
|
72
|
+
defaultColumn?: Partial<ColumnDef<TFeatures, TData, TValue>>
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface Table_Columns<
|
|
76
|
+
TFeatures extends TableFeatures,
|
|
77
|
+
TData extends RowData,
|
|
78
|
+
> {
|
|
79
|
+
/**
|
|
80
|
+
* Returns a map of all flat columns by their ID.
|
|
81
|
+
*/
|
|
82
|
+
getAllFlatColumnsById: () => Record<string, Column<TFeatures, TData, unknown>>
|
|
83
|
+
/**
|
|
84
|
+
* Returns the default column options to use for all column defs supplied to the table.
|
|
85
|
+
*/
|
|
86
|
+
getDefaultColumnDef: () => Partial<ColumnDef<TFeatures, TData, unknown>>
|
|
87
|
+
/**
|
|
88
|
+
* Returns all columns in the table in their normalized and nested hierarchy.
|
|
89
|
+
*/
|
|
90
|
+
getAllColumns: () => Array<Column<TFeatures, TData, unknown>>
|
|
91
|
+
/**
|
|
92
|
+
* Returns all columns in the table flattened to a single level.
|
|
93
|
+
*/
|
|
94
|
+
getAllFlatColumns: () => Array<Column<TFeatures, TData, unknown>>
|
|
95
|
+
/**
|
|
96
|
+
* Returns all leaf-node columns in the table flattened to a single level. This does not include parent columns.
|
|
97
|
+
*/
|
|
98
|
+
getAllLeafColumns: () => Array<Column<TFeatures, TData, unknown>>
|
|
99
|
+
/**
|
|
100
|
+
* Returns a single column by its ID.
|
|
101
|
+
*/
|
|
102
|
+
getColumn: (columnId: string) => Column<TFeatures, TData, unknown> | undefined
|
|
103
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { callMemoOrStaticFn } from '../../utils'
|
|
2
|
+
import { table_getOrderColumnsFn } from '../../features/column-ordering/columnOrderingFeature.utils'
|
|
3
|
+
import { constructColumn } from './constructColumn'
|
|
4
|
+
import type { Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { CellData, RowData } from '../../types/type-utils'
|
|
6
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
7
|
+
import type {
|
|
8
|
+
ColumnDef,
|
|
9
|
+
ColumnDefResolved,
|
|
10
|
+
GroupColumnDef,
|
|
11
|
+
} from '../../types/ColumnDef'
|
|
12
|
+
import type { Column } from '../../types/Column'
|
|
13
|
+
|
|
14
|
+
export function column_getFlatColumns<
|
|
15
|
+
TFeatures extends TableFeatures,
|
|
16
|
+
TData extends RowData,
|
|
17
|
+
TValue extends CellData = CellData,
|
|
18
|
+
>(
|
|
19
|
+
column: Column<TFeatures, TData, TValue>,
|
|
20
|
+
): Array<Column<TFeatures, TData, TValue>> {
|
|
21
|
+
return [column, ...column.columns.flatMap((col) => col.getFlatColumns())]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function column_getLeafColumns<
|
|
25
|
+
TFeatures extends TableFeatures,
|
|
26
|
+
TData extends RowData,
|
|
27
|
+
TValue extends CellData = CellData,
|
|
28
|
+
>(
|
|
29
|
+
column: Column<TFeatures, TData, TValue>,
|
|
30
|
+
): Array<Column<TFeatures, TData, TValue>> {
|
|
31
|
+
if (column.columns.length) {
|
|
32
|
+
const leafColumns = column.columns.flatMap(
|
|
33
|
+
(col) => col.getLeafColumns(), // recursive
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
return callMemoOrStaticFn(
|
|
37
|
+
column.table,
|
|
38
|
+
'getOrderColumns',
|
|
39
|
+
table_getOrderColumnsFn,
|
|
40
|
+
)(leafColumns as any) as any
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return [column]
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function table_getDefaultColumnDef<
|
|
47
|
+
TFeatures extends TableFeatures,
|
|
48
|
+
TData extends RowData,
|
|
49
|
+
>(
|
|
50
|
+
table: Table_Internal<TFeatures, TData>,
|
|
51
|
+
): Partial<ColumnDef<TFeatures, TData, unknown>> {
|
|
52
|
+
return {
|
|
53
|
+
header: (props) => {
|
|
54
|
+
const resolvedColumnDef = props.header.column
|
|
55
|
+
.columnDef as ColumnDefResolved<{}, TData>
|
|
56
|
+
|
|
57
|
+
if (resolvedColumnDef.accessorKey) {
|
|
58
|
+
return resolvedColumnDef.accessorKey
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (resolvedColumnDef.accessorFn) {
|
|
62
|
+
return resolvedColumnDef.id
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return null
|
|
66
|
+
},
|
|
67
|
+
cell: (props) => props.renderValue<any>()?.toString?.() ?? null,
|
|
68
|
+
...Object.values(table._features).reduce((obj, feature) => {
|
|
69
|
+
return Object.assign(obj, feature.getDefaultColumnDef?.())
|
|
70
|
+
}, {}),
|
|
71
|
+
...table.options.defaultColumn,
|
|
72
|
+
} as Partial<ColumnDef<TFeatures, TData, unknown>>
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function table_getAllColumns<
|
|
76
|
+
TFeatures extends TableFeatures,
|
|
77
|
+
TData extends RowData,
|
|
78
|
+
>(
|
|
79
|
+
table: Table_Internal<TFeatures, TData>,
|
|
80
|
+
): Array<Column<TFeatures, TData, unknown>> {
|
|
81
|
+
const recurseColumns = (
|
|
82
|
+
colDefs: Array<ColumnDef<TFeatures, TData, unknown>>,
|
|
83
|
+
parent?: Column<TFeatures, TData, unknown>,
|
|
84
|
+
depth = 0,
|
|
85
|
+
): Array<Column<TFeatures, TData, unknown>> => {
|
|
86
|
+
return colDefs.map((columnDef) => {
|
|
87
|
+
const column = constructColumn(table, columnDef, depth, parent)
|
|
88
|
+
|
|
89
|
+
const groupingColumnDef = columnDef as GroupColumnDef<
|
|
90
|
+
TFeatures,
|
|
91
|
+
TData,
|
|
92
|
+
unknown
|
|
93
|
+
>
|
|
94
|
+
|
|
95
|
+
column.columns = groupingColumnDef.columns
|
|
96
|
+
? recurseColumns(groupingColumnDef.columns, column, depth + 1)
|
|
97
|
+
: []
|
|
98
|
+
|
|
99
|
+
return column
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return recurseColumns(table.options.columns as any)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function table_getAllFlatColumns<
|
|
107
|
+
TFeatures extends TableFeatures,
|
|
108
|
+
TData extends RowData,
|
|
109
|
+
>(
|
|
110
|
+
table: Table_Internal<TFeatures, TData>,
|
|
111
|
+
): Array<Column<TFeatures, TData, unknown>> {
|
|
112
|
+
return table.getAllColumns().flatMap((column) => column.getFlatColumns())
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function table_getAllFlatColumnsById<
|
|
116
|
+
TFeatures extends TableFeatures,
|
|
117
|
+
TData extends RowData,
|
|
118
|
+
>(
|
|
119
|
+
table: Table_Internal<TFeatures, TData>,
|
|
120
|
+
): Record<string, Column<TFeatures, TData, unknown>> {
|
|
121
|
+
return table.getAllFlatColumns().reduce(
|
|
122
|
+
(acc, column) => {
|
|
123
|
+
acc[column.id] = column
|
|
124
|
+
return acc
|
|
125
|
+
},
|
|
126
|
+
{} as Record<string, Column<TFeatures, TData, unknown>>,
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function table_getAllLeafColumns<
|
|
131
|
+
TFeatures extends TableFeatures,
|
|
132
|
+
TData extends RowData,
|
|
133
|
+
>(
|
|
134
|
+
table: Table_Internal<TFeatures, TData>,
|
|
135
|
+
): Array<Column<TFeatures, TData, unknown>> {
|
|
136
|
+
const leafColumns = table.getAllColumns().flatMap(
|
|
137
|
+
(c) => c.getLeafColumns(), // recursive
|
|
138
|
+
)
|
|
139
|
+
return callMemoOrStaticFn(
|
|
140
|
+
table,
|
|
141
|
+
'getOrderColumns',
|
|
142
|
+
table_getOrderColumnsFn,
|
|
143
|
+
)(leafColumns as any) as any
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function table_getColumn<
|
|
147
|
+
TFeatures extends TableFeatures,
|
|
148
|
+
TData extends RowData,
|
|
149
|
+
>(
|
|
150
|
+
table: Table_Internal<TFeatures, TData>,
|
|
151
|
+
columnId: string,
|
|
152
|
+
): Column<TFeatures, TData, unknown> | undefined {
|
|
153
|
+
const column = table.getAllFlatColumnsById()[columnId]
|
|
154
|
+
|
|
155
|
+
if (process.env.NODE_ENV === 'development' && !column) {
|
|
156
|
+
console.warn(`[Table] Column with id '${columnId}' does not exist.`)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return column
|
|
160
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { coreCellsFeature } from './cells/coreCellsFeature'
|
|
2
|
+
import { coreColumnsFeature } from './columns/coreColumnsFeature'
|
|
3
|
+
import { coreHeadersFeature } from './headers/coreHeadersFeature'
|
|
4
|
+
import { coreRowModelsFeature } from './row-models/coreRowModelsFeature'
|
|
5
|
+
import { coreRowsFeature } from './rows/coreRowsFeature'
|
|
6
|
+
import { coreTablesFeature } from './table/coreTablesFeature'
|
|
7
|
+
|
|
8
|
+
export interface CoreFeatures {
|
|
9
|
+
coreCellsFeature: typeof coreCellsFeature
|
|
10
|
+
coreColumnsFeature: typeof coreColumnsFeature
|
|
11
|
+
coreHeadersFeature: typeof coreHeadersFeature
|
|
12
|
+
coreRowModelsFeature: typeof coreRowModelsFeature
|
|
13
|
+
coreRowsFeature: typeof coreRowsFeature
|
|
14
|
+
coreTablesFeature: typeof coreTablesFeature
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const coreFeatures: CoreFeatures = {
|
|
18
|
+
coreCellsFeature,
|
|
19
|
+
coreColumnsFeature,
|
|
20
|
+
coreHeadersFeature,
|
|
21
|
+
coreRowModelsFeature,
|
|
22
|
+
coreRowsFeature,
|
|
23
|
+
coreTablesFeature,
|
|
24
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { callMemoOrStaticFn } from '../../utils'
|
|
2
|
+
import { column_getIsVisible } from '../../features/column-visibility/columnVisibilityFeature.utils'
|
|
3
|
+
import { constructHeader } from './constructHeader'
|
|
4
|
+
import type { Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { CellData, RowData } from '../../types/type-utils'
|
|
6
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
7
|
+
import type { Header } from '../../types/Header'
|
|
8
|
+
import type { HeaderGroup } from '../../types/HeaderGroup'
|
|
9
|
+
import type { Column } from '../../types/Column'
|
|
10
|
+
|
|
11
|
+
export function buildHeaderGroups<
|
|
12
|
+
TFeatures extends TableFeatures,
|
|
13
|
+
TData extends RowData,
|
|
14
|
+
TValue extends CellData = CellData,
|
|
15
|
+
>(
|
|
16
|
+
allColumns: Array<Column<TFeatures, TData, TValue>>,
|
|
17
|
+
columnsToGroup: Array<Column<TFeatures, TData, TValue>>,
|
|
18
|
+
table: Table_Internal<TFeatures, TData>,
|
|
19
|
+
headerFamily?: 'center' | 'left' | 'right',
|
|
20
|
+
) {
|
|
21
|
+
// Find the max depth of the columns:
|
|
22
|
+
// build the leaf column row
|
|
23
|
+
// build each buffer row going up
|
|
24
|
+
// placeholder for non-existent level
|
|
25
|
+
// real column for existing level
|
|
26
|
+
|
|
27
|
+
let maxDepth = 0
|
|
28
|
+
|
|
29
|
+
const findMaxDepth = (
|
|
30
|
+
columns: Array<Column<TFeatures, TData, TValue>>,
|
|
31
|
+
depth = 1,
|
|
32
|
+
) => {
|
|
33
|
+
maxDepth = Math.max(maxDepth, depth)
|
|
34
|
+
|
|
35
|
+
columns
|
|
36
|
+
.filter((column) =>
|
|
37
|
+
callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),
|
|
38
|
+
)
|
|
39
|
+
.forEach((column) => {
|
|
40
|
+
if (column.columns.length) {
|
|
41
|
+
findMaxDepth(column.columns, depth + 1)
|
|
42
|
+
}
|
|
43
|
+
}, 0)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
findMaxDepth(allColumns)
|
|
47
|
+
|
|
48
|
+
const headerGroups: Array<HeaderGroup<TFeatures, TData>> = []
|
|
49
|
+
|
|
50
|
+
const constructHeaderGroup = (
|
|
51
|
+
headersToGroup: Array<Header<TFeatures, TData, TValue>>,
|
|
52
|
+
depth: number,
|
|
53
|
+
) => {
|
|
54
|
+
// The header group we are creating
|
|
55
|
+
const headerGroup: HeaderGroup<TFeatures, TData> = {
|
|
56
|
+
depth,
|
|
57
|
+
id: [headerFamily, `${depth}`].filter(Boolean).join('_'),
|
|
58
|
+
headers: [],
|
|
59
|
+
} as any
|
|
60
|
+
|
|
61
|
+
// The parent columns we're going to scan next
|
|
62
|
+
const pendingParentHeaders: Array<Header<TFeatures, TData, TValue>> = []
|
|
63
|
+
|
|
64
|
+
// Scan each column for parents
|
|
65
|
+
headersToGroup.forEach((headerToGroup) => {
|
|
66
|
+
// What is the latest (last) parent column?
|
|
67
|
+
|
|
68
|
+
const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]
|
|
69
|
+
|
|
70
|
+
const isLeafHeader = headerToGroup.column.depth === headerGroup.depth
|
|
71
|
+
|
|
72
|
+
let column: Column<TFeatures, TData, TValue>
|
|
73
|
+
let isPlaceholder = false
|
|
74
|
+
|
|
75
|
+
if (isLeafHeader && headerToGroup.column.parent) {
|
|
76
|
+
// The parent header is new
|
|
77
|
+
column = headerToGroup.column.parent
|
|
78
|
+
} else {
|
|
79
|
+
// The parent header is repeated
|
|
80
|
+
column = headerToGroup.column
|
|
81
|
+
isPlaceholder = true
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (
|
|
85
|
+
latestPendingParentHeader &&
|
|
86
|
+
latestPendingParentHeader.column === column
|
|
87
|
+
) {
|
|
88
|
+
// This column is repeated. Add it as a sub header to the next batch
|
|
89
|
+
latestPendingParentHeader.subHeaders.push(headerToGroup)
|
|
90
|
+
} else {
|
|
91
|
+
// This is a new header. Let's create it
|
|
92
|
+
const header = constructHeader(table, column, {
|
|
93
|
+
id: [headerFamily, depth, column.id, headerToGroup.id]
|
|
94
|
+
.filter(Boolean)
|
|
95
|
+
.join('_'),
|
|
96
|
+
isPlaceholder,
|
|
97
|
+
placeholderId: isPlaceholder
|
|
98
|
+
? `${pendingParentHeaders.filter((d) => d.column === column).length}`
|
|
99
|
+
: undefined,
|
|
100
|
+
depth,
|
|
101
|
+
index: pendingParentHeaders.length,
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
// Add the headerToGroup as a subHeader of the new header
|
|
105
|
+
header.subHeaders.push(headerToGroup)
|
|
106
|
+
// Add the new header to the pendingParentHeaders to get grouped
|
|
107
|
+
// in the next batch
|
|
108
|
+
pendingParentHeaders.push(header)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
headerGroup.headers.push(headerToGroup)
|
|
112
|
+
headerToGroup.headerGroup = headerGroup
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
headerGroups.push(headerGroup)
|
|
116
|
+
|
|
117
|
+
if (depth > 0) {
|
|
118
|
+
constructHeaderGroup(pendingParentHeaders, depth - 1)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const bottomHeaders = columnsToGroup.map((column, index) =>
|
|
123
|
+
constructHeader(table, column, {
|
|
124
|
+
depth: maxDepth,
|
|
125
|
+
index,
|
|
126
|
+
}),
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
constructHeaderGroup(bottomHeaders, maxDepth - 1)
|
|
130
|
+
|
|
131
|
+
headerGroups.reverse()
|
|
132
|
+
|
|
133
|
+
// headerGroups = headerGroups.filter(headerGroup => {
|
|
134
|
+
// return !headerGroup.headers.every(header => header.isPlaceholder)
|
|
135
|
+
// })
|
|
136
|
+
|
|
137
|
+
const recurseHeadersForSpans = (
|
|
138
|
+
headers: Array<Header<TFeatures, TData, TValue>>,
|
|
139
|
+
): Array<{ colSpan: number; rowSpan: number }> => {
|
|
140
|
+
const filteredHeaders = headers.filter((header) =>
|
|
141
|
+
callMemoOrStaticFn(header.column, 'getIsVisible', column_getIsVisible),
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
return filteredHeaders.map((header) => {
|
|
145
|
+
let colSpan = 0
|
|
146
|
+
let rowSpan = 0
|
|
147
|
+
let childRowSpans = [0]
|
|
148
|
+
|
|
149
|
+
if (header.subHeaders.length) {
|
|
150
|
+
childRowSpans = []
|
|
151
|
+
|
|
152
|
+
recurseHeadersForSpans(header.subHeaders).forEach(
|
|
153
|
+
({ colSpan: childColSpan, rowSpan: childRowSpan }) => {
|
|
154
|
+
colSpan += childColSpan
|
|
155
|
+
childRowSpans.push(childRowSpan)
|
|
156
|
+
},
|
|
157
|
+
)
|
|
158
|
+
} else {
|
|
159
|
+
colSpan = 1
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const minChildRowSpan = Math.min(...childRowSpans)
|
|
163
|
+
rowSpan = rowSpan + minChildRowSpan
|
|
164
|
+
|
|
165
|
+
header.colSpan = colSpan
|
|
166
|
+
header.rowSpan = rowSpan
|
|
167
|
+
|
|
168
|
+
return { colSpan, rowSpan }
|
|
169
|
+
})
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
recurseHeadersForSpans(
|
|
173
|
+
(headerGroups[0]?.headers ?? []) as Array<Header<TFeatures, TData, TValue>>,
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
return headerGroups
|
|
177
|
+
}
|