@tanstack/table-core 9.0.0-alpha.43 → 9.0.0-alpha.46
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/core/cells/constructCell.cjs +5 -0
- package/dist/core/cells/constructCell.cjs.map +1 -1
- package/dist/core/cells/constructCell.d.cts +5 -0
- package/dist/core/cells/constructCell.d.ts +5 -0
- package/dist/core/cells/constructCell.js +5 -0
- package/dist/core/cells/constructCell.js.map +1 -1
- package/dist/core/cells/coreCellsFeature.cjs +5 -0
- package/dist/core/cells/coreCellsFeature.cjs.map +1 -1
- package/dist/core/cells/coreCellsFeature.d.cts +5 -0
- package/dist/core/cells/coreCellsFeature.d.ts +5 -0
- package/dist/core/cells/coreCellsFeature.js +5 -0
- package/dist/core/cells/coreCellsFeature.js.map +1 -1
- package/dist/core/cells/coreCellsFeature.utils.cjs +30 -0
- package/dist/core/cells/coreCellsFeature.utils.cjs.map +1 -1
- package/dist/core/cells/coreCellsFeature.utils.d.cts +30 -0
- package/dist/core/cells/coreCellsFeature.utils.d.ts +30 -0
- package/dist/core/cells/coreCellsFeature.utils.js +30 -0
- package/dist/core/cells/coreCellsFeature.utils.js.map +1 -1
- package/dist/core/columns/constructColumn.cjs +16 -9
- package/dist/core/columns/constructColumn.cjs.map +1 -1
- package/dist/core/columns/constructColumn.d.cts +5 -0
- package/dist/core/columns/constructColumn.d.ts +5 -0
- package/dist/core/columns/constructColumn.js +16 -9
- package/dist/core/columns/constructColumn.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.cjs +9 -0
- package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.d.cts +5 -0
- package/dist/core/columns/coreColumnsFeature.d.ts +5 -0
- package/dist/core/columns/coreColumnsFeature.js +10 -1
- package/dist/core/columns/coreColumnsFeature.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +4 -0
- package/dist/core/columns/coreColumnsFeature.types.d.ts +4 -0
- package/dist/core/columns/coreColumnsFeature.utils.cjs +99 -4
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +92 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +92 -1
- package/dist/core/columns/coreColumnsFeature.utils.js +99 -5
- package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
- package/dist/core/coreFeatures.cjs +5 -0
- package/dist/core/coreFeatures.cjs.map +1 -1
- package/dist/core/coreFeatures.d.cts +5 -0
- package/dist/core/coreFeatures.d.ts +5 -0
- package/dist/core/coreFeatures.js +5 -0
- package/dist/core/coreFeatures.js.map +1 -1
- package/dist/core/headers/buildHeaderGroups.cjs +6 -1
- package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +5 -0
- package/dist/core/headers/buildHeaderGroups.d.ts +5 -0
- package/dist/core/headers/buildHeaderGroups.js +6 -1
- package/dist/core/headers/buildHeaderGroups.js.map +1 -1
- package/dist/core/headers/constructHeader.cjs +5 -0
- package/dist/core/headers/constructHeader.cjs.map +1 -1
- package/dist/core/headers/constructHeader.d.cts +5 -0
- package/dist/core/headers/constructHeader.d.ts +5 -0
- package/dist/core/headers/constructHeader.js +5 -0
- package/dist/core/headers/constructHeader.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.cjs +5 -0
- package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.d.cts +5 -0
- package/dist/core/headers/coreHeadersFeature.d.ts +5 -0
- package/dist/core/headers/coreHeadersFeature.js +5 -0
- package/dist/core/headers/coreHeadersFeature.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.utils.cjs +71 -2
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +60 -0
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +60 -0
- package/dist/core/headers/coreHeadersFeature.utils.js +72 -3
- package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs +5 -0
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs.map +1 -1
- package/dist/core/reactivity/coreReactivityFeature.utils.d.cts +10 -0
- package/dist/core/reactivity/coreReactivityFeature.utils.d.ts +10 -0
- package/dist/core/reactivity/coreReactivityFeature.utils.js +5 -0
- package/dist/core/reactivity/coreReactivityFeature.utils.js.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.cjs +5 -0
- package/dist/core/row-models/coreRowModelsFeature.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.d.cts +5 -0
- package/dist/core/row-models/coreRowModelsFeature.d.ts +5 -0
- package/dist/core/row-models/coreRowModelsFeature.js +5 -0
- package/dist/core/row-models/coreRowModelsFeature.js.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +2 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +2 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +120 -0
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +120 -0
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +120 -0
- package/dist/core/row-models/coreRowModelsFeature.utils.js +120 -0
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
- package/dist/core/row-models/createCoreRowModel.cjs +5 -0
- package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +5 -0
- package/dist/core/row-models/createCoreRowModel.d.ts +5 -0
- package/dist/core/row-models/createCoreRowModel.js +5 -0
- package/dist/core/row-models/createCoreRowModel.js.map +1 -1
- package/dist/core/rows/constructRow.cjs +5 -0
- package/dist/core/rows/constructRow.cjs.map +1 -1
- package/dist/core/rows/constructRow.d.cts +5 -0
- package/dist/core/rows/constructRow.d.ts +5 -0
- package/dist/core/rows/constructRow.js +5 -0
- package/dist/core/rows/constructRow.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.cjs +5 -0
- package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.d.cts +5 -0
- package/dist/core/rows/coreRowsFeature.d.ts +5 -0
- package/dist/core/rows/coreRowsFeature.js +5 -0
- package/dist/core/rows/coreRowsFeature.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +3 -0
- package/dist/core/rows/coreRowsFeature.types.d.ts +3 -0
- package/dist/core/rows/coreRowsFeature.utils.cjs +104 -4
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +101 -0
- package/dist/core/rows/coreRowsFeature.utils.d.ts +101 -0
- package/dist/core/rows/coreRowsFeature.utils.js +104 -4
- package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
- package/dist/core/table/constructTable.cjs +10 -0
- package/dist/core/table/constructTable.cjs.map +1 -1
- package/dist/core/table/constructTable.d.cts +10 -0
- package/dist/core/table/constructTable.d.ts +10 -0
- package/dist/core/table/constructTable.js +10 -0
- package/dist/core/table/constructTable.js.map +1 -1
- package/dist/core/table/coreTablesFeature.cjs +5 -0
- package/dist/core/table/coreTablesFeature.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.d.cts +5 -0
- package/dist/core/table/coreTablesFeature.d.ts +5 -0
- package/dist/core/table/coreTablesFeature.js +5 -0
- package/dist/core/table/coreTablesFeature.js.map +1 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +22 -12
- package/dist/core/table/coreTablesFeature.types.d.ts +22 -12
- package/dist/core/table/coreTablesFeature.utils.cjs +44 -0
- package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +44 -0
- package/dist/core/table/coreTablesFeature.utils.d.ts +44 -0
- package/dist/core/table/coreTablesFeature.utils.js +44 -0
- package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.cjs +9 -1
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.d.cts +9 -1
- package/dist/features/column-faceting/columnFacetingFeature.d.ts +9 -1
- package/dist/features/column-faceting/columnFacetingFeature.js +9 -1
- package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +12 -6
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +12 -6
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +60 -0
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +60 -0
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +60 -0
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +60 -0
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +5 -0
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +5 -0
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +5 -0
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +5 -0
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +5 -0
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +5 -0
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +5 -0
- package/dist/features/column-faceting/createFacetedRowModel.js +5 -0
- package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +5 -0
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +5 -0
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +5 -0
- package/dist/features/column-faceting/createFacetedUniqueValues.js +5 -0
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +10 -2
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.d.cts +10 -2
- package/dist/features/column-filtering/columnFilteringFeature.d.ts +10 -2
- package/dist/features/column-filtering/columnFilteringFeature.js +10 -2
- package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +7 -4
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +7 -4
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +113 -2
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +111 -0
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +111 -0
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +113 -2
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +5 -0
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +5 -0
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +5 -0
- package/dist/features/column-filtering/createFilteredRowModel.js +5 -0
- package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
- package/dist/features/column-filtering/filterRowsUtils.cjs +5 -0
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
- package/dist/features/column-filtering/filterRowsUtils.js +5 -0
- package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +9 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +9 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +9 -1
- package/dist/features/column-grouping/columnGroupingFeature.js +9 -1
- package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +7 -3
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +7 -3
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +151 -0
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +151 -0
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +151 -0
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +151 -0
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +5 -0
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +5 -0
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +5 -0
- package/dist/features/column-grouping/createGroupedRowModel.js +5 -0
- package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +12 -3
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.d.cts +9 -1
- package/dist/features/column-ordering/columnOrderingFeature.d.ts +9 -1
- package/dist/features/column-ordering/columnOrderingFeature.js +12 -3
- package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +4 -2
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +4 -2
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +98 -8
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +81 -0
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +81 -0
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +98 -8
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +17 -30
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +9 -1
- package/dist/features/column-pinning/columnPinningFeature.d.ts +9 -1
- package/dist/features/column-pinning/columnPinningFeature.js +17 -30
- package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +6 -2
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +6 -2
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +360 -17
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +314 -3
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +314 -3
- package/dist/features/column-pinning/columnPinningFeature.utils.js +361 -18
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.cjs +9 -2
- package/dist/features/column-resizing/columnResizingFeature.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.d.cts +9 -2
- package/dist/features/column-resizing/columnResizingFeature.d.ts +9 -2
- package/dist/features/column-resizing/columnResizingFeature.js +9 -2
- package/dist/features/column-resizing/columnResizingFeature.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +14 -6
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +14 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +81 -0
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +81 -0
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +81 -0
- package/dist/features/column-resizing/columnResizingFeature.utils.js +81 -0
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +50 -12
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.d.cts +10 -2
- package/dist/features/column-sizing/columnSizingFeature.d.ts +10 -2
- package/dist/features/column-sizing/columnSizingFeature.js +51 -13
- package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +6 -3
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +6 -3
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +151 -3
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +141 -0
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +141 -0
- package/dist/features/column-sizing/columnSizingFeature.utils.js +151 -3
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +26 -25
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.d.cts +9 -1
- package/dist/features/column-visibility/columnVisibilityFeature.d.ts +9 -1
- package/dist/features/column-visibility/columnVisibilityFeature.js +27 -26
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +4 -3
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +4 -3
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +172 -12
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +143 -3
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +143 -3
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +173 -12
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +9 -2
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.d.cts +9 -2
- package/dist/features/global-filtering/globalFilteringFeature.d.ts +9 -2
- package/dist/features/global-filtering/globalFilteringFeature.js +9 -2
- package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +4 -2
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +4 -2
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +51 -0
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +51 -0
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +51 -0
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +51 -0
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.cjs +10 -0
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +10 -0
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +10 -0
- package/dist/features/row-expanding/createExpandedRowModel.js +10 -0
- package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.cjs +9 -1
- package/dist/features/row-expanding/rowExpandingFeature.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.d.cts +9 -1
- package/dist/features/row-expanding/rowExpandingFeature.d.ts +9 -1
- package/dist/features/row-expanding/rowExpandingFeature.js +9 -1
- package/dist/features/row-expanding/rowExpandingFeature.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +10 -5
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +10 -5
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +151 -0
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +151 -0
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +151 -0
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +151 -0
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +5 -0
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +5 -0
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
- package/dist/features/row-pagination/createPaginatedRowModel.js +5 -0
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.cjs +9 -1
- package/dist/features/row-pagination/rowPaginationFeature.cjs.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.d.cts +9 -1
- package/dist/features/row-pagination/rowPaginationFeature.d.ts +9 -1
- package/dist/features/row-pagination/rowPaginationFeature.js +9 -1
- package/dist/features/row-pagination/rowPaginationFeature.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +11 -7
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +11 -7
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +175 -0
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +175 -0
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +175 -0
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +175 -0
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs +9 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.d.cts +9 -1
- package/dist/features/row-pinning/rowPinningFeature.d.ts +9 -1
- package/dist/features/row-pinning/rowPinningFeature.js +9 -1
- package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +4 -2
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +4 -2
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +112 -0
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +112 -0
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +112 -0
- package/dist/features/row-pinning/rowPinningFeature.utils.js +112 -0
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +9 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.d.cts +9 -1
- package/dist/features/row-selection/rowSelectionFeature.d.ts +9 -1
- package/dist/features/row-selection/rowSelectionFeature.js +9 -1
- package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +4 -2
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +4 -2
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +259 -0
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +259 -0
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +259 -0
- package/dist/features/row-selection/rowSelectionFeature.utils.js +259 -0
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +5 -0
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +5 -0
- package/dist/features/row-sorting/createSortedRowModel.d.ts +5 -0
- package/dist/features/row-sorting/createSortedRowModel.js +5 -0
- package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.cjs +11 -3
- package/dist/features/row-sorting/rowSortingFeature.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.d.cts +9 -1
- package/dist/features/row-sorting/rowSortingFeature.d.ts +9 -1
- package/dist/features/row-sorting/rowSortingFeature.js +11 -3
- package/dist/features/row-sorting/rowSortingFeature.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +7 -3
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +7 -3
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +151 -0
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +151 -0
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +151 -0
- package/dist/features/row-sorting/rowSortingFeature.utils.js +151 -0
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
- package/dist/features/stockFeatures.cjs +5 -0
- package/dist/features/stockFeatures.cjs.map +1 -1
- package/dist/features/stockFeatures.d.cts +5 -0
- package/dist/features/stockFeatures.d.ts +5 -0
- package/dist/features/stockFeatures.js +5 -0
- package/dist/features/stockFeatures.js.map +1 -1
- package/dist/flex-render.cjs +10 -0
- package/dist/flex-render.cjs.map +1 -1
- package/dist/flex-render.d.cts +10 -0
- package/dist/flex-render.d.ts +10 -0
- package/dist/flex-render.js +10 -0
- package/dist/flex-render.js.map +1 -1
- package/dist/fns/aggregationFns.cjs +5 -0
- package/dist/fns/aggregationFns.cjs.map +1 -1
- package/dist/fns/aggregationFns.d.cts +5 -0
- package/dist/fns/aggregationFns.d.ts +5 -0
- package/dist/fns/aggregationFns.js +5 -0
- package/dist/fns/aggregationFns.js.map +1 -1
- package/dist/fns/filterFns.cjs +5 -0
- package/dist/fns/filterFns.cjs.map +1 -1
- package/dist/fns/filterFns.d.cts +5 -0
- package/dist/fns/filterFns.d.ts +5 -0
- package/dist/fns/filterFns.js +5 -0
- package/dist/fns/filterFns.js.map +1 -1
- package/dist/fns/sortFns.cjs +49 -4
- package/dist/fns/sortFns.cjs.map +1 -1
- package/dist/fns/sortFns.d.cts +41 -0
- package/dist/fns/sortFns.d.ts +41 -0
- package/dist/fns/sortFns.js +49 -4
- package/dist/fns/sortFns.js.map +1 -1
- package/dist/helpers/columnHelper.cjs.map +1 -1
- package/dist/helpers/columnHelper.js.map +1 -1
- package/dist/helpers/tableFeatures.cjs.map +1 -1
- package/dist/helpers/tableFeatures.js.map +1 -1
- package/dist/helpers/tableOptions.cjs +6 -0
- package/dist/helpers/tableOptions.cjs.map +1 -1
- package/dist/helpers/tableOptions.d.cts +26 -0
- package/dist/helpers/tableOptions.d.ts +26 -0
- package/dist/helpers/tableOptions.js +6 -0
- package/dist/helpers/tableOptions.js.map +1 -1
- package/dist/static-functions.cjs +1 -1
- package/dist/static-functions.d.cts +3 -3
- package/dist/static-functions.d.ts +3 -3
- package/dist/static-functions.js +3 -3
- package/dist/store-reactivity-bindings.cjs.map +1 -1
- package/dist/store-reactivity-bindings.js.map +1 -1
- package/dist/utils.cjs +45 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +45 -0
- package/dist/utils.d.ts +45 -0
- package/dist/utils.js +45 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/core/cells/constructCell.ts +5 -0
- package/src/core/cells/coreCellsFeature.ts +5 -0
- package/src/core/cells/coreCellsFeature.utils.ts +30 -0
- package/src/core/columns/constructColumn.ts +7 -1
- package/src/core/columns/coreColumnsFeature.ts +10 -0
- package/src/core/columns/coreColumnsFeature.types.ts +4 -0
- package/src/core/columns/coreColumnsFeature.utils.ts +109 -8
- package/src/core/coreFeatures.ts +5 -0
- package/src/core/headers/buildHeaderGroups.ts +7 -1
- package/src/core/headers/constructHeader.ts +5 -0
- package/src/core/headers/coreHeadersFeature.ts +5 -0
- package/src/core/headers/coreHeadersFeature.utils.ts +86 -8
- package/src/core/reactivity/coreReactivityFeature.utils.ts +15 -0
- package/src/core/row-models/coreRowModelsFeature.ts +5 -0
- package/src/core/row-models/coreRowModelsFeature.types.ts +2 -1
- package/src/core/row-models/coreRowModelsFeature.utils.ts +120 -0
- package/src/core/row-models/createCoreRowModel.ts +5 -0
- package/src/core/rows/constructRow.ts +5 -0
- package/src/core/rows/coreRowsFeature.ts +5 -0
- package/src/core/rows/coreRowsFeature.types.ts +3 -0
- package/src/core/rows/coreRowsFeature.utils.ts +106 -7
- package/src/core/table/constructTable.ts +10 -0
- package/src/core/table/coreTablesFeature.ts +5 -0
- package/src/core/table/coreTablesFeature.types.ts +22 -12
- package/src/core/table/coreTablesFeature.utils.ts +44 -0
- package/src/features/column-faceting/columnFacetingFeature.ts +9 -1
- package/src/features/column-faceting/columnFacetingFeature.types.ts +12 -6
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +60 -0
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +5 -0
- package/src/features/column-faceting/createFacetedRowModel.ts +5 -0
- package/src/features/column-faceting/createFacetedUniqueValues.ts +5 -0
- package/src/features/column-filtering/columnFilteringFeature.ts +10 -2
- package/src/features/column-filtering/columnFilteringFeature.types.ts +7 -4
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +113 -2
- package/src/features/column-filtering/createFilteredRowModel.ts +5 -0
- package/src/features/column-filtering/filterRowsUtils.ts +5 -0
- package/src/features/column-grouping/columnGroupingFeature.ts +9 -1
- package/src/features/column-grouping/columnGroupingFeature.types.ts +7 -3
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +151 -0
- package/src/features/column-grouping/createGroupedRowModel.ts +5 -0
- package/src/features/column-ordering/columnOrderingFeature.ts +10 -1
- package/src/features/column-ordering/columnOrderingFeature.types.ts +4 -2
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +110 -18
- package/src/features/column-pinning/columnPinningFeature.ts +11 -12
- package/src/features/column-pinning/columnPinningFeature.types.ts +6 -2
- package/src/features/column-pinning/columnPinningFeature.utils.ts +390 -57
- package/src/features/column-resizing/columnResizingFeature.ts +9 -2
- package/src/features/column-resizing/columnResizingFeature.types.ts +14 -6
- package/src/features/column-resizing/columnResizingFeature.utils.ts +81 -0
- package/src/features/column-sizing/columnSizingFeature.ts +38 -18
- package/src/features/column-sizing/columnSizingFeature.types.ts +6 -3
- package/src/features/column-sizing/columnSizingFeature.utils.ts +168 -9
- package/src/features/column-visibility/columnVisibilityFeature.ts +15 -21
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -3
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +179 -23
- package/src/features/global-filtering/globalFilteringFeature.ts +9 -2
- package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -2
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +51 -0
- package/src/features/row-expanding/createExpandedRowModel.ts +10 -0
- package/src/features/row-expanding/rowExpandingFeature.ts +9 -1
- package/src/features/row-expanding/rowExpandingFeature.types.ts +10 -5
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +151 -0
- package/src/features/row-pagination/createPaginatedRowModel.ts +5 -0
- package/src/features/row-pagination/rowPaginationFeature.ts +9 -1
- package/src/features/row-pagination/rowPaginationFeature.types.ts +11 -7
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +175 -0
- package/src/features/row-pinning/rowPinningFeature.ts +9 -1
- package/src/features/row-pinning/rowPinningFeature.types.ts +4 -2
- package/src/features/row-pinning/rowPinningFeature.utils.ts +112 -0
- package/src/features/row-selection/rowSelectionFeature.ts +9 -1
- package/src/features/row-selection/rowSelectionFeature.types.ts +4 -2
- package/src/features/row-selection/rowSelectionFeature.utils.ts +259 -0
- package/src/features/row-sorting/createSortedRowModel.ts +5 -0
- package/src/features/row-sorting/rowSortingFeature.ts +11 -3
- package/src/features/row-sorting/rowSortingFeature.types.ts +7 -3
- package/src/features/row-sorting/rowSortingFeature.utils.ts +151 -0
- package/src/features/stockFeatures.ts +5 -0
- package/src/flex-render.ts +10 -0
- package/src/fns/aggregationFns.ts +5 -0
- package/src/fns/filterFns.ts +5 -0
- package/src/fns/sortFns.ts +50 -5
- package/src/helpers/tableOptions.ts +32 -0
- package/src/utils.ts +45 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGroupedRowModel.cjs","names":["tableMemo","table_getColumn","flattenBy","constructRow","column_getAggregationFn","row_getGroupingValue"],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type {\n AggregationFn,\n AggregationFns,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowData } from '../../types/type-utils'\n\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table: Table_Internal<TFeatures, TData> = _table\n if (!table._rowModelFns.aggregationFns)\n table._rowModelFns.aggregationFns = aggregationFns\n return tableMemo({\n feature: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (row._valuesCache.hasOwnProperty(colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (row._groupingValuesCache?.hasOwnProperty(colId)) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) row._groupingValuesCache = {}\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createGroupedRowModel.cjs","names":["tableMemo","table_getColumn","flattenBy","constructRow","column_getAggregationFn","row_getGroupingValue"],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type {\n AggregationFn,\n AggregationFns,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized grouped row model factory.\n *\n * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n */\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table: Table_Internal<TFeatures, TData> = _table\n if (!table._rowModelFns.aggregationFns)\n table._rowModelFns.aggregationFns = aggregationFns\n return tableMemo({\n feature: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (row._valuesCache.hasOwnProperty(colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (row._groupingValuesCache?.hasOwnProperty(colId)) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) row._groupingValuesCache = {}\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"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"}
|
|
@@ -5,6 +5,11 @@ import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.cjs";
|
|
|
5
5
|
import { AggregationFn, AggregationFns } from "./columnGroupingFeature.types.cjs";
|
|
6
6
|
|
|
7
7
|
//#region src/features/column-grouping/createGroupedRowModel.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Creates a memoized grouped row model factory.
|
|
10
|
+
*
|
|
11
|
+
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
12
|
+
*/
|
|
8
13
|
declare function createGroupedRowModel<TFeatures extends TableFeatures, TData extends RowData = any>(aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
9
14
|
//#endregion
|
|
10
15
|
export { createGroupedRowModel };
|
|
@@ -5,6 +5,11 @@ import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.js";
|
|
|
5
5
|
import { AggregationFn, AggregationFns } from "./columnGroupingFeature.types.js";
|
|
6
6
|
|
|
7
7
|
//#region src/features/column-grouping/createGroupedRowModel.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Creates a memoized grouped row model factory.
|
|
10
|
+
*
|
|
11
|
+
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
12
|
+
*/
|
|
8
13
|
declare function createGroupedRowModel<TFeatures extends TableFeatures, TData extends RowData = any>(aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
9
14
|
//#endregion
|
|
10
15
|
export { createGroupedRowModel };
|
|
@@ -6,6 +6,11 @@ import { column_getAggregationFn, row_getGroupingValue } from "./columnGroupingF
|
|
|
6
6
|
import { table_autoResetExpanded } from "../row-expanding/rowExpandingFeature.utils.js";
|
|
7
7
|
|
|
8
8
|
//#region src/features/column-grouping/createGroupedRowModel.ts
|
|
9
|
+
/**
|
|
10
|
+
* Creates a memoized grouped row model factory.
|
|
11
|
+
*
|
|
12
|
+
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
13
|
+
*/
|
|
9
14
|
function createGroupedRowModel(aggregationFns) {
|
|
10
15
|
return (_table) => {
|
|
11
16
|
const table = _table;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGroupedRowModel.js","names":[],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type {\n AggregationFn,\n AggregationFns,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowData } from '../../types/type-utils'\n\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table: Table_Internal<TFeatures, TData> = _table\n if (!table._rowModelFns.aggregationFns)\n table._rowModelFns.aggregationFns = aggregationFns\n return tableMemo({\n feature: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (row._valuesCache.hasOwnProperty(colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (row._groupingValuesCache?.hasOwnProperty(colId)) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) row._groupingValuesCache = {}\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createGroupedRowModel.js","names":[],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type {\n AggregationFn,\n AggregationFns,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized grouped row model factory.\n *\n * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n */\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table: Table_Internal<TFeatures, TData> = _table\n if (!table._rowModelFns.aggregationFns)\n table._rowModelFns.aggregationFns = aggregationFns\n return tableMemo({\n feature: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (row._valuesCache.hasOwnProperty(colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (row._groupingValuesCache?.hasOwnProperty(colId)) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) row._groupingValuesCache = {}\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":";;;;;;;;;;;;;AA0BA,SAAgB,sBAId,gBACsE;CACtE,QAAQ,WAAW;EACjB,MAAM,QAA0C;EAChD,IAAI,CAAC,MAAM,aAAa,gBACtB,MAAM,aAAa,iBAAiB;EACtC,OAAO,UAAU;GACf,SAAS;GACT;GACA,QAAQ;GACR,gBAAgB;;qCACd,MAAM,MAAM,wFAAU,KAAK,EAC3B,MAAM,uBAAuB,CAC9B;;GACD,UAAU,uBAAuB,MAAM;GACvC,qBAAqB;IACnB,wBAAwB,MAAM;IAC9B,yBAAyB,MAAM;;GAElC,CAAC;;;AAIN,SAAS,uBAGP,OAAqE;;CACrE,MAAM,WAAW,MAAM,uBAAuB;CAC9C,MAAM,qCAAW,MAAM,MAAM,0FAAU,KAAK;CAE5C,IAAI,CAAC,SAAS,KAAK,UAAU,sDAAC,SAAU,SAAQ;EAC9C,SAAS,KAAK,SAAS,QAAQ;GAC7B,IAAI,QAAQ;GACZ,IAAI,WAAW;IACf;EACF,OAAO;;CAIT,MAAM,mBAAmB,SAAS,QAAQ,aACxC,gBAAgB,OAAO,SAAS,CACjC;CAED,MAAM,kBAC0B,EAAE;CAClC,MAAM,kBAAyD,EAAE;CAGjE,MAAM,sBACJ,MACA,QAAQ,GACR,aACG;EAGH,IAAI,SAAS,iBAAiB,QAC5B,OAAO,KAAK,KAAK,QAAQ;GACvB,IAAI,QAAQ;GAEZ,gBAAgB,KAAK,IAAI;GACzB,gBAAgB,IAAI,MAAM;GAE1B,IAAI,IAAI,QAAQ,QACd,IAAI,UAAU,mBAAmB,IAAI,SAAS,QAAQ,GAAG,IAAI,GAAG;GAGlE,OAAO;IACP;EAGJ,MAAM,WAAW,iBAAiB;EAGlC,MAAM,eAAe,QAAQ,MAAM,SAAS;EAmF5C,OAhF8B,MAAM,KAAK,aAAa,SAAS,CAAC,CAAC,KAC9D,CAAC,eAAe,cAAc,UAAU;GACvC,IAAI,KAAK,GAAG,SAAS,GAAG;GACxB,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO;GAGtC,MAAM,UAAU,mBAAmB,aAAa,QAAQ,GAAG,GAAG;GAE9D,QAAQ,SAAS,WAAW;IAC1B,OAAO,WAAW;KAClB;GAGF,MAAM,WAAW,QACb,UAAU,cAAc,QAAQ,IAAI,QAAQ,GAC5C;GAEJ,MAAM,MAAM,aACV,OACA,IACA,SAAS,GAAI,UACb,OACA,OACA,QACA,SACD;GAED,OAAO,OAAO,KAAK;IACjB,kBAAkB;IAClB;IACA;IACA;IACA,WAAW,UAAkB;;KAE3B,IAAI,iBAAiB,SAAS,MAAM,EAAE;MACpC,IAAI,IAAI,aAAa,eAAe,MAAM,EACxC,OAAO,IAAI,aAAa;MAG1B,IAAI,YAAY,IACd,IAAI,aAAa,SACf,YAAY,GAAG,SAAS,MAAM,IAAI;MAGtC,OAAO,IAAI,aAAa;;KAG1B,6BAAI,IAAI,oGAAsB,eAAe,MAAM,EACjD,OAAO,IAAI,qBAAqB;KAKlC,MAAM,cAAc,wBADL,MAAM,UAAU,MAEvB,CACP;KAED,IAAI,CAAC,IAAI,sBAAsB,IAAI,uBAAuB,EAAE;KAE5D,IAAI,aAAa;MACf,IAAI,qBAAqB,SAAS,YAChC,OACA,UACA,YACD;MAED,OAAO,IAAI,qBAAqB;;;IAGrC,CAAC;GAEF,QAAQ,SAAS,WAAW;IAC1B,gBAAgB,KAAK,OAAO;IAC5B,gBAAgB,OAAO,MAAM;KAC7B;GAEF,OAAO;IAIiB;;CAG9B,MAAM,cAAc,mBAAmB,SAAS,MAAM,EAAE;CAExD,YAAY,SAAS,WAAW;EAC9B,gBAAgB,KAAK,OAAO;EAC5B,gBAAgB,OAAO,MAAM;GAC7B;CAEF,OAAO;EACL,MAAM;EACN,UAAU;EACV,UAAU;EACX;;AAGH,SAAS,QACP,MACA,UACA;CACA,MAAM,2BAAW,IAAI,KAAwC;CAE7D,OAAO,KAAK,QAAQ,KAAK,QAAQ;EAC/B,MAAM,SAAS,GAAG,qBAAqB,KAAK,SAAS;EACrD,MAAM,WAAW,IAAI,IAAI,OAAO;EAChC,IAAI,CAAC,UACH,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;OAEtB,SAAS,KAAK,IAAI;EAEpB,OAAO;IACN,SAAS"}
|
|
@@ -2,6 +2,11 @@ const require_utils = require('../../utils.cjs');
|
|
|
2
2
|
const require_columnOrderingFeature_utils = require('./columnOrderingFeature.utils.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/features/column-ordering/columnOrderingFeature.ts
|
|
5
|
+
/**
|
|
6
|
+
* Creates the stock column ordering feature.
|
|
7
|
+
*
|
|
8
|
+
* The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.
|
|
9
|
+
*/
|
|
5
10
|
function constructColumnOrderingFeature() {
|
|
6
11
|
return {
|
|
7
12
|
getInitialState: (initialState) => {
|
|
@@ -18,12 +23,13 @@ function constructColumnOrderingFeature() {
|
|
|
18
23
|
column_getIndex: {
|
|
19
24
|
fn: (column, position) => require_columnOrderingFeature_utils.column_getIndex(column, position),
|
|
20
25
|
memoDeps: (column, position) => {
|
|
21
|
-
var _column$table$atoms$c, _column$table$atoms$c2, _column$table$atoms$g;
|
|
26
|
+
var _column$table$atoms$c, _column$table$atoms$c2, _column$table$atoms$g, _column$table$atoms$c3;
|
|
22
27
|
return [
|
|
23
28
|
position,
|
|
24
29
|
(_column$table$atoms$c = column.table.atoms.columnOrder) === null || _column$table$atoms$c === void 0 ? void 0 : _column$table$atoms$c.get(),
|
|
25
30
|
(_column$table$atoms$c2 = column.table.atoms.columnPinning) === null || _column$table$atoms$c2 === void 0 ? void 0 : _column$table$atoms$c2.get(),
|
|
26
|
-
(_column$table$atoms$g = column.table.atoms.grouping) === null || _column$table$atoms$g === void 0 ? void 0 : _column$table$atoms$g.get()
|
|
31
|
+
(_column$table$atoms$g = column.table.atoms.grouping) === null || _column$table$atoms$g === void 0 ? void 0 : _column$table$atoms$g.get(),
|
|
32
|
+
(_column$table$atoms$c3 = column.table.atoms.columnVisibility) === null || _column$table$atoms$c3 === void 0 ? void 0 : _column$table$atoms$c3.get()
|
|
27
33
|
];
|
|
28
34
|
}
|
|
29
35
|
},
|
|
@@ -51,7 +57,10 @@ function constructColumnOrderingFeature() {
|
|
|
51
57
|
};
|
|
52
58
|
}
|
|
53
59
|
/**
|
|
54
|
-
* The
|
|
60
|
+
* The stock column ordering feature.
|
|
61
|
+
*
|
|
62
|
+
* Register this feature to add column order state and APIs for deriving the
|
|
63
|
+
* ordered leaf column list alongside grouping and pinning.
|
|
55
64
|
*/
|
|
56
65
|
const columnOrderingFeature = constructColumnOrderingFeature();
|
|
57
66
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnOrderingFeature.cjs","names":["getDefaultColumnOrderState","makeStateUpdater","column_getIndex","column_getIsFirstColumn","column_getIsLastColumn","table_setColumnOrder","table_resetColumnOrder","table_getOrderColumnsFn"],"sources":["../../../src/features/column-ordering/columnOrderingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getIndex,\n column_getIsFirstColumn,\n column_getIsLastColumn,\n getDefaultColumnOrderState,\n table_getOrderColumnsFn,\n table_resetColumnOrder,\n table_setColumnOrder,\n} from './columnOrderingFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// Column_ColumnOrdering,\n// TableOptions_ColumnOrdering,\n// TableState_ColumnOrdering,\n// Table_ColumnOrdering,\n// } from './columnOrderingFeature.types'\n\nexport interface ColumnOrderingFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // Column: Column_ColumnOrdering\n // Table: Table_ColumnOrdering<TFeatures, TData>\n // TableOptions: TableOptions_ColumnOrdering\n // TableState: TableState_ColumnOrdering\n}\n\nexport function constructColumnOrderingFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnOrder: getDefaultColumnOrderState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnOrderingFeature', prototype, table, {\n column_getIndex: {\n fn: (column, position) => column_getIndex(column, position),\n memoDeps: (column, position) => [\n position,\n column.table.atoms.columnOrder?.get(),\n column.table.atoms.columnPinning?.get(),\n column.table.atoms.grouping?.get(),\n ],\n },\n column_getIsFirstColumn: {\n fn: (column, position) => column_getIsFirstColumn(column, position),\n },\n column_getIsLastColumn: {\n fn: (column, position) => column_getIsLastColumn(column, position),\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnOrderingFeature', table, {\n table_setColumnOrder: {\n fn: (updater) => table_setColumnOrder(table, updater),\n },\n table_resetColumnOrder: {\n fn: (defaultState) => table_resetColumnOrder(table, defaultState),\n },\n table_getOrderColumnsFn: {\n fn: () => table_getOrderColumnsFn(table),\n memoDeps: () => [\n table.atoms.columnOrder?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n })\n },\n }\n}\n\n/**\n * The
|
|
1
|
+
{"version":3,"file":"columnOrderingFeature.cjs","names":["getDefaultColumnOrderState","makeStateUpdater","column_getIndex","column_getIsFirstColumn","column_getIsLastColumn","table_setColumnOrder","table_resetColumnOrder","table_getOrderColumnsFn"],"sources":["../../../src/features/column-ordering/columnOrderingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getIndex,\n column_getIsFirstColumn,\n column_getIsLastColumn,\n getDefaultColumnOrderState,\n table_getOrderColumnsFn,\n table_resetColumnOrder,\n table_setColumnOrder,\n} from './columnOrderingFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// Column_ColumnOrdering,\n// TableOptions_ColumnOrdering,\n// TableState_ColumnOrdering,\n// Table_ColumnOrdering,\n// } from './columnOrderingFeature.types'\n\nexport interface ColumnOrderingFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // Column: Column_ColumnOrdering\n // Table: Table_ColumnOrdering<TFeatures, TData>\n // TableOptions: TableOptions_ColumnOrdering\n // TableState: TableState_ColumnOrdering\n}\n\n/**\n * Creates the stock column ordering feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnOrderingFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnOrder: getDefaultColumnOrderState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnOrderingFeature', prototype, table, {\n column_getIndex: {\n fn: (column, position) => column_getIndex(column, position),\n memoDeps: (column, position) => [\n position,\n column.table.atoms.columnOrder?.get(),\n column.table.atoms.columnPinning?.get(),\n column.table.atoms.grouping?.get(),\n column.table.atoms.columnVisibility?.get(),\n ],\n },\n column_getIsFirstColumn: {\n fn: (column, position) => column_getIsFirstColumn(column, position),\n },\n column_getIsLastColumn: {\n fn: (column, position) => column_getIsLastColumn(column, position),\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnOrderingFeature', table, {\n table_setColumnOrder: {\n fn: (updater) => table_setColumnOrder(table, updater),\n },\n table_resetColumnOrder: {\n fn: (defaultState) => table_resetColumnOrder(table, defaultState),\n },\n table_getOrderColumnsFn: {\n fn: () => table_getOrderColumnsFn(table),\n memoDeps: () => [\n table.atoms.columnOrder?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n })\n },\n }\n}\n\n/**\n * The stock column ordering feature.\n *\n * Register this feature to add column order state and APIs for deriving the\n * ordered leaf column list alongside grouping and pinning.\n */\nexport const columnOrderingFeature = constructColumnOrderingFeature()\n"],"mappings":";;;;;;;;;AAsCA,SAAgB,iCAGuD;CACrE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,aAAaA,gEAA4B;IACzC,GAAG;IACJ;;EAGH,yBAAyB,UAAU;GACjC,OAAO,EACL,qBAAqBC,+BAAiB,eAAe,MAAM,EAC5D;;EAGH,wBAAwB,WAAW,UAAU;GAC3C,kCAAoB,yBAAyB,WAAW,OAAO;IAC7D,iBAAiB;KACf,KAAK,QAAQ,aAAaC,oDAAgB,QAAQ,SAAS;KAC3D,WAAW,QAAQ,aAAa;;;OAC9B;gCACA,OAAO,MAAM,MAAM,2FAAa,KAAK;iCACrC,OAAO,MAAM,MAAM,+FAAe,KAAK;gCACvC,OAAO,MAAM,MAAM,wFAAU,KAAK;iCAClC,OAAO,MAAM,MAAM,kGAAkB,KAAK;OAC3C;;KACF;IACD,yBAAyB,EACvB,KAAK,QAAQ,aAAaC,4DAAwB,QAAQ,SAAS,EACpE;IACD,wBAAwB,EACtB,KAAK,QAAQ,aAAaC,2DAAuB,QAAQ,SAAS,EACnE;IACF,CAAC;;EAGJ,qBAAqB,UAAU;GAC7B,8BAAgB,yBAAyB,OAAO;IAC9C,sBAAsB,EACpB,KAAK,YAAYC,yDAAqB,OAAO,QAAQ,EACtD;IACD,wBAAwB,EACtB,KAAK,iBAAiBC,2DAAuB,OAAO,aAAa,EAClE;IACD,yBAAyB;KACvB,UAAUC,4DAAwB,MAAM;KACxC,gBAAgB;;;gCACd,MAAM,MAAM,2FAAa,KAAK;gCAC9B,MAAM,MAAM,wFAAU,KAAK;OAC3B,MAAM,QAAQ;OACf;;KACF;IACF,CAAC;;EAEL;;;;;;;;AASH,MAAa,wBAAwB,gCAAgC"}
|
|
@@ -3,9 +3,17 @@ import { TableFeature, TableFeatures } from "../../types/TableFeatures.cjs";
|
|
|
3
3
|
|
|
4
4
|
//#region src/features/column-ordering/columnOrderingFeature.d.ts
|
|
5
5
|
interface ColumnOrderingFeatureConstructors<TFeatures extends TableFeatures, TData extends RowData> {}
|
|
6
|
+
/**
|
|
7
|
+
* Creates the stock column ordering feature.
|
|
8
|
+
*
|
|
9
|
+
* The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.
|
|
10
|
+
*/
|
|
6
11
|
declare function constructColumnOrderingFeature<TFeatures extends TableFeatures, TData extends RowData>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>>;
|
|
7
12
|
/**
|
|
8
|
-
* The
|
|
13
|
+
* The stock column ordering feature.
|
|
14
|
+
*
|
|
15
|
+
* Register this feature to add column order state and APIs for deriving the
|
|
16
|
+
* ordered leaf column list alongside grouping and pinning.
|
|
9
17
|
*/
|
|
10
18
|
declare const columnOrderingFeature: TableFeature<ColumnOrderingFeatureConstructors<TableFeatures, RowData>>;
|
|
11
19
|
//#endregion
|
|
@@ -3,9 +3,17 @@ import { TableFeature, TableFeatures } from "../../types/TableFeatures.js";
|
|
|
3
3
|
|
|
4
4
|
//#region src/features/column-ordering/columnOrderingFeature.d.ts
|
|
5
5
|
interface ColumnOrderingFeatureConstructors<TFeatures extends TableFeatures, TData extends RowData> {}
|
|
6
|
+
/**
|
|
7
|
+
* Creates the stock column ordering feature.
|
|
8
|
+
*
|
|
9
|
+
* The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.
|
|
10
|
+
*/
|
|
6
11
|
declare function constructColumnOrderingFeature<TFeatures extends TableFeatures, TData extends RowData>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>>;
|
|
7
12
|
/**
|
|
8
|
-
* The
|
|
13
|
+
* The stock column ordering feature.
|
|
14
|
+
*
|
|
15
|
+
* Register this feature to add column order state and APIs for deriving the
|
|
16
|
+
* ordered leaf column list alongside grouping and pinning.
|
|
9
17
|
*/
|
|
10
18
|
declare const columnOrderingFeature: TableFeature<ColumnOrderingFeatureConstructors<TableFeatures, RowData>>;
|
|
11
19
|
//#endregion
|
|
@@ -2,6 +2,11 @@ import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from "../../ut
|
|
|
2
2
|
import { column_getIndex, column_getIsFirstColumn, column_getIsLastColumn, getDefaultColumnOrderState, table_getOrderColumnsFn, table_resetColumnOrder, table_setColumnOrder } from "./columnOrderingFeature.utils.js";
|
|
3
3
|
|
|
4
4
|
//#region src/features/column-ordering/columnOrderingFeature.ts
|
|
5
|
+
/**
|
|
6
|
+
* Creates the stock column ordering feature.
|
|
7
|
+
*
|
|
8
|
+
* The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.
|
|
9
|
+
*/
|
|
5
10
|
function constructColumnOrderingFeature() {
|
|
6
11
|
return {
|
|
7
12
|
getInitialState: (initialState) => {
|
|
@@ -18,12 +23,13 @@ function constructColumnOrderingFeature() {
|
|
|
18
23
|
column_getIndex: {
|
|
19
24
|
fn: (column, position) => column_getIndex(column, position),
|
|
20
25
|
memoDeps: (column, position) => {
|
|
21
|
-
var _column$table$atoms$c, _column$table$atoms$c2, _column$table$atoms$g;
|
|
26
|
+
var _column$table$atoms$c, _column$table$atoms$c2, _column$table$atoms$g, _column$table$atoms$c3;
|
|
22
27
|
return [
|
|
23
28
|
position,
|
|
24
29
|
(_column$table$atoms$c = column.table.atoms.columnOrder) === null || _column$table$atoms$c === void 0 ? void 0 : _column$table$atoms$c.get(),
|
|
25
30
|
(_column$table$atoms$c2 = column.table.atoms.columnPinning) === null || _column$table$atoms$c2 === void 0 ? void 0 : _column$table$atoms$c2.get(),
|
|
26
|
-
(_column$table$atoms$g = column.table.atoms.grouping) === null || _column$table$atoms$g === void 0 ? void 0 : _column$table$atoms$g.get()
|
|
31
|
+
(_column$table$atoms$g = column.table.atoms.grouping) === null || _column$table$atoms$g === void 0 ? void 0 : _column$table$atoms$g.get(),
|
|
32
|
+
(_column$table$atoms$c3 = column.table.atoms.columnVisibility) === null || _column$table$atoms$c3 === void 0 ? void 0 : _column$table$atoms$c3.get()
|
|
27
33
|
];
|
|
28
34
|
}
|
|
29
35
|
},
|
|
@@ -51,7 +57,10 @@ function constructColumnOrderingFeature() {
|
|
|
51
57
|
};
|
|
52
58
|
}
|
|
53
59
|
/**
|
|
54
|
-
* The
|
|
60
|
+
* The stock column ordering feature.
|
|
61
|
+
*
|
|
62
|
+
* Register this feature to add column order state and APIs for deriving the
|
|
63
|
+
* ordered leaf column list alongside grouping and pinning.
|
|
55
64
|
*/
|
|
56
65
|
const columnOrderingFeature = constructColumnOrderingFeature();
|
|
57
66
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnOrderingFeature.js","names":[],"sources":["../../../src/features/column-ordering/columnOrderingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getIndex,\n column_getIsFirstColumn,\n column_getIsLastColumn,\n getDefaultColumnOrderState,\n table_getOrderColumnsFn,\n table_resetColumnOrder,\n table_setColumnOrder,\n} from './columnOrderingFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// Column_ColumnOrdering,\n// TableOptions_ColumnOrdering,\n// TableState_ColumnOrdering,\n// Table_ColumnOrdering,\n// } from './columnOrderingFeature.types'\n\nexport interface ColumnOrderingFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // Column: Column_ColumnOrdering\n // Table: Table_ColumnOrdering<TFeatures, TData>\n // TableOptions: TableOptions_ColumnOrdering\n // TableState: TableState_ColumnOrdering\n}\n\nexport function constructColumnOrderingFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnOrder: getDefaultColumnOrderState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnOrderingFeature', prototype, table, {\n column_getIndex: {\n fn: (column, position) => column_getIndex(column, position),\n memoDeps: (column, position) => [\n position,\n column.table.atoms.columnOrder?.get(),\n column.table.atoms.columnPinning?.get(),\n column.table.atoms.grouping?.get(),\n ],\n },\n column_getIsFirstColumn: {\n fn: (column, position) => column_getIsFirstColumn(column, position),\n },\n column_getIsLastColumn: {\n fn: (column, position) => column_getIsLastColumn(column, position),\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnOrderingFeature', table, {\n table_setColumnOrder: {\n fn: (updater) => table_setColumnOrder(table, updater),\n },\n table_resetColumnOrder: {\n fn: (defaultState) => table_resetColumnOrder(table, defaultState),\n },\n table_getOrderColumnsFn: {\n fn: () => table_getOrderColumnsFn(table),\n memoDeps: () => [\n table.atoms.columnOrder?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n })\n },\n }\n}\n\n/**\n * The
|
|
1
|
+
{"version":3,"file":"columnOrderingFeature.js","names":[],"sources":["../../../src/features/column-ordering/columnOrderingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getIndex,\n column_getIsFirstColumn,\n column_getIsLastColumn,\n getDefaultColumnOrderState,\n table_getOrderColumnsFn,\n table_resetColumnOrder,\n table_setColumnOrder,\n} from './columnOrderingFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// Column_ColumnOrdering,\n// TableOptions_ColumnOrdering,\n// TableState_ColumnOrdering,\n// Table_ColumnOrdering,\n// } from './columnOrderingFeature.types'\n\nexport interface ColumnOrderingFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // Column: Column_ColumnOrdering\n // Table: Table_ColumnOrdering<TFeatures, TData>\n // TableOptions: TableOptions_ColumnOrdering\n // TableState: TableState_ColumnOrdering\n}\n\n/**\n * Creates the stock column ordering feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnOrderingFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnOrder: getDefaultColumnOrderState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnOrderingFeature', prototype, table, {\n column_getIndex: {\n fn: (column, position) => column_getIndex(column, position),\n memoDeps: (column, position) => [\n position,\n column.table.atoms.columnOrder?.get(),\n column.table.atoms.columnPinning?.get(),\n column.table.atoms.grouping?.get(),\n column.table.atoms.columnVisibility?.get(),\n ],\n },\n column_getIsFirstColumn: {\n fn: (column, position) => column_getIsFirstColumn(column, position),\n },\n column_getIsLastColumn: {\n fn: (column, position) => column_getIsLastColumn(column, position),\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnOrderingFeature', table, {\n table_setColumnOrder: {\n fn: (updater) => table_setColumnOrder(table, updater),\n },\n table_resetColumnOrder: {\n fn: (defaultState) => table_resetColumnOrder(table, defaultState),\n },\n table_getOrderColumnsFn: {\n fn: () => table_getOrderColumnsFn(table),\n memoDeps: () => [\n table.atoms.columnOrder?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n })\n },\n }\n}\n\n/**\n * The stock column ordering feature.\n *\n * Register this feature to add column order state and APIs for deriving the\n * ordered leaf column list alongside grouping and pinning.\n */\nexport const columnOrderingFeature = constructColumnOrderingFeature()\n"],"mappings":";;;;;;;;;AAsCA,SAAgB,iCAGuD;CACrE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,aAAa,4BAA4B;IACzC,GAAG;IACJ;;EAGH,yBAAyB,UAAU;GACjC,OAAO,EACL,qBAAqB,iBAAiB,eAAe,MAAM,EAC5D;;EAGH,wBAAwB,WAAW,UAAU;GAC3C,oBAAoB,yBAAyB,WAAW,OAAO;IAC7D,iBAAiB;KACf,KAAK,QAAQ,aAAa,gBAAgB,QAAQ,SAAS;KAC3D,WAAW,QAAQ,aAAa;;;OAC9B;gCACA,OAAO,MAAM,MAAM,2FAAa,KAAK;iCACrC,OAAO,MAAM,MAAM,+FAAe,KAAK;gCACvC,OAAO,MAAM,MAAM,wFAAU,KAAK;iCAClC,OAAO,MAAM,MAAM,kGAAkB,KAAK;OAC3C;;KACF;IACD,yBAAyB,EACvB,KAAK,QAAQ,aAAa,wBAAwB,QAAQ,SAAS,EACpE;IACD,wBAAwB,EACtB,KAAK,QAAQ,aAAa,uBAAuB,QAAQ,SAAS,EACnE;IACF,CAAC;;EAGJ,qBAAqB,UAAU;GAC7B,gBAAgB,yBAAyB,OAAO;IAC9C,sBAAsB,EACpB,KAAK,YAAY,qBAAqB,OAAO,QAAQ,EACtD;IACD,wBAAwB,EACtB,KAAK,iBAAiB,uBAAuB,OAAO,aAAa,EAClE;IACD,yBAAyB;KACvB,UAAU,wBAAwB,MAAM;KACxC,gBAAgB;;;gCACd,MAAM,MAAM,2FAAa,KAAK;gCAC9B,MAAM,MAAM,wFAAU,KAAK;OAC3B,MAAM,QAAQ;OACf;;KACF;IACF,CAAC;;EAEL;;;;;;;;AASH,MAAa,wBAAwB,gCAAgC"}
|
|
@@ -9,7 +9,9 @@ interface TableState_ColumnOrdering {
|
|
|
9
9
|
}
|
|
10
10
|
interface TableOptions_ColumnOrdering {
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Called with an updater when column order state changes. Pair this with
|
|
13
|
+
* `state.columnOrder` when using external state; external atoms can own the
|
|
14
|
+
* slice without this callback.
|
|
13
15
|
*/
|
|
14
16
|
onColumnOrderChange?: OnChangeFn<ColumnOrderState>;
|
|
15
17
|
}
|
|
@@ -36,7 +38,7 @@ interface Table_ColumnOrdering<TFeatures extends TableFeatures, TData extends Ro
|
|
|
36
38
|
*/
|
|
37
39
|
resetColumnOrder: (defaultState?: boolean) => void;
|
|
38
40
|
/**
|
|
39
|
-
* Sets
|
|
41
|
+
* Sets column order state using a value or updater.
|
|
40
42
|
*/
|
|
41
43
|
setColumnOrder: (updater: Updater<ColumnOrderState>) => void;
|
|
42
44
|
}
|
|
@@ -9,7 +9,9 @@ interface TableState_ColumnOrdering {
|
|
|
9
9
|
}
|
|
10
10
|
interface TableOptions_ColumnOrdering {
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Called with an updater when column order state changes. Pair this with
|
|
13
|
+
* `state.columnOrder` when using external state; external atoms can own the
|
|
14
|
+
* slice without this callback.
|
|
13
15
|
*/
|
|
14
16
|
onColumnOrderChange?: OnChangeFn<ColumnOrderState>;
|
|
15
17
|
}
|
|
@@ -36,7 +38,7 @@ interface Table_ColumnOrdering<TFeatures extends TableFeatures, TData extends Ro
|
|
|
36
38
|
*/
|
|
37
39
|
resetColumnOrder: (defaultState?: boolean) => void;
|
|
38
40
|
/**
|
|
39
|
-
* Sets
|
|
41
|
+
* Sets column order state using a value or updater.
|
|
40
42
|
*/
|
|
41
43
|
setColumnOrder: (updater: Updater<ColumnOrderState>) => void;
|
|
42
44
|
}
|
|
@@ -2,28 +2,99 @@ const require_utils = require('../../utils.cjs');
|
|
|
2
2
|
const require_columnPinningFeature_utils = require('../column-pinning/columnPinningFeature.utils.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/features/column-ordering/columnOrderingFeature.utils.ts
|
|
5
|
+
/**
|
|
6
|
+
* Returns the default column order state.
|
|
7
|
+
*
|
|
8
|
+
* Feature constructors use this value to initialize the table state or option defaults when no user value is provided.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const initialValue = getDefaultColumnOrderState()
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
5
15
|
function getDefaultColumnOrderState() {
|
|
6
16
|
return [];
|
|
7
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Returns index for a column.
|
|
20
|
+
*
|
|
21
|
+
* This derives the value from the column definition, table options, and the feature state atoms registered on the table.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const value = column_getIndex(column)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
8
28
|
function column_getIndex(column, position) {
|
|
9
29
|
return require_columnPinningFeature_utils.table_getPinnedVisibleLeafColumns(column.table, position).findIndex((d) => d.id === column.id);
|
|
10
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns is first column for a column.
|
|
33
|
+
*
|
|
34
|
+
* This derives the value from the column definition, table options, and the feature state atoms registered on the table.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* const value = column_getIsFirstColumn(column)
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
11
41
|
function column_getIsFirstColumn(column, position) {
|
|
12
42
|
var _columns$;
|
|
13
43
|
return ((_columns$ = require_columnPinningFeature_utils.table_getPinnedVisibleLeafColumns(column.table, position)[0]) === null || _columns$ === void 0 ? void 0 : _columns$.id) === column.id;
|
|
14
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns is last column for a column.
|
|
47
|
+
*
|
|
48
|
+
* This derives the value from the column definition, table options, and the feature state atoms registered on the table.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* const value = column_getIsLastColumn(column)
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
15
55
|
function column_getIsLastColumn(column, position) {
|
|
16
56
|
var _columns;
|
|
17
57
|
const columns = require_columnPinningFeature_utils.table_getPinnedVisibleLeafColumns(column.table, position);
|
|
18
58
|
return ((_columns = columns[columns.length - 1]) === null || _columns === void 0 ? void 0 : _columns.id) === column.id;
|
|
19
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Updates the table's column order state slice.
|
|
62
|
+
*
|
|
63
|
+
* The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* table_setColumnOrder(table, (old) => old)
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
20
70
|
function table_setColumnOrder(table, updater) {
|
|
21
71
|
var _table$options$onColu, _table$options;
|
|
22
72
|
(_table$options$onColu = (_table$options = table.options).onColumnOrderChange) === null || _table$options$onColu === void 0 || _table$options$onColu.call(_table$options, updater);
|
|
23
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Resets the table's column order state slice.
|
|
76
|
+
*
|
|
77
|
+
* By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* table_resetColumnOrder(table)
|
|
82
|
+
* table_resetColumnOrder(table, true)
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
24
85
|
function table_resetColumnOrder(table, defaultState) {
|
|
25
86
|
table_setColumnOrder(table, defaultState ? [] : require_utils.cloneState(table.initialState.columnOrder ?? []));
|
|
26
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns order columns fn for the table.
|
|
90
|
+
*
|
|
91
|
+
* This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* const value = table_getOrderColumnsFn(table)
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
27
98
|
function table_getOrderColumnsFn(table) {
|
|
28
99
|
var _table$atoms$columnOr;
|
|
29
100
|
const columnOrder = (_table$atoms$columnOr = table.atoms.columnOrder) === null || _table$atoms$columnOr === void 0 ? void 0 : _table$atoms$columnOr.get();
|
|
@@ -31,18 +102,30 @@ function table_getOrderColumnsFn(table) {
|
|
|
31
102
|
let orderedColumns = [];
|
|
32
103
|
if (!(columnOrder === null || columnOrder === void 0 ? void 0 : columnOrder.length)) orderedColumns = columns;
|
|
33
104
|
else {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
105
|
+
const remaining = /* @__PURE__ */ new Map();
|
|
106
|
+
for (const column of columns) remaining.set(column.id, column);
|
|
107
|
+
for (const id of columnOrder) {
|
|
108
|
+
const column = remaining.get(id);
|
|
109
|
+
if (column) {
|
|
110
|
+
orderedColumns.push(column);
|
|
111
|
+
remaining.delete(id);
|
|
112
|
+
}
|
|
40
113
|
}
|
|
41
|
-
|
|
114
|
+
for (const column of columns) if (remaining.has(column.id)) orderedColumns.push(column);
|
|
42
115
|
}
|
|
43
116
|
return orderColumns(table, orderedColumns);
|
|
44
117
|
};
|
|
45
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Orders leaf columns with manual ordering, grouping, and pinning rules.
|
|
121
|
+
*
|
|
122
|
+
* This helper is used by the column ordering feature to produce the final visible column order.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* const orderedColumns = orderColumns(leafColumns, columnOrder, grouping, groupedColumnMode)
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
46
129
|
function orderColumns(table, leafColumns) {
|
|
47
130
|
var _table$atoms$grouping;
|
|
48
131
|
const grouping = ((_table$atoms$grouping = table.atoms.grouping) === null || _table$atoms$grouping === void 0 ? void 0 : _table$atoms$grouping.get()) ?? [];
|
|
@@ -50,7 +133,14 @@ function orderColumns(table, leafColumns) {
|
|
|
50
133
|
if (!grouping.length || !groupedColumnMode) return leafColumns;
|
|
51
134
|
const nonGroupingColumns = leafColumns.filter((col) => !grouping.includes(col.id));
|
|
52
135
|
if (groupedColumnMode === "remove") return nonGroupingColumns;
|
|
53
|
-
|
|
136
|
+
const leafColumnsById = /* @__PURE__ */ new Map();
|
|
137
|
+
for (const col of leafColumns) leafColumnsById.set(col.id, col);
|
|
138
|
+
const groupingColumns = [];
|
|
139
|
+
for (const g of grouping) {
|
|
140
|
+
const col = leafColumnsById.get(g);
|
|
141
|
+
if (col) groupingColumns.push(col);
|
|
142
|
+
}
|
|
143
|
+
return [...groupingColumns, ...nonGroupingColumns];
|
|
54
144
|
}
|
|
55
145
|
|
|
56
146
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnOrderingFeature.utils.cjs","names":["table_getPinnedVisibleLeafColumns","cloneState"],"sources":["../../../src/features/column-ordering/columnOrderingFeature.utils.ts"],"sourcesContent":["import { table_getPinnedVisibleLeafColumns } from '../column-pinning/columnPinningFeature.utils'\nimport { cloneState } from '../../utils'\nimport type { GroupingState } from '../column-grouping/columnGroupingFeature.types'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnPinningPosition } from '../column-pinning/columnPinningFeature.types'\nimport type { ColumnOrderState } from './columnOrderingFeature.types'\n\nexport function getDefaultColumnOrderState(): ColumnOrderState {\n return []\n}\n\nexport function column_getIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n position?: ColumnPinningPosition | 'center',\n) {\n const columns = table_getPinnedVisibleLeafColumns(column.table, position)\n return columns.findIndex((d) => d.id === column.id)\n}\n\nexport function column_getIsFirstColumn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n position?: ColumnPinningPosition | 'center',\n) {\n const columns = table_getPinnedVisibleLeafColumns(column.table, position)\n return columns[0]?.id === column.id\n}\n\nexport function column_getIsLastColumn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n position?: ColumnPinningPosition | 'center',\n) {\n const columns = table_getPinnedVisibleLeafColumns(column.table, position)\n return columns[columns.length - 1]?.id === column.id\n}\n\nexport function table_setColumnOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnOrderState>) {\n table.options.onColumnOrderChange?.(updater)\n}\n\nexport function table_resetColumnOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnOrder(\n table,\n defaultState ? [] : cloneState(table.initialState.columnOrder ?? []),\n )\n}\n\nexport function table_getOrderColumnsFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const columnOrder = table.atoms.columnOrder?.get()\n\n return (columns: Array<Column_Internal<TFeatures, TData, unknown>>) => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Array<Column_Internal<TFeatures, TData, unknown>> = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n
|
|
1
|
+
{"version":3,"file":"columnOrderingFeature.utils.cjs","names":["table_getPinnedVisibleLeafColumns","cloneState"],"sources":["../../../src/features/column-ordering/columnOrderingFeature.utils.ts"],"sourcesContent":["import { table_getPinnedVisibleLeafColumns } from '../column-pinning/columnPinningFeature.utils'\nimport { cloneState } from '../../utils'\nimport type { GroupingState } from '../column-grouping/columnGroupingFeature.types'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnPinningPosition } from '../column-pinning/columnPinningFeature.types'\nimport type { ColumnOrderState } from './columnOrderingFeature.types'\n\n/**\n * Returns the default column order state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultColumnOrderState()\n * ```\n */\nexport function getDefaultColumnOrderState(): ColumnOrderState {\n return []\n}\n\n/**\n * Returns index for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIndex(column)\n * ```\n */\nexport function column_getIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n position?: ColumnPinningPosition | 'center',\n) {\n const columns = table_getPinnedVisibleLeafColumns(column.table, position)\n return columns.findIndex((d) => d.id === column.id)\n}\n\n/**\n * Returns is first column for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsFirstColumn(column)\n * ```\n */\nexport function column_getIsFirstColumn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n position?: ColumnPinningPosition | 'center',\n) {\n const columns = table_getPinnedVisibleLeafColumns(column.table, position)\n return columns[0]?.id === column.id\n}\n\n/**\n * Returns is last column for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsLastColumn(column)\n * ```\n */\nexport function column_getIsLastColumn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n position?: ColumnPinningPosition | 'center',\n) {\n const columns = table_getPinnedVisibleLeafColumns(column.table, position)\n return columns[columns.length - 1]?.id === column.id\n}\n\n/**\n * Updates the table's column order state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setColumnOrder(table, (old) => old)\n * ```\n */\nexport function table_setColumnOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnOrderState>) {\n table.options.onColumnOrderChange?.(updater)\n}\n\n/**\n * Resets the table's column order state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetColumnOrder(table)\n * table_resetColumnOrder(table, true)\n * ```\n */\nexport function table_resetColumnOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnOrder(\n table,\n defaultState ? [] : cloneState(table.initialState.columnOrder ?? []),\n )\n}\n\n/**\n * Returns order columns fn for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getOrderColumnsFn(table)\n * ```\n */\nexport function table_getOrderColumnsFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const columnOrder = table.atoms.columnOrder?.get()\n\n return (columns: Array<Column_Internal<TFeatures, TData, unknown>>) => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Array<Column_Internal<TFeatures, TData, unknown>> = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n // Index columns by id for O(1) lookup\n const remaining = new Map<\n string,\n Column_Internal<TFeatures, TData, unknown>\n >()\n for (const column of columns) remaining.set(column.id, column)\n\n // Place columns in the requested order, removing each as it's used\n // (handles duplicates and unknown ids in columnOrder)\n for (const id of columnOrder) {\n const column = remaining.get(id)\n if (column) {\n orderedColumns.push(column)\n remaining.delete(id)\n }\n }\n\n // Append leftover columns in their original order\n for (const column of columns) {\n if (remaining.has(column.id)) orderedColumns.push(column)\n }\n }\n\n return orderColumns(table, orderedColumns)\n }\n}\n\n/**\n * Orders leaf columns with manual ordering, grouping, and pinning rules.\n *\n * This helper is used by the column ordering feature to produce the final visible column order.\n *\n * @example\n * ```ts\n * const orderedColumns = orderColumns(leafColumns, columnOrder, grouping, groupedColumnMode)\n * ```\n */\nexport function orderColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n leafColumns: Array<Column_Internal<TFeatures, TData, unknown>>,\n) {\n const grouping = table.atoms.grouping?.get() ?? ([] as GroupingState)\n const { groupedColumnMode } = table.options\n\n if (!grouping.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n (col) => !grouping.includes(col.id),\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const leafColumnsById = new Map<\n string,\n Column_Internal<TFeatures, TData, unknown>\n >()\n for (const col of leafColumns) leafColumnsById.set(col.id, col)\n\n const groupingColumns: Array<Column_Internal<TFeatures, TData, unknown>> = []\n for (const g of grouping) {\n const col = leafColumnsById.get(g)\n if (col) groupingColumns.push(col)\n }\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n"],"mappings":";;;;;;;;;;;;;;AAoBA,SAAgB,6BAA+C;CAC7D,OAAO,EAAE;;;;;;;;;;;;AAaX,SAAgB,gBAKd,QACA,UACA;CAEA,OADgBA,qEAAkC,OAAO,OAAO,SAClD,CAAC,WAAW,MAAM,EAAE,OAAO,OAAO,GAAG;;;;;;;;;;;;AAarD,SAAgB,wBAKd,QACA,UACA;;CAEA,qBADgBA,qEAAkC,OAAO,OAAO,SAClD,CAAC,0DAAI,QAAO,OAAO;;;;;;;;;;;;AAanC,SAAgB,uBAKd,QACA,UACA;;CACA,MAAM,UAAUA,qEAAkC,OAAO,OAAO,SAAS;CACzE,oBAAO,QAAQ,QAAQ,SAAS,wDAAI,QAAO,OAAO;;;;;;;;;;;;AAapD,SAAgB,qBAGd,OAAyC,SAAoC;;CAC7E,iDAAM,SAAQ,gHAAsB,QAAQ;;;;;;;;;;;;;AAc9C,SAAgB,uBAGd,OAAyC,cAAwB;CACjE,qBACE,OACA,eAAe,EAAE,GAAGC,yBAAW,MAAM,aAAa,eAAe,EAAE,CAAC,CACrE;;;;;;;;;;;;AAaH,SAAgB,wBAGd,OAAyC;;CACzC,MAAM,uCAAc,MAAM,MAAM,2FAAa,KAAK;CAElD,QAAQ,YAA+D;EAGrE,IAAI,iBAAoE,EAAE;EAG1E,IAAI,4DAAC,YAAa,SAChB,iBAAiB;OACZ;GAEL,MAAM,4BAAY,IAAI,KAGnB;GACH,KAAK,MAAM,UAAU,SAAS,UAAU,IAAI,OAAO,IAAI,OAAO;GAI9D,KAAK,MAAM,MAAM,aAAa;IAC5B,MAAM,SAAS,UAAU,IAAI,GAAG;IAChC,IAAI,QAAQ;KACV,eAAe,KAAK,OAAO;KAC3B,UAAU,OAAO,GAAG;;;GAKxB,KAAK,MAAM,UAAU,SACnB,IAAI,UAAU,IAAI,OAAO,GAAG,EAAE,eAAe,KAAK,OAAO;;EAI7D,OAAO,aAAa,OAAO,eAAe;;;;;;;;;;;;;AAc9C,SAAgB,aAId,OACA,aACA;;CACA,MAAM,qCAAW,MAAM,MAAM,wFAAU,KAAK,KAAK,EAAE;CACnD,MAAM,EAAE,sBAAsB,MAAM;CAEpC,IAAI,CAAC,SAAS,UAAU,CAAC,mBACvB,OAAO;CAGT,MAAM,qBAAqB,YAAY,QACpC,QAAQ,CAAC,SAAS,SAAS,IAAI,GAAG,CACpC;CAED,IAAI,sBAAsB,UACxB,OAAO;CAGT,MAAM,kCAAkB,IAAI,KAGzB;CACH,KAAK,MAAM,OAAO,aAAa,gBAAgB,IAAI,IAAI,IAAI,IAAI;CAE/D,MAAM,kBAAqE,EAAE;CAC7E,KAAK,MAAM,KAAK,UAAU;EACxB,MAAM,MAAM,gBAAgB,IAAI,EAAE;EAClC,IAAI,KAAK,gBAAgB,KAAK,IAAI;;CAGpC,OAAO,CAAC,GAAG,iBAAiB,GAAG,mBAAmB"}
|