@tanstack/table-core 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 (186) hide show
  1. package/build/cjs/aggregationFns.js +120 -0
  2. package/build/cjs/aggregationFns.js.map +1 -0
  3. package/build/cjs/core/cell.js +40 -0
  4. package/build/cjs/core/cell.js.map +1 -0
  5. package/build/cjs/core/column.js +88 -0
  6. package/build/cjs/core/column.js.map +1 -0
  7. package/build/cjs/core/headers.js +403 -0
  8. package/build/cjs/core/headers.js.map +1 -0
  9. package/build/cjs/core/instance.js +255 -0
  10. package/build/cjs/core/instance.js.map +1 -0
  11. package/build/cjs/core/row.js +77 -0
  12. package/build/cjs/core/row.js.map +1 -0
  13. package/build/cjs/createTable.js +36 -29
  14. package/build/cjs/createTable.js.map +1 -1
  15. package/build/cjs/features/ColumnSizing.js +157 -189
  16. package/build/cjs/features/ColumnSizing.js.map +1 -1
  17. package/build/cjs/features/Expanding.js +103 -155
  18. package/build/cjs/features/Expanding.js.map +1 -1
  19. package/build/cjs/features/Filters.js +155 -304
  20. package/build/cjs/features/Filters.js.map +1 -1
  21. package/build/cjs/features/Grouping.js +97 -157
  22. package/build/cjs/features/Grouping.js.map +1 -1
  23. package/build/cjs/features/Ordering.js +30 -41
  24. package/build/cjs/features/Ordering.js.map +1 -1
  25. package/build/cjs/features/Pagination.js +102 -105
  26. package/build/cjs/features/Pagination.js.map +1 -1
  27. package/build/cjs/features/Pinning.js +131 -89
  28. package/build/cjs/features/Pinning.js.map +1 -1
  29. package/build/cjs/features/RowSelection.js +138 -267
  30. package/build/cjs/features/RowSelection.js.map +1 -1
  31. package/build/cjs/features/Sorting.js +82 -167
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +69 -115
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +107 -0
  36. package/build/cjs/filterFns.js.map +1 -0
  37. package/build/cjs/index.js +36 -23
  38. package/build/cjs/index.js.map +1 -1
  39. package/build/cjs/sortingFns.js +124 -0
  40. package/build/cjs/sortingFns.js.map +1 -0
  41. package/build/cjs/utils/filterRowsUtils.js +117 -0
  42. package/build/cjs/utils/filterRowsUtils.js.map +1 -0
  43. package/build/cjs/utils/getCoreRowModel.js +79 -0
  44. package/build/cjs/utils/getCoreRowModel.js.map +1 -0
  45. package/build/cjs/utils/getExpandedRowModel.js +57 -0
  46. package/build/cjs/utils/getExpandedRowModel.js.map +1 -0
  47. package/build/cjs/utils/getFacetedMinMaxValues.js +54 -0
  48. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
  49. package/build/cjs/utils/getFacetedRowModel.js +50 -0
  50. package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
  51. package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
  52. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
  53. package/build/cjs/utils/getFilteredRowModel.js +139 -0
  54. package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
  55. package/build/cjs/utils/getGroupedRowModel.js +161 -0
  56. package/build/cjs/utils/getGroupedRowModel.js.map +1 -0
  57. package/build/cjs/utils/getPaginationRowModel.js +61 -0
  58. package/build/cjs/utils/getPaginationRowModel.js.map +1 -0
  59. package/build/cjs/utils/getSortedRowModel.js +110 -0
  60. package/build/cjs/utils/getSortedRowModel.js.map +1 -0
  61. package/build/cjs/utils.js +38 -107
  62. package/build/cjs/utils.js.map +1 -1
  63. package/build/esm/index.js +2976 -3853
  64. package/build/esm/index.js.map +1 -1
  65. package/build/stats-html.html +1 -1
  66. package/build/stats-react.json +586 -408
  67. package/build/types/aggregationFns.d.ts +13 -0
  68. package/build/types/core/cell.d.ts +9 -0
  69. package/build/types/core/column.d.ts +40 -0
  70. package/build/types/core/headers.d.ts +46 -0
  71. package/build/types/core/instance.d.ts +57 -0
  72. package/build/types/core/row.d.ts +15 -0
  73. package/build/types/createTable.d.ts +47 -26
  74. package/build/types/features/ColumnSizing.d.ts +32 -44
  75. package/build/types/features/Expanding.d.ts +15 -26
  76. package/build/types/features/Filters.d.ts +64 -63
  77. package/build/types/features/Grouping.d.ts +32 -46
  78. package/build/types/features/Ordering.d.ts +7 -10
  79. package/build/types/features/Pagination.d.ts +16 -15
  80. package/build/types/features/Pinning.d.ts +16 -17
  81. package/build/types/features/RowSelection.d.ts +13 -33
  82. package/build/types/features/Sorting.d.ts +25 -44
  83. package/build/types/features/Visibility.d.ts +16 -25
  84. package/build/types/filterFns.d.ts +13 -0
  85. package/build/types/index.d.ts +16 -10
  86. package/build/types/sortingFns.d.ts +11 -0
  87. package/build/types/types.d.ts +37 -122
  88. package/build/types/utils/filterRowsUtils.d.ts +4 -0
  89. package/build/types/utils/getCoreRowModel.d.ts +2 -0
  90. package/build/types/utils/getExpandedRowModel.d.ts +7 -0
  91. package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
  92. package/build/types/utils/getFacetedRowModel.d.ts +2 -0
  93. package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
  94. package/build/types/utils/getFilteredRowModel.d.ts +2 -0
  95. package/build/types/utils/getGroupedRowModel.d.ts +2 -0
  96. package/build/types/utils/getPaginationRowModel.d.ts +4 -0
  97. package/build/types/utils/getSortedRowModel.d.ts +2 -0
  98. package/build/types/utils.d.ts +7 -11
  99. package/build/umd/index.development.js +3024 -3893
  100. package/build/umd/index.development.js.map +1 -1
  101. package/build/umd/index.production.js +1 -1
  102. package/build/umd/index.production.js.map +1 -1
  103. package/package.json +9 -10
  104. package/src/.DS_Store +0 -0
  105. package/src/aggregationFns.ts +123 -0
  106. package/src/core/cell.ts +48 -0
  107. package/src/core/column.ts +147 -0
  108. package/src/core/headers.ts +575 -0
  109. package/src/core/instance.ts +361 -0
  110. package/src/core/row.ts +85 -0
  111. package/src/createTable.ts +188 -0
  112. package/src/features/ColumnSizing.ts +170 -185
  113. package/src/features/Expanding.ts +122 -194
  114. package/src/features/Filters.ts +301 -381
  115. package/src/features/Grouping.ts +160 -220
  116. package/src/features/Ordering.ts +24 -25
  117. package/src/features/Pagination.ts +90 -73
  118. package/src/features/Pinning.ts +186 -63
  119. package/src/features/RowSelection.ts +107 -245
  120. package/src/features/Sorting.ts +127 -225
  121. package/src/features/Visibility.ts +116 -132
  122. package/src/filterFns.ts +135 -0
  123. package/src/index.ts +29 -0
  124. package/src/{sortTypes.ts → sortingFns.ts} +63 -85
  125. package/src/types.ts +62 -168
  126. package/src/utils/filterRowsUtils.ts +112 -0
  127. package/src/utils/getCoreRowModel.ts +84 -0
  128. package/src/utils/getExpandedRowModel.ts +54 -0
  129. package/src/utils/getFacetedMinMaxValues.ts +40 -0
  130. package/src/utils/getFacetedRowModel.ts +50 -0
  131. package/src/utils/getFacetedUniqueValues.ts +37 -0
  132. package/src/utils/getFilteredRowModel.ts +159 -0
  133. package/src/utils/getGroupedRowModel.ts +175 -0
  134. package/src/utils/getPaginationRowModel.ts +48 -0
  135. package/src/utils/getSortedRowModel.ts +116 -0
  136. package/src/utils.ts +126 -0
  137. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  138. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  139. package/build/cjs/aggregationTypes.js +0 -130
  140. package/build/cjs/aggregationTypes.js.map +0 -1
  141. package/build/cjs/core.js +0 -545
  142. package/build/cjs/core.js.map +0 -1
  143. package/build/cjs/features/Headers.js +0 -630
  144. package/build/cjs/features/Headers.js.map +0 -1
  145. package/build/cjs/filterTypes.js +0 -172
  146. package/build/cjs/filterTypes.js.map +0 -1
  147. package/build/cjs/sortTypes.js +0 -122
  148. package/build/cjs/sortTypes.js.map +0 -1
  149. package/build/cjs/types.js +0 -22
  150. package/build/cjs/types.js.map +0 -1
  151. package/build/cjs/utils/columnFilterRowsFn.js +0 -131
  152. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  153. package/build/cjs/utils/expandRowsFn.js +0 -38
  154. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  155. package/build/cjs/utils/globalFilterRowsFn.js +0 -101
  156. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  157. package/build/cjs/utils/groupRowsFn.js +0 -155
  158. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  159. package/build/cjs/utils/paginateRowsFn.js +0 -44
  160. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  161. package/build/cjs/utils/sortRowsFn.js +0 -94
  162. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  163. package/build/types/aggregationTypes.d.ts +0 -22
  164. package/build/types/core.d.ts +0 -105
  165. package/build/types/features/Headers.d.ts +0 -43
  166. package/build/types/filterTypes.d.ts +0 -50
  167. package/build/types/sortTypes.d.ts +0 -18
  168. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  169. package/build/types/utils/expandRowsFn.d.ts +0 -2
  170. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  171. package/build/types/utils/groupRowsFn.d.ts +0 -2
  172. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  173. package/build/types/utils/sortRowsFn.d.ts +0 -2
  174. package/src/aggregationTypes.ts +0 -115
  175. package/src/core.tsx +0 -763
  176. package/src/createTable.tsx +0 -137
  177. package/src/features/Headers.ts +0 -747
  178. package/src/filterTypes.ts +0 -188
  179. package/src/index.tsx +0 -23
  180. package/src/utils/columnFilterRowsFn.ts +0 -113
  181. package/src/utils/expandRowsFn.ts +0 -30
  182. package/src/utils/globalFilterRowsFn.ts +0 -89
  183. package/src/utils/groupRowsFn.ts +0 -170
  184. package/src/utils/paginateRowsFn.ts +0 -28
  185. package/src/utils/sortRowsFn.ts +0 -95
  186. package/src/utils.tsx +0 -221
@@ -12,33 +12,33 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
15
  var utils = require('../utils.js');
17
16
 
18
17
  //
19
- var Expanding = {
20
- getInitialState: function getInitialState() {
18
+ const Expanding = {
19
+ getInitialState: state => {
21
20
  return {
22
- expanded: {}
21
+ expanded: {},
22
+ ...state
23
23
  };
24
24
  },
25
- getDefaultOptions: function getDefaultOptions(instance) {
25
+ getDefaultOptions: instance => {
26
26
  return {
27
27
  onExpandedChange: utils.makeStateUpdater('expanded', instance),
28
28
  autoResetExpanded: true,
29
- getIsRowExpanded: function getIsRowExpanded(row) {
30
- return !!(row == null ? void 0 : row.original).expanded;
31
- },
32
- expandSubRows: true,
33
29
  paginateExpandedRows: true
34
30
  };
35
31
  },
36
- getInstance: function getInstance(instance) {
37
- var registered = false;
32
+ createInstance: instance => {
33
+ let registered = false;
34
+ let queued = false;
38
35
  return {
39
- _notifyExpandedReset: function _notifyExpandedReset() {
36
+ _autoResetExpanded: () => {
40
37
  if (!registered) {
41
- registered = true;
38
+ instance._queue(() => {
39
+ registered = true;
40
+ });
41
+
42
42
  return;
43
43
  }
44
44
 
@@ -47,188 +47,136 @@ var Expanding = {
47
47
  }
48
48
 
49
49
  if (instance.options.autoResetAll === true || instance.options.autoResetExpanded) {
50
- instance.resetExpanded();
51
- }
52
- },
53
- setExpanded: function setExpanded(updater) {
54
- return instance.options.onExpandedChange == null ? void 0 : instance.options.onExpandedChange(updater, utils.functionalUpdate(updater, instance.getState().expanded));
55
- },
56
- toggleRowExpanded: function toggleRowExpanded(rowId, expanded) {
57
- if (!rowId) return;
58
- instance.setExpanded(function (old) {
59
- var _expanded;
60
-
61
- var exists = old === true ? true : !!(old != null && old[rowId]);
62
- var oldExpanded = {};
63
-
64
- if (old === true) {
65
- Object.keys(instance.getRowModel().rowsById).forEach(function (rowId) {
66
- oldExpanded[rowId] = true;
67
- });
68
- } else {
69
- oldExpanded = old;
70
- }
71
-
72
- expanded = (_expanded = expanded) != null ? _expanded : !exists;
73
-
74
- if (!exists && expanded) {
75
- var _extends2;
76
-
77
- return _rollupPluginBabelHelpers["extends"]({}, oldExpanded, (_extends2 = {}, _extends2[rowId] = true, _extends2));
78
- }
50
+ if (queued) return;
51
+ queued = true;
79
52
 
80
- if (exists && !expanded) {
81
- var _oldExpanded = oldExpanded;
82
- _oldExpanded[rowId];
83
- var rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_oldExpanded, [rowId].map(_rollupPluginBabelHelpers.toPropertyKey));
84
-
85
- return rest;
86
- }
87
-
88
- return old;
89
- });
53
+ instance._queue(() => {
54
+ instance.resetExpanded();
55
+ queued = false;
56
+ });
57
+ }
90
58
  },
91
- toggleAllRowsExpanded: function toggleAllRowsExpanded(expanded) {
59
+ setExpanded: updater => instance.options.onExpandedChange == null ? void 0 : instance.options.onExpandedChange(updater),
60
+ toggleAllRowsExpanded: expanded => {
92
61
  if (expanded != null ? expanded : !instance.getIsAllRowsExpanded()) {
93
62
  instance.setExpanded(true);
94
63
  } else {
95
64
  instance.setExpanded({});
96
65
  }
97
66
  },
98
- resetExpanded: function resetExpanded() {
67
+ resetExpanded: defaultState => {
99
68
  var _instance$initialStat, _instance$initialStat2;
100
69
 
101
- instance.setExpanded((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.expanded) != null ? _instance$initialStat : {});
70
+ instance.setExpanded(defaultState ? {} : (_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.expanded) != null ? _instance$initialStat : {});
102
71
  },
103
- getIsRowExpanded: function getIsRowExpanded(rowId) {
104
- var _instance$options$get;
105
-
106
- var row = instance.getRow(rowId);
107
-
108
- if (!row) {
109
- if (process.env.NODE_ENV !== 'production') {
110
- console.warn("[ReactTable] getIsRowExpanded: no row found with id " + rowId);
111
- }
112
-
113
- throw new Error();
114
- }
115
-
116
- var expanded = instance.getState().expanded;
117
- return !!((_instance$options$get = instance.options.getIsRowExpanded == null ? void 0 : instance.options.getIsRowExpanded(row)) != null ? _instance$options$get : expanded || (expanded == null ? void 0 : expanded[rowId]));
118
- },
119
- getRowCanExpand: function getRowCanExpand(rowId) {
120
- var _ref, _ref2, _instance$options$get2, _row$subRows;
121
-
122
- var row = instance.getRow(rowId);
123
-
124
- if (!row) {
125
- if (process.env.NODE_ENV !== 'production') {
126
- console.warn("[ReactTable] getRowCanExpand: no row found with id " + rowId);
127
- }
128
-
129
- throw new Error();
130
- }
131
-
132
- return (_ref = (_ref2 = (_instance$options$get2 = instance.options.getRowCanExpand == null ? void 0 : instance.options.getRowCanExpand(row)) != null ? _instance$options$get2 : instance.options.enableExpanded) != null ? _ref2 : instance.options.defaultCanExpand) != null ? _ref : !!((_row$subRows = row.subRows) != null && _row$subRows.length);
72
+ getCanSomeRowsExpand: () => {
73
+ return instance.getRowModel().flatRows.some(row => row.getCanExpand());
133
74
  },
134
- getToggleExpandedProps: function getToggleExpandedProps(rowId, userProps) {
135
- var row = instance.getRow(rowId);
136
-
137
- if (!row) {
138
- return;
139
- }
140
-
141
- var canExpand = instance.getRowCanExpand(rowId);
142
- var initialProps = {
143
- title: canExpand ? 'Toggle Expanded' : undefined,
144
- onClick: canExpand ? function (e) {
145
- e.persist();
146
- instance.toggleRowExpanded(rowId);
147
- } : undefined
75
+ getToggleAllRowsExpandedHandler: () => {
76
+ return e => {
77
+ e.persist == null ? void 0 : e.persist();
78
+ instance.toggleAllRowsExpanded();
148
79
  };
149
- return utils.propGetter(initialProps, userProps);
150
80
  },
151
- getToggleAllRowsExpandedProps: function getToggleAllRowsExpandedProps(userProps) {
152
- var initialProps = {
153
- title: 'Toggle All Expanded',
154
- onClick: function onClick(e) {
155
- e.persist();
156
- instance.toggleAllRowsExpanded();
157
- }
158
- };
159
- return utils.propGetter(initialProps, userProps);
81
+ getIsSomeRowsExpanded: () => {
82
+ const expanded = instance.getState().expanded;
83
+ return expanded === true || Object.values(expanded).some(Boolean);
160
84
  },
161
- getIsAllRowsExpanded: function getIsAllRowsExpanded() {
162
- var expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
85
+ getIsAllRowsExpanded: () => {
86
+ const expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
87
+
88
+ if (typeof expanded === 'boolean') {
89
+ return expanded === true;
90
+ }
163
91
 
164
- if (expanded === true) {
165
- return true;
92
+ if (!Object.keys(expanded).length) {
93
+ return false;
166
94
  } // If any row is not expanded, return false
167
95
 
168
96
 
169
- if (Object.keys(instance.getRowModel().rowsById).some(function (id) {
170
- return !instance.getIsRowExpanded(id);
171
- })) {
97
+ if (instance.getRowModel().flatRows.some(row => row.getIsExpanded())) {
172
98
  return false;
173
99
  } // They must all be expanded :shrug:
174
100
 
175
101
 
176
102
  return true;
177
103
  },
178
- getExpandedDepth: function getExpandedDepth() {
179
- var maxDepth = 0;
180
- var rowIds = instance.getState().expanded === true ? Object.keys(instance.getRowModel().rowsById) : Object.keys(instance.getState().expanded);
181
- rowIds.forEach(function (id) {
182
- var splitId = id.split('.');
104
+ getExpandedDepth: () => {
105
+ let maxDepth = 0;
106
+ const rowIds = instance.getState().expanded === true ? Object.keys(instance.getRowModel().rowsById) : Object.keys(instance.getState().expanded);
107
+ rowIds.forEach(id => {
108
+ const splitId = id.split('.');
183
109
  maxDepth = Math.max(maxDepth, splitId.length);
184
110
  });
185
111
  return maxDepth;
186
112
  },
187
- getExpandedRowModel: utils.memo(function () {
188
- return [instance.getState().expanded, instance.getGroupedRowModel(), instance.options.expandRowsFn, instance.options.paginateExpandedRows];
189
- }, function (expanded, rowModel, expandRowsFn, paginateExpandedRows) {
190
- if (!expandRowsFn || // Do not expand if rows are not included in pagination
191
- !paginateExpandedRows || !Object.keys(expanded != null ? expanded : {}).length) {
192
- return rowModel;
113
+ getPreExpandedRowModel: () => instance.getGroupedRowModel(),
114
+ getExpandedRowModel: () => {
115
+ if (!instance._getExpandedRowModel && instance.options.getExpandedRowModel) {
116
+ instance._getExpandedRowModel = instance.options.getExpandedRowModel(instance);
193
117
  }
194
118
 
195
- return expandRowsFn(instance, rowModel);
196
- }, {
197
- key: 'getExpandedRowModel',
198
- debug: function debug() {
199
- var _instance$options$deb;
200
-
201
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
202
- },
203
- onChange: function onChange() {
204
- instance._notifyPageIndexReset();
119
+ if (instance.options.manualExpanding || !instance._getExpandedRowModel) {
120
+ return instance.getPreExpandedRowModel();
205
121
  }
206
- }),
207
- getPreExpandedRowModel: function getPreExpandedRowModel() {
208
- return instance.getGroupedRowModel();
122
+
123
+ return instance._getExpandedRowModel();
209
124
  }
210
125
  };
211
126
  },
212
- createRow: function createRow(row, instance) {
127
+ createRow: (row, instance) => {
213
128
  return {
214
- toggleExpanded: function toggleExpanded(expanded) {
215
- return void instance.toggleRowExpanded(row.id, expanded);
129
+ toggleExpanded: expanded => {
130
+ instance.setExpanded(old => {
131
+ var _expanded;
132
+
133
+ const exists = old === true ? true : !!(old != null && old[row.id]);
134
+ let oldExpanded = {};
135
+
136
+ if (old === true) {
137
+ Object.keys(instance.getRowModel().rowsById).forEach(rowId => {
138
+ oldExpanded[rowId] = true;
139
+ });
140
+ } else {
141
+ oldExpanded = old;
142
+ }
143
+
144
+ expanded = (_expanded = expanded) != null ? _expanded : !exists;
145
+
146
+ if (!exists && expanded) {
147
+ return { ...oldExpanded,
148
+ [row.id]: true
149
+ };
150
+ }
151
+
152
+ if (exists && !expanded) {
153
+ const {
154
+ [row.id]: _,
155
+ ...rest
156
+ } = oldExpanded;
157
+ return rest;
158
+ }
159
+
160
+ return old;
161
+ });
216
162
  },
217
- getIsExpanded: function getIsExpanded() {
218
- return instance.getIsRowExpanded(row.id);
163
+ getIsExpanded: () => {
164
+ var _instance$options$get;
165
+
166
+ const expanded = instance.getState().expanded;
167
+ return !!((_instance$options$get = instance.options.getIsRowExpanded == null ? void 0 : instance.options.getIsRowExpanded(row)) != null ? _instance$options$get : expanded === true || (expanded == null ? void 0 : expanded[row.id]));
219
168
  },
220
- getCanExpand: function getCanExpand() {
221
- return row.subRows && !!row.subRows.length;
169
+ getCanExpand: () => {
170
+ var _instance$options$get2, _instance$options$ena, _row$subRows;
171
+
172
+ return ((_instance$options$get2 = instance.options.getRowCanExpand == null ? void 0 : instance.options.getRowCanExpand(row)) != null ? _instance$options$get2 : true) && ((_instance$options$ena = instance.options.enableExpanding) != null ? _instance$options$ena : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);
222
173
  },
223
- getToggleExpandedProps: function getToggleExpandedProps(userProps) {
224
- var initialProps = {
225
- title: 'Toggle Row Expanded',
226
- onClick: function onClick(e) {
227
- e.stopPropagation();
228
- instance.toggleRowExpanded(row.id);
229
- }
174
+ getToggleExpandedHandler: () => {
175
+ const canExpand = row.getCanExpand();
176
+ return () => {
177
+ if (!canExpand) return;
178
+ row.toggleExpanded();
230
179
  };
231
- return utils.propGetter(initialProps, userProps);
232
180
  }
233
181
  };
234
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Expanding.js","sources":["../../../src/features/Expanding.ts"],"sourcesContent":["import { MouseEvent, TouchEvent } from 'react'\nimport { RowModel } from '..'\nimport {\n Getter,\n OnChangeFn,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport type ExpandedTableState = {\n expanded: ExpandedState\n}\n\nexport type ExpandedRow = {\n toggleExpanded: (expanded?: boolean) => void\n getIsExpanded: () => boolean\n getCanExpand: () => boolean\n getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n}\n\nexport type ExpandedOptions<TGenerics extends PartialGenerics> = {\n onExpandedChange?: OnChangeFn<ExpandedState>\n autoResetExpanded?: boolean\n enableExpanded?: boolean\n expandRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n expandSubRows?: boolean\n defaultCanExpand?: boolean\n getIsRowExpanded?: (row: Row<TGenerics>) => boolean\n getRowCanExpand?: (row: Row<TGenerics>) => boolean\n paginateExpandedRows?: boolean\n}\n\nexport type ToggleExpandedProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type ExpandedInstance<TGenerics extends PartialGenerics> = {\n _notifyExpandedReset: () => void\n setExpanded: (updater: Updater<ExpandedState>) => void\n toggleRowExpanded: (rowId: string, expanded?: boolean) => void\n toggleAllRowsExpanded: (expanded?: boolean) => void\n resetExpanded: () => void\n getRowCanExpand: (rowId: string) => boolean\n getIsRowExpanded: (rowId: string) => boolean\n getToggleExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n rowId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n getToggleAllRowsExpandedProps: <TGetter extends Getter<ToggleExpandedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleExpandedProps, TGetter>\n getIsAllRowsExpanded: () => boolean\n getExpandedDepth: () => number\n getExpandedRowModel: () => RowModel<TGenerics>\n getPreExpandedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Expanding = {\n getInitialState: (): ExpandedTableState => {\n return {\n expanded: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedOptions<TGenerics> => {\n return {\n onExpandedChange: makeStateUpdater('expanded', instance),\n autoResetExpanded: true,\n getIsRowExpanded: row => !!(row?.original as { expanded?: any }).expanded,\n expandSubRows: true,\n paginateExpandedRows: true,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyExpandedReset: () => {\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.autoResetExpanded\n ) {\n instance.resetExpanded()\n }\n },\n setExpanded: updater =>\n instance.options.onExpandedChange?.(\n updater,\n functionalUpdate(updater, instance.getState().expanded)\n ),\n toggleRowExpanded: (rowId, expanded) => {\n if (!rowId) return\n\n instance.setExpanded(old => {\n const exists = old === true ? true : !!old?.[rowId]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(instance.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [rowId]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [rowId]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n },\n toggleAllRowsExpanded: expanded => {\n if (expanded ?? !instance.getIsAllRowsExpanded()) {\n instance.setExpanded(true)\n } else {\n instance.setExpanded({})\n }\n },\n resetExpanded: () => {\n instance.setExpanded(instance.initialState?.expanded ?? {})\n },\n getIsRowExpanded: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ReactTable] getIsRowExpanded: no row found with id ${rowId}`\n )\n }\n throw new Error()\n }\n\n const expanded = instance.getState().expanded\n\n return !!(\n instance.options.getIsRowExpanded?.(row) ??\n (expanded || expanded?.[rowId])\n )\n },\n getRowCanExpand: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[ReactTable] getRowCanExpand: no row found with id ${rowId}`\n )\n }\n throw new Error()\n }\n\n return (\n instance.options.getRowCanExpand?.(row) ??\n instance.options.enableExpanded ??\n instance.options.defaultCanExpand ??\n !!row.subRows?.length\n )\n },\n getToggleExpandedProps: (rowId, userProps) => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n return\n }\n\n const canExpand = instance.getRowCanExpand(rowId)\n\n const initialProps: ToggleExpandedProps = {\n title: canExpand ? 'Toggle Expanded' : undefined,\n onClick: canExpand\n ? (e: MouseEvent | TouchEvent) => {\n e.persist()\n instance.toggleRowExpanded(rowId)\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n getToggleAllRowsExpandedProps: userProps => {\n const initialProps: ToggleExpandedProps = {\n title: 'Toggle All Expanded',\n onClick: (e: MouseEvent | TouchEvent) => {\n e.persist()\n instance.toggleAllRowsExpanded()\n },\n }\n\n return propGetter(initialProps, userProps)\n },\n getIsAllRowsExpanded: () => {\n const expanded = instance.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (expanded === true) {\n return true\n }\n\n // If any row is not expanded, return false\n if (\n Object.keys(instance.getRowModel().rowsById).some(\n id => !instance.getIsRowExpanded(id)\n )\n ) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n },\n getExpandedDepth: () => {\n let maxDepth = 0\n\n const rowIds =\n instance.getState().expanded === true\n ? Object.keys(instance.getRowModel().rowsById)\n : Object.keys(instance.getState().expanded)\n\n rowIds.forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n },\n getExpandedRowModel: memo(\n () => [\n instance.getState().expanded,\n instance.getGroupedRowModel(),\n instance.options.expandRowsFn,\n instance.options.paginateExpandedRows,\n ],\n (expanded, rowModel, expandRowsFn, paginateExpandedRows) => {\n if (\n !expandRowsFn ||\n // Do not expand if rows are not included in pagination\n !paginateExpandedRows ||\n !Object.keys(expanded ?? {}).length\n ) {\n return rowModel\n }\n\n return expandRowsFn(instance, rowModel)\n },\n {\n key: 'getExpandedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifyPageIndexReset()\n },\n }\n ),\n\n getPreExpandedRowModel: () => instance.getGroupedRowModel(),\n }\n },\n\n createRow: <TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ExpandedRow => {\n return {\n toggleExpanded: expanded =>\n void instance.toggleRowExpanded(row.id, expanded),\n getIsExpanded: () => instance.getIsRowExpanded(row.id),\n getCanExpand: () => row.subRows && !!row.subRows.length,\n getToggleExpandedProps: userProps => {\n const initialProps: ToggleExpandedProps = {\n title: 'Toggle Row Expanded',\n onClick: (e: MouseEvent | TouchEvent) => {\n e.stopPropagation()\n instance.toggleRowExpanded(row.id)\n },\n }\n return propGetter(initialProps, userProps)\n },\n }\n },\n}\n"],"names":["Expanding","getInitialState","expanded","getDefaultOptions","instance","onExpandedChange","makeStateUpdater","autoResetExpanded","getIsRowExpanded","row","original","expandSubRows","paginateExpandedRows","getInstance","registered","_notifyExpandedReset","options","autoResetAll","resetExpanded","setExpanded","updater","functionalUpdate","getState","toggleRowExpanded","rowId","old","exists","oldExpanded","Object","keys","getRowModel","rowsById","forEach","rest","toggleAllRowsExpanded","getIsAllRowsExpanded","initialState","getRow","process","env","NODE_ENV","console","warn","Error","getRowCanExpand","enableExpanded","defaultCanExpand","subRows","length","getToggleExpandedProps","userProps","canExpand","initialProps","title","undefined","onClick","e","persist","propGetter","getToggleAllRowsExpandedProps","some","id","getExpandedDepth","maxDepth","rowIds","splitId","split","Math","max","getExpandedRowModel","memo","getGroupedRowModel","expandRowsFn","rowModel","key","debug","debugAll","debugTable","onChange","_notifyPageIndexReset","getPreExpandedRowModel","createRow","toggleExpanded","getIsExpanded","getCanExpand","stopPropagation"],"mappings":"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"}
1
+ {"version":3,"file":"Expanding.js","sources":["../../../src/features/Expanding.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/instance'\nimport {\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n} from '../types'\nimport { makeStateUpdater } from '../utils'\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport type ExpandedTableState = {\n expanded: ExpandedState\n}\n\nexport type ExpandedRow = {\n toggleExpanded: (expanded?: boolean) => void\n getIsExpanded: () => boolean\n getCanExpand: () => boolean\n getToggleExpandedHandler: () => () => void\n}\n\nexport type ExpandedOptions<TGenerics extends TableGenerics> = {\n manualExpanding?: boolean\n onExpandedChange?: OnChangeFn<ExpandedState>\n autoResetExpanded?: boolean\n enableExpanding?: boolean\n getExpandedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n getIsRowExpanded?: (row: Row<TGenerics>) => boolean\n getRowCanExpand?: (row: Row<TGenerics>) => boolean\n paginateExpandedRows?: boolean\n}\n\nexport type ExpandedInstance<TGenerics extends TableGenerics> = {\n _autoResetExpanded: () => void\n setExpanded: (updater: Updater<ExpandedState>) => void\n toggleAllRowsExpanded: (expanded?: boolean) => void\n resetExpanded: (defaultState?: boolean) => void\n getCanSomeRowsExpand: () => boolean\n getToggleAllRowsExpandedHandler: () => (event: unknown) => void\n getIsSomeRowsExpanded: () => boolean\n getIsAllRowsExpanded: () => boolean\n getExpandedDepth: () => number\n getExpandedRowModel: () => RowModel<TGenerics>\n _getExpandedRowModel?: () => RowModel<TGenerics>\n getPreExpandedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Expanding: TableFeature = {\n getInitialState: (state): ExpandedTableState => {\n return {\n expanded: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedOptions<TGenerics> => {\n return {\n onExpandedChange: makeStateUpdater('expanded', instance),\n autoResetExpanded: true,\n paginateExpandedRows: true,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedInstance<TGenerics> => {\n let registered = false\n let queued = false\n\n return {\n _autoResetExpanded: () => {\n if (!registered) {\n instance._queue(() => {\n registered = true\n })\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetExpanded\n ) {\n if (queued) return\n queued = true\n instance._queue(() => {\n instance.resetExpanded()\n queued = false\n })\n }\n },\n setExpanded: updater => instance.options.onExpandedChange?.(updater),\n toggleAllRowsExpanded: expanded => {\n if (expanded ?? !instance.getIsAllRowsExpanded()) {\n instance.setExpanded(true)\n } else {\n instance.setExpanded({})\n }\n },\n resetExpanded: defaultState => {\n instance.setExpanded(\n defaultState ? {} : instance.initialState?.expanded ?? {}\n )\n },\n getCanSomeRowsExpand: () => {\n return instance.getRowModel().flatRows.some(row => row.getCanExpand())\n },\n getToggleAllRowsExpandedHandler: () => {\n return (e: unknown) => {\n ;(e as any).persist?.()\n instance.toggleAllRowsExpanded()\n }\n },\n getIsSomeRowsExpanded: () => {\n const expanded = instance.getState().expanded\n return expanded === true || Object.values(expanded).some(Boolean)\n },\n getIsAllRowsExpanded: () => {\n const expanded = instance.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true\n }\n\n if (!Object.keys(expanded).length) {\n return false\n }\n\n // If any row is not expanded, return false\n if (instance.getRowModel().flatRows.some(row => row.getIsExpanded())) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n },\n getExpandedDepth: () => {\n let maxDepth = 0\n\n const rowIds =\n instance.getState().expanded === true\n ? Object.keys(instance.getRowModel().rowsById)\n : Object.keys(instance.getState().expanded)\n\n rowIds.forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n },\n getPreExpandedRowModel: () => instance.getGroupedRowModel(),\n getExpandedRowModel: () => {\n if (\n !instance._getExpandedRowModel &&\n instance.options.getExpandedRowModel\n ) {\n instance._getExpandedRowModel =\n instance.options.getExpandedRowModel(instance)\n }\n\n if (\n instance.options.manualExpanding ||\n !instance._getExpandedRowModel\n ) {\n return instance.getPreExpandedRowModel()\n }\n\n return instance._getExpandedRowModel()\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ExpandedRow => {\n return {\n toggleExpanded: expanded => {\n instance.setExpanded(old => {\n const exists = old === true ? true : !!old?.[row.id]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(instance.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [row.id]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n },\n getIsExpanded: () => {\n const expanded = instance.getState().expanded\n\n return !!(\n instance.options.getIsRowExpanded?.(row) ??\n (expanded === true || expanded?.[row.id])\n )\n },\n getCanExpand: () => {\n return (\n (instance.options.getRowCanExpand?.(row) ?? true) &&\n (instance.options.enableExpanding ?? true) &&\n !!row.subRows?.length\n )\n },\n getToggleExpandedHandler: () => {\n const canExpand = row.getCanExpand()\n\n return () => {\n if (!canExpand) return\n row.toggleExpanded()\n }\n },\n }\n },\n}\n"],"names":["Expanding","getInitialState","state","expanded","getDefaultOptions","instance","onExpandedChange","makeStateUpdater","autoResetExpanded","paginateExpandedRows","createInstance","registered","queued","_autoResetExpanded","_queue","options","autoResetAll","resetExpanded","setExpanded","updater","toggleAllRowsExpanded","getIsAllRowsExpanded","defaultState","initialState","getCanSomeRowsExpand","getRowModel","flatRows","some","row","getCanExpand","getToggleAllRowsExpandedHandler","e","persist","getIsSomeRowsExpanded","getState","Object","values","Boolean","keys","length","getIsExpanded","getExpandedDepth","maxDepth","rowIds","rowsById","forEach","id","splitId","split","Math","max","getPreExpandedRowModel","getGroupedRowModel","getExpandedRowModel","_getExpandedRowModel","manualExpanding","createRow","toggleExpanded","old","exists","oldExpanded","rowId","_","rest","getIsRowExpanded","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand"],"mappings":"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"}