@tanstack/table-core 8.5.15 → 8.5.16

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.
Files changed (70) hide show
  1. package/build/cjs/aggregationFns.js +0 -15
  2. package/build/cjs/aggregationFns.js.map +1 -1
  3. package/build/cjs/columnHelper.js +10 -2
  4. package/build/cjs/columnHelper.js.map +1 -1
  5. package/build/cjs/core/cell.js +0 -3
  6. package/build/cjs/core/cell.js.map +1 -1
  7. package/build/cjs/core/column.js +4 -12
  8. package/build/cjs/core/column.js.map +1 -1
  9. package/build/cjs/core/headers.js +18 -30
  10. package/build/cjs/core/headers.js.map +1 -1
  11. package/build/cjs/core/row.js +0 -5
  12. package/build/cjs/core/row.js.map +1 -1
  13. package/build/cjs/core/table.js +13 -30
  14. package/build/cjs/core/table.js.map +1 -1
  15. package/build/cjs/features/ColumnSizing.js +33 -32
  16. package/build/cjs/features/ColumnSizing.js.map +1 -1
  17. package/build/cjs/features/Expanding.js +9 -19
  18. package/build/cjs/features/Expanding.js.map +1 -1
  19. package/build/cjs/features/Filters.js +6 -34
  20. package/build/cjs/features/Filters.js.map +1 -1
  21. package/build/cjs/features/Grouping.js +1 -16
  22. package/build/cjs/features/Grouping.js.map +1 -1
  23. package/build/cjs/features/Ordering.js +13 -10
  24. package/build/cjs/features/Ordering.js.map +1 -1
  25. package/build/cjs/features/Pagination.js +11 -22
  26. package/build/cjs/features/Pagination.js.map +1 -1
  27. package/build/cjs/features/Pinning.js +5 -11
  28. package/build/cjs/features/Pinning.js.map +1 -1
  29. package/build/cjs/features/RowSelection.js +35 -39
  30. package/build/cjs/features/RowSelection.js.map +1 -1
  31. package/build/cjs/features/Sorting.js +14 -29
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +5 -5
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +3 -28
  36. package/build/cjs/filterFns.js.map +1 -1
  37. package/build/cjs/sortingFns.js +24 -31
  38. package/build/cjs/sortingFns.js.map +1 -1
  39. package/build/cjs/utils/filterRowsUtils.js +7 -19
  40. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  41. package/build/cjs/utils/getCoreRowModel.js +11 -13
  42. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  43. package/build/cjs/utils/getExpandedRowModel.js +0 -6
  44. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  45. package/build/cjs/utils/getFacetedMinMaxValues.js +0 -6
  46. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  47. package/build/cjs/utils/getFacetedRowModel.js +0 -4
  48. package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
  49. package/build/cjs/utils/getFacetedUniqueValues.js +0 -4
  50. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
  51. package/build/cjs/utils/getFilteredRowModel.js +8 -20
  52. package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
  53. package/build/cjs/utils/getGroupedRowModel.js +21 -25
  54. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  55. package/build/cjs/utils/getPaginationRowModel.js +0 -6
  56. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  57. package/build/cjs/utils/getSortedRowModel.js +6 -15
  58. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  59. package/build/cjs/utils.js +7 -13
  60. package/build/cjs/utils.js.map +1 -1
  61. package/build/esm/index.js +264 -504
  62. package/build/esm/index.js.map +1 -1
  63. package/build/stats-html.html +51 -41
  64. package/build/stats-react.json +369 -369
  65. package/build/umd/index.development.js +264 -502
  66. package/build/umd/index.development.js.map +1 -1
  67. package/build/umd/index.production.js +1 -1
  68. package/build/umd/index.production.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/features/ColumnSizing.ts +11 -1
@@ -16,6 +16,7 @@ var filterFns = require('../filterFns.js');
16
16
  var utils = require('../utils.js');
17
17
 
18
18
  //
19
+
19
20
  const Filters = {
20
21
  getDefaultColumnDef: () => {
21
22
  return {
@@ -39,7 +40,6 @@ const Filters = {
39
40
  globalFilterFn: 'auto',
40
41
  getColumnCanGlobalFilter: column => {
41
42
  var _table$getCoreRowMode, _table$getCoreRowMode2;
42
-
43
43
  const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null ? void 0 : (_table$getCoreRowMode2 = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode2.getValue();
44
44
  return typeof value === 'string' || typeof value === 'number';
45
45
  }
@@ -50,32 +50,25 @@ const Filters = {
50
50
  getAutoFilterFn: () => {
51
51
  const firstRow = table.getCoreRowModel().flatRows[0];
52
52
  const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
53
-
54
53
  if (typeof value === 'string') {
55
54
  return filterFns.filterFns.includesString;
56
55
  }
57
-
58
56
  if (typeof value === 'number') {
59
57
  return filterFns.filterFns.inNumberRange;
60
58
  }
61
-
62
59
  if (typeof value === 'boolean') {
63
60
  return filterFns.filterFns.equals;
64
61
  }
65
-
66
62
  if (value !== null && typeof value === 'object') {
67
63
  return filterFns.filterFns.equals;
68
64
  }
69
-
70
65
  if (Array.isArray(value)) {
71
66
  return filterFns.filterFns.arrIncludes;
72
67
  }
73
-
74
68
  return filterFns.filterFns.weakEquals;
75
69
  },
76
70
  getFilterFn: () => {
77
71
  var _table$options$filter;
78
-
79
72
  return utils.isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : ((_table$options$filter = table.options.filterFns) == null ? void 0 : _table$options$filter[column.columnDef.filterFn]) ?? filterFns.filterFns[column.columnDef.filterFn];
80
73
  },
81
74
  getCanFilter: () => {
@@ -87,43 +80,37 @@ const Filters = {
87
80
  getIsFiltered: () => column.getFilterIndex() > -1,
88
81
  getFilterValue: () => {
89
82
  var _table$getState$colum, _table$getState$colum2;
90
-
91
83
  return (_table$getState$colum = table.getState().columnFilters) == null ? void 0 : (_table$getState$colum2 = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum2.value;
92
84
  },
93
85
  getFilterIndex: () => {
94
86
  var _table$getState$colum3;
95
-
96
87
  return ((_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) ?? -1;
97
88
  },
98
89
  setFilterValue: value => {
99
90
  table.setColumnFilters(old => {
100
91
  const filterFn = column.getFilterFn();
101
92
  const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);
102
- const newFilter = utils.functionalUpdate(value, previousfilter ? previousfilter.value : undefined); //
93
+ const newFilter = utils.functionalUpdate(value, previousfilter ? previousfilter.value : undefined);
103
94
 
95
+ //
104
96
  if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
105
97
  return (old == null ? void 0 : old.filter(d => d.id !== column.id)) ?? [];
106
98
  }
107
-
108
99
  const newFilterObj = {
109
100
  id: column.id,
110
101
  value: newFilter
111
102
  };
112
-
113
103
  if (previousfilter) {
114
104
  return (old == null ? void 0 : old.map(d => {
115
105
  if (d.id === column.id) {
116
106
  return newFilterObj;
117
107
  }
118
-
119
108
  return d;
120
109
  })) ?? [];
121
110
  }
122
-
123
111
  if (old != null && old.length) {
124
112
  return [...old, newFilterObj];
125
113
  }
126
-
127
114
  return [newFilterObj];
128
115
  });
129
116
  },
@@ -132,7 +119,6 @@ const Filters = {
132
119
  if (!column._getFacetedRowModel) {
133
120
  return table.getPreFilteredRowModel();
134
121
  }
135
-
136
122
  return column._getFacetedRowModel();
137
123
  },
138
124
  _getFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id),
@@ -140,7 +126,6 @@ const Filters = {
140
126
  if (!column._getFacetedUniqueValues) {
141
127
  return new Map();
142
128
  }
143
-
144
129
  return column._getFacetedUniqueValues();
145
130
  },
146
131
  _getFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id),
@@ -148,13 +133,13 @@ const Filters = {
148
133
  if (!column._getFacetedMinMaxValues) {
149
134
  return undefined;
150
135
  }
151
-
152
136
  return column._getFacetedMinMaxValues();
153
- } // () => [column.getFacetedRowModel()],
137
+ }
138
+ // () => [column.getFacetedRowModel()],
154
139
  // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
155
-
156
140
  };
157
141
  },
142
+
158
143
  createRow: (row, table) => {
159
144
  return {
160
145
  columnFilters: {},
@@ -168,7 +153,6 @@ const Filters = {
168
153
  },
169
154
  getGlobalFilterFn: () => {
170
155
  var _table$options$filter2;
171
-
172
156
  const {
173
157
  globalFilterFn: globalFilterFn
174
158
  } = table.options;
@@ -176,25 +160,19 @@ const Filters = {
176
160
  },
177
161
  setColumnFilters: updater => {
178
162
  const leafColumns = table.getAllLeafColumns();
179
-
180
163
  const updateFn = old => {
181
164
  var _functionalUpdate;
182
-
183
165
  return (_functionalUpdate = utils.functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {
184
166
  const column = leafColumns.find(d => d.id === filter.id);
185
-
186
167
  if (column) {
187
168
  const filterFn = column.getFilterFn();
188
-
189
169
  if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
190
170
  return false;
191
171
  }
192
172
  }
193
-
194
173
  return true;
195
174
  });
196
175
  };
197
-
198
176
  table.options.onColumnFiltersChange == null ? void 0 : table.options.onColumnFiltersChange(updateFn);
199
177
  },
200
178
  setGlobalFilter: updater => {
@@ -205,7 +183,6 @@ const Filters = {
205
183
  },
206
184
  resetColumnFilters: defaultState => {
207
185
  var _table$initialState;
208
-
209
186
  table.setColumnFilters(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) ?? []);
210
187
  },
211
188
  getPreFilteredRowModel: () => table.getCoreRowModel(),
@@ -213,11 +190,9 @@ const Filters = {
213
190
  if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {
214
191
  table._getFilteredRowModel = table.options.getFilteredRowModel(table);
215
192
  }
216
-
217
193
  if (table.options.manualFiltering || !table._getFilteredRowModel) {
218
194
  return table.getPreFilteredRowModel();
219
195
  }
220
-
221
196
  return table._getFilteredRowModel();
222
197
  },
223
198
  _getGlobalFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__'),
@@ -225,7 +200,6 @@ const Filters = {
225
200
  if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {
226
201
  return table.getPreFilteredRowModel();
227
202
  }
228
-
229
203
  return table._getGlobalFacetedRowModel();
230
204
  },
231
205
  _getGlobalFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__'),
@@ -233,7 +207,6 @@ const Filters = {
233
207
  if (!table._getGlobalFacetedUniqueValues) {
234
208
  return new Map();
235
209
  }
236
-
237
210
  return table._getGlobalFacetedUniqueValues();
238
211
  },
239
212
  _getGlobalFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__'),
@@ -241,7 +214,6 @@ const Filters = {
241
214
  if (!table._getGlobalFacetedMinMaxValues) {
242
215
  return;
243
216
  }
244
-
245
217
  return table._getGlobalFacetedMinMaxValues();
246
218
  }
247
219
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.js","sources":["../../../src/features/Filters.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n FilterMeta,\n FilterFns,\n} from '../types'\nimport { functionalUpdate, isFunction, makeStateUpdater } from '../utils'\n\nexport type FiltersTableState = {\n columnFilters: ColumnFiltersState\n globalFilter: any\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport type ColumnFilter = {\n id: string\n value: unknown\n}\n\nexport type ResolvedColumnFilter<TData extends RowData> = {\n id: string\n resolvedValue: unknown\n filterFn: FilterFn<TData>\n}\n\nexport type FilterFn<TData extends RowData> = {\n (\n row: Row<TData>,\n columnId: string,\n filterValue: any,\n addMeta: (meta: FilterMeta) => void\n ): boolean\n\n resolveFilterValue?: TransformFilterValueFn<TData>\n autoRemove?: ColumnFilterAutoRemoveTestFn<TData>\n}\n\nexport type TransformFilterValueFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => unknown\n\nexport type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => boolean\n\nexport type CustomFilterFns<TData extends RowData> = Record<\n string,\n FilterFn<TData>\n>\n\nexport type FilterFnOption<TData extends RowData> =\n | 'auto'\n | BuiltInFilterFn\n | keyof FilterFns\n | FilterFn<TData>\n\nexport type FiltersColumnDef<TData extends RowData> = {\n filterFn?: FilterFnOption<TData>\n enableColumnFilter?: boolean\n enableGlobalFilter?: boolean\n}\n\nexport type FiltersColumn<TData extends RowData> = {\n getAutoFilterFn: () => FilterFn<TData> | undefined\n getFilterFn: () => FilterFn<TData> | undefined\n setFilterValue: (updater: Updater<any>) => void\n getCanFilter: () => boolean\n getCanGlobalFilter: () => boolean\n getFacetedRowModel: () => RowModel<TData>\n _getFacetedRowModel?: () => RowModel<TData>\n getIsFiltered: () => boolean\n getFilterValue: () => unknown\n getFilterIndex: () => number\n getFacetedUniqueValues: () => Map<any, number>\n _getFacetedUniqueValues?: () => Map<any, number>\n getFacetedMinMaxValues: () => undefined | [number, number]\n _getFacetedMinMaxValues?: () => undefined | [number, number]\n}\n\nexport type FiltersRow<TData extends RowData> = {\n columnFilters: Record<string, boolean>\n columnFiltersMeta: Record<string, FilterMeta>\n}\n\nexport type FiltersOptions<TData extends RowData> = {\n enableFilters?: boolean\n manualFiltering?: boolean\n filterFromLeafRows?: boolean\n getFilteredRowModel?: (table: Table<any>) => () => RowModel<any>\n\n // Column\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n enableColumnFilters?: boolean\n\n // Global\n globalFilterFn?: FilterFnOption<TData>\n onGlobalFilterChange?: OnChangeFn<any>\n enableGlobalFilter?: boolean\n getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean\n\n // Faceting\n getFacetedRowModel?: (\n table: Table<TData>,\n columnId: string\n ) => () => RowModel<TData>\n getFacetedUniqueValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => Map<any, number>\n getFacetedMinMaxValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => undefined | [number, number]\n} & (keyof FilterFns extends never\n ? {\n filterFns?: Record<string, FilterFn<any>>\n }\n : {\n filterFns: Record<keyof FilterFns, FilterFn<any>>\n })\n\nexport type FiltersInstance<TData extends RowData> = {\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n\n resetColumnFilters: (defaultState?: boolean) => void\n\n // Column Filters\n getPreFilteredRowModel: () => RowModel<TData>\n getFilteredRowModel: () => RowModel<TData>\n _getFilteredRowModel?: () => RowModel<TData>\n\n // Global Filters\n setGlobalFilter: (updater: Updater<any>) => void\n resetGlobalFilter: (defaultState?: boolean) => void\n getGlobalAutoFilterFn: () => FilterFn<TData> | undefined\n getGlobalFilterFn: () => FilterFn<TData> | undefined\n getGlobalFacetedRowModel: () => RowModel<TData>\n _getGlobalFacetedRowModel?: () => RowModel<TData>\n getGlobalFacetedUniqueValues: () => Map<any, number>\n _getGlobalFacetedUniqueValues?: () => Map<any, number>\n getGlobalFacetedMinMaxValues: () => undefined | [number, number]\n _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]\n}\n\n//\n\nexport const Filters: TableFeature = {\n getDefaultColumnDef: <TData extends RowData>(): FiltersColumnDef<TData> => {\n return {\n filterFn: 'auto',\n }\n },\n\n getInitialState: (state): FiltersTableState => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): FiltersOptions<TData> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n const value = table\n .getCoreRowModel()\n .flatRows[0]?._getAllCellsByColumnId()\n [column.id]?.getValue()\n\n return typeof value === 'string' || typeof value === 'number'\n },\n }\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): FiltersColumn<TData> => {\n return {\n getAutoFilterFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return filterFns.includesString\n }\n\n if (typeof value === 'number') {\n return filterFns.inNumberRange\n }\n\n if (typeof value === 'boolean') {\n return filterFns.equals\n }\n\n if (value !== null && typeof value === 'object') {\n return filterFns.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns.arrIncludes\n }\n\n return filterFns.weakEquals\n },\n getFilterFn: () => {\n return isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === 'auto'\n ? column.getAutoFilterFn()\n : table.options.filterFns?.[column.columnDef.filterFn as string] ??\n filterFns[column.columnDef.filterFn as BuiltInFilterFn]\n },\n getCanFilter: () => {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (table.options.enableColumnFilters ?? true) &&\n (table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanGlobalFilter: () => {\n return (\n (column.columnDef.enableGlobalFilter ?? true) &&\n (table.options.enableGlobalFilter ?? true) &&\n (table.options.enableFilters ?? true) &&\n (table.options.getColumnCanGlobalFilter?.(column) ?? true) &&\n !!column.accessorFn\n )\n },\n\n getIsFiltered: () => column.getFilterIndex() > -1,\n\n getFilterValue: () =>\n table.getState().columnFilters?.find(d => d.id === column.id)?.value,\n\n getFilterIndex: () =>\n table.getState().columnFilters?.findIndex(d => d.id === column.id) ??\n -1,\n\n setFilterValue: value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn()\n const previousfilter = old?.find(d => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousfilter ? previousfilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(\n filterFn as FilterFn<TData>,\n newFilter,\n column\n )\n ) {\n return old?.filter(d => d.id !== column.id) ?? []\n }\n\n const newFilterObj = { id: column.id, value: newFilter }\n\n if (previousfilter) {\n return (\n old?.map(d => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n },\n _getFacetedRowModel:\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, column.id),\n getFacetedRowModel: () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return column._getFacetedRowModel()\n },\n _getFacetedUniqueValues:\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, column.id),\n getFacetedUniqueValues: () => {\n if (!column._getFacetedUniqueValues) {\n return new Map()\n }\n\n return column._getFacetedUniqueValues()\n },\n _getFacetedMinMaxValues:\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, column.id),\n getFacetedMinMaxValues: () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined\n }\n\n return column._getFacetedMinMaxValues()\n },\n // () => [column.getFacetedRowModel()],\n // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): FiltersRow<TData> => {\n return {\n columnFilters: {},\n columnFiltersMeta: {},\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): FiltersInstance<TData> => {\n return {\n getGlobalAutoFilterFn: () => {\n return filterFns.includesString\n },\n\n getGlobalFilterFn: () => {\n const { globalFilterFn: globalFilterFn } = table.options\n\n return isFunction(globalFilterFn)\n ? globalFilterFn\n : globalFilterFn === 'auto'\n ? table.getGlobalAutoFilterFn()\n : table.options.filterFns?.[globalFilterFn as string] ??\n filterFns[globalFilterFn as BuiltInFilterFn]\n },\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = column.getFilterFn()\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n },\n\n setGlobalFilter: updater => {\n table.options.onGlobalFilterChange?.(updater)\n },\n\n resetGlobalFilter: defaultState => {\n table.setGlobalFilter(\n defaultState ? undefined : table.initialState.globalFilter\n )\n },\n\n resetColumnFilters: defaultState => {\n table.setColumnFilters(\n defaultState ? [] : table.initialState?.columnFilters ?? []\n )\n },\n\n getPreFilteredRowModel: () => table.getCoreRowModel(),\n getFilteredRowModel: () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table)\n }\n\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getFilteredRowModel()\n },\n\n _getGlobalFacetedRowModel:\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, '__global__'),\n\n getGlobalFacetedRowModel: () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getGlobalFacetedRowModel()\n },\n\n _getGlobalFacetedUniqueValues:\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, '__global__'),\n getGlobalFacetedUniqueValues: () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map()\n }\n\n return table._getGlobalFacetedUniqueValues()\n },\n\n _getGlobalFacetedMinMaxValues:\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, '__global__'),\n getGlobalFacetedMinMaxValues: () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return\n }\n\n return table._getGlobalFacetedMinMaxValues()\n },\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TData extends RowData>(\n filterFn?: FilterFn<TData>,\n value?: any,\n column?: Column<TData, unknown>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":["Filters","getDefaultColumnDef","filterFn","getInitialState","state","columnFilters","globalFilter","undefined","getDefaultOptions","table","onColumnFiltersChange","makeStateUpdater","onGlobalFilterChange","filterFromLeafRows","globalFilterFn","getColumnCanGlobalFilter","column","value","getCoreRowModel","flatRows","_getAllCellsByColumnId","id","getValue","createColumn","getAutoFilterFn","firstRow","filterFns","includesString","inNumberRange","equals","Array","isArray","arrIncludes","weakEquals","getFilterFn","isFunction","columnDef","options","getCanFilter","enableColumnFilter","enableColumnFilters","enableFilters","accessorFn","getCanGlobalFilter","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","getState","find","d","findIndex","setFilterValue","setColumnFilters","old","previousfilter","newFilter","functionalUpdate","shouldAutoRemoveFilter","filter","newFilterObj","map","length","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","createRow","row","columnFiltersMeta","createTable","getGlobalAutoFilterFn","getGlobalFilterFn","updater","leafColumns","getAllLeafColumns","updateFn","setGlobalFilter","resetGlobalFilter","defaultState","initialState","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","autoRemove"],"mappings":"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"}
1
+ {"version":3,"file":"Filters.js","sources":["../../../src/features/Filters.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport { BuiltInFilterFn, filterFns } from '../filterFns'\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n FilterMeta,\n FilterFns,\n} from '../types'\nimport { functionalUpdate, isFunction, makeStateUpdater } from '../utils'\n\nexport type FiltersTableState = {\n columnFilters: ColumnFiltersState\n globalFilter: any\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport type ColumnFilter = {\n id: string\n value: unknown\n}\n\nexport type ResolvedColumnFilter<TData extends RowData> = {\n id: string\n resolvedValue: unknown\n filterFn: FilterFn<TData>\n}\n\nexport type FilterFn<TData extends RowData> = {\n (\n row: Row<TData>,\n columnId: string,\n filterValue: any,\n addMeta: (meta: FilterMeta) => void\n ): boolean\n\n resolveFilterValue?: TransformFilterValueFn<TData>\n autoRemove?: ColumnFilterAutoRemoveTestFn<TData>\n}\n\nexport type TransformFilterValueFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => unknown\n\nexport type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>\n) => boolean\n\nexport type CustomFilterFns<TData extends RowData> = Record<\n string,\n FilterFn<TData>\n>\n\nexport type FilterFnOption<TData extends RowData> =\n | 'auto'\n | BuiltInFilterFn\n | keyof FilterFns\n | FilterFn<TData>\n\nexport type FiltersColumnDef<TData extends RowData> = {\n filterFn?: FilterFnOption<TData>\n enableColumnFilter?: boolean\n enableGlobalFilter?: boolean\n}\n\nexport type FiltersColumn<TData extends RowData> = {\n getAutoFilterFn: () => FilterFn<TData> | undefined\n getFilterFn: () => FilterFn<TData> | undefined\n setFilterValue: (updater: Updater<any>) => void\n getCanFilter: () => boolean\n getCanGlobalFilter: () => boolean\n getFacetedRowModel: () => RowModel<TData>\n _getFacetedRowModel?: () => RowModel<TData>\n getIsFiltered: () => boolean\n getFilterValue: () => unknown\n getFilterIndex: () => number\n getFacetedUniqueValues: () => Map<any, number>\n _getFacetedUniqueValues?: () => Map<any, number>\n getFacetedMinMaxValues: () => undefined | [number, number]\n _getFacetedMinMaxValues?: () => undefined | [number, number]\n}\n\nexport type FiltersRow<TData extends RowData> = {\n columnFilters: Record<string, boolean>\n columnFiltersMeta: Record<string, FilterMeta>\n}\n\nexport type FiltersOptions<TData extends RowData> = {\n enableFilters?: boolean\n manualFiltering?: boolean\n filterFromLeafRows?: boolean\n getFilteredRowModel?: (table: Table<any>) => () => RowModel<any>\n\n // Column\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n enableColumnFilters?: boolean\n\n // Global\n globalFilterFn?: FilterFnOption<TData>\n onGlobalFilterChange?: OnChangeFn<any>\n enableGlobalFilter?: boolean\n getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean\n\n // Faceting\n getFacetedRowModel?: (\n table: Table<TData>,\n columnId: string\n ) => () => RowModel<TData>\n getFacetedUniqueValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => Map<any, number>\n getFacetedMinMaxValues?: (\n table: Table<TData>,\n columnId: string\n ) => () => undefined | [number, number]\n} & (keyof FilterFns extends never\n ? {\n filterFns?: Record<string, FilterFn<any>>\n }\n : {\n filterFns: Record<keyof FilterFns, FilterFn<any>>\n })\n\nexport type FiltersInstance<TData extends RowData> = {\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n\n resetColumnFilters: (defaultState?: boolean) => void\n\n // Column Filters\n getPreFilteredRowModel: () => RowModel<TData>\n getFilteredRowModel: () => RowModel<TData>\n _getFilteredRowModel?: () => RowModel<TData>\n\n // Global Filters\n setGlobalFilter: (updater: Updater<any>) => void\n resetGlobalFilter: (defaultState?: boolean) => void\n getGlobalAutoFilterFn: () => FilterFn<TData> | undefined\n getGlobalFilterFn: () => FilterFn<TData> | undefined\n getGlobalFacetedRowModel: () => RowModel<TData>\n _getGlobalFacetedRowModel?: () => RowModel<TData>\n getGlobalFacetedUniqueValues: () => Map<any, number>\n _getGlobalFacetedUniqueValues?: () => Map<any, number>\n getGlobalFacetedMinMaxValues: () => undefined | [number, number]\n _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]\n}\n\n//\n\nexport const Filters: TableFeature = {\n getDefaultColumnDef: <TData extends RowData>(): FiltersColumnDef<TData> => {\n return {\n filterFn: 'auto',\n }\n },\n\n getInitialState: (state): FiltersTableState => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): FiltersOptions<TData> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n const value = table\n .getCoreRowModel()\n .flatRows[0]?._getAllCellsByColumnId()\n [column.id]?.getValue()\n\n return typeof value === 'string' || typeof value === 'number'\n },\n }\n },\n\n createColumn: <TData extends RowData>(\n column: Column<TData, unknown>,\n table: Table<TData>\n ): FiltersColumn<TData> => {\n return {\n getAutoFilterFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return filterFns.includesString\n }\n\n if (typeof value === 'number') {\n return filterFns.inNumberRange\n }\n\n if (typeof value === 'boolean') {\n return filterFns.equals\n }\n\n if (value !== null && typeof value === 'object') {\n return filterFns.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns.arrIncludes\n }\n\n return filterFns.weakEquals\n },\n getFilterFn: () => {\n return isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === 'auto'\n ? column.getAutoFilterFn()\n : table.options.filterFns?.[column.columnDef.filterFn as string] ??\n filterFns[column.columnDef.filterFn as BuiltInFilterFn]\n },\n getCanFilter: () => {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (table.options.enableColumnFilters ?? true) &&\n (table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanGlobalFilter: () => {\n return (\n (column.columnDef.enableGlobalFilter ?? true) &&\n (table.options.enableGlobalFilter ?? true) &&\n (table.options.enableFilters ?? true) &&\n (table.options.getColumnCanGlobalFilter?.(column) ?? true) &&\n !!column.accessorFn\n )\n },\n\n getIsFiltered: () => column.getFilterIndex() > -1,\n\n getFilterValue: () =>\n table.getState().columnFilters?.find(d => d.id === column.id)?.value,\n\n getFilterIndex: () =>\n table.getState().columnFilters?.findIndex(d => d.id === column.id) ??\n -1,\n\n setFilterValue: value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn()\n const previousfilter = old?.find(d => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousfilter ? previousfilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(\n filterFn as FilterFn<TData>,\n newFilter,\n column\n )\n ) {\n return old?.filter(d => d.id !== column.id) ?? []\n }\n\n const newFilterObj = { id: column.id, value: newFilter }\n\n if (previousfilter) {\n return (\n old?.map(d => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n },\n _getFacetedRowModel:\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, column.id),\n getFacetedRowModel: () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return column._getFacetedRowModel()\n },\n _getFacetedUniqueValues:\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, column.id),\n getFacetedUniqueValues: () => {\n if (!column._getFacetedUniqueValues) {\n return new Map()\n }\n\n return column._getFacetedUniqueValues()\n },\n _getFacetedMinMaxValues:\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, column.id),\n getFacetedMinMaxValues: () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined\n }\n\n return column._getFacetedMinMaxValues()\n },\n // () => [column.getFacetedRowModel()],\n // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): FiltersRow<TData> => {\n return {\n columnFilters: {},\n columnFiltersMeta: {},\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): FiltersInstance<TData> => {\n return {\n getGlobalAutoFilterFn: () => {\n return filterFns.includesString\n },\n\n getGlobalFilterFn: () => {\n const { globalFilterFn: globalFilterFn } = table.options\n\n return isFunction(globalFilterFn)\n ? globalFilterFn\n : globalFilterFn === 'auto'\n ? table.getGlobalAutoFilterFn()\n : table.options.filterFns?.[globalFilterFn as string] ??\n filterFns[globalFilterFn as BuiltInFilterFn]\n },\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = column.getFilterFn()\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n },\n\n setGlobalFilter: updater => {\n table.options.onGlobalFilterChange?.(updater)\n },\n\n resetGlobalFilter: defaultState => {\n table.setGlobalFilter(\n defaultState ? undefined : table.initialState.globalFilter\n )\n },\n\n resetColumnFilters: defaultState => {\n table.setColumnFilters(\n defaultState ? [] : table.initialState?.columnFilters ?? []\n )\n },\n\n getPreFilteredRowModel: () => table.getCoreRowModel(),\n getFilteredRowModel: () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table)\n }\n\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getFilteredRowModel()\n },\n\n _getGlobalFacetedRowModel:\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, '__global__'),\n\n getGlobalFacetedRowModel: () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getGlobalFacetedRowModel()\n },\n\n _getGlobalFacetedUniqueValues:\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, '__global__'),\n getGlobalFacetedUniqueValues: () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map()\n }\n\n return table._getGlobalFacetedUniqueValues()\n },\n\n _getGlobalFacetedMinMaxValues:\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, '__global__'),\n getGlobalFacetedMinMaxValues: () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return\n }\n\n return table._getGlobalFacetedMinMaxValues()\n },\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TData extends RowData>(\n filterFn?: FilterFn<TData>,\n value?: any,\n column?: Column<TData, unknown>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":["Filters","getDefaultColumnDef","filterFn","getInitialState","state","columnFilters","globalFilter","undefined","getDefaultOptions","table","onColumnFiltersChange","makeStateUpdater","onGlobalFilterChange","filterFromLeafRows","globalFilterFn","getColumnCanGlobalFilter","column","value","getCoreRowModel","flatRows","_getAllCellsByColumnId","id","getValue","createColumn","getAutoFilterFn","firstRow","filterFns","includesString","inNumberRange","equals","Array","isArray","arrIncludes","weakEquals","getFilterFn","isFunction","columnDef","options","getCanFilter","enableColumnFilter","enableColumnFilters","enableFilters","accessorFn","getCanGlobalFilter","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","getState","find","d","findIndex","setFilterValue","setColumnFilters","old","previousfilter","newFilter","functionalUpdate","shouldAutoRemoveFilter","filter","newFilterObj","map","length","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","createRow","row","columnFiltersMeta","createTable","getGlobalAutoFilterFn","getGlobalFilterFn","updater","leafColumns","getAllLeafColumns","updateFn","setGlobalFilter","resetGlobalFilter","defaultState","initialState","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","autoRemove"],"mappings":";;;;;;;;;;;;;;;;;AA0JA;;AAEO,MAAMA,OAAqB,GAAG;AACnCC,EAAAA,mBAAmB,EAAE,MAAsD;IACzE,OAAO;AACLC,MAAAA,QAAQ,EAAE,MAAA;KACX,CAAA;GACF;EAEDC,eAAe,EAAGC,KAAK,IAAwB;IAC7C,OAAO;AACLC,MAAAA,aAAa,EAAE,EAAE;AACjBC,MAAAA,YAAY,EAAEC,SAAS;AACvB;AACA;MACA,GAAGH,KAAAA;KACJ,CAAA;GACF;EAEDI,iBAAiB,EACfC,KAAmB,IACO;IAC1B,OAAO;AACLC,MAAAA,qBAAqB,EAAEC,sBAAgB,CAAC,eAAe,EAAEF,KAAK,CAAC;AAC/DG,MAAAA,oBAAoB,EAAED,sBAAgB,CAAC,cAAc,EAAEF,KAAK,CAAC;AAC7DI,MAAAA,kBAAkB,EAAE,KAAK;AACzBC,MAAAA,cAAc,EAAE,MAAM;MACtBC,wBAAwB,EAAEC,MAAM,IAAI;AAAA,QAAA,IAAA,qBAAA,EAAA,sBAAA,CAAA;QAClC,MAAMC,KAAK,4BAAGR,KAAK,CAChBS,eAAe,EAAE,CACjBC,QAAQ,CAAC,CAAC,CAAC,+CAFA,qBAEEC,CAAAA,sBAAsB,EAAE,CACrCJ,MAAM,CAACK,EAAE,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAHC,sBAGCC,CAAAA,QAAQ,EAAE,CAAA;QAEzB,OAAO,OAAOL,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,CAAA;AAC/D,OAAA;KACD,CAAA;GACF;AAEDM,EAAAA,YAAY,EAAE,CACZP,MAA8B,EAC9BP,KAAmB,KACM;IACzB,OAAO;AACLe,MAAAA,eAAe,EAAE,MAAM;QACrB,MAAMC,QAAQ,GAAGhB,KAAK,CAACS,eAAe,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAEpD,MAAMF,KAAK,GAAGQ,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEH,QAAQ,CAACN,MAAM,CAACK,EAAE,CAAC,CAAA;AAE3C,QAAA,IAAI,OAAOJ,KAAK,KAAK,QAAQ,EAAE;UAC7B,OAAOS,mBAAS,CAACC,cAAc,CAAA;AACjC,SAAA;AAEA,QAAA,IAAI,OAAOV,KAAK,KAAK,QAAQ,EAAE;UAC7B,OAAOS,mBAAS,CAACE,aAAa,CAAA;AAChC,SAAA;AAEA,QAAA,IAAI,OAAOX,KAAK,KAAK,SAAS,EAAE;UAC9B,OAAOS,mBAAS,CAACG,MAAM,CAAA;AACzB,SAAA;QAEA,IAAIZ,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;UAC/C,OAAOS,mBAAS,CAACG,MAAM,CAAA;AACzB,SAAA;AAEA,QAAA,IAAIC,KAAK,CAACC,OAAO,CAACd,KAAK,CAAC,EAAE;UACxB,OAAOS,mBAAS,CAACM,WAAW,CAAA;AAC9B,SAAA;QAEA,OAAON,mBAAS,CAACO,UAAU,CAAA;OAC5B;AACDC,MAAAA,WAAW,EAAE,MAAM;AAAA,QAAA,IAAA,qBAAA,CAAA;QACjB,OAAOC,gBAAU,CAACnB,MAAM,CAACoB,SAAS,CAAClC,QAAQ,CAAC,GACxCc,MAAM,CAACoB,SAAS,CAAClC,QAAQ,GACzBc,MAAM,CAACoB,SAAS,CAAClC,QAAQ,KAAK,MAAM,GACpCc,MAAM,CAACQ,eAAe,EAAE,GACxB,0BAAAf,KAAK,CAAC4B,OAAO,CAACX,SAAS,KAAvB,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAA0BV,MAAM,CAACoB,SAAS,CAAClC,QAAQ,CAAW,KAC9DwB,mBAAS,CAACV,MAAM,CAACoB,SAAS,CAAClC,QAAQ,CAAoB,CAAA;OAC5D;AACDoC,MAAAA,YAAY,EAAE,MAAM;AAClB,QAAA,OACE,CAACtB,MAAM,CAACoB,SAAS,CAACG,kBAAkB,IAAI,IAAI,MAC3C9B,KAAK,CAAC4B,OAAO,CAACG,mBAAmB,IAAI,IAAI,CAAC,KAC1C/B,KAAK,CAAC4B,OAAO,CAACI,aAAa,IAAI,IAAI,CAAC,IACrC,CAAC,CAACzB,MAAM,CAAC0B,UAAU,CAAA;OAEtB;AAEDC,MAAAA,kBAAkB,EAAE,MAAM;QACxB,OACE,CAAC3B,MAAM,CAACoB,SAAS,CAACQ,kBAAkB,IAAI,IAAI,MAC3CnC,KAAK,CAAC4B,OAAO,CAACO,kBAAkB,IAAI,IAAI,CAAC,KACzCnC,KAAK,CAAC4B,OAAO,CAACI,aAAa,IAAI,IAAI,CAAC,KACpC,CAAAhC,KAAK,CAAC4B,OAAO,CAACtB,wBAAwB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAtCN,KAAK,CAAC4B,OAAO,CAACtB,wBAAwB,CAAGC,MAAM,CAAC,KAAI,IAAI,CAAC,IAC1D,CAAC,CAACA,MAAM,CAAC0B,UAAU,CAAA;OAEtB;MAEDG,aAAa,EAAE,MAAM7B,MAAM,CAAC8B,cAAc,EAAE,GAAG,CAAC,CAAC;AAEjDC,MAAAA,cAAc,EAAE,MAAA;AAAA,QAAA,IAAA,qBAAA,EAAA,sBAAA,CAAA;QAAA,OACdtC,CAAAA,qBAAAA,GAAAA,KAAK,CAACuC,QAAQ,EAAE,CAAC3C,aAAa,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,sBAAA,GAA9B,qBAAgC4C,CAAAA,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC7B,EAAE,KAAKL,MAAM,CAACK,EAAE,CAAC,KAA7D,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAA+DJ,KAAK,CAAA;AAAA,OAAA;AAEtE6B,MAAAA,cAAc,EAAE,MAAA;AAAA,QAAA,IAAA,sBAAA,CAAA;QAAA,OACd,CAAA,CAAA,sBAAA,GAAArC,KAAK,CAACuC,QAAQ,EAAE,CAAC3C,aAAa,KAA9B,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAgC8C,SAAS,CAACD,CAAC,IAAIA,CAAC,CAAC7B,EAAE,KAAKL,MAAM,CAACK,EAAE,CAAC,KAClE,CAAC,CAAC,CAAA;AAAA,OAAA;MAEJ+B,cAAc,EAAEnC,KAAK,IAAI;AACvBR,QAAAA,KAAK,CAAC4C,gBAAgB,CAACC,GAAG,IAAI;AAC5B,UAAA,MAAMpD,QAAQ,GAAGc,MAAM,CAACkB,WAAW,EAAE,CAAA;AACrC,UAAA,MAAMqB,cAAc,GAAGD,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAEL,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC7B,EAAE,KAAKL,MAAM,CAACK,EAAE,CAAC,CAAA;AAEzD,UAAA,MAAMmC,SAAS,GAAGC,sBAAgB,CAChCxC,KAAK,EACLsC,cAAc,GAAGA,cAAc,CAACtC,KAAK,GAAGV,SAAS,CAClD,CAAA;;AAED;UACA,IACEmD,sBAAsB,CACpBxD,QAAQ,EACRsD,SAAS,EACTxC,MAAM,CACP,EACD;AACA,YAAA,OAAO,CAAAsC,GAAG,IAAA,IAAA,GAAA,KAAA,CAAA,GAAHA,GAAG,CAAEK,MAAM,CAACT,CAAC,IAAIA,CAAC,CAAC7B,EAAE,KAAKL,MAAM,CAACK,EAAE,CAAC,KAAI,EAAE,CAAA;AACnD,WAAA;AAEA,UAAA,MAAMuC,YAAY,GAAG;YAAEvC,EAAE,EAAEL,MAAM,CAACK,EAAE;AAAEJ,YAAAA,KAAK,EAAEuC,SAAAA;WAAW,CAAA;AAExD,UAAA,IAAID,cAAc,EAAE;YAClB,OACE,CAAAD,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAEO,GAAG,CAACX,CAAC,IAAI;AACZ,cAAA,IAAIA,CAAC,CAAC7B,EAAE,KAAKL,MAAM,CAACK,EAAE,EAAE;AACtB,gBAAA,OAAOuC,YAAY,CAAA;AACrB,eAAA;AACA,cAAA,OAAOV,CAAC,CAAA;aACT,CAAC,KAAI,EAAE,CAAA;AAEZ,WAAA;AAEA,UAAA,IAAII,GAAG,IAAA,IAAA,IAAHA,GAAG,CAAEQ,MAAM,EAAE;AACf,YAAA,OAAO,CAAC,GAAGR,GAAG,EAAEM,YAAY,CAAC,CAAA;AAC/B,WAAA;UAEA,OAAO,CAACA,YAAY,CAAC,CAAA;AACvB,SAAC,CAAC,CAAA;OACH;AACDG,MAAAA,mBAAmB,EACjBtD,KAAK,CAAC4B,OAAO,CAAC2B,kBAAkB,IAChCvD,KAAK,CAAC4B,OAAO,CAAC2B,kBAAkB,CAACvD,KAAK,EAAEO,MAAM,CAACK,EAAE,CAAC;AACpD2C,MAAAA,kBAAkB,EAAE,MAAM;AACxB,QAAA,IAAI,CAAChD,MAAM,CAAC+C,mBAAmB,EAAE;UAC/B,OAAOtD,KAAK,CAACwD,sBAAsB,EAAE,CAAA;AACvC,SAAA;QAEA,OAAOjD,MAAM,CAAC+C,mBAAmB,EAAE,CAAA;OACpC;AACDG,MAAAA,uBAAuB,EACrBzD,KAAK,CAAC4B,OAAO,CAAC8B,sBAAsB,IACpC1D,KAAK,CAAC4B,OAAO,CAAC8B,sBAAsB,CAAC1D,KAAK,EAAEO,MAAM,CAACK,EAAE,CAAC;AACxD8C,MAAAA,sBAAsB,EAAE,MAAM;AAC5B,QAAA,IAAI,CAACnD,MAAM,CAACkD,uBAAuB,EAAE;UACnC,OAAO,IAAIE,GAAG,EAAE,CAAA;AAClB,SAAA;QAEA,OAAOpD,MAAM,CAACkD,uBAAuB,EAAE,CAAA;OACxC;AACDG,MAAAA,uBAAuB,EACrB5D,KAAK,CAAC4B,OAAO,CAACiC,sBAAsB,IACpC7D,KAAK,CAAC4B,OAAO,CAACiC,sBAAsB,CAAC7D,KAAK,EAAEO,MAAM,CAACK,EAAE,CAAC;AACxDiD,MAAAA,sBAAsB,EAAE,MAAM;AAC5B,QAAA,IAAI,CAACtD,MAAM,CAACqD,uBAAuB,EAAE;AACnC,UAAA,OAAO9D,SAAS,CAAA;AAClB,SAAA;QAEA,OAAOS,MAAM,CAACqD,uBAAuB,EAAE,CAAA;AACzC,OAAA;AACA;AACA;KACD,CAAA;GACF;;AAEDE,EAAAA,SAAS,EAAE,CACTC,GAAe,EACf/D,KAAmB,KACG;IACtB,OAAO;MACLJ,aAAa,EAAE,EAAE;AACjBoE,MAAAA,iBAAiB,EAAE,EAAC;KACrB,CAAA;GACF;EAEDC,WAAW,EACTjE,KAAmB,IACQ;IAC3B,OAAO;AACLkE,MAAAA,qBAAqB,EAAE,MAAM;QAC3B,OAAOjD,mBAAS,CAACC,cAAc,CAAA;OAChC;AAEDiD,MAAAA,iBAAiB,EAAE,MAAM;AAAA,QAAA,IAAA,sBAAA,CAAA;QACvB,MAAM;AAAE9D,UAAAA,cAAc,EAAEA,cAAAA;SAAgB,GAAGL,KAAK,CAAC4B,OAAO,CAAA;AAExD,QAAA,OAAOF,gBAAU,CAACrB,cAAc,CAAC,GAC7BA,cAAc,GACdA,cAAc,KAAK,MAAM,GACzBL,KAAK,CAACkE,qBAAqB,EAAE,GAC7B,CAAA,CAAA,sBAAA,GAAAlE,KAAK,CAAC4B,OAAO,CAACX,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAvB,sBAA0BZ,CAAAA,cAAc,CAAW,KACnDY,mBAAS,CAACZ,cAAc,CAAoB,CAAA;OACjD;MAEDuC,gBAAgB,EAAGwB,OAAoC,IAAK;AAC1D,QAAA,MAAMC,WAAW,GAAGrE,KAAK,CAACsE,iBAAiB,EAAE,CAAA;QAE7C,MAAMC,QAAQ,GAAI1B,GAAuB,IAAK;AAAA,UAAA,IAAA,iBAAA,CAAA;UAC5C,OAAOG,CAAAA,iBAAAA,GAAAA,sBAAgB,CAACoB,OAAO,EAAEvB,GAAG,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAA9B,iBAAgCK,CAAAA,MAAM,CAACA,MAAM,IAAI;AACtD,YAAA,MAAM3C,MAAM,GAAG8D,WAAW,CAAC7B,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC7B,EAAE,KAAKsC,MAAM,CAACtC,EAAE,CAAC,CAAA;AAExD,YAAA,IAAIL,MAAM,EAAE;AACV,cAAA,MAAMd,QAAQ,GAAGc,MAAM,CAACkB,WAAW,EAAE,CAAA;cAErC,IAAIwB,sBAAsB,CAACxD,QAAQ,EAAEyD,MAAM,CAAC1C,KAAK,EAAED,MAAM,CAAC,EAAE;AAC1D,gBAAA,OAAO,KAAK,CAAA;AACd,eAAA;AACF,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACb,WAAC,CAAC,CAAA;SACH,CAAA;AAEDP,QAAAA,KAAK,CAAC4B,OAAO,CAAC3B,qBAAqB,IAAnCD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAC4B,OAAO,CAAC3B,qBAAqB,CAAGsE,QAAQ,CAAC,CAAA;OAChD;MAEDC,eAAe,EAAEJ,OAAO,IAAI;AAC1BpE,QAAAA,KAAK,CAAC4B,OAAO,CAACzB,oBAAoB,IAAlCH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAC4B,OAAO,CAACzB,oBAAoB,CAAGiE,OAAO,CAAC,CAAA;OAC9C;MAEDK,iBAAiB,EAAEC,YAAY,IAAI;AACjC1E,QAAAA,KAAK,CAACwE,eAAe,CACnBE,YAAY,GAAG5E,SAAS,GAAGE,KAAK,CAAC2E,YAAY,CAAC9E,YAAY,CAC3D,CAAA;OACF;MAED+E,kBAAkB,EAAEF,YAAY,IAAI;AAAA,QAAA,IAAA,mBAAA,CAAA;AAClC1E,QAAAA,KAAK,CAAC4C,gBAAgB,CACpB8B,YAAY,GAAG,EAAE,GAAG,CAAA,CAAA,mBAAA,GAAA1E,KAAK,CAAC2E,YAAY,KAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAoB/E,aAAa,KAAI,EAAE,CAC5D,CAAA;OACF;AAED4D,MAAAA,sBAAsB,EAAE,MAAMxD,KAAK,CAACS,eAAe,EAAE;AACrDoE,MAAAA,mBAAmB,EAAE,MAAM;QACzB,IAAI,CAAC7E,KAAK,CAAC8E,oBAAoB,IAAI9E,KAAK,CAAC4B,OAAO,CAACiD,mBAAmB,EAAE;UACpE7E,KAAK,CAAC8E,oBAAoB,GAAG9E,KAAK,CAAC4B,OAAO,CAACiD,mBAAmB,CAAC7E,KAAK,CAAC,CAAA;AACvE,SAAA;QAEA,IAAIA,KAAK,CAAC4B,OAAO,CAACmD,eAAe,IAAI,CAAC/E,KAAK,CAAC8E,oBAAoB,EAAE;UAChE,OAAO9E,KAAK,CAACwD,sBAAsB,EAAE,CAAA;AACvC,SAAA;QAEA,OAAOxD,KAAK,CAAC8E,oBAAoB,EAAE,CAAA;OACpC;AAEDE,MAAAA,yBAAyB,EACvBhF,KAAK,CAAC4B,OAAO,CAAC2B,kBAAkB,IAChCvD,KAAK,CAAC4B,OAAO,CAAC2B,kBAAkB,CAACvD,KAAK,EAAE,YAAY,CAAC;AAEvDiF,MAAAA,wBAAwB,EAAE,MAAM;QAC9B,IAAIjF,KAAK,CAAC4B,OAAO,CAACmD,eAAe,IAAI,CAAC/E,KAAK,CAACgF,yBAAyB,EAAE;UACrE,OAAOhF,KAAK,CAACwD,sBAAsB,EAAE,CAAA;AACvC,SAAA;QAEA,OAAOxD,KAAK,CAACgF,yBAAyB,EAAE,CAAA;OACzC;AAEDE,MAAAA,6BAA6B,EAC3BlF,KAAK,CAAC4B,OAAO,CAAC8B,sBAAsB,IACpC1D,KAAK,CAAC4B,OAAO,CAAC8B,sBAAsB,CAAC1D,KAAK,EAAE,YAAY,CAAC;AAC3DmF,MAAAA,4BAA4B,EAAE,MAAM;AAClC,QAAA,IAAI,CAACnF,KAAK,CAACkF,6BAA6B,EAAE;UACxC,OAAO,IAAIvB,GAAG,EAAE,CAAA;AAClB,SAAA;QAEA,OAAO3D,KAAK,CAACkF,6BAA6B,EAAE,CAAA;OAC7C;AAEDE,MAAAA,6BAA6B,EAC3BpF,KAAK,CAAC4B,OAAO,CAACiC,sBAAsB,IACpC7D,KAAK,CAAC4B,OAAO,CAACiC,sBAAsB,CAAC7D,KAAK,EAAE,YAAY,CAAC;AAC3DqF,MAAAA,4BAA4B,EAAE,MAAM;AAClC,QAAA,IAAI,CAACrF,KAAK,CAACoF,6BAA6B,EAAE;AACxC,UAAA,OAAA;AACF,SAAA;QAEA,OAAOpF,KAAK,CAACoF,6BAA6B,EAAE,CAAA;AAC9C,OAAA;KACD,CAAA;AACH,GAAA;AACF,EAAC;AAEM,SAASnC,sBAAsB,CACpCxD,QAA0B,EAC1Be,KAAW,EACXD,MAA+B,EAC/B;AACA,EAAA,OACE,CAACd,QAAQ,IAAIA,QAAQ,CAAC6F,UAAU,GAC5B7F,QAAQ,CAAC6F,UAAU,CAAC9E,KAAK,EAAED,MAAM,CAAC,GAClC,KAAK,KACT,OAAOC,KAAK,KAAK,WAAW,IAC3B,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACA,KAAM,CAAA;AAEzC;;;;;"}
@@ -16,12 +16,12 @@ var aggregationFns = require('../aggregationFns.js');
16
16
  var utils = require('../utils.js');
17
17
 
18
18
  //
19
+
19
20
  const Grouping = {
20
21
  getDefaultColumnDef: () => {
21
22
  return {
22
23
  aggregatedCell: props => {
23
24
  var _props$getValue;
24
-
25
25
  return ((_props$getValue = props.getValue()) == null ? void 0 : _props$getValue.toString == null ? void 0 : _props$getValue.toString()) ?? null;
26
26
  },
27
27
  aggregationFn: 'auto'
@@ -47,7 +47,6 @@ const Grouping = {
47
47
  if (old != null && old.includes(column.id)) {
48
48
  return old.filter(d => d !== column.id);
49
49
  }
50
-
51
50
  return [...(old ?? []), column.id];
52
51
  });
53
52
  },
@@ -56,12 +55,10 @@ const Grouping = {
56
55
  },
57
56
  getIsGrouped: () => {
58
57
  var _table$getState$group;
59
-
60
58
  return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);
61
59
  },
62
60
  getGroupedIndex: () => {
63
61
  var _table$getState$group2;
64
-
65
62
  return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);
66
63
  },
67
64
  getToggleGroupingHandler: () => {
@@ -74,22 +71,18 @@ const Grouping = {
74
71
  getAutoAggregationFn: () => {
75
72
  const firstRow = table.getCoreRowModel().flatRows[0];
76
73
  const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
77
-
78
74
  if (typeof value === 'number') {
79
75
  return aggregationFns.aggregationFns.sum;
80
76
  }
81
-
82
77
  if (Object.prototype.toString.call(value) === '[object Date]') {
83
78
  return aggregationFns.aggregationFns.extent;
84
79
  }
85
80
  },
86
81
  getAggregationFn: () => {
87
82
  var _table$options$aggreg;
88
-
89
83
  if (!column) {
90
84
  throw new Error();
91
85
  }
92
-
93
86
  return utils.isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : ((_table$options$aggreg = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg[column.columnDef.aggregationFn]) ?? aggregationFns.aggregationFns[column.columnDef.aggregationFn];
94
87
  }
95
88
  };
@@ -99,7 +92,6 @@ const Grouping = {
99
92
  setGrouping: updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater),
100
93
  resetGrouping: defaultState => {
101
94
  var _table$initialState;
102
-
103
95
  table.setGrouping(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) ?? []);
104
96
  },
105
97
  getPreGroupedRowModel: () => table.getFilteredRowModel(),
@@ -107,11 +99,9 @@ const Grouping = {
107
99
  if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {
108
100
  table._getGroupedRowModel = table.options.getGroupedRowModel(table);
109
101
  }
110
-
111
102
  if (table.options.manualGrouping || !table._getGroupedRowModel) {
112
103
  return table.getPreGroupedRowModel();
113
104
  }
114
-
115
105
  return table._getGroupedRowModel();
116
106
  }
117
107
  };
@@ -123,13 +113,11 @@ const Grouping = {
123
113
  };
124
114
  },
125
115
  createCell: (cell, column, row, table) => {
126
-
127
116
  return {
128
117
  getIsGrouped: () => column.getIsGrouped() && column.id === row.groupingColumnId,
129
118
  getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),
130
119
  getIsAggregated: () => {
131
120
  var _row$subRows;
132
-
133
121
  return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);
134
122
  }
135
123
  };
@@ -139,13 +127,10 @@ function orderColumns(leafColumns, grouping, groupedColumnMode) {
139
127
  if (!(grouping != null && grouping.length) || !groupedColumnMode) {
140
128
  return leafColumns;
141
129
  }
142
-
143
130
  const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));
144
-
145
131
  if (groupedColumnMode === 'remove') {
146
132
  return nonGroupingColumns;
147
133
  }
148
-
149
134
  const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);
150
135
  return [...groupingColumns, ...nonGroupingColumns];
151
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport { TableFeature } from '../core/table'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n ColumnDefTemplate,\n RowData,\n AggregationFns,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type GroupingState = string[]\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type AggregationFn<TData extends RowData> = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[]\n) => any\n\nexport type CustomAggregationFns = Record<string, AggregationFn<any>>\n\nexport type AggregationFnOption<TData extends RowData> =\n | 'auto'\n | keyof AggregationFns\n | BuiltInAggregationFn\n | AggregationFn<TData>\n\nexport type GroupingColumnDef<TData extends RowData, TValue> = {\n aggregationFn?: AggregationFnOption<TData>\n aggregatedCell?: ColumnDefTemplate<\n ReturnType<Cell<TData, TValue>['getContext']>\n >\n enableGrouping?: boolean\n}\n\nexport type GroupingColumn<TData extends RowData> = {\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingHandler: () => () => void\n getAutoAggregationFn: () => AggregationFn<TData> | undefined\n getAggregationFn: () => AggregationFn<TData> | undefined\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: unknown\n getIsGrouped: () => boolean\n _groupingValuesCache: Record<string, any>\n}\n\nexport type GroupingCell = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n enableGrouping: boolean\n}\n\nexport type GroupingOptions = {\n manualGrouping?: boolean\n onGroupingChange?: OnChangeFn<GroupingState>\n enableGrouping?: boolean\n getGroupedRowModel?: (table: Table<any>) => () => RowModel<any>\n groupedColumnMode?: false | 'reorder' | 'remove'\n} & (keyof AggregationFns extends never\n ? {\n aggregationFns?: Record<string, AggregationFn<any>>\n }\n : {\n aggregationFns: Record<keyof AggregationFns, AggregationFn<any>>\n })\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type GroupingInstance<TData extends RowData> = {\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: (defaultState?: boolean) => void\n getPreGroupedRowModel: () => RowModel<TData>\n getGroupedRowModel: () => RowModel<TData>\n _getGroupedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Grouping: TableFeature = {\n getDefaultColumnDef: <TData extends RowData>(): GroupingColumnDef<\n TData,\n unknown\n > => {\n return {\n aggregatedCell: props => (props.getValue() as any)?.toString?.() ?? null,\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): GroupingOptions => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): GroupingColumn<TData> => {\n return {\n toggleGrouping: () => {\n table.setGrouping(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 getCanGroup: () => {\n return (\n column.columnDef.enableGrouping ??\n true ??\n table.options.enableGrouping ??\n true ??\n !!column.accessorFn\n )\n },\n\n getIsGrouped: () => {\n return table.getState().grouping?.includes(column.id)\n },\n\n getGroupedIndex: () => table.getState().grouping?.indexOf(column.id),\n\n getToggleGroupingHandler: () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping()\n }\n },\n getAutoAggregationFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent\n }\n },\n getAggregationFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column.getAutoAggregationFn()\n : table.options.aggregationFns?.[\n column.columnDef.aggregationFn as string\n ] ??\n aggregationFns[\n column.columnDef.aggregationFn as BuiltInAggregationFn\n ]\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): GroupingInstance<TData> => {\n return {\n setGrouping: updater => table.options.onGroupingChange?.(updater),\n\n resetGrouping: defaultState => {\n table.setGrouping(\n defaultState ? [] : table.initialState?.grouping ?? []\n )\n },\n\n getPreGroupedRowModel: () => table.getFilteredRowModel(),\n getGroupedRowModel: () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table)\n }\n\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel()\n }\n\n return table._getGroupedRowModel()\n },\n }\n },\n\n createRow: <TData extends RowData>(row: Row<TData>): GroupingRow => {\n return {\n getIsGrouped: () => !!row.groupingColumnId,\n _groupingValuesCache: {},\n }\n },\n\n createCell: <TData extends RowData, TValue>(\n cell: Cell<TData, TValue>,\n column: Column<TData, TValue>,\n row: Row<TData>,\n table: Table<TData>\n ): GroupingCell => {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n !!row.subRows?.length,\n }\n },\n}\n\nexport function orderColumns<TData extends RowData>(\n leafColumns: Column<TData, unknown>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\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 groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n"],"names":["Grouping","getDefaultColumnDef","aggregatedCell","props","getValue","toString","aggregationFn","getInitialState","state","grouping","getDefaultOptions","table","onGroupingChange","makeStateUpdater","groupedColumnMode","createColumn","column","toggleGrouping","setGrouping","old","includes","id","filter","d","getCanGroup","columnDef","enableGrouping","options","accessorFn","getIsGrouped","getState","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","firstRow","getCoreRowModel","flatRows","value","aggregationFns","sum","Object","prototype","call","extent","getAggregationFn","Error","isFunction","createTable","updater","resetGrouping","defaultState","initialState","getPreGroupedRowModel","getFilteredRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","createRow","row","groupingColumnId","_groupingValuesCache","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","length","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport { TableFeature } from '../core/table'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n ColumnDefTemplate,\n RowData,\n AggregationFns,\n} from '../types'\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type GroupingState = string[]\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type AggregationFn<TData extends RowData> = (\n columnId: string,\n leafRows: Row<TData>[],\n childRows: Row<TData>[]\n) => any\n\nexport type CustomAggregationFns = Record<string, AggregationFn<any>>\n\nexport type AggregationFnOption<TData extends RowData> =\n | 'auto'\n | keyof AggregationFns\n | BuiltInAggregationFn\n | AggregationFn<TData>\n\nexport type GroupingColumnDef<TData extends RowData, TValue> = {\n aggregationFn?: AggregationFnOption<TData>\n aggregatedCell?: ColumnDefTemplate<\n ReturnType<Cell<TData, TValue>['getContext']>\n >\n enableGrouping?: boolean\n}\n\nexport type GroupingColumn<TData extends RowData> = {\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingHandler: () => () => void\n getAutoAggregationFn: () => AggregationFn<TData> | undefined\n getAggregationFn: () => AggregationFn<TData> | undefined\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: unknown\n getIsGrouped: () => boolean\n _groupingValuesCache: Record<string, any>\n}\n\nexport type GroupingCell = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n enableGrouping: boolean\n}\n\nexport type GroupingOptions = {\n manualGrouping?: boolean\n onGroupingChange?: OnChangeFn<GroupingState>\n enableGrouping?: boolean\n getGroupedRowModel?: (table: Table<any>) => () => RowModel<any>\n groupedColumnMode?: false | 'reorder' | 'remove'\n} & (keyof AggregationFns extends never\n ? {\n aggregationFns?: Record<string, AggregationFn<any>>\n }\n : {\n aggregationFns: Record<keyof AggregationFns, AggregationFn<any>>\n })\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type GroupingInstance<TData extends RowData> = {\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: (defaultState?: boolean) => void\n getPreGroupedRowModel: () => RowModel<TData>\n getGroupedRowModel: () => RowModel<TData>\n _getGroupedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Grouping: TableFeature = {\n getDefaultColumnDef: <TData extends RowData>(): GroupingColumnDef<\n TData,\n unknown\n > => {\n return {\n aggregatedCell: props => (props.getValue() as any)?.toString?.() ?? null,\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): GroupingOptions => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): GroupingColumn<TData> => {\n return {\n toggleGrouping: () => {\n table.setGrouping(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 getCanGroup: () => {\n return (\n column.columnDef.enableGrouping ??\n true ??\n table.options.enableGrouping ??\n true ??\n !!column.accessorFn\n )\n },\n\n getIsGrouped: () => {\n return table.getState().grouping?.includes(column.id)\n },\n\n getGroupedIndex: () => table.getState().grouping?.indexOf(column.id),\n\n getToggleGroupingHandler: () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping()\n }\n },\n getAutoAggregationFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent\n }\n },\n getAggregationFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column.getAutoAggregationFn()\n : table.options.aggregationFns?.[\n column.columnDef.aggregationFn as string\n ] ??\n aggregationFns[\n column.columnDef.aggregationFn as BuiltInAggregationFn\n ]\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): GroupingInstance<TData> => {\n return {\n setGrouping: updater => table.options.onGroupingChange?.(updater),\n\n resetGrouping: defaultState => {\n table.setGrouping(\n defaultState ? [] : table.initialState?.grouping ?? []\n )\n },\n\n getPreGroupedRowModel: () => table.getFilteredRowModel(),\n getGroupedRowModel: () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table)\n }\n\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel()\n }\n\n return table._getGroupedRowModel()\n },\n }\n },\n\n createRow: <TData extends RowData>(row: Row<TData>): GroupingRow => {\n return {\n getIsGrouped: () => !!row.groupingColumnId,\n _groupingValuesCache: {},\n }\n },\n\n createCell: <TData extends RowData, TValue>(\n cell: Cell<TData, TValue>,\n column: Column<TData, TValue>,\n row: Row<TData>,\n table: Table<TData>\n ): GroupingCell => {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n !!row.subRows?.length,\n }\n },\n}\n\nexport function orderColumns<TData extends RowData>(\n leafColumns: Column<TData, unknown>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\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 groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n"],"names":["Grouping","getDefaultColumnDef","aggregatedCell","props","getValue","toString","aggregationFn","getInitialState","state","grouping","getDefaultOptions","table","onGroupingChange","makeStateUpdater","groupedColumnMode","createColumn","column","toggleGrouping","setGrouping","old","includes","id","filter","d","getCanGroup","columnDef","enableGrouping","options","accessorFn","getIsGrouped","getState","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","firstRow","getCoreRowModel","flatRows","value","aggregationFns","sum","Object","prototype","call","extent","getAggregationFn","Error","isFunction","createTable","updater","resetGrouping","defaultState","initialState","getPreGroupedRowModel","getFilteredRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","createRow","row","groupingColumnId","_groupingValuesCache","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","length","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}
@@ -16,6 +16,7 @@ var utils = require('../utils.js');
16
16
  var Grouping = require('./Grouping.js');
17
17
 
18
18
  //
19
+
19
20
  const Ordering = {
20
21
  getInitialState: state => {
21
22
  return {
@@ -37,33 +38,35 @@ const Ordering = {
37
38
  _getOrderColumnsFn: utils.memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {
38
39
  // Sort grouped columns to the start of the column list
39
40
  // before the headers are built
40
- let orderedColumns = []; // If there is no order, return the normal columns
41
+ let orderedColumns = [];
41
42
 
43
+ // If there is no order, return the normal columns
42
44
  if (!(columnOrder != null && columnOrder.length)) {
43
45
  orderedColumns = columns;
44
46
  } else {
45
- const columnOrderCopy = [...columnOrder]; // If there is an order, make a copy of the columns
47
+ const columnOrderCopy = [...columnOrder];
46
48
 
47
- const columnsCopy = [...columns]; // And make a new ordered array of the columns
48
- // Loop over the columns and place them in order into the new array
49
+ // If there is an order, make a copy of the columns
50
+ const columnsCopy = [...columns];
49
51
 
52
+ // And make a new ordered array of the columns
53
+
54
+ // Loop over the columns and place them in order into the new array
50
55
  while (columnsCopy.length && columnOrderCopy.length) {
51
56
  const targetColumnId = columnOrderCopy.shift();
52
57
  const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);
53
-
54
58
  if (foundIndex > -1) {
55
59
  orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);
56
60
  }
57
- } // If there are any columns left, add them to the end
58
-
61
+ }
59
62
 
63
+ // If there are any columns left, add them to the end
60
64
  orderedColumns = [...orderedColumns, ...columnsCopy];
61
65
  }
62
-
63
66
  return Grouping.orderColumns(orderedColumns, grouping, groupedColumnMode);
64
67
  }, {
65
- key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn' // debug: () => table.options.debugAll ?? table.options.debugTable,
66
-
68
+ key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn'
69
+ // debug: () => table.options.debugAll ?? table.options.debugTable,
67
70
  })
68
71
  };
69
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Ordering.js","sources":["../../../src/features/Ordering.ts"],"sourcesContent":["import { makeStateUpdater, memo } from '../utils'\n\nimport { Table, OnChangeFn, Updater, Column, RowData } from '../types'\n\nimport { Grouping, orderColumns } from './Grouping'\nimport { TableFeature } from '../core/table'\n\nexport type ColumnOrderTableState = {\n columnOrder: ColumnOrderState\n}\n\nexport type ColumnOrderState = string[]\n\nexport type ColumnOrderOptions = {\n onColumnOrderChange?: OnChangeFn<ColumnOrderState>\n}\n\nexport type ColumnOrderDefaultOptions = {\n onColumnOrderChange: OnChangeFn<ColumnOrderState>\n}\n\nexport type ColumnOrderInstance<TData extends RowData> = {\n setColumnOrder: (updater: Updater<ColumnOrderState>) => void\n resetColumnOrder: (defaultState?: boolean) => void\n _getOrderColumnsFn: () => (\n columns: Column<TData, unknown>[]\n ) => Column<TData, unknown>[]\n}\n\n//\n\nexport const Ordering: TableFeature = {\n getInitialState: (state): ColumnOrderTableState => {\n return {\n columnOrder: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnOrderDefaultOptions => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): ColumnOrderInstance<TData> => {\n return {\n setColumnOrder: updater => table.options.onColumnOrderChange?.(updater),\n resetColumnOrder: defaultState => {\n table.setColumnOrder(\n defaultState ? [] : table.initialState.columnOrder ?? []\n )\n },\n _getOrderColumnsFn: memo(\n () => [\n table.getState().columnOrder,\n table.getState().grouping,\n table.options.groupedColumnMode,\n ],\n (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Column<TData, unknown>[] = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(\n d => d.id === targetColumnId\n )\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy]\n }\n\n return orderColumns(orderedColumns, grouping, groupedColumnMode)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn',\n // debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n }\n },\n}\n"],"names":["Ordering","getInitialState","state","columnOrder","getDefaultOptions","table","onColumnOrderChange","makeStateUpdater","createTable","setColumnOrder","updater","options","resetColumnOrder","defaultState","initialState","_getOrderColumnsFn","memo","getState","grouping","groupedColumnMode","columns","orderedColumns","length","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","findIndex","d","id","push","splice","orderColumns","key","process","env","NODE_ENV"],"mappings":";;;;;;;;;;;;;;;;;AA6BA;AAEO,MAAMA,QAAsB,GAAG;EACpCC,eAAe,EAAGC,KAAD,IAAkC;IACjD,OAAO;AACLC,MAAAA,WAAW,EAAE,EADR;MAEL,GAAGD,KAAAA;KAFL,CAAA;GAFkC;EAQpCE,iBAAiB,EACfC,KADiB,IAEa;IAC9B,OAAO;AACLC,MAAAA,mBAAmB,EAAEC,sBAAgB,CAAC,aAAD,EAAgBF,KAAhB,CAAA;KADvC,CAAA;GAXkC;EAgBpCG,WAAW,EACTH,KADW,IAEoB;IAC/B,OAAO;AACLI,MAAAA,cAAc,EAAEC,OAAO,IAAIL,KAAK,CAACM,OAAN,CAAcL,mBAAlB,IAAID,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAACM,OAAN,CAAcL,mBAAd,CAAoCI,OAApC,CADtB;MAELE,gBAAgB,EAAEC,YAAY,IAAI;AAChCR,QAAAA,KAAK,CAACI,cAAN,CACEI,YAAY,GAAG,EAAH,GAAQR,KAAK,CAACS,YAAN,CAAmBX,WAAnB,IAAkC,EADxD,CAAA,CAAA;OAHG;AAOLY,MAAAA,kBAAkB,EAAEC,UAAI,CACtB,MAAM,CACJX,KAAK,CAACY,QAAN,EAAA,CAAiBd,WADb,EAEJE,KAAK,CAACY,QAAN,EAAiBC,CAAAA,QAFb,EAGJb,KAAK,CAACM,OAAN,CAAcQ,iBAHV,CADgB,EAMtB,CAAChB,WAAD,EAAce,QAAd,EAAwBC,iBAAxB,KAA8CC,OAAO,IAAI;AACvD;AACA;AACA,QAAA,IAAIC,cAAwC,GAAG,EAA/C,CAHuD;;AAMvD,QAAA,IAAI,EAAClB,WAAD,IAAA,IAAA,IAACA,WAAW,CAAEmB,MAAd,CAAJ,EAA0B;AACxBD,UAAAA,cAAc,GAAGD,OAAjB,CAAA;AACD,SAFD,MAEO;AACL,UAAA,MAAMG,eAAe,GAAG,CAAC,GAAGpB,WAAJ,CAAxB,CADK;;AAIL,UAAA,MAAMqB,WAAW,GAAG,CAAC,GAAGJ,OAAJ,CAApB,CAJK;AAQL;;AACA,UAAA,OAAOI,WAAW,CAACF,MAAZ,IAAsBC,eAAe,CAACD,MAA7C,EAAqD;AACnD,YAAA,MAAMG,cAAc,GAAGF,eAAe,CAACG,KAAhB,EAAvB,CAAA;AACA,YAAA,MAAMC,UAAU,GAAGH,WAAW,CAACI,SAAZ,CACjBC,CAAC,IAAIA,CAAC,CAACC,EAAF,KAASL,cADG,CAAnB,CAAA;;AAGA,YAAA,IAAIE,UAAU,GAAG,CAAC,CAAlB,EAAqB;AACnBN,cAAAA,cAAc,CAACU,IAAf,CAAoBP,WAAW,CAACQ,MAAZ,CAAmBL,UAAnB,EAA+B,CAA/B,CAAkC,CAAA,CAAlC,CAApB,CAAA,CAAA;AACD,aAAA;AACF,WAjBI;;;AAoBLN,UAAAA,cAAc,GAAG,CAAC,GAAGA,cAAJ,EAAoB,GAAGG,WAAvB,CAAjB,CAAA;AACD,SAAA;;AAED,QAAA,OAAOS,qBAAY,CAACZ,cAAD,EAAiBH,QAAjB,EAA2BC,iBAA3B,CAAnB,CAAA;AACD,OAtCqB,EAuCtB;QACEe,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,mBADjD;;OAvCsB,CAAA;KAP1B,CAAA;AAoDD,GAAA;AAvEmC;;;;"}
1
+ {"version":3,"file":"Ordering.js","sources":["../../../src/features/Ordering.ts"],"sourcesContent":["import { makeStateUpdater, memo } from '../utils'\n\nimport { Table, OnChangeFn, Updater, Column, RowData } from '../types'\n\nimport { Grouping, orderColumns } from './Grouping'\nimport { TableFeature } from '../core/table'\n\nexport type ColumnOrderTableState = {\n columnOrder: ColumnOrderState\n}\n\nexport type ColumnOrderState = string[]\n\nexport type ColumnOrderOptions = {\n onColumnOrderChange?: OnChangeFn<ColumnOrderState>\n}\n\nexport type ColumnOrderDefaultOptions = {\n onColumnOrderChange: OnChangeFn<ColumnOrderState>\n}\n\nexport type ColumnOrderInstance<TData extends RowData> = {\n setColumnOrder: (updater: Updater<ColumnOrderState>) => void\n resetColumnOrder: (defaultState?: boolean) => void\n _getOrderColumnsFn: () => (\n columns: Column<TData, unknown>[]\n ) => Column<TData, unknown>[]\n}\n\n//\n\nexport const Ordering: TableFeature = {\n getInitialState: (state): ColumnOrderTableState => {\n return {\n columnOrder: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): ColumnOrderDefaultOptions => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table),\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): ColumnOrderInstance<TData> => {\n return {\n setColumnOrder: updater => table.options.onColumnOrderChange?.(updater),\n resetColumnOrder: defaultState => {\n table.setColumnOrder(\n defaultState ? [] : table.initialState.columnOrder ?? []\n )\n },\n _getOrderColumnsFn: memo(\n () => [\n table.getState().columnOrder,\n table.getState().grouping,\n table.options.groupedColumnMode,\n ],\n (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Column<TData, unknown>[] = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(\n d => d.id === targetColumnId\n )\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy]\n }\n\n return orderColumns(orderedColumns, grouping, groupedColumnMode)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn',\n // debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n }\n },\n}\n"],"names":["Ordering","getInitialState","state","columnOrder","getDefaultOptions","table","onColumnOrderChange","makeStateUpdater","createTable","setColumnOrder","updater","options","resetColumnOrder","defaultState","initialState","_getOrderColumnsFn","memo","getState","grouping","groupedColumnMode","columns","orderedColumns","length","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","findIndex","d","id","push","splice","orderColumns","key","process","env","NODE_ENV"],"mappings":";;;;;;;;;;;;;;;;;AA6BA;;AAEO,MAAMA,QAAsB,GAAG;EACpCC,eAAe,EAAGC,KAAK,IAA4B;IACjD,OAAO;AACLC,MAAAA,WAAW,EAAE,EAAE;MACf,GAAGD,KAAAA;KACJ,CAAA;GACF;EAEDE,iBAAiB,EACfC,KAAmB,IACW;IAC9B,OAAO;AACLC,MAAAA,mBAAmB,EAAEC,sBAAgB,CAAC,aAAa,EAAEF,KAAK,CAAA;KAC3D,CAAA;GACF;EAEDG,WAAW,EACTH,KAAmB,IACY;IAC/B,OAAO;AACLI,MAAAA,cAAc,EAAEC,OAAO,IAAIL,KAAK,CAACM,OAAO,CAACL,mBAAmB,IAAjCD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAACM,OAAO,CAACL,mBAAmB,CAAGI,OAAO,CAAC;MACvEE,gBAAgB,EAAEC,YAAY,IAAI;AAChCR,QAAAA,KAAK,CAACI,cAAc,CAClBI,YAAY,GAAG,EAAE,GAAGR,KAAK,CAACS,YAAY,CAACX,WAAW,IAAI,EAAE,CACzD,CAAA;OACF;AACDY,MAAAA,kBAAkB,EAAEC,UAAI,CACtB,MAAM,CACJX,KAAK,CAACY,QAAQ,EAAE,CAACd,WAAW,EAC5BE,KAAK,CAACY,QAAQ,EAAE,CAACC,QAAQ,EACzBb,KAAK,CAACM,OAAO,CAACQ,iBAAiB,CAChC,EACD,CAAChB,WAAW,EAAEe,QAAQ,EAAEC,iBAAiB,KAAKC,OAAO,IAAI;AACvD;AACA;QACA,IAAIC,cAAwC,GAAG,EAAE,CAAA;;AAEjD;AACA,QAAA,IAAI,EAAClB,WAAW,IAAA,IAAA,IAAXA,WAAW,CAAEmB,MAAM,CAAE,EAAA;AACxBD,UAAAA,cAAc,GAAGD,OAAO,CAAA;AAC1B,SAAC,MAAM;AACL,UAAA,MAAMG,eAAe,GAAG,CAAC,GAAGpB,WAAW,CAAC,CAAA;;AAExC;AACA,UAAA,MAAMqB,WAAW,GAAG,CAAC,GAAGJ,OAAO,CAAC,CAAA;;AAEhC;;AAEA;AACA,UAAA,OAAOI,WAAW,CAACF,MAAM,IAAIC,eAAe,CAACD,MAAM,EAAE;AACnD,YAAA,MAAMG,cAAc,GAAGF,eAAe,CAACG,KAAK,EAAE,CAAA;AAC9C,YAAA,MAAMC,UAAU,GAAGH,WAAW,CAACI,SAAS,CACtCC,CAAC,IAAIA,CAAC,CAACC,EAAE,KAAKL,cAAc,CAC7B,CAAA;AACD,YAAA,IAAIE,UAAU,GAAG,CAAC,CAAC,EAAE;AACnBN,cAAAA,cAAc,CAACU,IAAI,CAACP,WAAW,CAACQ,MAAM,CAACL,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA;AAC5D,aAAA;AACF,WAAA;;AAEA;AACAN,UAAAA,cAAc,GAAG,CAAC,GAAGA,cAAc,EAAE,GAAGG,WAAW,CAAC,CAAA;AACtD,SAAA;AAEA,QAAA,OAAOS,qBAAY,CAACZ,cAAc,EAAEH,QAAQ,EAAEC,iBAAiB,CAAC,CAAA;AAClE,OAAC,EACD;QACEe,GAAG,EAAEC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAI,mBAAA;AAC/C;OACD,CAAA;KAEJ,CAAA;AACH,GAAA;AACF;;;;"}