@tanstack/react-table 8.0.0-alpha.9 → 8.0.0-beta.0

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 (115) hide show
  1. package/build/cjs/react-table/src/index.js +139 -0
  2. package/build/cjs/react-table/src/index.js.map +1 -0
  3. package/build/cjs/table-core/build/esm/index.js +3867 -0
  4. package/build/cjs/table-core/build/esm/index.js.map +1 -0
  5. package/build/esm/index.js +3196 -4117
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +24 -813
  9. package/build/types/index.d.ts +16 -9
  10. package/build/umd/index.development.js +3234 -4125
  11. package/build/umd/index.development.js.map +1 -1
  12. package/build/umd/index.production.js +11 -1
  13. package/build/umd/index.production.js.map +1 -1
  14. package/package.json +10 -6
  15. package/src/index.tsx +111 -9
  16. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  17. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  18. package/build/cjs/aggregationTypes.js +0 -130
  19. package/build/cjs/aggregationTypes.js.map +0 -1
  20. package/build/cjs/core.js +0 -545
  21. package/build/cjs/core.js.map +0 -1
  22. package/build/cjs/createTable.js +0 -122
  23. package/build/cjs/createTable.js.map +0 -1
  24. package/build/cjs/features/ColumnSizing.js +0 -318
  25. package/build/cjs/features/ColumnSizing.js.map +0 -1
  26. package/build/cjs/features/Expanding.js +0 -239
  27. package/build/cjs/features/Expanding.js.map +0 -1
  28. package/build/cjs/features/Filters.js +0 -414
  29. package/build/cjs/features/Filters.js.map +0 -1
  30. package/build/cjs/features/Grouping.js +0 -232
  31. package/build/cjs/features/Grouping.js.map +0 -1
  32. package/build/cjs/features/Headers.js +0 -629
  33. package/build/cjs/features/Headers.js.map +0 -1
  34. package/build/cjs/features/Ordering.js +0 -86
  35. package/build/cjs/features/Ordering.js.map +0 -1
  36. package/build/cjs/features/Pagination.js +0 -193
  37. package/build/cjs/features/Pagination.js.map +0 -1
  38. package/build/cjs/features/Pinning.js +0 -149
  39. package/build/cjs/features/Pinning.js.map +0 -1
  40. package/build/cjs/features/RowSelection.js +0 -526
  41. package/build/cjs/features/RowSelection.js.map +0 -1
  42. package/build/cjs/features/Sorting.js +0 -315
  43. package/build/cjs/features/Sorting.js.map +0 -1
  44. package/build/cjs/features/Visibility.js +0 -174
  45. package/build/cjs/features/Visibility.js.map +0 -1
  46. package/build/cjs/filterTypes.js +0 -172
  47. package/build/cjs/filterTypes.js.map +0 -1
  48. package/build/cjs/index.js +0 -44
  49. package/build/cjs/index.js.map +0 -1
  50. package/build/cjs/sortTypes.js +0 -122
  51. package/build/cjs/sortTypes.js.map +0 -1
  52. package/build/cjs/types.js +0 -22
  53. package/build/cjs/types.js.map +0 -1
  54. package/build/cjs/utils/columnFilterRowsFn.js +0 -131
  55. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  56. package/build/cjs/utils/expandRowsFn.js +0 -38
  57. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  58. package/build/cjs/utils/globalFilterRowsFn.js +0 -101
  59. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  60. package/build/cjs/utils/groupRowsFn.js +0 -155
  61. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  62. package/build/cjs/utils/paginateRowsFn.js +0 -44
  63. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  64. package/build/cjs/utils/sortRowsFn.js +0 -94
  65. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  66. package/build/cjs/utils.js +0 -167
  67. package/build/cjs/utils.js.map +0 -1
  68. package/build/types/aggregationTypes.d.ts +0 -22
  69. package/build/types/core.d.ts +0 -105
  70. package/build/types/createTable.d.ts +0 -42
  71. package/build/types/features/ColumnSizing.d.ts +0 -73
  72. package/build/types/features/Expanding.d.ts +0 -48
  73. package/build/types/features/Filters.d.ts +0 -90
  74. package/build/types/features/Grouping.d.ts +0 -83
  75. package/build/types/features/Headers.d.ts +0 -41
  76. package/build/types/features/Ordering.d.ts +0 -19
  77. package/build/types/features/Pagination.d.ts +0 -39
  78. package/build/types/features/Pinning.d.ts +0 -39
  79. package/build/types/features/RowSelection.d.ts +0 -58
  80. package/build/types/features/Sorting.d.ts +0 -79
  81. package/build/types/features/Visibility.d.ts +0 -47
  82. package/build/types/filterTypes.d.ts +0 -50
  83. package/build/types/sortTypes.d.ts +0 -18
  84. package/build/types/types.d.ts +0 -138
  85. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  86. package/build/types/utils/expandRowsFn.d.ts +0 -2
  87. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  88. package/build/types/utils/groupRowsFn.d.ts +0 -2
  89. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  90. package/build/types/utils/sortRowsFn.d.ts +0 -2
  91. package/build/types/utils.d.ts +0 -23
  92. package/src/aggregationTypes.ts +0 -115
  93. package/src/core.tsx +0 -763
  94. package/src/createTable.tsx +0 -186
  95. package/src/features/ColumnSizing.ts +0 -424
  96. package/src/features/Expanding.ts +0 -318
  97. package/src/features/Filters.ts +0 -560
  98. package/src/features/Grouping.ts +0 -361
  99. package/src/features/Headers.ts +0 -729
  100. package/src/features/Ordering.ts +0 -110
  101. package/src/features/Pagination.ts +0 -250
  102. package/src/features/Pinning.ts +0 -174
  103. package/src/features/RowSelection.ts +0 -651
  104. package/src/features/Sorting.ts +0 -453
  105. package/src/features/Visibility.ts +0 -238
  106. package/src/filterTypes.ts +0 -188
  107. package/src/sortTypes.ts +0 -147
  108. package/src/types.ts +0 -311
  109. package/src/utils/columnFilterRowsFn.ts +0 -113
  110. package/src/utils/expandRowsFn.ts +0 -30
  111. package/src/utils/globalFilterRowsFn.ts +0 -89
  112. package/src/utils/groupRowsFn.ts +0 -170
  113. package/src/utils/paginateRowsFn.ts +0 -28
  114. package/src/utils/sortRowsFn.ts +0 -95
  115. package/src/utils.tsx +0 -221
@@ -1,526 +0,0 @@
1
- /**
2
- * react-table
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
- var utils = require('../utils.js');
17
-
18
- //
19
- function getInitialState() {
20
- return {
21
- rowSelection: {}
22
- };
23
- }
24
- function getDefaultOptions(instance) {
25
- return {
26
- onRowSelectionChange: utils.makeStateUpdater('rowSelection', instance),
27
- autoResetRowSelection: true,
28
- enableRowSelection: true,
29
- enableMultiRowSelection: true,
30
- enableSubRowSelection: true // enableGroupingRowSelection: false,
31
- // isAdditiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.metaKey,
32
- // isInclusiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.shiftKey,
33
-
34
- };
35
- }
36
- function getInstance(instance) {
37
- var registered = false; // const pageRows = instance.getPageRows()
38
-
39
- return {
40
- _notifyRowSelectionReset: function _notifyRowSelectionReset() {
41
- if (!registered) {
42
- registered = true;
43
- return;
44
- }
45
-
46
- if (instance.options.autoResetAll === false) {
47
- return;
48
- }
49
-
50
- if (instance.options.autoResetAll === true || instance.options.autoResetRowSelection) {
51
- instance.resetRowSelection();
52
- }
53
- },
54
- setRowSelection: function setRowSelection(updater) {
55
- return instance.options.onRowSelectionChange == null ? void 0 : instance.options.onRowSelectionChange(updater, utils.functionalUpdate(updater, instance.getState().rowSelection));
56
- },
57
- resetRowSelection: function resetRowSelection() {
58
- var _getInitialState$rowS;
59
-
60
- return instance.setRowSelection((_getInitialState$rowS = getInitialState().rowSelection) != null ? _getInitialState$rowS : {});
61
- },
62
- toggleAllRowsSelected: function toggleAllRowsSelected(value) {
63
- instance.setRowSelection(function (old) {
64
- value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected(); // Only remove/add the rows that are visible on the screen
65
- // Leave all the other rows that are selected alone.
66
-
67
- var rowSelection = Object.assign({}, old);
68
- var preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
69
- // All of the rows are flat already, so it wouldn't be worth it
70
-
71
- if (value) {
72
- preGroupedFlatRows.forEach(function (row) {
73
- rowSelection[row.id] = true;
74
- });
75
- } else {
76
- preGroupedFlatRows.forEach(function (row) {
77
- delete rowSelection[row.id];
78
- });
79
- }
80
-
81
- return rowSelection;
82
- });
83
- },
84
- toggleAllPageRowsSelected: function toggleAllPageRowsSelected(value) {
85
- return instance.setRowSelection(function (old) {
86
- typeof value !== 'undefined' ? value : !instance.getIsAllPageRowsSelected();
87
-
88
- var rowSelection = _rollupPluginBabelHelpers["extends"]({}, old);
89
-
90
- instance.getRowModel().rows.forEach(function (row) {
91
- mutateRowIsSelected(rowSelection, row.id, value, instance);
92
- });
93
- return rowSelection;
94
- });
95
- },
96
- toggleRowSelected: function toggleRowSelected(rowId, value) {
97
- var row = instance.getRow(rowId);
98
- var isSelected = row.getIsSelected();
99
- instance.setRowSelection(function (old) {
100
- value = typeof value !== 'undefined' ? value : !isSelected;
101
-
102
- if (isSelected === value) {
103
- return old;
104
- }
105
-
106
- var selectedRowIds = _rollupPluginBabelHelpers["extends"]({}, old);
107
-
108
- mutateRowIsSelected(selectedRowIds, rowId, value, instance);
109
- return selectedRowIds;
110
- });
111
- },
112
- // addRowSelectionRange: rowId => {
113
- // const {
114
- // rows,
115
- // rowsById,
116
- // options: { selectGroupingRows, selectSubRows },
117
- // } = instance
118
- // const findSelectedRow = (rows: Row[]) => {
119
- // let found
120
- // rows.find(d => {
121
- // if (d.getIsSelected()) {
122
- // found = d
123
- // return true
124
- // }
125
- // const subFound = findSelectedRow(d.subRows || [])
126
- // if (subFound) {
127
- // found = subFound
128
- // return true
129
- // }
130
- // return false
131
- // })
132
- // return found
133
- // }
134
- // const firstRow = findSelectedRow(rows) || rows[0]
135
- // const lastRow = rowsById[rowId]
136
- // let include = false
137
- // const selectedRowIds = {}
138
- // const addRow = (row: Row) => {
139
- // mutateRowIsSelected(selectedRowIds, row.id, true, {
140
- // rowsById,
141
- // selectGroupingRows: selectGroupingRows!,
142
- // selectSubRows: selectSubRows!,
143
- // })
144
- // }
145
- // instance.rows.forEach(row => {
146
- // const isFirstRow = row.id === firstRow.id
147
- // const isLastRow = row.id === lastRow.id
148
- // if (isFirstRow || isLastRow) {
149
- // if (!include) {
150
- // include = true
151
- // } else if (include) {
152
- // addRow(row)
153
- // include = false
154
- // }
155
- // }
156
- // if (include) {
157
- // addRow(row)
158
- // }
159
- // })
160
- // instance.setRowSelection(selectedRowIds)
161
- // },
162
- getPreSelectedRowModel: function getPreSelectedRowModel() {
163
- return instance.getCoreRowModel();
164
- },
165
- getSelectedRowModel: utils.memo(function () {
166
- return [instance.getState().rowSelection, instance.getCoreRowModel()];
167
- }, function (rowSelection, rowModel) {
168
- if (!Object.keys(rowSelection).length) {
169
- return {
170
- rows: [],
171
- flatRows: [],
172
- rowsById: {}
173
- };
174
- }
175
-
176
- return selectRowsFn(instance, rowModel);
177
- }, {
178
- key: 'getSelectedRowModel',
179
- debug: function debug() {
180
- var _instance$options$deb;
181
-
182
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
183
- },
184
- onChange: function onChange() {
185
- return instance._notifyExpandedReset();
186
- }
187
- }),
188
- getFilteredSelectedRowModel: utils.memo(function () {
189
- return [instance.getState().rowSelection, instance.getGlobalFilteredRowModel()];
190
- }, function (rowSelection, rowModel) {
191
- if (!Object.keys(rowSelection).length) {
192
- return {
193
- rows: [],
194
- flatRows: [],
195
- rowsById: {}
196
- };
197
- }
198
-
199
- return selectRowsFn(instance, rowModel);
200
- }, {
201
- key: 'getFilteredSelectedRowModel',
202
- debug: function debug() {
203
- var _instance$options$deb2;
204
-
205
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
206
- },
207
- onChange: function onChange() {
208
- return instance._notifyExpandedReset();
209
- }
210
- }),
211
- getGroupedSelectedRowModel: utils.memo(function () {
212
- return [instance.getState().rowSelection, instance.getGroupedRowModel()];
213
- }, function (rowSelection, rowModel) {
214
- if (!Object.keys(rowSelection).length) {
215
- return {
216
- rows: [],
217
- flatRows: [],
218
- rowsById: {}
219
- };
220
- }
221
-
222
- return selectRowsFn(instance, rowModel);
223
- }, {
224
- key: 'getGroupedSelectedRowModel',
225
- debug: function debug() {
226
- var _instance$options$deb3;
227
-
228
- return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugTable;
229
- },
230
- onChange: function onChange() {
231
- return instance._notifyExpandedReset();
232
- }
233
- }),
234
- ///
235
- getRowIsSelected: function getRowIsSelected(rowId) {
236
- var _instance$getState = instance.getState(),
237
- rowSelection = _instance$getState.rowSelection;
238
-
239
- var row = instance.getRow(rowId);
240
-
241
- if (!row) {
242
- throw new Error();
243
- }
244
-
245
- return isRowSelected(row, rowSelection) === true;
246
- },
247
- getRowIsSomeSelected: function getRowIsSomeSelected(rowId) {
248
- var _instance$getState2 = instance.getState(),
249
- rowSelection = _instance$getState2.rowSelection;
250
-
251
- var row = instance.getRow(rowId);
252
-
253
- if (!row) {
254
- throw new Error();
255
- }
256
-
257
- return isRowSelected(row, rowSelection) === 'some';
258
- },
259
- getRowCanSelect: function getRowCanSelect(rowId) {
260
- var _instance$options$ena;
261
-
262
- var row = instance.getRow(rowId);
263
-
264
- if (!row) {
265
- throw new Error();
266
- }
267
-
268
- if (typeof instance.options.enableRowSelection === 'function') {
269
- return instance.options.enableRowSelection(row);
270
- }
271
-
272
- return (_instance$options$ena = instance.options.enableRowSelection) != null ? _instance$options$ena : true;
273
- },
274
- getRowCanSelectSubRows: function getRowCanSelectSubRows(rowId) {
275
- var _instance$options$ena2;
276
-
277
- var row = instance.getRow(rowId);
278
-
279
- if (!row) {
280
- throw new Error();
281
- }
282
-
283
- if (typeof instance.options.enableSubRowSelection === 'function') {
284
- return instance.options.enableSubRowSelection(row);
285
- }
286
-
287
- return (_instance$options$ena2 = instance.options.enableSubRowSelection) != null ? _instance$options$ena2 : true;
288
- },
289
- getRowCanMultiSelect: function getRowCanMultiSelect(rowId) {
290
- var _instance$options$ena3;
291
-
292
- var row = instance.getRow(rowId);
293
-
294
- if (!row) {
295
- throw new Error();
296
- }
297
-
298
- if (typeof instance.options.enableMultiRowSelection === 'function') {
299
- return instance.options.enableMultiRowSelection(row);
300
- }
301
-
302
- return (_instance$options$ena3 = instance.options.enableMultiRowSelection) != null ? _instance$options$ena3 : true;
303
- },
304
- // getGroupingRowCanSelect: rowId => {
305
- // const row = instance.getRow(rowId)
306
- // if (!row) {
307
- // throw new Error()
308
- // }
309
- // if (typeof instance.options.enableGroupingRowSelection === 'function') {
310
- // return instance.options.enableGroupingRowSelection(row)
311
- // }
312
- // return instance.options.enableGroupingRowSelection ?? false
313
- // },
314
- getIsAllRowsSelected: function getIsAllRowsSelected() {
315
- var preFilteredFlatRows = instance.getPreGlobalFilteredRowModel().flatRows;
316
-
317
- var _instance$getState3 = instance.getState(),
318
- rowSelection = _instance$getState3.rowSelection;
319
-
320
- var isAllRowsSelected = Boolean(preFilteredFlatRows.length && Object.keys(rowSelection).length);
321
-
322
- if (isAllRowsSelected) {
323
- if (preFilteredFlatRows.some(function (row) {
324
- return !rowSelection[row.id];
325
- })) {
326
- isAllRowsSelected = false;
327
- }
328
- }
329
-
330
- return isAllRowsSelected;
331
- },
332
- getIsAllPageRowsSelected: function getIsAllPageRowsSelected() {
333
- var paginationFlatRows = instance.getPaginationRowModel().flatRows;
334
-
335
- var _instance$getState4 = instance.getState(),
336
- rowSelection = _instance$getState4.rowSelection;
337
-
338
- var isAllPageRowsSelected = !!paginationFlatRows.length;
339
-
340
- if (isAllPageRowsSelected && paginationFlatRows.some(function (row) {
341
- return !rowSelection[row.id];
342
- })) {
343
- isAllPageRowsSelected = false;
344
- }
345
-
346
- return isAllPageRowsSelected;
347
- },
348
- getIsSomeRowsSelected: function getIsSomeRowsSelected() {
349
- var _instance$getState$ro;
350
-
351
- return !instance.getIsAllRowsSelected() && !!Object.keys((_instance$getState$ro = instance.getState().rowSelection) != null ? _instance$getState$ro : {}).length;
352
- },
353
- getIsSomePageRowsSelected: function getIsSomePageRowsSelected() {
354
- var paginationFlatRows = instance.getPaginationRowModel().flatRows;
355
- return instance.getIsAllPageRowsSelected() ? false : !!(paginationFlatRows != null && paginationFlatRows.length);
356
- },
357
- getToggleRowSelectedProps: function getToggleRowSelectedProps(rowId, userProps) {
358
- var row = instance.getRow(rowId);
359
- var isSelected = row.getIsSelected();
360
- var isSomeSelected = row.getIsSomeSelected();
361
- var canSelect = row.getCanSelect();
362
- var initialProps = {
363
- onChange: canSelect ? function (e) {
364
- row.toggleSelected(e.target.checked);
365
- } : undefined,
366
- checked: isSelected,
367
- title: 'Toggle Row Selected',
368
- indeterminate: isSomeSelected // onChange: forInput
369
- // ? (e: Event) => e.stopPropagation()
370
- // : (e: Event) => {
371
- // if (instance.options.isAdditiveSelectEvent(e)) {
372
- // row.toggleSelected()
373
- // } else if (instance.options.isInclusiveSelectEvent(e)) {
374
- // instance.addRowSelectionRange(row.id)
375
- // } else {
376
- // instance.setRowSelection({})
377
- // row.toggleSelected()
378
- // }
379
- // if (props.onClick) props.onClick(e)
380
- // },
381
-
382
- };
383
- return utils.propGetter(initialProps, userProps);
384
- },
385
- getToggleAllRowsSelectedProps: function getToggleAllRowsSelectedProps(userProps) {
386
- var isSomeRowsSelected = instance.getIsSomeRowsSelected();
387
- var isAllRowsSelected = instance.getIsAllRowsSelected();
388
- var initialProps = {
389
- onChange: function onChange(e) {
390
- instance.toggleAllRowsSelected(e.target.checked);
391
- },
392
- checked: isAllRowsSelected,
393
- title: 'Toggle All Rows Selected',
394
- indeterminate: isSomeRowsSelected
395
- };
396
- return utils.propGetter(initialProps, userProps);
397
- },
398
- getToggleAllPageRowsSelectedProps: function getToggleAllPageRowsSelectedProps(userProps) {
399
- var isSomePageRowsSelected = instance.getIsSomePageRowsSelected();
400
- var isAllPageRowsSelected = instance.getIsAllPageRowsSelected();
401
- var initialProps = {
402
- onChange: function onChange(e) {
403
- instance.toggleAllPageRowsSelected(e.target.checked);
404
- },
405
- checked: isAllPageRowsSelected,
406
- title: 'Toggle All Current Page Rows Selected',
407
- indeterminate: isSomePageRowsSelected
408
- };
409
- return utils.propGetter(initialProps, userProps);
410
- }
411
- };
412
- }
413
- function createRow(row, instance) {
414
- return {
415
- getIsSelected: function getIsSelected() {
416
- return instance.getRowIsSelected(row.id);
417
- },
418
- getIsSomeSelected: function getIsSomeSelected() {
419
- return instance.getRowIsSomeSelected(row.id);
420
- },
421
- toggleSelected: function toggleSelected(value) {
422
- return instance.toggleRowSelected(row.id, value);
423
- },
424
- getToggleSelectedProps: function getToggleSelectedProps(userProps) {
425
- return instance.getToggleRowSelectedProps(row.id, userProps);
426
- },
427
- getCanMultiSelect: function getCanMultiSelect() {
428
- return instance.getRowCanMultiSelect(row.id);
429
- },
430
- getCanSelect: function getCanSelect() {
431
- return instance.getRowCanSelect(row.id);
432
- }
433
- };
434
- }
435
-
436
- var mutateRowIsSelected = function mutateRowIsSelected(selectedRowIds, id, value, instance) {
437
- var _row$subRows;
438
-
439
- var row = instance.getRow(id);
440
- row.getIsGrouped(); // if ( // TODO: enforce grouping row selection rules
441
- // !isGrouped ||
442
- // (isGrouped && instance.options.enableGroupingRowSelection)
443
- // ) {
444
-
445
- if (value) {
446
- selectedRowIds[id] = true;
447
- } else {
448
- delete selectedRowIds[id];
449
- } // }
450
-
451
-
452
- if ((_row$subRows = row.subRows) != null && _row$subRows.length && instance.getRowCanSelectSubRows(row.id)) {
453
- row.subRows.forEach(function (row) {
454
- return mutateRowIsSelected(selectedRowIds, row.id, value, instance);
455
- });
456
- }
457
- };
458
-
459
- function selectRowsFn(instance, rowModel) {
460
- var rowSelection = instance.getState().rowSelection;
461
- var newSelectedFlatRows = [];
462
- var newSelectedRowsById = {}; // Filters top level and nested rows
463
-
464
- var recurseRows = function recurseRows(rows, depth) {
465
-
466
- return rows.map(function (row) {
467
- var _row$subRows2;
468
-
469
- var isSelected = isRowSelected(row, rowSelection) === true;
470
-
471
- if (isSelected) {
472
- newSelectedFlatRows.push(row);
473
- newSelectedRowsById[row.id] = row;
474
- }
475
-
476
- if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {
477
- row = _rollupPluginBabelHelpers["extends"]({}, row, {
478
- subRows: recurseRows(row.subRows)
479
- });
480
- }
481
-
482
- if (isSelected) {
483
- return row;
484
- }
485
- }).filter(Boolean);
486
- };
487
-
488
- return {
489
- rows: recurseRows(rowModel.rows),
490
- flatRows: newSelectedFlatRows,
491
- rowsById: newSelectedRowsById
492
- };
493
- }
494
- function isRowSelected(row, selection, instance) {
495
- if (selection[row.id]) {
496
- return true;
497
- }
498
-
499
- if (row.subRows && row.subRows.length) {
500
- var allChildrenSelected = true;
501
- var someSelected = false;
502
- row.subRows.forEach(function (subRow) {
503
- // Bail out early if we know both of these
504
- if (someSelected && !allChildrenSelected) {
505
- return;
506
- }
507
-
508
- if (isRowSelected(subRow, selection)) {
509
- someSelected = true;
510
- } else {
511
- allChildrenSelected = false;
512
- }
513
- });
514
- return allChildrenSelected ? true : someSelected ? 'some' : false;
515
- }
516
-
517
- return false;
518
- }
519
-
520
- exports.createRow = createRow;
521
- exports.getDefaultOptions = getDefaultOptions;
522
- exports.getInitialState = getInitialState;
523
- exports.getInstance = getInstance;
524
- exports.isRowSelected = isRowSelected;
525
- exports.selectRowsFn = selectRowsFn;
526
- //# sourceMappingURL=RowSelection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import React, { MouseEvent, TouchEvent } from 'react'\nimport {\n Getter,\n OnChangeFn,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n RowModel,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport type RowSelectionTableState = {\n rowSelection: RowSelectionState\n}\n\nexport type RowSelectionOptions<TGenerics extends PartialGenerics> = {\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n autoResetRowSelection?: boolean\n enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TGenerics>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: MouseEvent | TouchEvent) => boolean\n // isInclusiveSelectEvent?: (e: MouseEvent | TouchEvent) => 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\ntype ToggleRowSelectedProps = {\n onChange?: (e: MouseEvent | TouchEvent) => void\n checked?: boolean\n title?: string\n indeterminate?: boolean\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getCanSelect: () => boolean\n getCanMultiSelect: () => boolean\n toggleSelected: (value?: boolean) => void\n getToggleSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n}\n\nexport type RowSelectionInstance<TGenerics extends PartialGenerics> = {\n _notifyRowSelectionReset: () => void\n getToggleRowSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(\n rowId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n getToggleAllRowsSelectedProps: <\n TGetter extends Getter<ToggleRowSelectedProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n getToggleAllPageRowsSelectedProps: <\n TGetter extends Getter<ToggleRowSelectedProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n resetRowSelection: () => void\n toggleRowSelected: (rowId: string, value?: boolean) => void\n getRowCanSelect: (rowId: string) => boolean\n getRowCanSelectSubRows: (rowId: string) => boolean\n getRowCanMultiSelect: (rowId: string) => boolean\n // getGroupingRowCanSelect: (rowId: string) => boolean\n getRowIsSelected: (rowId: string) => boolean\n getRowIsSomeSelected: (rowId: string) => boolean\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 function getInitialState(): RowSelectionTableState {\n return {\n rowSelection: {},\n }\n}\n\nexport function getDefaultOptions<TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n): RowSelectionOptions<TGenerics> {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', instance),\n autoResetRowSelection: true,\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.shiftKey,\n }\n}\n\nexport function getInstance<TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n): RowSelectionInstance<TGenerics> {\n let registered = false\n\n // const pageRows = instance.getPageRows()\n\n return {\n _notifyRowSelectionReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetRowSelection\n ) {\n instance.resetRowSelection()\n }\n },\n setRowSelection: updater =>\n instance.options.onRowSelectionChange?.(\n updater,\n functionalUpdate(updater, instance.getState().rowSelection)\n ),\n resetRowSelection: () =>\n instance.setRowSelection(getInitialState().rowSelection ?? {}),\n toggleAllRowsSelected: value => {\n instance.setRowSelection(old => {\n value =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllRowsSelected()\n\n // Only remove/add the rows that are visible on the screen\n // Leave all the other rows that are selected alone.\n const rowSelection = Object.assign({}, 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 selectAll =\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, value, instance)\n })\n\n return rowSelection\n }),\n toggleRowSelected: (rowId, value) => {\n const row = instance.getRow(rowId)\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, rowId, value, instance)\n\n return selectedRowIds\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: 'getSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [\n instance.getState().rowSelection,\n instance.getGlobalFilteredRowModel(),\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: 'getFilteredSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getGroupedRowModel()],\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: 'getGroupedSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n ///\n\n getRowIsSelected: rowId => {\n const { rowSelection } = instance.getState()\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n return isRowSelected(row, rowSelection, instance) === true\n },\n\n getRowIsSomeSelected: rowId => {\n const { rowSelection } = instance.getState()\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n return isRowSelected(row, rowSelection, instance) === 'some'\n },\n\n getRowCanSelect: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableRowSelection === 'function') {\n return instance.options.enableRowSelection(row)\n }\n\n return instance.options.enableRowSelection ?? true\n },\n\n getRowCanSelectSubRows: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableSubRowSelection === 'function') {\n return instance.options.enableSubRowSelection(row)\n }\n\n return instance.options.enableSubRowSelection ?? true\n },\n\n getRowCanMultiSelect: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableMultiRowSelection === 'function') {\n return instance.options.enableMultiRowSelection(row)\n }\n\n return instance.options.enableMultiRowSelection ?? true\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 =\n instance.getPreGlobalFilteredRowModel().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?.length\n },\n\n getToggleRowSelectedProps: (rowId, userProps) => {\n const row = instance.getRow(rowId)\n\n const isSelected = row.getIsSelected()\n const isSomeSelected = row.getIsSomeSelected()\n const canSelect = row.getCanSelect()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: canSelect\n ? (e: MouseEvent | TouchEvent) => {\n row.toggleSelected((e.target as HTMLInputElement).checked)\n }\n : undefined,\n checked: isSelected,\n title: 'Toggle Row Selected',\n indeterminate: isSomeSelected,\n // onChange: forInput\n // ? (e: Event) => e.stopPropagation()\n // : (e: Event) => {\n // if (instance.options.isAdditiveSelectEvent(e)) {\n // row.toggleSelected()\n // } else if (instance.options.isInclusiveSelectEvent(e)) {\n // instance.addRowSelectionRange(row.id)\n // } else {\n // instance.setRowSelection({})\n // row.toggleSelected()\n // }\n\n // if (props.onClick) props.onClick(e)\n // },\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getToggleAllRowsSelectedProps: userProps => {\n const isSomeRowsSelected = instance.getIsSomeRowsSelected()\n const isAllRowsSelected = instance.getIsAllRowsSelected()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: (e: MouseEvent | TouchEvent) => {\n instance.toggleAllRowsSelected((e.target as HTMLInputElement).checked)\n },\n checked: isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n indeterminate: isSomeRowsSelected,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getToggleAllPageRowsSelectedProps: userProps => {\n const isSomePageRowsSelected = instance.getIsSomePageRowsSelected()\n const isAllPageRowsSelected = instance.getIsAllPageRowsSelected()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: (e: MouseEvent | TouchEvent) => {\n instance.toggleAllPageRowsSelected(\n (e.target as HTMLInputElement).checked\n )\n },\n checked: isAllPageRowsSelected,\n title: 'Toggle All Current Page Rows Selected',\n indeterminate: isSomePageRowsSelected,\n }\n\n return propGetter(initialProps, userProps)\n },\n }\n}\n\nexport function createRow<TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n): RowSelectionRow {\n return {\n getIsSelected: () => instance.getRowIsSelected(row.id),\n getIsSomeSelected: () => instance.getRowIsSomeSelected(row.id),\n toggleSelected: value => instance.toggleRowSelected(row.id, value),\n getToggleSelectedProps: userProps =>\n instance.getToggleRowSelectedProps(row.id, userProps),\n getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),\n getCanSelect: () => instance.getRowCanSelect(row.id),\n }\n}\n\nconst mutateRowIsSelected = <TGenerics extends PartialGenerics>(\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 && instance.getRowCanSelectSubRows(row.id)) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, instance)\n )\n }\n}\n\nexport function selectRowsFn<TGenerics extends PartialGenerics>(\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) => {\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 PartialGenerics>(\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":["getInitialState","rowSelection","getDefaultOptions","instance","onRowSelectionChange","makeStateUpdater","autoResetRowSelection","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","getInstance","registered","_notifyRowSelectionReset","options","autoResetAll","resetRowSelection","setRowSelection","updater","functionalUpdate","getState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","Object","assign","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","id","toggleAllPageRowsSelected","getIsAllPageRowsSelected","getRowModel","rows","mutateRowIsSelected","toggleRowSelected","rowId","getRow","isSelected","getIsSelected","selectedRowIds","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","memo","rowModel","keys","length","rowsById","selectRowsFn","key","debug","debugAll","debugTable","onChange","_notifyExpandedReset","getFilteredSelectedRowModel","getGlobalFilteredRowModel","getGroupedSelectedRowModel","getGroupedRowModel","getRowIsSelected","Error","isRowSelected","getRowIsSomeSelected","getRowCanSelect","getRowCanSelectSubRows","getRowCanMultiSelect","preFilteredFlatRows","getPreGlobalFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","getToggleRowSelectedProps","userProps","isSomeSelected","getIsSomeSelected","canSelect","getCanSelect","initialProps","e","toggleSelected","target","checked","undefined","title","indeterminate","propGetter","getToggleAllRowsSelectedProps","isSomeRowsSelected","getToggleAllPageRowsSelectedProps","isSomePageRowsSelected","createRow","getToggleSelectedProps","getCanMultiSelect","getIsGrouped","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}