@tanstack/table-core 9.0.0-beta.47 → 9.0.0-beta.48
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/row-models/coreRowModelsFeature.types.d.cts +1 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.js +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
- package/dist/features/aggregation/aggregationFeature.cjs +38 -0
- package/dist/features/aggregation/aggregationFeature.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFeature.d.cts +10 -0
- package/dist/features/aggregation/aggregationFeature.d.ts +10 -0
- package/dist/features/aggregation/aggregationFeature.js +38 -0
- package/dist/features/aggregation/aggregationFeature.js.map +1 -0
- package/dist/features/aggregation/aggregationFeature.types.cjs +13 -0
- package/dist/features/aggregation/aggregationFeature.types.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFeature.types.d.cts +172 -0
- package/dist/features/aggregation/aggregationFeature.types.d.ts +172 -0
- package/dist/features/aggregation/aggregationFeature.types.js +12 -0
- package/dist/features/aggregation/aggregationFeature.types.js.map +1 -0
- package/dist/features/aggregation/aggregationFeature.utils.cjs +198 -0
- package/dist/features/aggregation/aggregationFeature.utils.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFeature.utils.d.cts +33 -0
- package/dist/features/aggregation/aggregationFeature.utils.d.ts +33 -0
- package/dist/features/aggregation/aggregationFeature.utils.js +192 -0
- package/dist/features/aggregation/aggregationFeature.utils.js.map +1 -0
- package/dist/features/aggregation/aggregationFns.cjs +240 -0
- package/dist/features/aggregation/aggregationFns.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFns.d.cts +67 -0
- package/dist/features/aggregation/aggregationFns.d.ts +67 -0
- package/dist/features/aggregation/aggregationFns.js +229 -0
- package/dist/features/aggregation/aggregationFns.js.map +1 -0
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +1 -1
- package/dist/{fns → features/column-filtering}/filterFns.cjs +1 -1
- package/dist/features/column-filtering/filterFns.cjs.map +1 -0
- package/dist/{fns → features/column-filtering}/filterFns.d.cts +4 -4
- package/dist/{fns → features/column-filtering}/filterFns.d.ts +4 -4
- package/dist/{fns → features/column-filtering}/filterFns.js +1 -1
- package/dist/features/column-filtering/filterFns.js.map +1 -0
- package/dist/features/column-grouping/columnGroupingFeature.cjs +3 -12
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.js +4 -13
- package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +6 -87
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +6 -87
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +0 -64
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +2 -44
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +2 -44
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +2 -63
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +23 -16
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +2 -6
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +2 -6
- package/dist/features/column-grouping/createGroupedRowModel.js +25 -18
- package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.js +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
- package/dist/{fns → features/row-sorting}/sortFns.cjs +1 -1
- package/dist/{fns/sortFns.js.map → features/row-sorting/sortFns.cjs.map} +1 -1
- package/dist/{fns → features/row-sorting}/sortFns.d.cts +4 -4
- package/dist/{fns → features/row-sorting}/sortFns.d.ts +4 -4
- package/dist/{fns → features/row-sorting}/sortFns.js +1 -1
- package/dist/features/row-sorting/sortFns.js.map +1 -0
- package/dist/features/stockFeatures.cjs +2 -0
- package/dist/features/stockFeatures.cjs.map +1 -1
- package/dist/features/stockFeatures.d.cts +2 -0
- package/dist/features/stockFeatures.d.ts +2 -0
- package/dist/features/stockFeatures.js +2 -0
- package/dist/features/stockFeatures.js.map +1 -1
- package/dist/index.cjs +7 -4
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +6 -4
- package/dist/static-functions.cjs +8 -3
- package/dist/static-functions.d.cts +3 -2
- package/dist/static-functions.d.ts +3 -2
- package/dist/static-functions.js +3 -2
- package/dist/types/Cell.d.cts +3 -1
- package/dist/types/Cell.d.ts +3 -1
- package/dist/types/Column.d.cts +4 -2
- package/dist/types/Column.d.ts +4 -2
- package/dist/types/ColumnDef.d.cts +5 -3
- package/dist/types/ColumnDef.d.ts +5 -3
- package/dist/types/Row.d.cts +3 -1
- package/dist/types/Row.d.ts +3 -1
- package/dist/types/RowModel.d.cts +1 -1
- package/dist/types/RowModel.d.ts +1 -1
- package/dist/types/RowModelFns.d.cts +3 -3
- package/dist/types/RowModelFns.d.ts +3 -3
- package/dist/types/Table.d.cts +1 -1
- package/dist/types/Table.d.ts +1 -1
- package/dist/types/TableFeatures.d.cts +4 -4
- package/dist/types/TableFeatures.d.ts +4 -4
- package/dist/types/TableOptions.d.cts +5 -3
- package/dist/types/TableOptions.d.ts +5 -3
- package/dist/types/TableState.d.cts +1 -1
- package/dist/types/TableState.d.ts +1 -1
- package/dist/worker/initTableWorker.cjs.map +1 -1
- package/dist/worker/initTableWorker.js.map +1 -1
- package/package.json +1 -1
- package/skills/aggregation/SKILL.md +131 -0
- package/skills/api-not-found/SKILL.md +1 -1
- package/skills/client-vs-server/SKILL.md +1 -1
- package/skills/column-faceting/SKILL.md +1 -1
- package/skills/column-filtering/SKILL.md +1 -1
- package/skills/column-ordering/SKILL.md +1 -1
- package/skills/column-pinning/SKILL.md +1 -1
- package/skills/column-resizing/SKILL.md +1 -1
- package/skills/column-sizing/SKILL.md +1 -1
- package/skills/column-visibility/SKILL.md +1 -1
- package/skills/core/SKILL.md +1 -1
- package/skills/custom-features/SKILL.md +1 -1
- package/skills/expanding/SKILL.md +1 -1
- package/skills/global-filtering/SKILL.md +1 -1
- package/skills/grouping/SKILL.md +12 -18
- package/skills/migrate-v8-to-v9/SKILL.md +15 -2
- package/skills/pagination/SKILL.md +1 -1
- package/skills/row-pinning/SKILL.md +1 -1
- package/skills/row-selection/SKILL.md +1 -1
- package/skills/sorting/SKILL.md +1 -1
- package/skills/table-features/SKILL.md +5 -2
- package/skills/typescript/SKILL.md +1 -1
- package/src/core/row-models/coreRowModelsFeature.utils.ts +1 -1
- package/src/features/aggregation/aggregationFeature.ts +59 -0
- package/src/features/aggregation/aggregationFeature.types.ts +312 -0
- package/src/features/aggregation/aggregationFeature.utils.ts +401 -0
- package/src/features/aggregation/aggregationFns.ts +336 -0
- package/src/features/column-filtering/columnFilteringFeature.types.ts +1 -1
- package/src/{fns → features/column-filtering}/filterFns.ts +4 -4
- package/src/features/column-grouping/columnGroupingFeature.ts +1 -20
- package/src/features/column-grouping/columnGroupingFeature.types.ts +4 -141
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +1 -122
- package/src/features/column-grouping/createGroupedRowModel.ts +32 -41
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +1 -1
- package/src/features/row-sorting/rowSortingFeature.types.ts +1 -1
- package/src/features/row-sorting/rowSortingFeature.utils.ts +1 -1
- package/src/{fns → features/row-sorting}/sortFns.ts +4 -7
- package/src/features/stockFeatures.ts +3 -0
- package/src/index.ts +7 -8
- package/src/static-functions.ts +1 -0
- package/src/types/Cell.ts +2 -0
- package/src/types/Column.ts +3 -1
- package/src/types/ColumnDef.ts +6 -3
- package/src/types/Row.ts +2 -0
- package/src/types/RowModelFns.ts +3 -3
- package/src/types/TableFeatures.ts +4 -4
- package/src/types/TableOptions.ts +5 -1
- package/src/worker/initTableWorker.ts +1 -1
- package/dist/fns/aggregationFns.cjs +0 -234
- package/dist/fns/aggregationFns.cjs.map +0 -1
- package/dist/fns/aggregationFns.d.cts +0 -139
- package/dist/fns/aggregationFns.d.ts +0 -139
- package/dist/fns/aggregationFns.js +0 -221
- package/dist/fns/aggregationFns.js.map +0 -1
- package/dist/fns/filterFns.cjs.map +0 -1
- package/dist/fns/filterFns.js.map +0 -1
- package/dist/fns/sortFns.cjs.map +0 -1
- package/src/fns/aggregationFns.ts +0 -303
|
@@ -1,83 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BuiltInAggregationFn } from "../../fns/aggregationFns.cjs";
|
|
3
|
-
import { ColumnDefTemplate } from "../../types/ColumnDef.cjs";
|
|
4
|
-
import { Cell } from "../../types/Cell.cjs";
|
|
1
|
+
import { OnChangeFn, RowData, Updater } from "../../types/type-utils.cjs";
|
|
5
2
|
import { Row } from "../../types/Row.cjs";
|
|
6
3
|
import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.cjs";
|
|
7
|
-
import {
|
|
4
|
+
import { TableFeatures } from "../../types/TableFeatures.cjs";
|
|
8
5
|
|
|
9
6
|
//#region src/features/column-grouping/columnGroupingFeature.types.d.ts
|
|
10
7
|
type GroupingState = Array<string>;
|
|
11
8
|
interface TableState_ColumnGrouping {
|
|
12
9
|
grouping: GroupingState;
|
|
13
10
|
}
|
|
14
|
-
interface
|
|
15
|
-
aggregationFns: Record<string, AggregationFn<TFeatures, TData>>;
|
|
16
|
-
}
|
|
17
|
-
interface AggregationFns {}
|
|
18
|
-
interface AggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
19
|
-
(columnId: string, leafRows: Array<Row<TFeatures, TData>>, childRows: Array<Row<TFeatures, TData>>): any;
|
|
20
|
-
/**
|
|
21
|
-
* Normalizes each row's value before it is aggregated. Only honored by
|
|
22
|
-
* aggregation functions built with `constructAggregationFn` (including the
|
|
23
|
-
* value-based built-in aggregation functions).
|
|
24
|
-
*/
|
|
25
|
-
resolveDataValue?: TransformDataValueFn;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* The definition object accepted by `constructAggregationFn`.
|
|
29
|
-
*
|
|
30
|
-
* `aggregate` is a value-level reducer: it receives the rows' (resolved)
|
|
31
|
-
* values instead of the rows themselves, so normalization concerns stay in
|
|
32
|
-
* `resolveDataValue`.
|
|
33
|
-
*/
|
|
34
|
-
interface AggregationFnDef<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
35
|
-
aggregate: (values: Array<any>, rows: Array<Row<TFeatures, TData>>, columnId: string) => any;
|
|
36
|
-
/**
|
|
37
|
-
* Which of the group's rows feed the aggregation: all of its `leafRows`
|
|
38
|
-
* (the default) or its immediate `childRows`. For nested groups, child rows
|
|
39
|
-
* expose already-aggregated values, which is faster for reaggregatable
|
|
40
|
-
* computations like sums and extents.
|
|
41
|
-
*/
|
|
42
|
-
fromRows?: 'leafRows' | 'childRows';
|
|
43
|
-
resolveDataValue?: TransformDataValueFn;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* The shape returned by `constructAggregationFn`: an `AggregationFn` with its
|
|
47
|
-
* definition attached, so variants can be built by spreading it into another
|
|
48
|
-
* `constructAggregationFn` call.
|
|
49
|
-
*
|
|
50
|
-
* The call signature is generic so a created aggregation function can be used
|
|
51
|
-
* with any table's rows, regardless of the feature set it was defined
|
|
52
|
-
* against.
|
|
53
|
-
*/
|
|
54
|
-
interface CreatedAggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> extends AggregationFnDef<TFeatures, TData> {
|
|
55
|
-
<TRowFeatures extends TableFeatures, TRowData extends RowData>(columnId: string, leafRows: Array<Row<TRowFeatures, TRowData>>, childRows: Array<Row<TRowFeatures, TRowData>>): any;
|
|
56
|
-
}
|
|
57
|
-
type CustomAggregationFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, AggregationFn<TFeatures, TData>>;
|
|
58
|
-
/**
|
|
59
|
-
* Resolves the valid string names for `columnDef.aggregationFn` for a feature
|
|
60
|
-
* set.
|
|
61
|
-
*
|
|
62
|
-
* When the features object declares an `aggregationFns` registry
|
|
63
|
-
* (`tableFeatures({ ..., aggregationFns })`), its keys are the only valid
|
|
64
|
-
* names; a name is only assignable if an aggregation function is actually
|
|
65
|
-
* registered for it. Otherwise this falls back to the global
|
|
66
|
-
* declaration-merged `AggregationFns` interface.
|
|
67
|
-
*/
|
|
68
|
-
type ExtractAggregationFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof AggregationFns | BuiltInAggregationFn : TFeatures extends {
|
|
69
|
-
aggregationFns: infer TAggregationFns extends object;
|
|
70
|
-
} ? Extract<keyof TAggregationFns, string> : keyof AggregationFns;
|
|
71
|
-
type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractAggregationFnKeys<TFeatures> | AggregationFn<TFeatures, TData>;
|
|
72
|
-
interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
|
|
73
|
-
/**
|
|
74
|
-
* The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
|
|
75
|
-
*/
|
|
76
|
-
aggregatedCell?: ColumnDefTemplate<ReturnType<Cell<TFeatures, TData, TValue>['getContext']>>;
|
|
77
|
-
/**
|
|
78
|
-
* The resolved aggregation function for the column.
|
|
79
|
-
*/
|
|
80
|
-
aggregationFn?: AggregationFnOption<TFeatures, TData>;
|
|
11
|
+
interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
81
12
|
/**
|
|
82
13
|
* Allows this column to be added to grouping state.
|
|
83
14
|
*
|
|
@@ -92,15 +23,7 @@ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in ou
|
|
|
92
23
|
*/
|
|
93
24
|
getGroupingValue?: (originalRow: TData, index: number, row: Row<TFeatures, TData>) => any;
|
|
94
25
|
}
|
|
95
|
-
interface Column_ColumnGrouping
|
|
96
|
-
/**
|
|
97
|
-
* Returns the aggregation function for the column.
|
|
98
|
-
*/
|
|
99
|
-
getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
|
|
100
|
-
/**
|
|
101
|
-
* Returns the automatically inferred aggregation function for the column.
|
|
102
|
-
*/
|
|
103
|
-
getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
|
|
26
|
+
interface Column_ColumnGrouping {
|
|
104
27
|
/**
|
|
105
28
|
* Checks whether this column can currently be grouped.
|
|
106
29
|
*/
|
|
@@ -142,10 +65,6 @@ interface Row_ColumnGrouping {
|
|
|
142
65
|
groupingValue?: unknown;
|
|
143
66
|
}
|
|
144
67
|
interface Cell_ColumnGrouping {
|
|
145
|
-
/**
|
|
146
|
-
* Checks whether this cell should render an aggregated value.
|
|
147
|
-
*/
|
|
148
|
-
getIsAggregated: () => boolean;
|
|
149
68
|
/**
|
|
150
69
|
* Checks whether this cell represents the active grouping column.
|
|
151
70
|
*/
|
|
@@ -194,7 +113,7 @@ interface Table_ColumnGrouping<in out _TFeatures extends TableFeatures, in out _
|
|
|
194
113
|
}
|
|
195
114
|
interface Table_RowModels_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
196
115
|
/**
|
|
197
|
-
* Resolves the row model after grouping
|
|
116
|
+
* Resolves the row model after grouping has been applied.
|
|
198
117
|
*/
|
|
199
118
|
getGroupedRowModel: () => RowModel<TFeatures, TData>;
|
|
200
119
|
/**
|
|
@@ -206,5 +125,5 @@ interface CachedRowModel_Grouped<in out TFeatures extends TableFeatures, in out
|
|
|
206
125
|
groupedRowModel: () => RowModel<TFeatures, TData>;
|
|
207
126
|
}
|
|
208
127
|
//#endregion
|
|
209
|
-
export {
|
|
128
|
+
export { CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, GroupingColumnMode, GroupingState, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
|
|
210
129
|
//# sourceMappingURL=columnGroupingFeature.types.d.cts.map
|
|
@@ -1,83 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BuiltInAggregationFn } from "../../fns/aggregationFns.js";
|
|
3
|
-
import { ColumnDefTemplate } from "../../types/ColumnDef.js";
|
|
4
|
-
import { Cell } from "../../types/Cell.js";
|
|
1
|
+
import { OnChangeFn, RowData, Updater } from "../../types/type-utils.js";
|
|
5
2
|
import { Row } from "../../types/Row.js";
|
|
6
3
|
import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.js";
|
|
7
|
-
import {
|
|
4
|
+
import { TableFeatures } from "../../types/TableFeatures.js";
|
|
8
5
|
|
|
9
6
|
//#region src/features/column-grouping/columnGroupingFeature.types.d.ts
|
|
10
7
|
type GroupingState = Array<string>;
|
|
11
8
|
interface TableState_ColumnGrouping {
|
|
12
9
|
grouping: GroupingState;
|
|
13
10
|
}
|
|
14
|
-
interface
|
|
15
|
-
aggregationFns: Record<string, AggregationFn<TFeatures, TData>>;
|
|
16
|
-
}
|
|
17
|
-
interface AggregationFns {}
|
|
18
|
-
interface AggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
19
|
-
(columnId: string, leafRows: Array<Row<TFeatures, TData>>, childRows: Array<Row<TFeatures, TData>>): any;
|
|
20
|
-
/**
|
|
21
|
-
* Normalizes each row's value before it is aggregated. Only honored by
|
|
22
|
-
* aggregation functions built with `constructAggregationFn` (including the
|
|
23
|
-
* value-based built-in aggregation functions).
|
|
24
|
-
*/
|
|
25
|
-
resolveDataValue?: TransformDataValueFn;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* The definition object accepted by `constructAggregationFn`.
|
|
29
|
-
*
|
|
30
|
-
* `aggregate` is a value-level reducer: it receives the rows' (resolved)
|
|
31
|
-
* values instead of the rows themselves, so normalization concerns stay in
|
|
32
|
-
* `resolveDataValue`.
|
|
33
|
-
*/
|
|
34
|
-
interface AggregationFnDef<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
35
|
-
aggregate: (values: Array<any>, rows: Array<Row<TFeatures, TData>>, columnId: string) => any;
|
|
36
|
-
/**
|
|
37
|
-
* Which of the group's rows feed the aggregation: all of its `leafRows`
|
|
38
|
-
* (the default) or its immediate `childRows`. For nested groups, child rows
|
|
39
|
-
* expose already-aggregated values, which is faster for reaggregatable
|
|
40
|
-
* computations like sums and extents.
|
|
41
|
-
*/
|
|
42
|
-
fromRows?: 'leafRows' | 'childRows';
|
|
43
|
-
resolveDataValue?: TransformDataValueFn;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* The shape returned by `constructAggregationFn`: an `AggregationFn` with its
|
|
47
|
-
* definition attached, so variants can be built by spreading it into another
|
|
48
|
-
* `constructAggregationFn` call.
|
|
49
|
-
*
|
|
50
|
-
* The call signature is generic so a created aggregation function can be used
|
|
51
|
-
* with any table's rows, regardless of the feature set it was defined
|
|
52
|
-
* against.
|
|
53
|
-
*/
|
|
54
|
-
interface CreatedAggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> extends AggregationFnDef<TFeatures, TData> {
|
|
55
|
-
<TRowFeatures extends TableFeatures, TRowData extends RowData>(columnId: string, leafRows: Array<Row<TRowFeatures, TRowData>>, childRows: Array<Row<TRowFeatures, TRowData>>): any;
|
|
56
|
-
}
|
|
57
|
-
type CustomAggregationFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, AggregationFn<TFeatures, TData>>;
|
|
58
|
-
/**
|
|
59
|
-
* Resolves the valid string names for `columnDef.aggregationFn` for a feature
|
|
60
|
-
* set.
|
|
61
|
-
*
|
|
62
|
-
* When the features object declares an `aggregationFns` registry
|
|
63
|
-
* (`tableFeatures({ ..., aggregationFns })`), its keys are the only valid
|
|
64
|
-
* names; a name is only assignable if an aggregation function is actually
|
|
65
|
-
* registered for it. Otherwise this falls back to the global
|
|
66
|
-
* declaration-merged `AggregationFns` interface.
|
|
67
|
-
*/
|
|
68
|
-
type ExtractAggregationFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof AggregationFns | BuiltInAggregationFn : TFeatures extends {
|
|
69
|
-
aggregationFns: infer TAggregationFns extends object;
|
|
70
|
-
} ? Extract<keyof TAggregationFns, string> : keyof AggregationFns;
|
|
71
|
-
type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractAggregationFnKeys<TFeatures> | AggregationFn<TFeatures, TData>;
|
|
72
|
-
interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
|
|
73
|
-
/**
|
|
74
|
-
* The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
|
|
75
|
-
*/
|
|
76
|
-
aggregatedCell?: ColumnDefTemplate<ReturnType<Cell<TFeatures, TData, TValue>['getContext']>>;
|
|
77
|
-
/**
|
|
78
|
-
* The resolved aggregation function for the column.
|
|
79
|
-
*/
|
|
80
|
-
aggregationFn?: AggregationFnOption<TFeatures, TData>;
|
|
11
|
+
interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
81
12
|
/**
|
|
82
13
|
* Allows this column to be added to grouping state.
|
|
83
14
|
*
|
|
@@ -92,15 +23,7 @@ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in ou
|
|
|
92
23
|
*/
|
|
93
24
|
getGroupingValue?: (originalRow: TData, index: number, row: Row<TFeatures, TData>) => any;
|
|
94
25
|
}
|
|
95
|
-
interface Column_ColumnGrouping
|
|
96
|
-
/**
|
|
97
|
-
* Returns the aggregation function for the column.
|
|
98
|
-
*/
|
|
99
|
-
getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
|
|
100
|
-
/**
|
|
101
|
-
* Returns the automatically inferred aggregation function for the column.
|
|
102
|
-
*/
|
|
103
|
-
getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
|
|
26
|
+
interface Column_ColumnGrouping {
|
|
104
27
|
/**
|
|
105
28
|
* Checks whether this column can currently be grouped.
|
|
106
29
|
*/
|
|
@@ -142,10 +65,6 @@ interface Row_ColumnGrouping {
|
|
|
142
65
|
groupingValue?: unknown;
|
|
143
66
|
}
|
|
144
67
|
interface Cell_ColumnGrouping {
|
|
145
|
-
/**
|
|
146
|
-
* Checks whether this cell should render an aggregated value.
|
|
147
|
-
*/
|
|
148
|
-
getIsAggregated: () => boolean;
|
|
149
68
|
/**
|
|
150
69
|
* Checks whether this cell represents the active grouping column.
|
|
151
70
|
*/
|
|
@@ -194,7 +113,7 @@ interface Table_ColumnGrouping<in out _TFeatures extends TableFeatures, in out _
|
|
|
194
113
|
}
|
|
195
114
|
interface Table_RowModels_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
196
115
|
/**
|
|
197
|
-
* Resolves the row model after grouping
|
|
116
|
+
* Resolves the row model after grouping has been applied.
|
|
198
117
|
*/
|
|
199
118
|
getGroupedRowModel: () => RowModel<TFeatures, TData>;
|
|
200
119
|
/**
|
|
@@ -206,5 +125,5 @@ interface CachedRowModel_Grouped<in out TFeatures extends TableFeatures, in out
|
|
|
206
125
|
groupedRowModel: () => RowModel<TFeatures, TData>;
|
|
207
126
|
}
|
|
208
127
|
//#endregion
|
|
209
|
-
export {
|
|
128
|
+
export { CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, GroupingColumnMode, GroupingState, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
|
|
210
129
|
//# sourceMappingURL=columnGroupingFeature.types.d.ts.map
|
|
@@ -91,53 +91,6 @@ function column_getToggleGroupingHandler(column) {
|
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
|
-
* Chooses a built-in aggregation function from the first core row value.
|
|
95
|
-
*
|
|
96
|
-
* Numeric columns default to `sum`, date-like values default to `extent`, and
|
|
97
|
-
* other value types leave aggregation unspecified.
|
|
98
|
-
*
|
|
99
|
-
* The chosen aggregation function is looked up in the table's
|
|
100
|
-
* `aggregationFns` registry. When it is not registered there, this returns
|
|
101
|
-
* `undefined` and warns in development instead of substituting a different
|
|
102
|
-
* aggregation function.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```ts
|
|
106
|
-
* const aggregationFn = column_getAutoAggregationFn(column)
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
function column_getAutoAggregationFn(column) {
|
|
110
|
-
const aggregationFns = column.table._rowModelFns.aggregationFns;
|
|
111
|
-
const value = column.table.getCoreRowModel().flatRows[0]?.getValue(column.id);
|
|
112
|
-
let aggregationFnName;
|
|
113
|
-
if (typeof value === "number") aggregationFnName = "sum";
|
|
114
|
-
else if (Object.prototype.toString.call(value) === "[object Date]") aggregationFnName = "extent";
|
|
115
|
-
if (!aggregationFnName) return;
|
|
116
|
-
const aggregationFn = aggregationFns?.[aggregationFnName];
|
|
117
|
-
if (process.env.NODE_ENV === "development" && !aggregationFn) console.warn(`aggregationFn '${aggregationFnName}' (auto) for column '${column.id}' is not registered`);
|
|
118
|
-
return aggregationFn;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Resolves the aggregation function configured for a column.
|
|
122
|
-
*
|
|
123
|
-
* Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
|
|
124
|
-
* delegates to `column_getAutoAggregationFn`, and string values are looked up in
|
|
125
|
-
* the table's aggregation function registry.
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
* ```ts
|
|
129
|
-
* const aggregationFn = column_getAggregationFn(column)
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
function column_getAggregationFn(column) {
|
|
133
|
-
const aggregationFns = column.table._rowModelFns.aggregationFns;
|
|
134
|
-
if (require_utils.isFunction(column.columnDef.aggregationFn)) return column.columnDef.aggregationFn;
|
|
135
|
-
if (column.columnDef.aggregationFn === "auto") return column_getAutoAggregationFn(column);
|
|
136
|
-
const aggregationFn = aggregationFns?.[column.columnDef.aggregationFn];
|
|
137
|
-
if (process.env.NODE_ENV === "development" && !aggregationFn && column.columnDef.aggregationFn != null) console.warn(`aggregationFn '${String(column.columnDef.aggregationFn)}' for column '${column.id}' is not registered`);
|
|
138
|
-
return aggregationFn;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
94
|
* Routes a grouping updater through the table's grouping change handler.
|
|
142
95
|
*
|
|
143
96
|
* The updater may be a next `GroupingState` array or a function of the previous
|
|
@@ -225,27 +178,10 @@ function cell_getIsGrouped(cell) {
|
|
|
225
178
|
function cell_getIsPlaceholder(cell) {
|
|
226
179
|
return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column);
|
|
227
180
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Checks whether this cell should render an aggregated value.
|
|
230
|
-
*
|
|
231
|
-
* Aggregated cells are non-placeholder, non-grouped cells on rows that have
|
|
232
|
-
* subRows.
|
|
233
|
-
*
|
|
234
|
-
* @example
|
|
235
|
-
* ```ts
|
|
236
|
-
* const isAggregated = cell_getIsAggregated(cell)
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
function cell_getIsAggregated(cell) {
|
|
240
|
-
return !cell_getIsGrouped(cell) && !cell_getIsPlaceholder(cell) && !!cell.row.subRows.length;
|
|
241
|
-
}
|
|
242
181
|
|
|
243
182
|
//#endregion
|
|
244
|
-
exports.cell_getIsAggregated = cell_getIsAggregated;
|
|
245
183
|
exports.cell_getIsGrouped = cell_getIsGrouped;
|
|
246
184
|
exports.cell_getIsPlaceholder = cell_getIsPlaceholder;
|
|
247
|
-
exports.column_getAggregationFn = column_getAggregationFn;
|
|
248
|
-
exports.column_getAutoAggregationFn = column_getAutoAggregationFn;
|
|
249
185
|
exports.column_getCanGroup = column_getCanGroup;
|
|
250
186
|
exports.column_getGroupedIndex = column_getGroupedIndex;
|
|
251
187
|
exports.column_getIsGrouped = column_getIsGrouped;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnGroupingFeature.utils.cjs","names":["isFunction","cloneState","hasOwn"],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn, isFunction } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n AggregationFn,\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Chooses a built-in aggregation function from the first core row value.\n *\n * Numeric columns default to `sum`, date-like values default to `extent`, and\n * other value types leave aggregation unspecified.\n *\n * The chosen aggregation function is looked up in the table's\n * `aggregationFns` registry. When it is not registered there, this returns\n * `undefined` and warns in development instead of substituting a different\n * aggregation function.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAutoAggregationFn(column)\n * ```\n */\nexport function column_getAutoAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n let aggregationFnName: string | undefined\n\n if (typeof value === 'number') {\n aggregationFnName = 'sum'\n } else if (Object.prototype.toString.call(value) === '[object Date]') {\n aggregationFnName = 'extent'\n }\n\n if (!aggregationFnName) {\n return undefined\n }\n\n const aggregationFn = aggregationFns?.[aggregationFnName]\n\n if (process.env.NODE_ENV === 'development' && !aggregationFn) {\n console.warn(\n `aggregationFn '${aggregationFnName}' (auto) for column '${column.id}' is not registered`,\n )\n }\n\n return aggregationFn\n}\n\n/**\n * Resolves the aggregation function configured for a column.\n *\n * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`\n * delegates to `column_getAutoAggregationFn`, and string values are looked up in\n * the table's aggregation function registry.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAggregationFn(column)\n * ```\n */\nexport function column_getAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n if (isFunction(column.columnDef.aggregationFn)) {\n return column.columnDef.aggregationFn\n }\n\n if (column.columnDef.aggregationFn === 'auto') {\n return column_getAutoAggregationFn(column)\n }\n\n const aggregationFn =\n aggregationFns?.[column.columnDef.aggregationFn as string]\n\n if (\n process.env.NODE_ENV === 'development' &&\n !aggregationFn &&\n column.columnDef.aggregationFn != null\n ) {\n console.warn(\n `aggregationFn '${String(column.columnDef.aggregationFn)}' for column '${column.id}' is not registered`,\n )\n }\n\n return aggregationFn\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n row.index,\n row,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n\n/**\n * Checks whether this cell should render an aggregated value.\n *\n * Aggregated cells are non-placeholder, non-grouped cells on rows that have\n * subRows.\n *\n * @example\n * ```ts\n * const isAggregated = cell_getIsAggregated(cell)\n * ```\n */\nexport function cell_getIsAggregated<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return (\n !cell_getIsGrouped(cell) &&\n !cell_getIsPlaceholder(cell) &&\n !!cell.row.subRows.length\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;CAC5D,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;CAC3D,OAAO,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,KAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;;;;;;AAkBA,SAAgB,4BAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAI1C,MAAM,QAFW,OAAO,MAAM,gBAAgB,CAAC,CAAC,SAAS,EAEnC,EAAE,SAAS,OAAO,EAAE;CAE1C,IAAI;CAEJ,IAAI,OAAO,UAAU,UACnB,oBAAoB;MACf,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,iBACnD,oBAAoB;CAGtB,IAAI,CAAC,mBACH;CAGF,MAAM,gBAAgB,iBAAiB;CAEvC,IAAI,QAAQ,IAAI,aAAa,iBAAiB,CAAC,eAC7C,QAAQ,KACN,kBAAkB,kBAAkB,uBAAuB,OAAO,GAAG,oBACvE;CAGF,OAAO;AACT;;;;;;;;;;;;;AAcA,SAAgB,wBAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,IAAIA,yBAAW,OAAO,UAAU,aAAa,GAC3C,OAAO,OAAO,UAAU;CAG1B,IAAI,OAAO,UAAU,kBAAkB,QACrC,OAAO,4BAA4B,MAAM;CAG3C,MAAM,gBACJ,iBAAiB,OAAO,UAAU;CAEpC,IACE,QAAQ,IAAI,aAAa,iBACzB,CAAC,iBACD,OAAO,UAAU,iBAAiB,MAElC,QAAQ,KACN,kBAAkB,OAAO,OAAO,UAAU,aAAa,EAAE,gBAAgB,OAAO,GAAG,oBACrF;CAGF,OAAO;AACT;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;CAC1E,MAAM,QAAQ,mBAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAIC,yBAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;CAC5E,IAAI,IAAI,wBAAwBC,qBAAO,IAAI,sBAAsB,QAAQ,GACvE,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,UACJ,IAAI,OACJ,GACF;CAGF,OAAO,IAAI,uBAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE;;;;;;;;;;;;AAaA,SAAgB,qBAId,MAAsC;CACtC,OACE,CAAC,kBAAkB,IAAI,KACvB,CAAC,sBAAsB,IAAI,KAC3B,CAAC,CAAC,KAAK,IAAI,QAAQ;AAEvB"}
|
|
1
|
+
{"version":3,"file":"columnGroupingFeature.utils.cjs","names":["cloneState","hasOwn"],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n row.index,\n row,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;CAC5D,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;CAC3D,OAAO,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,KAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;CAC1E,MAAM,QAAQ,mBAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAIA,yBAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;CAC5E,IAAI,IAAI,wBAAwBC,qBAAO,IAAI,sBAAsB,QAAQ,GACvE,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,UACJ,IAAI,OACJ,GACF;CAGF,OAAO,IAAI,uBAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CellData, RowData, Updater } from "../../types/type-utils.cjs";
|
|
2
|
-
import {
|
|
2
|
+
import { GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
|
|
3
3
|
import { Cell } from "../../types/Cell.cjs";
|
|
4
4
|
import { Row } from "../../types/Row.cjs";
|
|
5
5
|
import { Table } from "../../types/Table.cjs";
|
|
@@ -77,36 +77,6 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
|
|
|
77
77
|
* ```
|
|
78
78
|
*/
|
|
79
79
|
declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
|
|
80
|
-
/**
|
|
81
|
-
* Chooses a built-in aggregation function from the first core row value.
|
|
82
|
-
*
|
|
83
|
-
* Numeric columns default to `sum`, date-like values default to `extent`, and
|
|
84
|
-
* other value types leave aggregation unspecified.
|
|
85
|
-
*
|
|
86
|
-
* The chosen aggregation function is looked up in the table's
|
|
87
|
-
* `aggregationFns` registry. When it is not registered there, this returns
|
|
88
|
-
* `undefined` and warns in development instead of substituting a different
|
|
89
|
-
* aggregation function.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```ts
|
|
93
|
-
* const aggregationFn = column_getAutoAggregationFn(column)
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
|
|
97
|
-
/**
|
|
98
|
-
* Resolves the aggregation function configured for a column.
|
|
99
|
-
*
|
|
100
|
-
* Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
|
|
101
|
-
* delegates to `column_getAutoAggregationFn`, and string values are looked up in
|
|
102
|
-
* the table's aggregation function registry.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```ts
|
|
106
|
-
* const aggregationFn = column_getAggregationFn(column)
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
|
|
110
80
|
/**
|
|
111
81
|
* Routes a grouping updater through the table's grouping change handler.
|
|
112
82
|
*
|
|
@@ -178,18 +148,6 @@ declare function cell_getIsGrouped<TFeatures extends TableFeatures, TData extend
|
|
|
178
148
|
* ```
|
|
179
149
|
*/
|
|
180
150
|
declare function cell_getIsPlaceholder<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
|
|
181
|
-
/**
|
|
182
|
-
* Checks whether this cell should render an aggregated value.
|
|
183
|
-
*
|
|
184
|
-
* Aggregated cells are non-placeholder, non-grouped cells on rows that have
|
|
185
|
-
* subRows.
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
* ```ts
|
|
189
|
-
* const isAggregated = cell_getIsAggregated(cell)
|
|
190
|
-
* ```
|
|
191
|
-
*/
|
|
192
|
-
declare function cell_getIsAggregated<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
|
|
193
151
|
//#endregion
|
|
194
|
-
export {
|
|
152
|
+
export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
|
|
195
153
|
//# sourceMappingURL=columnGroupingFeature.utils.d.cts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CellData, RowData, Updater } from "../../types/type-utils.js";
|
|
2
|
-
import {
|
|
2
|
+
import { GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
|
|
3
3
|
import { Cell } from "../../types/Cell.js";
|
|
4
4
|
import { Row } from "../../types/Row.js";
|
|
5
5
|
import { Table } from "../../types/Table.js";
|
|
@@ -77,36 +77,6 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
|
|
|
77
77
|
* ```
|
|
78
78
|
*/
|
|
79
79
|
declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
|
|
80
|
-
/**
|
|
81
|
-
* Chooses a built-in aggregation function from the first core row value.
|
|
82
|
-
*
|
|
83
|
-
* Numeric columns default to `sum`, date-like values default to `extent`, and
|
|
84
|
-
* other value types leave aggregation unspecified.
|
|
85
|
-
*
|
|
86
|
-
* The chosen aggregation function is looked up in the table's
|
|
87
|
-
* `aggregationFns` registry. When it is not registered there, this returns
|
|
88
|
-
* `undefined` and warns in development instead of substituting a different
|
|
89
|
-
* aggregation function.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```ts
|
|
93
|
-
* const aggregationFn = column_getAutoAggregationFn(column)
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
|
|
97
|
-
/**
|
|
98
|
-
* Resolves the aggregation function configured for a column.
|
|
99
|
-
*
|
|
100
|
-
* Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
|
|
101
|
-
* delegates to `column_getAutoAggregationFn`, and string values are looked up in
|
|
102
|
-
* the table's aggregation function registry.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```ts
|
|
106
|
-
* const aggregationFn = column_getAggregationFn(column)
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
|
|
110
80
|
/**
|
|
111
81
|
* Routes a grouping updater through the table's grouping change handler.
|
|
112
82
|
*
|
|
@@ -178,18 +148,6 @@ declare function cell_getIsGrouped<TFeatures extends TableFeatures, TData extend
|
|
|
178
148
|
* ```
|
|
179
149
|
*/
|
|
180
150
|
declare function cell_getIsPlaceholder<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
|
|
181
|
-
/**
|
|
182
|
-
* Checks whether this cell should render an aggregated value.
|
|
183
|
-
*
|
|
184
|
-
* Aggregated cells are non-placeholder, non-grouped cells on rows that have
|
|
185
|
-
* subRows.
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
* ```ts
|
|
189
|
-
* const isAggregated = cell_getIsAggregated(cell)
|
|
190
|
-
* ```
|
|
191
|
-
*/
|
|
192
|
-
declare function cell_getIsAggregated<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
|
|
193
151
|
//#endregion
|
|
194
|
-
export {
|
|
152
|
+
export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
|
|
195
153
|
//# sourceMappingURL=columnGroupingFeature.utils.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cloneState, hasOwn
|
|
1
|
+
import { cloneState, hasOwn } from "../../utils.js";
|
|
2
2
|
|
|
3
3
|
//#region src/features/column-grouping/columnGroupingFeature.utils.ts
|
|
4
4
|
/**
|
|
@@ -91,53 +91,6 @@ function column_getToggleGroupingHandler(column) {
|
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
|
-
* Chooses a built-in aggregation function from the first core row value.
|
|
95
|
-
*
|
|
96
|
-
* Numeric columns default to `sum`, date-like values default to `extent`, and
|
|
97
|
-
* other value types leave aggregation unspecified.
|
|
98
|
-
*
|
|
99
|
-
* The chosen aggregation function is looked up in the table's
|
|
100
|
-
* `aggregationFns` registry. When it is not registered there, this returns
|
|
101
|
-
* `undefined` and warns in development instead of substituting a different
|
|
102
|
-
* aggregation function.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```ts
|
|
106
|
-
* const aggregationFn = column_getAutoAggregationFn(column)
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
function column_getAutoAggregationFn(column) {
|
|
110
|
-
const aggregationFns = column.table._rowModelFns.aggregationFns;
|
|
111
|
-
const value = column.table.getCoreRowModel().flatRows[0]?.getValue(column.id);
|
|
112
|
-
let aggregationFnName;
|
|
113
|
-
if (typeof value === "number") aggregationFnName = "sum";
|
|
114
|
-
else if (Object.prototype.toString.call(value) === "[object Date]") aggregationFnName = "extent";
|
|
115
|
-
if (!aggregationFnName) return;
|
|
116
|
-
const aggregationFn = aggregationFns?.[aggregationFnName];
|
|
117
|
-
if (process.env.NODE_ENV === "development" && !aggregationFn) console.warn(`aggregationFn '${aggregationFnName}' (auto) for column '${column.id}' is not registered`);
|
|
118
|
-
return aggregationFn;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Resolves the aggregation function configured for a column.
|
|
122
|
-
*
|
|
123
|
-
* Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
|
|
124
|
-
* delegates to `column_getAutoAggregationFn`, and string values are looked up in
|
|
125
|
-
* the table's aggregation function registry.
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
* ```ts
|
|
129
|
-
* const aggregationFn = column_getAggregationFn(column)
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
function column_getAggregationFn(column) {
|
|
133
|
-
const aggregationFns = column.table._rowModelFns.aggregationFns;
|
|
134
|
-
if (isFunction(column.columnDef.aggregationFn)) return column.columnDef.aggregationFn;
|
|
135
|
-
if (column.columnDef.aggregationFn === "auto") return column_getAutoAggregationFn(column);
|
|
136
|
-
const aggregationFn = aggregationFns?.[column.columnDef.aggregationFn];
|
|
137
|
-
if (process.env.NODE_ENV === "development" && !aggregationFn && column.columnDef.aggregationFn != null) console.warn(`aggregationFn '${String(column.columnDef.aggregationFn)}' for column '${column.id}' is not registered`);
|
|
138
|
-
return aggregationFn;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
94
|
* Routes a grouping updater through the table's grouping change handler.
|
|
142
95
|
*
|
|
143
96
|
* The updater may be a next `GroupingState` array or a function of the previous
|
|
@@ -225,21 +178,7 @@ function cell_getIsGrouped(cell) {
|
|
|
225
178
|
function cell_getIsPlaceholder(cell) {
|
|
226
179
|
return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column);
|
|
227
180
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Checks whether this cell should render an aggregated value.
|
|
230
|
-
*
|
|
231
|
-
* Aggregated cells are non-placeholder, non-grouped cells on rows that have
|
|
232
|
-
* subRows.
|
|
233
|
-
*
|
|
234
|
-
* @example
|
|
235
|
-
* ```ts
|
|
236
|
-
* const isAggregated = cell_getIsAggregated(cell)
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
function cell_getIsAggregated(cell) {
|
|
240
|
-
return !cell_getIsGrouped(cell) && !cell_getIsPlaceholder(cell) && !!cell.row.subRows.length;
|
|
241
|
-
}
|
|
242
181
|
|
|
243
182
|
//#endregion
|
|
244
|
-
export {
|
|
183
|
+
export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
|
|
245
184
|
//# sourceMappingURL=columnGroupingFeature.utils.js.map
|