@tanstack/table-core 8.0.0-alpha.64 → 8.0.0-alpha.68

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 (149) hide show
  1. package/build/cjs/aggregationFns.js +25 -37
  2. package/build/cjs/aggregationFns.js.map +1 -1
  3. package/build/cjs/core.js +167 -47
  4. package/build/cjs/core.js.map +1 -1
  5. package/build/cjs/createTable.js +24 -40
  6. package/build/cjs/createTable.js.map +1 -1
  7. package/build/cjs/features/Cells.js +29 -35
  8. package/build/cjs/features/Cells.js.map +1 -1
  9. package/build/cjs/features/ColumnSizing.js +126 -218
  10. package/build/cjs/features/ColumnSizing.js.map +1 -1
  11. package/build/cjs/features/Columns.js +59 -86
  12. package/build/cjs/features/Columns.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +78 -125
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +143 -218
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +70 -116
  18. package/build/cjs/features/Grouping.js.map +1 -1
  19. package/build/cjs/features/Headers.js +125 -205
  20. package/build/cjs/features/Headers.js.map +1 -1
  21. package/build/cjs/features/Ordering.js +31 -43
  22. package/build/cjs/features/Ordering.js.map +1 -1
  23. package/build/cjs/features/Pagination.js +64 -72
  24. package/build/cjs/features/Pagination.js.map +1 -1
  25. package/build/cjs/features/Pinning.js +96 -177
  26. package/build/cjs/features/Pinning.js.map +1 -1
  27. package/build/cjs/features/RowSelection.js +134 -205
  28. package/build/cjs/features/RowSelection.js.map +1 -1
  29. package/build/cjs/features/Rows.js +32 -22
  30. package/build/cjs/features/Rows.js.map +1 -1
  31. package/build/cjs/features/Sorting.js +62 -131
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +53 -120
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +52 -133
  36. package/build/cjs/filterFns.js.map +1 -1
  37. package/build/cjs/index.js +13 -13
  38. package/build/cjs/sortingFns.js +21 -21
  39. package/build/cjs/sortingFns.js.map +1 -1
  40. package/build/cjs/utils/filterRowsUtils.js +56 -41
  41. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  42. package/build/cjs/utils/getCoreRowModel.js +98 -0
  43. package/build/cjs/utils/getCoreRowModel.js.map +1 -0
  44. package/build/cjs/utils/getExpandedRowModel.js +18 -22
  45. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  46. package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
  47. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
  48. package/build/cjs/utils/getFacetedRowModel.js +50 -0
  49. package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
  50. package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
  51. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
  52. package/build/cjs/utils/getFilteredRowModel.js +130 -0
  53. package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
  54. package/build/cjs/utils/getGroupedRowModel.js +126 -136
  55. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  56. package/build/cjs/utils/getPaginationRowModel.js +39 -39
  57. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  58. package/build/cjs/utils/getSortedRowModel.js +112 -0
  59. package/build/cjs/utils/getSortedRowModel.js.map +1 -0
  60. package/build/cjs/utils.js +36 -211
  61. package/build/cjs/utils.js.map +1 -1
  62. package/build/esm/index.js +1970 -2956
  63. package/build/esm/index.js.map +1 -1
  64. package/build/stats-html.html +1 -1
  65. package/build/stats-react.json +390 -482
  66. package/build/types/core.d.ts +3 -5
  67. package/build/types/features/Cells.d.ts +1 -1
  68. package/build/types/features/ColumnSizing.d.ts +2 -13
  69. package/build/types/features/Columns.d.ts +1 -1
  70. package/build/types/features/Expanding.d.ts +1 -6
  71. package/build/types/features/Filters.d.ts +42 -30
  72. package/build/types/features/Grouping.d.ts +4 -10
  73. package/build/types/features/Pinning.d.ts +0 -4
  74. package/build/types/features/RowSelection.d.ts +1 -7
  75. package/build/types/features/Rows.d.ts +4 -3
  76. package/build/types/features/Sorting.d.ts +3 -14
  77. package/build/types/features/Visibility.d.ts +0 -4
  78. package/build/types/filterFns.d.ts +10 -52
  79. package/build/types/index.d.ts +6 -5
  80. package/build/types/types.d.ts +5 -17
  81. package/build/types/utils/filterRowsUtils.d.ts +3 -2
  82. package/build/types/utils/getCoreRowModel.d.ts +2 -0
  83. package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
  84. package/build/types/utils/getFacetedRowModel.d.ts +2 -0
  85. package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
  86. package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
  87. package/build/types/utils/getGroupedRowModel.d.ts +1 -1
  88. package/build/types/utils/getSortedRowModel.d.ts +2 -0
  89. package/build/types/utils.d.ts +2 -18
  90. package/build/umd/index.development.js +1948 -2935
  91. package/build/umd/index.development.js.map +1 -1
  92. package/build/umd/index.production.js +1 -1
  93. package/build/umd/index.production.js.map +1 -1
  94. package/package.json +2 -1
  95. package/src/core.ts +197 -46
  96. package/src/features/Cells.ts +10 -12
  97. package/src/features/ColumnSizing.ts +72 -129
  98. package/src/features/Columns.ts +16 -15
  99. package/src/features/Expanding.ts +58 -105
  100. package/src/features/Filters.ts +223 -226
  101. package/src/features/Grouping.ts +51 -79
  102. package/src/features/Headers.ts +18 -40
  103. package/src/features/Ordering.ts +1 -1
  104. package/src/features/Pagination.ts +1 -1
  105. package/src/features/Pinning.ts +73 -92
  106. package/src/features/RowSelection.ts +71 -120
  107. package/src/features/Rows.ts +21 -6
  108. package/src/features/Sorting.ts +39 -99
  109. package/src/features/Visibility.ts +21 -50
  110. package/src/filterFns.ts +74 -147
  111. package/src/index.ts +12 -5
  112. package/src/sortingFns.ts +11 -11
  113. package/src/types.ts +5 -18
  114. package/src/utils/filterRowsUtils.ts +59 -56
  115. package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
  116. package/src/utils/getExpandedRowModel.ts +2 -2
  117. package/src/utils/getFacetedMinMaxValues.ts +37 -0
  118. package/src/utils/getFacetedRowModel.ts +50 -0
  119. package/src/utils/getFacetedUniqueValues.ts +37 -0
  120. package/src/utils/getFilteredRowModel.ts +150 -0
  121. package/src/utils/getGroupedRowModel.ts +53 -62
  122. package/src/utils/getPaginationRowModel.ts +1 -1
  123. package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
  124. package/src/utils.ts +29 -239
  125. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  126. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  127. package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
  128. package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +0 -1
  129. package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
  130. package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
  131. package/build/cjs/utils/getCoreRowModelSync.js +0 -102
  132. package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
  133. package/build/cjs/utils/getGlobalFilteredRowModelSync.js +0 -91
  134. package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +0 -1
  135. package/build/cjs/utils/getSortedRowModelSync.js +0 -118
  136. package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
  137. package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +0 -4
  138. package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
  139. package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
  140. package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
  141. package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +0 -2
  142. package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
  143. package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
  144. package/src/utils/getColumnFilteredRowModelAsync.ts +0 -118
  145. package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
  146. package/src/utils/getCoreRowModelAsync.ts +0 -104
  147. package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
  148. package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
  149. package/src/utils/getSortedRowModelAsync.ts +0 -200
@@ -12,17 +12,17 @@
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(state) {
21
- return _rollupPluginBabelHelpers["extends"]({
22
- expanded: {}
23
- }, state);
18
+ const Expanding = {
19
+ getInitialState: state => {
20
+ return {
21
+ expanded: {},
22
+ ...state
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,
@@ -30,10 +30,10 @@ var Expanding = {
30
30
  paginateExpandedRows: true
31
31
  };
32
32
  },
33
- createInstance: function createInstance(instance) {
34
- var registered = false;
33
+ createInstance: instance => {
34
+ let registered = false;
35
35
  return {
36
- _autoResetExpanded: function _autoResetExpanded() {
36
+ _autoResetExpanded: () => {
37
37
  if (!registered) {
38
38
  registered = true;
39
39
  return;
@@ -47,145 +47,58 @@ var Expanding = {
47
47
  instance.resetExpanded();
48
48
  }
49
49
  },
50
- setExpanded: function setExpanded(updater) {
51
- return instance.options.onExpandedChange == null ? void 0 : instance.options.onExpandedChange(updater);
52
- },
53
- toggleRowExpanded: function toggleRowExpanded(rowId, expanded) {
54
- if (!rowId) return;
55
- instance.setExpanded(function (old) {
56
- var _expanded;
57
-
58
- var exists = old === true ? true : !!(old != null && old[rowId]);
59
- var oldExpanded = {};
60
-
61
- if (old === true) {
62
- Object.keys(instance.getRowModel().rowsById).forEach(function (rowId) {
63
- oldExpanded[rowId] = true;
64
- });
65
- } else {
66
- oldExpanded = old;
67
- }
68
-
69
- expanded = (_expanded = expanded) != null ? _expanded : !exists;
70
-
71
- if (!exists && expanded) {
72
- var _extends2;
73
-
74
- return _rollupPluginBabelHelpers["extends"]({}, oldExpanded, (_extends2 = {}, _extends2[rowId] = true, _extends2));
75
- }
76
-
77
- if (exists && !expanded) {
78
- var _oldExpanded = oldExpanded;
79
- _oldExpanded[rowId];
80
- var rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_oldExpanded, [rowId].map(_rollupPluginBabelHelpers.toPropertyKey));
81
-
82
- return rest;
83
- }
84
-
85
- return old;
86
- });
87
- },
88
- toggleAllRowsExpanded: function toggleAllRowsExpanded(expanded) {
50
+ setExpanded: updater => instance.options.onExpandedChange == null ? void 0 : instance.options.onExpandedChange(updater),
51
+ toggleAllRowsExpanded: expanded => {
89
52
  if (expanded != null ? expanded : !instance.getIsAllRowsExpanded()) {
90
53
  instance.setExpanded(true);
91
54
  } else {
92
55
  instance.setExpanded({});
93
56
  }
94
57
  },
95
- resetExpanded: function resetExpanded() {
58
+ resetExpanded: () => {
96
59
  var _instance$initialStat, _instance$initialStat2;
97
60
 
98
61
  instance.setExpanded((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.expanded) != null ? _instance$initialStat : {});
99
62
  },
100
- getIsRowExpanded: function getIsRowExpanded(rowId) {
101
- var _instance$options$get;
102
-
103
- var row = instance.getPreExpandedRowModel().rowsById[rowId];
104
-
105
- if (!row) {
106
- if (process.env.NODE_ENV !== 'production') {
107
- console.warn("[Table] getIsRowExpanded: no row found with id " + rowId);
108
- }
109
-
110
- throw new Error();
111
- }
112
-
113
- var expanded = instance.getState().expanded;
114
- 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[rowId]));
63
+ getCanSomeRowsExpand: () => {
64
+ return instance.getRowModel().flatRows.some(row => row.getCanExpand());
115
65
  },
116
- getRowCanExpand: function getRowCanExpand(rowId) {
117
- var _ref, _ref2, _instance$options$get2, _row$subRows;
118
-
119
- var row = instance.getRow(rowId);
120
-
121
- if (!row) {
122
- if (process.env.NODE_ENV !== 'production') {
123
- console.warn("[Table] getRowCanExpand: no row found with id " + rowId);
124
- }
125
-
126
- throw new Error();
127
- }
128
-
129
- 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);
130
- },
131
- getCanSomeRowsExpand: function getCanSomeRowsExpand() {
132
- return Object.keys(instance.getRowModel().rowsById).some(function (id) {
133
- return instance.getRowCanExpand(id);
134
- });
135
- },
136
- getToggleExpandedHandler: function getToggleExpandedHandler(rowId) {
137
- var row = instance.getRow(rowId);
138
-
139
- if (!row) {
140
- return;
141
- }
142
-
143
- var canExpand = instance.getRowCanExpand(rowId);
144
- return function () {
145
- if (!canExpand) return;
146
- instance.toggleRowExpanded(rowId);
147
- };
148
- },
149
- getToggleAllRowsExpandedHandler: function getToggleAllRowsExpandedHandler() {
150
- return function (e) {
66
+ getToggleAllRowsExpandedHandler: () => {
67
+ return e => {
151
68
  e.persist == null ? void 0 : e.persist();
152
69
  instance.toggleAllRowsExpanded();
153
70
  };
154
71
  },
155
- getIsSomeRowsExpanded: function getIsSomeRowsExpanded() {
156
- var expanded = instance.getState().expanded;
72
+ getIsSomeRowsExpanded: () => {
73
+ const expanded = instance.getState().expanded;
157
74
  return expanded === true || Object.values(expanded).some(Boolean);
158
75
  },
159
- getIsAllRowsExpanded: function getIsAllRowsExpanded() {
160
- var expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
76
+ getIsAllRowsExpanded: () => {
77
+ const expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
161
78
 
162
79
  if (expanded === true) {
163
80
  return true;
164
81
  } // If any row is not expanded, return false
165
82
 
166
83
 
167
- if (Object.keys(instance.getRowModel().rowsById).some(function (id) {
168
- return !instance.getIsRowExpanded(id);
169
- })) {
84
+ if (instance.getRowModel().flatRows.some(row => row.getIsExpanded())) {
170
85
  return false;
171
86
  } // They must all be expanded :shrug:
172
87
 
173
88
 
174
89
  return true;
175
90
  },
176
- getExpandedDepth: function getExpandedDepth() {
177
- var maxDepth = 0;
178
- var rowIds = instance.getState().expanded === true ? Object.keys(instance.getRowModel().rowsById) : Object.keys(instance.getState().expanded);
179
- rowIds.forEach(function (id) {
180
- var splitId = id.split('.');
91
+ getExpandedDepth: () => {
92
+ let maxDepth = 0;
93
+ const rowIds = instance.getState().expanded === true ? Object.keys(instance.getRowModel().rowsById) : Object.keys(instance.getState().expanded);
94
+ rowIds.forEach(id => {
95
+ const splitId = id.split('.');
181
96
  maxDepth = Math.max(maxDepth, splitId.length);
182
97
  });
183
98
  return maxDepth;
184
99
  },
185
- getPreExpandedRowModel: function getPreExpandedRowModel() {
186
- return instance.getGroupedRowModel();
187
- },
188
- getExpandedRowModel: function getExpandedRowModel() {
100
+ getPreExpandedRowModel: () => instance.getGroupedRowModel(),
101
+ getExpandedRowModel: () => {
189
102
  if (!instance._getExpandedRowModel && instance.options.getExpandedRowModel) {
190
103
  instance._getExpandedRowModel = instance.options.getExpandedRowModel(instance);
191
104
  }
@@ -198,19 +111,59 @@ var Expanding = {
198
111
  }
199
112
  };
200
113
  },
201
- createRow: function createRow(row, instance) {
114
+ createRow: (row, instance) => {
202
115
  return {
203
- toggleExpanded: function toggleExpanded(expanded) {
204
- return void instance.toggleRowExpanded(row.id, expanded);
116
+ toggleExpanded: expanded => {
117
+ instance.setExpanded(old => {
118
+ var _expanded;
119
+
120
+ const exists = old === true ? true : !!(old != null && old[row.id]);
121
+ let oldExpanded = {};
122
+
123
+ if (old === true) {
124
+ Object.keys(instance.getRowModel().rowsById).forEach(rowId => {
125
+ oldExpanded[rowId] = true;
126
+ });
127
+ } else {
128
+ oldExpanded = old;
129
+ }
130
+
131
+ expanded = (_expanded = expanded) != null ? _expanded : !exists;
132
+
133
+ if (!exists && expanded) {
134
+ return { ...oldExpanded,
135
+ [row.id]: true
136
+ };
137
+ }
138
+
139
+ if (exists && !expanded) {
140
+ const {
141
+ [row.id]: _,
142
+ ...rest
143
+ } = oldExpanded;
144
+ return rest;
145
+ }
146
+
147
+ return old;
148
+ });
205
149
  },
206
- getIsExpanded: function getIsExpanded() {
207
- return instance.getIsRowExpanded(row.id);
150
+ getIsExpanded: () => {
151
+ var _instance$options$get;
152
+
153
+ const expanded = instance.getState().expanded;
154
+ 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]));
208
155
  },
209
- getCanExpand: function getCanExpand() {
210
- return row.subRows && !!row.subRows.length;
156
+ getCanExpand: () => {
157
+ var _instance$options$get2, _instance$options$ena, _row$subRows;
158
+
159
+ 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);
211
160
  },
212
- getToggleExpandedHandler: function getToggleExpandedHandler() {
213
- return instance.getToggleExpandedHandler(row.id);
161
+ getToggleExpandedHandler: () => {
162
+ const canExpand = row.getCanExpand();
163
+ return () => {
164
+ if (!canExpand) return;
165
+ row.toggleExpanded();
166
+ };
214
167
  }
215
168
  };
216
169
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Expanding.js","sources":["../../../src/features/Expanding.ts"],"sourcesContent":["import { RowModel } from '..'\nimport {\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n TableFeature,\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 enableExpanded?: boolean\n getExpandedRowModel?: (\n instance: TableInstance<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 ExpandedInstance<TGenerics extends TableGenerics> = {\n _autoResetExpanded: () => 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 getCanSomeRowsExpand: () => boolean\n getIsRowExpanded: (rowId: string) => boolean\n getToggleExpandedHandler: (rowId: string) => undefined | (() => void)\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 expandSubRows: true,\n paginateExpandedRows: true,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedInstance<TGenerics> => {\n let registered = false\n\n return {\n _autoResetExpanded: () => {\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 => instance.options.onExpandedChange?.(updater),\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.getPreExpandedRowModel().rowsById[rowId]\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[Table] 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 === true || 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 `[Table] 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 getCanSomeRowsExpand: () => {\n return Object.keys(instance.getRowModel().rowsById).some(id =>\n instance.getRowCanExpand(id)\n )\n },\n getToggleExpandedHandler: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n return\n }\n\n const canExpand = instance.getRowCanExpand(rowId)\n\n return () => {\n if (!canExpand) return\n instance.toggleRowExpanded(rowId)\n }\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 (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 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 void instance.toggleRowExpanded(row.id, expanded),\n getIsExpanded: () => instance.getIsRowExpanded(row.id),\n getCanExpand: () => row.subRows && !!row.subRows.length,\n getToggleExpandedHandler: () =>\n instance.getToggleExpandedHandler(row.id)!,\n }\n },\n}\n"],"names":["Expanding","getInitialState","state","_extends","expanded","getDefaultOptions","instance","onExpandedChange","makeStateUpdater","autoResetExpanded","expandSubRows","paginateExpandedRows","createInstance","registered","_autoResetExpanded","options","autoResetAll","resetExpanded","setExpanded","updater","toggleRowExpanded","rowId","old","exists","oldExpanded","Object","keys","getRowModel","rowsById","forEach","rest","_toPropertyKey","toggleAllRowsExpanded","getIsAllRowsExpanded","initialState","getIsRowExpanded","row","getPreExpandedRowModel","process","env","NODE_ENV","console","warn","Error","getState","getRowCanExpand","getRow","enableExpanded","defaultCanExpand","subRows","length","getCanSomeRowsExpand","some","id","getToggleExpandedHandler","canExpand","getToggleAllRowsExpandedHandler","e","persist","getIsSomeRowsExpanded","values","Boolean","getExpandedDepth","maxDepth","rowIds","splitId","split","Math","max","getGroupedRowModel","getExpandedRowModel","_getExpandedRowModel","manualExpanding","createRow","toggleExpanded","getIsExpanded","getCanExpand"],"mappings":"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"}
1
+ {"version":3,"file":"Expanding.js","sources":["../../../src/features/Expanding.ts"],"sourcesContent":["import { RowModel } from '..'\nimport {\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n TableFeature,\n} from '../types'\nimport { makeStateUpdater } from '../utils'\nimport { Rows } from './Rows'\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 expandSubRows?: boolean\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: () => 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 expandSubRows: true,\n paginateExpandedRows: true,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): ExpandedInstance<TGenerics> => {\n let registered = false\n\n return {\n _autoResetExpanded: () => {\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 => 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: () => {\n instance.setExpanded(instance.initialState?.expanded ?? {})\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 (expanded === true) {\n return true\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","expandSubRows","paginateExpandedRows","createInstance","registered","_autoResetExpanded","options","autoResetAll","resetExpanded","setExpanded","updater","toggleAllRowsExpanded","getIsAllRowsExpanded","initialState","getCanSomeRowsExpand","getRowModel","flatRows","some","row","getCanExpand","getToggleAllRowsExpandedHandler","e","persist","getIsSomeRowsExpanded","getState","Object","values","Boolean","getIsExpanded","getExpandedDepth","maxDepth","rowIds","keys","rowsById","forEach","id","splitId","split","Math","max","length","getPreExpandedRowModel","getGroupedRowModel","getExpandedRowModel","_getExpandedRowModel","manualExpanding","createRow","toggleExpanded","old","exists","oldExpanded","rowId","_","rest","getIsRowExpanded","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand"],"mappings":"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"}