@tanstack/table-core 8.0.11 → 8.0.14

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 (96) hide show
  1. package/build/cjs/core/cell.js +13 -13
  2. package/build/cjs/core/cell.js.map +1 -1
  3. package/build/cjs/core/column.js +20 -21
  4. package/build/cjs/core/column.js.map +1 -1
  5. package/build/cjs/core/headers.js +63 -68
  6. package/build/cjs/core/headers.js.map +1 -1
  7. package/build/cjs/core/row.js +16 -11
  8. package/build/cjs/core/row.js.map +1 -1
  9. package/build/cjs/core/{instance.js → table.js} +46 -57
  10. package/build/cjs/core/table.js.map +1 -0
  11. package/build/cjs/features/ColumnSizing.js +36 -36
  12. package/build/cjs/features/ColumnSizing.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +34 -34
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +46 -52
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +24 -49
  18. package/build/cjs/features/Grouping.js.map +1 -1
  19. package/build/cjs/features/Ordering.js +8 -8
  20. package/build/cjs/features/Ordering.js.map +1 -1
  21. package/build/cjs/features/Pagination.js +37 -37
  22. package/build/cjs/features/Pagination.js.map +1 -1
  23. package/build/cjs/features/Pinning.js +33 -33
  24. package/build/cjs/features/Pinning.js.map +1 -1
  25. package/build/cjs/features/RowSelection.js +67 -67
  26. package/build/cjs/features/RowSelection.js.map +1 -1
  27. package/build/cjs/features/Sorting.js +36 -40
  28. package/build/cjs/features/Sorting.js.map +1 -1
  29. package/build/cjs/features/Visibility.js +30 -30
  30. package/build/cjs/features/Visibility.js.map +1 -1
  31. package/build/cjs/index.js +2 -4
  32. package/build/cjs/index.js.map +1 -1
  33. package/build/cjs/utils/filterRowsUtils.js +8 -8
  34. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  35. package/build/cjs/utils/getCoreRowModel.js +8 -8
  36. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  37. package/build/cjs/utils/getExpandedRowModel.js +4 -4
  38. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  39. package/build/cjs/utils/getFacetedMinMaxValues.js +3 -3
  40. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  41. package/build/cjs/utils/getFacetedRowModel.js +4 -4
  42. package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
  43. package/build/cjs/utils/getFacetedUniqueValues.js +3 -3
  44. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
  45. package/build/cjs/utils/getFilteredRowModel.js +8 -8
  46. package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
  47. package/build/cjs/utils/getGroupedRowModel.js +9 -9
  48. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  49. package/build/cjs/utils/getPaginationRowModel.js +4 -4
  50. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  51. package/build/cjs/utils/getSortedRowModel.js +7 -7
  52. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  53. package/build/cjs/utils.js +2 -2
  54. package/build/cjs/utils.js.map +1 -1
  55. package/build/esm/index.js +567 -670
  56. package/build/esm/index.js.map +1 -1
  57. package/build/stats-html.html +1 -1
  58. package/build/stats-react.json +1092 -0
  59. package/build/types/index.d.ts +759 -0
  60. package/build/umd/index.development.js +567 -671
  61. package/build/umd/index.development.js.map +1 -1
  62. package/build/umd/index.production.js +1 -1
  63. package/build/umd/index.production.js.map +1 -1
  64. package/package.json +2 -2
  65. package/src/core/cell.ts +34 -28
  66. package/src/core/column.ts +83 -72
  67. package/src/core/headers.ts +118 -149
  68. package/src/core/row.ts +31 -25
  69. package/src/core/{instance.ts → table.ts} +85 -116
  70. package/src/features/ColumnSizing.ts +45 -47
  71. package/src/features/Expanding.ts +53 -59
  72. package/src/features/Filters.ts +112 -132
  73. package/src/features/Grouping.ts +63 -112
  74. package/src/features/Ordering.ts +19 -21
  75. package/src/features/Pagination.ts +54 -55
  76. package/src/features/Pinning.ts +49 -61
  77. package/src/features/RowSelection.ts +97 -108
  78. package/src/features/Sorting.ts +57 -72
  79. package/src/features/Visibility.ts +48 -48
  80. package/src/index.ts +1 -2
  81. package/src/types.ts +64 -69
  82. package/src/utils/filterRowsUtils.ts +33 -28
  83. package/src/utils/getCoreRowModel.ts +22 -22
  84. package/src/utils/getExpandedRowModel.ts +15 -15
  85. package/src/utils/getFacetedMinMaxValues.ts +6 -6
  86. package/src/utils/getFacetedRowModel.ts +12 -12
  87. package/src/utils/getFacetedUniqueValues.ts +6 -6
  88. package/src/utils/getFilteredRowModel.ts +17 -17
  89. package/src/utils/getGroupedRowModel.ts +18 -21
  90. package/src/utils/getPaginationRowModel.ts +10 -13
  91. package/src/utils/getSortedRowModel.ts +14 -14
  92. package/src/utils.ts +8 -2
  93. package/build/cjs/core/instance.js.map +0 -1
  94. package/build/cjs/createTable.js +0 -72
  95. package/build/cjs/createTable.js.map +0 -1
  96. package/src/createTable.ts +0 -188
@@ -22,9 +22,9 @@ const RowSelection = {
22
22
  ...state
23
23
  };
24
24
  },
25
- getDefaultOptions: instance => {
25
+ getDefaultOptions: table => {
26
26
  return {
27
- onRowSelectionChange: utils.makeStateUpdater('rowSelection', instance),
27
+ onRowSelectionChange: utils.makeStateUpdater('rowSelection', table),
28
28
  enableRowSelection: true,
29
29
  enableMultiRowSelection: true,
30
30
  enableSubRowSelection: true // enableGroupingRowSelection: false,
@@ -33,20 +33,20 @@ const RowSelection = {
33
33
 
34
34
  };
35
35
  },
36
- createInstance: instance => {
36
+ createTable: table => {
37
37
  return {
38
- setRowSelection: updater => instance.options.onRowSelectionChange == null ? void 0 : instance.options.onRowSelectionChange(updater),
38
+ setRowSelection: updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater),
39
39
  resetRowSelection: defaultState => {
40
- var _instance$initialStat;
40
+ var _table$initialState$r;
41
41
 
42
- return instance.setRowSelection(defaultState ? {} : (_instance$initialStat = instance.initialState.rowSelection) != null ? _instance$initialStat : {});
42
+ return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});
43
43
  },
44
44
  toggleAllRowsSelected: value => {
45
- instance.setRowSelection(old => {
46
- value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
45
+ table.setRowSelection(old => {
46
+ value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();
47
47
  const rowSelection = { ...old
48
48
  };
49
- const preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
49
+ const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
50
50
  // All of the rows are flat already, so it wouldn't be worth it
51
51
 
52
52
  if (value) {
@@ -62,12 +62,12 @@ const RowSelection = {
62
62
  return rowSelection;
63
63
  });
64
64
  },
65
- toggleAllPageRowsSelected: value => instance.setRowSelection(old => {
66
- const resolvedValue = typeof value !== 'undefined' ? value : !instance.getIsAllPageRowsSelected();
65
+ toggleAllPageRowsSelected: value => table.setRowSelection(old => {
66
+ const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();
67
67
  const rowSelection = { ...old
68
68
  };
69
- instance.getRowModel().rows.forEach(row => {
70
- mutateRowIsSelected(rowSelection, row.id, resolvedValue, instance);
69
+ table.getRowModel().rows.forEach(row => {
70
+ mutateRowIsSelected(rowSelection, row.id, resolvedValue, table);
71
71
  });
72
72
  return rowSelection;
73
73
  }),
@@ -76,7 +76,7 @@ const RowSelection = {
76
76
  // rows,
77
77
  // rowsById,
78
78
  // options: { selectGroupingRows, selectSubRows },
79
- // } = instance
79
+ // } = table
80
80
  // const findSelectedRow = (rows: Row[]) => {
81
81
  // let found
82
82
  // rows.find(d => {
@@ -104,7 +104,7 @@ const RowSelection = {
104
104
  // selectSubRows: selectSubRows!,
105
105
  // })
106
106
  // }
107
- // instance.rows.forEach(row => {
107
+ // table.rows.forEach(row => {
108
108
  // const isFirstRow = row.id === firstRow.id
109
109
  // const isLastRow = row.id === lastRow.id
110
110
  // if (isFirstRow || isLastRow) {
@@ -119,10 +119,10 @@ const RowSelection = {
119
119
  // addRow(row)
120
120
  // }
121
121
  // })
122
- // instance.setRowSelection(selectedRowIds)
122
+ // table.setRowSelection(selectedRowIds)
123
123
  // },
124
- getPreSelectedRowModel: () => instance.getCoreRowModel(),
125
- getSelectedRowModel: utils.memo(() => [instance.getState().rowSelection, instance.getCoreRowModel()], (rowSelection, rowModel) => {
124
+ getPreSelectedRowModel: () => table.getCoreRowModel(),
125
+ getSelectedRowModel: utils.memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {
126
126
  if (!Object.keys(rowSelection).length) {
127
127
  return {
128
128
  rows: [],
@@ -131,16 +131,16 @@ const RowSelection = {
131
131
  };
132
132
  }
133
133
 
134
- return selectRowsFn(instance, rowModel);
134
+ return selectRowsFn(table, rowModel);
135
135
  }, {
136
136
  key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',
137
137
  debug: () => {
138
- var _instance$options$deb;
138
+ var _table$options$debugA;
139
139
 
140
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
140
+ return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;
141
141
  }
142
142
  }),
143
- getFilteredSelectedRowModel: utils.memo(() => [instance.getState().rowSelection, instance.getFilteredRowModel()], (rowSelection, rowModel) => {
143
+ getFilteredSelectedRowModel: utils.memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {
144
144
  if (!Object.keys(rowSelection).length) {
145
145
  return {
146
146
  rows: [],
@@ -149,16 +149,16 @@ const RowSelection = {
149
149
  };
150
150
  }
151
151
 
152
- return selectRowsFn(instance, rowModel);
152
+ return selectRowsFn(table, rowModel);
153
153
  }, {
154
154
  key: process.env.NODE_ENV === 'production' && 'getFilteredSelectedRowModel',
155
155
  debug: () => {
156
- var _instance$options$deb2;
156
+ var _table$options$debugA2;
157
157
 
158
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
158
+ return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugTable;
159
159
  }
160
160
  }),
161
- getGroupedSelectedRowModel: utils.memo(() => [instance.getState().rowSelection, instance.getSortedRowModel()], (rowSelection, rowModel) => {
161
+ getGroupedSelectedRowModel: utils.memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {
162
162
  if (!Object.keys(rowSelection).length) {
163
163
  return {
164
164
  rows: [],
@@ -167,31 +167,31 @@ const RowSelection = {
167
167
  };
168
168
  }
169
169
 
170
- return selectRowsFn(instance, rowModel);
170
+ return selectRowsFn(table, rowModel);
171
171
  }, {
172
172
  key: process.env.NODE_ENV === 'production' && 'getGroupedSelectedRowModel',
173
173
  debug: () => {
174
- var _instance$options$deb3;
174
+ var _table$options$debugA3;
175
175
 
176
- return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugTable;
176
+ return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugTable;
177
177
  }
178
178
  }),
179
179
  ///
180
180
  // getGroupingRowCanSelect: rowId => {
181
- // const row = instance.getRow(rowId)
181
+ // const row = table.getRow(rowId)
182
182
  // if (!row) {
183
183
  // throw new Error()
184
184
  // }
185
- // if (typeof instance.options.enableGroupingRowSelection === 'function') {
186
- // return instance.options.enableGroupingRowSelection(row)
185
+ // if (typeof table.options.enableGroupingRowSelection === 'function') {
186
+ // return table.options.enableGroupingRowSelection(row)
187
187
  // }
188
- // return instance.options.enableGroupingRowSelection ?? false
188
+ // return table.options.enableGroupingRowSelection ?? false
189
189
  // },
190
190
  getIsAllRowsSelected: () => {
191
- const preFilteredFlatRows = instance.getPreFilteredRowModel().flatRows;
191
+ const preFilteredFlatRows = table.getPreFilteredRowModel().flatRows;
192
192
  const {
193
193
  rowSelection
194
- } = instance.getState();
194
+ } = table.getState();
195
195
  let isAllRowsSelected = Boolean(preFilteredFlatRows.length && Object.keys(rowSelection).length);
196
196
 
197
197
  if (isAllRowsSelected) {
@@ -203,10 +203,10 @@ const RowSelection = {
203
203
  return isAllRowsSelected;
204
204
  },
205
205
  getIsAllPageRowsSelected: () => {
206
- const paginationFlatRows = instance.getPaginationRowModel().flatRows;
206
+ const paginationFlatRows = table.getPaginationRowModel().flatRows;
207
207
  const {
208
208
  rowSelection
209
- } = instance.getState();
209
+ } = table.getState();
210
210
  let isAllPageRowsSelected = !!paginationFlatRows.length;
211
211
 
212
212
  if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {
@@ -216,31 +216,31 @@ const RowSelection = {
216
216
  return isAllPageRowsSelected;
217
217
  },
218
218
  getIsSomeRowsSelected: () => {
219
- var _instance$getState$ro;
219
+ var _table$getState$rowSe;
220
220
 
221
- return !instance.getIsAllRowsSelected() && !!Object.keys((_instance$getState$ro = instance.getState().rowSelection) != null ? _instance$getState$ro : {}).length;
221
+ return !table.getIsAllRowsSelected() && !!Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;
222
222
  },
223
223
  getIsSomePageRowsSelected: () => {
224
- const paginationFlatRows = instance.getPaginationRowModel().flatRows;
225
- return instance.getIsAllPageRowsSelected() ? false : paginationFlatRows.some(d => d.getIsSelected() || d.getIsSomeSelected());
224
+ const paginationFlatRows = table.getPaginationRowModel().flatRows;
225
+ return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.some(d => d.getIsSelected() || d.getIsSomeSelected());
226
226
  },
227
227
  getToggleAllRowsSelectedHandler: () => {
228
228
  return e => {
229
- instance.toggleAllRowsSelected(e.target.checked);
229
+ table.toggleAllRowsSelected(e.target.checked);
230
230
  };
231
231
  },
232
232
  getToggleAllPageRowsSelectedHandler: () => {
233
233
  return e => {
234
- instance.toggleAllPageRowsSelected(e.target.checked);
234
+ table.toggleAllPageRowsSelected(e.target.checked);
235
235
  };
236
236
  }
237
237
  };
238
238
  },
239
- createRow: (row, instance) => {
239
+ createRow: (row, table) => {
240
240
  return {
241
241
  toggleSelected: value => {
242
242
  const isSelected = row.getIsSelected();
243
- instance.setRowSelection(old => {
243
+ table.setRowSelection(old => {
244
244
  value = typeof value !== 'undefined' ? value : !isSelected;
245
245
 
246
246
  if (isSelected === value) {
@@ -249,48 +249,48 @@ const RowSelection = {
249
249
 
250
250
  const selectedRowIds = { ...old
251
251
  };
252
- mutateRowIsSelected(selectedRowIds, row.id, value, instance);
252
+ mutateRowIsSelected(selectedRowIds, row.id, value, table);
253
253
  return selectedRowIds;
254
254
  });
255
255
  },
256
256
  getIsSelected: () => {
257
257
  const {
258
258
  rowSelection
259
- } = instance.getState();
259
+ } = table.getState();
260
260
  return isRowSelected(row, rowSelection) === true;
261
261
  },
262
262
  getIsSomeSelected: () => {
263
263
  const {
264
264
  rowSelection
265
- } = instance.getState();
265
+ } = table.getState();
266
266
  return isRowSelected(row, rowSelection) === 'some';
267
267
  },
268
268
  getCanSelect: () => {
269
- var _instance$options$ena;
269
+ var _table$options$enable;
270
270
 
271
- if (typeof instance.options.enableRowSelection === 'function') {
272
- return instance.options.enableRowSelection(row);
271
+ if (typeof table.options.enableRowSelection === 'function') {
272
+ return table.options.enableRowSelection(row);
273
273
  }
274
274
 
275
- return (_instance$options$ena = instance.options.enableRowSelection) != null ? _instance$options$ena : true;
275
+ return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;
276
276
  },
277
277
  getCanSelectSubRows: () => {
278
- var _instance$options$ena2;
278
+ var _table$options$enable2;
279
279
 
280
- if (typeof instance.options.enableSubRowSelection === 'function') {
281
- return instance.options.enableSubRowSelection(row);
280
+ if (typeof table.options.enableSubRowSelection === 'function') {
281
+ return table.options.enableSubRowSelection(row);
282
282
  }
283
283
 
284
- return (_instance$options$ena2 = instance.options.enableSubRowSelection) != null ? _instance$options$ena2 : true;
284
+ return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;
285
285
  },
286
286
  getCanMultiSelect: () => {
287
- var _instance$options$ena3;
287
+ var _table$options$enable3;
288
288
 
289
- if (typeof instance.options.enableMultiRowSelection === 'function') {
290
- return instance.options.enableMultiRowSelection(row);
289
+ if (typeof table.options.enableMultiRowSelection === 'function') {
290
+ return table.options.enableMultiRowSelection(row);
291
291
  }
292
292
 
293
- return (_instance$options$ena3 = instance.options.enableMultiRowSelection) != null ? _instance$options$ena3 : true;
293
+ return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;
294
294
  },
295
295
  getToggleSelectedHandler: () => {
296
296
  const canSelect = row.getCanSelect();
@@ -305,13 +305,13 @@ const RowSelection = {
305
305
  }
306
306
  };
307
307
 
308
- const mutateRowIsSelected = (selectedRowIds, id, value, instance) => {
308
+ const mutateRowIsSelected = (selectedRowIds, id, value, table) => {
309
309
  var _row$subRows;
310
310
 
311
- const row = instance.getRow(id);
311
+ const row = table.getRow(id);
312
312
  row.getIsGrouped(); // if ( // TODO: enforce grouping row selection rules
313
313
  // !isGrouped ||
314
- // (isGrouped && instance.options.enableGroupingRowSelection)
314
+ // (isGrouped && table.options.enableGroupingRowSelection)
315
315
  // ) {
316
316
 
317
317
  if (value) {
@@ -322,12 +322,12 @@ const mutateRowIsSelected = (selectedRowIds, id, value, instance) => {
322
322
 
323
323
 
324
324
  if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {
325
- row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, instance));
325
+ row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, table));
326
326
  }
327
327
  };
328
328
 
329
- function selectRowsFn(instance, rowModel) {
330
- const rowSelection = instance.getState().rowSelection;
329
+ function selectRowsFn(table, rowModel) {
330
+ const rowSelection = table.getState().rowSelection;
331
331
  const newSelectedFlatRows = [];
332
332
  const newSelectedRowsById = {}; // Filters top level and nested rows
333
333
 
@@ -361,7 +361,7 @@ function selectRowsFn(instance, rowModel) {
361
361
  rowsById: newSelectedRowsById
362
362
  };
363
363
  }
364
- function isRowSelected(row, selection, instance) {
364
+ function isRowSelected(row, selection, table) {
365
365
  if (selection[row.id]) {
366
366
  return true;
367
367
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import { TableFeature } from '../core/instance'\nimport {\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n RowModel,\n Updater,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport type RowSelectionTableState = {\n rowSelection: RowSelectionState\n}\n\nexport type RowSelectionOptions<TGenerics extends TableGenerics> = {\n enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TGenerics>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => boolean\n // selectRowsFn?: (\n // instance: TableInstance<\n // TData,\n // TValue,\n // TFilterFns,\n // TSortingFns,\n // TAggregationFns\n // >,\n // rowModel: RowModel<TGenerics>\n // ) => RowModel<TGenerics>\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getCanSelect: () => boolean\n getCanMultiSelect: () => boolean\n getCanSelectSubRows: () => boolean\n toggleSelected: (value?: boolean) => void\n getToggleSelectedHandler: () => (event: unknown) => void\n}\n\nexport type RowSelectionInstance<TGenerics extends TableGenerics> = {\n getToggleAllRowsSelectedHandler: () => (event: unknown) => void\n getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n resetRowSelection: (defaultState?: boolean) => void\n getIsAllRowsSelected: () => boolean\n getIsAllPageRowsSelected: () => boolean\n getIsSomeRowsSelected: () => boolean\n getIsSomePageRowsSelected: () => boolean\n toggleAllRowsSelected: (value?: boolean) => void\n toggleAllPageRowsSelected: (value?: boolean) => void\n getPreSelectedRowModel: () => RowModel<TGenerics>\n getSelectedRowModel: () => RowModel<TGenerics>\n getFilteredSelectedRowModel: () => RowModel<TGenerics>\n getGroupedSelectedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const RowSelection: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionOptions<TGenerics> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', instance),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionInstance<TGenerics> => {\n return {\n setRowSelection: updater =>\n instance.options.onRowSelectionChange?.(updater),\n resetRowSelection: defaultState =>\n instance.setRowSelection(\n defaultState ? {} : instance.initialState.rowSelection ?? {}\n ),\n toggleAllRowsSelected: value => {\n instance.setRowSelection(old => {\n value =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n },\n toggleAllPageRowsSelected: value =>\n instance.setRowSelection(old => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n instance.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, instance)\n })\n\n return rowSelection\n }),\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = instance\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // instance.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // instance.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => instance.getCoreRowModel(),\n getSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [\n instance.getState().rowSelection,\n instance.getFilteredRowModel(),\n ],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getFilteredSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getGroupedSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = instance.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof instance.options.enableGroupingRowSelection === 'function') {\n // return instance.options.enableGroupingRowSelection(row)\n // }\n\n // return instance.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preFilteredFlatRows = instance.getPreFilteredRowModel().flatRows\n const { rowSelection } = instance.getState()\n\n let isAllRowsSelected = Boolean(\n preFilteredFlatRows.length && Object.keys(rowSelection).length\n )\n\n if (isAllRowsSelected) {\n if (preFilteredFlatRows.some(row => !rowSelection[row.id])) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n },\n\n getIsAllPageRowsSelected: () => {\n const paginationFlatRows = instance.getPaginationRowModel().flatRows\n const { rowSelection } = instance.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some(row => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n },\n\n getIsSomeRowsSelected: () => {\n return (\n !instance.getIsAllRowsSelected() &&\n !!Object.keys(instance.getState().rowSelection ?? {}).length\n )\n },\n\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = instance.getPaginationRowModel().flatRows\n return instance.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows.some(\n d => d.getIsSelected() || d.getIsSomeSelected()\n )\n },\n\n getToggleAllRowsSelectedHandler: () => {\n return (e: unknown) => {\n instance.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n\n getToggleAllPageRowsSelectedHandler: () => {\n return (e: unknown) => {\n instance.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): RowSelectionRow => {\n return {\n toggleSelected: value => {\n const isSelected = row.getIsSelected()\n\n instance.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(selectedRowIds, row.id, value, instance)\n\n return selectedRowIds\n })\n },\n getIsSelected: () => {\n const { rowSelection } = instance.getState()\n return isRowSelected(row, rowSelection, instance) === true\n },\n\n getIsSomeSelected: () => {\n const { rowSelection } = instance.getState()\n return isRowSelected(row, rowSelection, instance) === 'some'\n },\n\n getCanSelect: () => {\n if (typeof instance.options.enableRowSelection === 'function') {\n return instance.options.enableRowSelection(row)\n }\n\n return instance.options.enableRowSelection ?? true\n },\n\n getCanSelectSubRows: () => {\n if (typeof instance.options.enableSubRowSelection === 'function') {\n return instance.options.enableSubRowSelection(row)\n }\n\n return instance.options.enableSubRowSelection ?? true\n },\n\n getCanMultiSelect: () => {\n if (typeof instance.options.enableMultiRowSelection === 'function') {\n return instance.options.enableMultiRowSelection(row)\n }\n\n return instance.options.enableMultiRowSelection ?? true\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect()\n\n return (e: unknown) => {\n if (!canSelect) return\n row.toggleSelected(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n\nconst mutateRowIsSelected = <TGenerics extends TableGenerics>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n instance: TableInstance<TGenerics>\n) => {\n const row = instance.getRow(id)\n\n const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && instance.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n selectedRowIds[id] = true\n } else {\n delete selectedRowIds[id]\n }\n // }\n\n if (row.subRows?.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, instance)\n )\n }\n}\n\nexport function selectRowsFn<TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n): RowModel<TGenerics> {\n const rowSelection = instance.getState().rowSelection\n\n const newSelectedFlatRows: Row<TGenerics>[] = []\n const newSelectedRowsById: Record<string, Row<TGenerics>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TGenerics>[], depth = 0): Row<TGenerics>[] => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection, instance) === true\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n })\n .filter(Boolean) as Row<TGenerics>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n selection: Record<string, boolean>,\n instance: TableInstance<TGenerics>\n): boolean | 'some' {\n if (selection[row.id]) {\n return true\n }\n\n if (row.subRows && row.subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (isRowSelected(subRow, selection, instance)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n\n return allChildrenSelected ? true : someSelected ? 'some' : false\n }\n\n return false\n}\n"],"names":["RowSelection","getInitialState","state","rowSelection","getDefaultOptions","instance","onRowSelectionChange","makeStateUpdater","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","createInstance","setRowSelection","updater","options","resetRowSelection","defaultState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","id","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","getRowModel","rows","mutateRowIsSelected","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","memo","getState","rowModel","Object","keys","length","rowsById","selectRowsFn","key","process","env","NODE_ENV","debug","debugAll","debugTable","getFilteredSelectedRowModel","getFilteredRowModel","getGroupedSelectedRowModel","getSortedRowModel","preFilteredFlatRows","getPreFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","d","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","e","target","checked","getToggleAllPageRowsSelectedHandler","createRow","toggleSelected","isSelected","selectedRowIds","isRowSelected","getCanSelect","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","getIsGrouped","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}
1
+ {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import { TableFeature } from '../core/table'\nimport {\n OnChangeFn,\n TableGenerics,\n Table,\n Row,\n RowModel,\n Updater,\n RowData,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport type RowSelectionTableState = {\n rowSelection: RowSelectionState\n}\n\nexport type RowSelectionOptions<TData extends RowData> = {\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TData>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => boolean\n // selectRowsFn?: (\n // table: Table<TData>,\n // rowModel: RowModel<TData>\n // ) => RowModel<TData>\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getCanSelect: () => boolean\n getCanMultiSelect: () => boolean\n getCanSelectSubRows: () => boolean\n toggleSelected: (value?: boolean) => void\n getToggleSelectedHandler: () => (event: unknown) => void\n}\n\nexport type RowSelectionInstance<TData extends RowData> = {\n getToggleAllRowsSelectedHandler: () => (event: unknown) => void\n getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n resetRowSelection: (defaultState?: boolean) => void\n getIsAllRowsSelected: () => boolean\n getIsAllPageRowsSelected: () => boolean\n getIsSomeRowsSelected: () => boolean\n getIsSomePageRowsSelected: () => boolean\n toggleAllRowsSelected: (value?: boolean) => void\n toggleAllPageRowsSelected: (value?: boolean) => void\n getPreSelectedRowModel: () => RowModel<TData>\n getSelectedRowModel: () => RowModel<TData>\n getFilteredSelectedRowModel: () => RowModel<TData>\n getGroupedSelectedRowModel: () => RowModel<TData>\n}\n\n//\n\nexport const RowSelection: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionOptions<TData> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionInstance<TData> => {\n return {\n setRowSelection: updater => table.options.onRowSelectionChange?.(updater),\n resetRowSelection: defaultState =>\n table.setRowSelection(\n defaultState ? {} : table.initialState.rowSelection ?? {}\n ),\n toggleAllRowsSelected: value => {\n table.setRowSelection(old => {\n value =\n typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n },\n toggleAllPageRowsSelected: value =>\n table.setRowSelection(old => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, table)\n })\n\n return rowSelection\n }),\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => table.getCoreRowModel(),\n getSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getFilteredRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getFilteredSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getGroupedSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preFilteredFlatRows = table.getPreFilteredRowModel().flatRows\n const { rowSelection } = table.getState()\n\n let isAllRowsSelected = Boolean(\n preFilteredFlatRows.length && Object.keys(rowSelection).length\n )\n\n if (isAllRowsSelected) {\n if (preFilteredFlatRows.some(row => !rowSelection[row.id])) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n },\n\n getIsAllPageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n const { rowSelection } = table.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some(row => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n },\n\n getIsSomeRowsSelected: () => {\n return (\n !table.getIsAllRowsSelected() &&\n !!Object.keys(table.getState().rowSelection ?? {}).length\n )\n },\n\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n return table.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows.some(\n d => d.getIsSelected() || d.getIsSomeSelected()\n )\n },\n\n getToggleAllRowsSelectedHandler: () => {\n return (e: unknown) => {\n table.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n\n getToggleAllPageRowsSelectedHandler: () => {\n return (e: unknown) => {\n table.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): RowSelectionRow => {\n return {\n toggleSelected: value => {\n const isSelected = row.getIsSelected()\n\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(selectedRowIds, row.id, value, table)\n\n return selectedRowIds\n })\n },\n getIsSelected: () => {\n const { rowSelection } = table.getState()\n return isRowSelected(row, rowSelection, table) === true\n },\n\n getIsSomeSelected: () => {\n const { rowSelection } = table.getState()\n return isRowSelected(row, rowSelection, table) === 'some'\n },\n\n getCanSelect: () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row)\n }\n\n return table.options.enableRowSelection ?? true\n },\n\n getCanSelectSubRows: () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row)\n }\n\n return table.options.enableSubRowSelection ?? true\n },\n\n getCanMultiSelect: () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row)\n }\n\n return table.options.enableMultiRowSelection ?? true\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect()\n\n return (e: unknown) => {\n if (!canSelect) return\n row.toggleSelected(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n\nconst mutateRowIsSelected = <TData extends RowData>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n table: Table<TData>\n) => {\n const row = table.getRow(id)\n\n const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n selectedRowIds[id] = true\n } else {\n delete selectedRowIds[id]\n }\n // }\n\n if (row.subRows?.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, table)\n )\n }\n}\n\nexport function selectRowsFn<TData extends RowData>(\n table: Table<TData>,\n rowModel: RowModel<TData>\n): RowModel<TData> {\n const rowSelection = table.getState().rowSelection\n\n const newSelectedFlatRows: Row<TData>[] = []\n const newSelectedRowsById: Record<string, Row<TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection, table) === true\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n })\n .filter(Boolean) as Row<TData>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>,\n table: Table<TData>\n): boolean | 'some' {\n if (selection[row.id]) {\n return true\n }\n\n if (row.subRows && row.subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (isRowSelected(subRow, selection, table)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n\n return allChildrenSelected ? true : someSelected ? 'some' : false\n }\n\n return false\n}\n"],"names":["RowSelection","getInitialState","state","rowSelection","getDefaultOptions","table","onRowSelectionChange","makeStateUpdater","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","createTable","setRowSelection","updater","options","resetRowSelection","defaultState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","id","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","getRowModel","rows","mutateRowIsSelected","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","memo","getState","rowModel","Object","keys","length","rowsById","selectRowsFn","key","process","env","NODE_ENV","debug","debugAll","debugTable","getFilteredSelectedRowModel","getFilteredRowModel","getGroupedSelectedRowModel","getSortedRowModel","preFilteredFlatRows","getPreFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","d","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","e","target","checked","getToggleAllPageRowsSelectedHandler","createRow","toggleSelected","isSelected","selectedRowIds","isRowSelected","getCanSelect","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","getIsGrouped","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}