@tanstack/table-core 8.0.0-alpha.10

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 (112) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +112 -0
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/build/cjs/aggregationTypes.js +130 -0
  4. package/build/cjs/aggregationTypes.js.map +1 -0
  5. package/build/cjs/core.js +545 -0
  6. package/build/cjs/core.js.map +1 -0
  7. package/build/cjs/createTable.js +65 -0
  8. package/build/cjs/createTable.js.map +1 -0
  9. package/build/cjs/features/ColumnSizing.js +316 -0
  10. package/build/cjs/features/ColumnSizing.js.map +1 -0
  11. package/build/cjs/features/Expanding.js +238 -0
  12. package/build/cjs/features/Expanding.js.map +1 -0
  13. package/build/cjs/features/Filters.js +413 -0
  14. package/build/cjs/features/Filters.js.map +1 -0
  15. package/build/cjs/features/Grouping.js +227 -0
  16. package/build/cjs/features/Grouping.js.map +1 -0
  17. package/build/cjs/features/Headers.js +630 -0
  18. package/build/cjs/features/Headers.js.map +1 -0
  19. package/build/cjs/features/Ordering.js +86 -0
  20. package/build/cjs/features/Ordering.js.map +1 -0
  21. package/build/cjs/features/Pagination.js +193 -0
  22. package/build/cjs/features/Pagination.js.map +1 -0
  23. package/build/cjs/features/Pinning.js +148 -0
  24. package/build/cjs/features/Pinning.js.map +1 -0
  25. package/build/cjs/features/RowSelection.js +525 -0
  26. package/build/cjs/features/RowSelection.js.map +1 -0
  27. package/build/cjs/features/Sorting.js +313 -0
  28. package/build/cjs/features/Sorting.js.map +1 -0
  29. package/build/cjs/features/Visibility.js +172 -0
  30. package/build/cjs/features/Visibility.js.map +1 -0
  31. package/build/cjs/filterTypes.js +172 -0
  32. package/build/cjs/filterTypes.js.map +1 -0
  33. package/build/cjs/index.js +75 -0
  34. package/build/cjs/index.js.map +1 -0
  35. package/build/cjs/sortTypes.js +122 -0
  36. package/build/cjs/sortTypes.js.map +1 -0
  37. package/build/cjs/types.js +22 -0
  38. package/build/cjs/types.js.map +1 -0
  39. package/build/cjs/utils/columnFilterRowsFn.js +131 -0
  40. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -0
  41. package/build/cjs/utils/expandRowsFn.js +38 -0
  42. package/build/cjs/utils/expandRowsFn.js.map +1 -0
  43. package/build/cjs/utils/globalFilterRowsFn.js +101 -0
  44. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -0
  45. package/build/cjs/utils/groupRowsFn.js +155 -0
  46. package/build/cjs/utils/groupRowsFn.js.map +1 -0
  47. package/build/cjs/utils/paginateRowsFn.js +44 -0
  48. package/build/cjs/utils/paginateRowsFn.js.map +1 -0
  49. package/build/cjs/utils/sortRowsFn.js +94 -0
  50. package/build/cjs/utils/sortRowsFn.js.map +1 -0
  51. package/build/cjs/utils.js +167 -0
  52. package/build/cjs/utils.js.map +1 -0
  53. package/build/esm/index.js +4689 -0
  54. package/build/esm/index.js.map +1 -0
  55. package/build/stats-html.html +2689 -0
  56. package/build/stats-react.json +939 -0
  57. package/build/types/aggregationTypes.d.ts +22 -0
  58. package/build/types/core.d.ts +105 -0
  59. package/build/types/createTable.d.ts +42 -0
  60. package/build/types/features/ColumnSizing.d.ts +75 -0
  61. package/build/types/features/Expanding.d.ts +50 -0
  62. package/build/types/features/Filters.d.ts +92 -0
  63. package/build/types/features/Grouping.d.ts +85 -0
  64. package/build/types/features/Headers.d.ts +43 -0
  65. package/build/types/features/Ordering.d.ts +21 -0
  66. package/build/types/features/Pagination.d.ts +41 -0
  67. package/build/types/features/Pinning.d.ts +41 -0
  68. package/build/types/features/RowSelection.d.ts +60 -0
  69. package/build/types/features/Sorting.d.ts +81 -0
  70. package/build/types/features/Visibility.d.ts +49 -0
  71. package/build/types/filterTypes.d.ts +50 -0
  72. package/build/types/index.d.ts +23 -0
  73. package/build/types/sortTypes.d.ts +18 -0
  74. package/build/types/types.d.ts +138 -0
  75. package/build/types/utils/columnFilterRowsFn.d.ts +2 -0
  76. package/build/types/utils/expandRowsFn.d.ts +2 -0
  77. package/build/types/utils/globalFilterRowsFn.d.ts +2 -0
  78. package/build/types/utils/groupRowsFn.d.ts +2 -0
  79. package/build/types/utils/paginateRowsFn.d.ts +2 -0
  80. package/build/types/utils/sortRowsFn.d.ts +2 -0
  81. package/build/types/utils.d.ts +23 -0
  82. package/build/umd/index.development.js +4728 -0
  83. package/build/umd/index.development.js.map +1 -0
  84. package/build/umd/index.production.js +12 -0
  85. package/build/umd/index.production.js.map +1 -0
  86. package/package.json +40 -0
  87. package/src/.DS_Store +0 -0
  88. package/src/aggregationTypes.ts +115 -0
  89. package/src/core.tsx +763 -0
  90. package/src/createTable.tsx +137 -0
  91. package/src/features/ColumnSizing.ts +432 -0
  92. package/src/features/Expanding.ts +320 -0
  93. package/src/features/Filters.ts +567 -0
  94. package/src/features/Grouping.ts +363 -0
  95. package/src/features/Headers.ts +747 -0
  96. package/src/features/Ordering.ts +112 -0
  97. package/src/features/Pagination.ts +252 -0
  98. package/src/features/Pinning.ts +177 -0
  99. package/src/features/RowSelection.ts +655 -0
  100. package/src/features/Sorting.ts +460 -0
  101. package/src/features/Visibility.ts +242 -0
  102. package/src/filterTypes.ts +188 -0
  103. package/src/index.tsx +23 -0
  104. package/src/sortTypes.ts +147 -0
  105. package/src/types.ts +311 -0
  106. package/src/utils/columnFilterRowsFn.ts +113 -0
  107. package/src/utils/expandRowsFn.ts +30 -0
  108. package/src/utils/globalFilterRowsFn.ts +89 -0
  109. package/src/utils/groupRowsFn.ts +170 -0
  110. package/src/utils/paginateRowsFn.ts +28 -0
  111. package/src/utils/sortRowsFn.ts +95 -0
  112. package/src/utils.tsx +221 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * table-core
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
+
17
+ function createTableFactory(opts) {
18
+ return function () {
19
+ return _createTable(undefined, undefined, opts);
20
+ };
21
+ }
22
+ function createTable() {
23
+ return _createTable();
24
+ }
25
+
26
+ function _createTable(_, __, __options) {
27
+ return {
28
+ __options: __options || {},
29
+ createColumns: function createColumns(columns) {
30
+ return columns;
31
+ },
32
+ createDisplayColumn: function createDisplayColumn(column) {
33
+ return column;
34
+ },
35
+ createGroup: function createGroup(column) {
36
+ return column;
37
+ },
38
+ createDataColumn: function createDataColumn(accessor, column) {
39
+ column = _rollupPluginBabelHelpers["extends"]({}, column, {
40
+ id: column.id
41
+ });
42
+
43
+ if (typeof accessor === 'string') {
44
+ var _column$id;
45
+
46
+ return _rollupPluginBabelHelpers["extends"]({}, column, {
47
+ id: (_column$id = column.id) != null ? _column$id : accessor,
48
+ accessorKey: accessor
49
+ });
50
+ }
51
+
52
+ if (typeof accessor === 'function') {
53
+ return _rollupPluginBabelHelpers["extends"]({}, column, {
54
+ accessorFn: accessor
55
+ });
56
+ }
57
+
58
+ throw new Error('Invalid accessor');
59
+ }
60
+ };
61
+ }
62
+
63
+ exports.createTable = createTable;
64
+ exports.createTableFactory = createTableFactory;
65
+ //# sourceMappingURL=createTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTable.js","sources":["../../src/createTable.tsx"],"sourcesContent":["import { CustomFilterTypes } from './features/Filters'\nimport { CustomAggregationTypes } from './features/Grouping'\nimport { CustomSortingTypes } from './features/Sorting'\nimport {\n ColumnDef,\n AccessorFn,\n DefaultGenerics,\n PartialGenerics,\n _NonGenerated,\n} from './types'\nimport { Overwrite, PartialKeys } from './utils'\n\nexport type CreatTableFactory<TGenerics extends Partial<DefaultGenerics>> = <\n TRow\n>() => TableFactory<Overwrite<TGenerics, { Row: TRow }>>\n\nexport type CreateTableFactoryOptions<\n TFilterFns extends CustomFilterTypes<any>,\n TSortingFns extends CustomSortingTypes<any>,\n TAggregationFns extends CustomAggregationTypes<any>\n> = {\n filterFns?: TFilterFns\n sortingFns?: TSortingFns\n aggregationFns?: TAggregationFns\n}\n\nexport function createTableFactory<\n TFilterFns extends CustomFilterTypes<any>,\n TSortingFns extends CustomSortingTypes<any>,\n TAggregationFns extends CustomAggregationTypes<any>\n>(\n opts: CreateTableFactoryOptions<TFilterFns, TSortingFns, TAggregationFns>\n): CreatTableFactory<\n Overwrite<\n PartialGenerics,\n {\n FilterFns: TFilterFns\n SortingFns: TSortingFns\n AggregationFns: TAggregationFns\n }\n >\n> {\n return () => _createTable(undefined, undefined, opts)\n}\n\nexport type TableFactory<TGenerics extends Partial<DefaultGenerics>> = {\n __options: CreateTableFactoryOptions<any, any, any>\n createColumns: (columns: ColumnDef<TGenerics>[]) => ColumnDef<TGenerics>[]\n createGroup: (\n column: Overwrite<\n | Overwrite<\n _NonGenerated<ColumnDef<TGenerics>>,\n {\n header: string\n id?: string\n }\n >\n | Overwrite<\n _NonGenerated<ColumnDef<TGenerics>>,\n {\n id: string\n header?: string | ColumnDef<TGenerics>['header']\n }\n >,\n { accessorFn?: never; accessorKey?: never }\n >\n ) => ColumnDef<TGenerics>\n createDisplayColumn: (\n column: PartialKeys<\n _NonGenerated<ColumnDef<TGenerics>>,\n 'accessorFn' | 'accessorKey'\n >\n ) => ColumnDef<TGenerics>\n createDataColumn: <\n TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']\n >(\n accessor: TAccessor,\n column: Overwrite<\n TAccessor extends (...args: any[]) => any\n ? // Accessor Fn\n _NonGenerated<ColumnDef<TGenerics>>\n : TAccessor extends keyof TGenerics['Row']\n ? // Accessor Key\n Overwrite<\n _NonGenerated<ColumnDef<TGenerics>>,\n {\n id?: string\n }\n >\n : never,\n {\n accessorFn?: never\n accessorKey?: never\n }\n >\n ) => ColumnDef<TGenerics>\n}\n\nexport function createTable<TRow>() {\n return _createTable<Overwrite<PartialGenerics, { Row: TRow }>>()\n}\n\nfunction _createTable<TGenerics extends PartialGenerics>(\n _?: undefined,\n __?: undefined,\n __options?: CreateTableFactoryOptions<any, any, any>\n): TableFactory<TGenerics> {\n return {\n __options: __options || {},\n createColumns: columns => columns,\n createDisplayColumn: column => column as any,\n createGroup: column => column as any,\n createDataColumn: (accessor, column): any => {\n column = {\n ...column,\n id: column.id,\n }\n\n if (typeof accessor === 'string') {\n return {\n ...column,\n id: column.id ?? accessor,\n accessorKey: accessor,\n }\n }\n\n if (typeof accessor === 'function') {\n return {\n ...column,\n accessorFn: accessor,\n }\n }\n\n throw new Error('Invalid accessor')\n },\n }\n}\n"],"names":["createTableFactory","opts","_createTable","undefined","createTable","_","__","__options","createColumns","columns","createDisplayColumn","column","createGroup","createDataColumn","accessor","id","accessorKey","accessorFn","Error"],"mappings":";;;;;;;;;;;;;;;;AA0BO,SAASA,kBAAT,CAKLC,IALK,EAeL;AACA,SAAO;AAAA,WAAMC,YAAY,CAACC,SAAD,EAAYA,SAAZ,EAAuBF,IAAvB,CAAlB;AAAA,GAAP;AACD;AAuDM,SAASG,WAAT,GAA6B;AAClC,SAAOF,YAAY,EAAnB;AACD;;AAED,SAASA,YAAT,CACEG,CADF,EAEEC,EAFF,EAGEC,SAHF,EAI2B;AACzB,SAAO;AACLA,IAAAA,SAAS,EAAEA,SAAS,IAAI,EADnB;AAELC,IAAAA,aAAa,EAAE,uBAAAC,OAAO;AAAA,aAAIA,OAAJ;AAAA,KAFjB;AAGLC,IAAAA,mBAAmB,EAAE,6BAAAC,MAAM;AAAA,aAAIA,MAAJ;AAAA,KAHtB;AAILC,IAAAA,WAAW,EAAE,qBAAAD,MAAM;AAAA,aAAIA,MAAJ;AAAA,KAJd;AAKLE,IAAAA,gBAAgB,EAAE,0BAACC,QAAD,EAAWH,MAAX,EAA2B;AAC3CA,MAAAA,MAAM,4CACDA,MADC;AAEJI,QAAAA,EAAE,EAAEJ,MAAM,CAACI;AAFP,QAAN;;AAKA,UAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC;AAAA;;AAChC,wDACKH,MADL;AAEEI,UAAAA,EAAE,gBAAEJ,MAAM,CAACI,EAAT,yBAAeD,QAFnB;AAGEE,UAAAA,WAAW,EAAEF;AAHf;AAKD;;AAED,UAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClC,wDACKH,MADL;AAEEM,UAAAA,UAAU,EAAEH;AAFd;AAID;;AAED,YAAM,IAAII,KAAJ,CAAU,kBAAV,CAAN;AACD;AA3BI,GAAP;AA6BD;;;;;"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * table-core
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
+ var defaultColumnSizing = {
20
+ width: 150,
21
+ minWidth: 20,
22
+ maxWidth: Number.MAX_SAFE_INTEGER
23
+ };
24
+ var ColumnSizing = {
25
+ getInitialState: function getInitialState() {
26
+ return {
27
+ columnSizing: {},
28
+ columnSizingInfo: {
29
+ startOffset: null,
30
+ startSize: null,
31
+ deltaOffset: null,
32
+ deltaPercentage: null,
33
+ isResizingColumn: false,
34
+ columnSizingStart: []
35
+ }
36
+ };
37
+ },
38
+ getDefaultOptions: function getDefaultOptions(instance) {
39
+ return {
40
+ columnResizeMode: 'onEnd',
41
+ onColumnSizingChange: utils.makeStateUpdater('columnSizing', instance),
42
+ onColumnSizingInfoChange: utils.makeStateUpdater('columnSizingInfo', instance)
43
+ };
44
+ },
45
+ getInstance: function getInstance(instance) {
46
+ return {
47
+ setColumnSizing: function setColumnSizing(updater) {
48
+ return instance.options.onColumnSizingChange == null ? void 0 : instance.options.onColumnSizingChange(updater, utils.functionalUpdate(updater, instance.getState().columnSizing));
49
+ },
50
+ setColumnSizingInfo: function setColumnSizingInfo(updater) {
51
+ return instance.options.onColumnSizingInfoChange == null ? void 0 : instance.options.onColumnSizingInfoChange(updater, utils.functionalUpdate(updater, instance.getState().columnSizingInfo));
52
+ },
53
+ resetColumnSizing: function resetColumnSizing() {
54
+ var _instance$initialStat;
55
+
56
+ instance.setColumnSizing((_instance$initialStat = instance.initialState.columnSizing) != null ? _instance$initialStat : {});
57
+ },
58
+ resetHeaderSizeInfo: function resetHeaderSizeInfo() {
59
+ var _instance$initialStat2;
60
+
61
+ instance.setColumnSizingInfo((_instance$initialStat2 = instance.initialState.columnSizingInfo) != null ? _instance$initialStat2 : {});
62
+ },
63
+ resetColumnSize: function resetColumnSize(columnId) {
64
+ instance.setColumnSizing(function (_ref) {
65
+ _ref[columnId];
66
+ var rest = _rollupPluginBabelHelpers.objectWithoutPropertiesLoose(_ref, [columnId].map(_rollupPluginBabelHelpers.toPropertyKey));
67
+
68
+ return rest;
69
+ });
70
+ },
71
+ resetHeaderSize: function resetHeaderSize(headerId) {
72
+ var header = instance.getHeader(headerId);
73
+ return instance.resetColumnSize(header.column.id);
74
+ },
75
+ getHeaderCanResize: function getHeaderCanResize(headerId) {
76
+ var header = instance.getHeader(headerId);
77
+
78
+ if (!header) {
79
+ throw new Error();
80
+ }
81
+
82
+ return instance.getColumnCanResize(header.column.id);
83
+ },
84
+ getColumnCanResize: function getColumnCanResize(columnId) {
85
+ var _ref2, _ref3, _column$enableResizin;
86
+
87
+ var column = instance.getColumn(columnId);
88
+
89
+ if (!column) {
90
+ throw new Error();
91
+ }
92
+
93
+ return (_ref2 = (_ref3 = (_column$enableResizin = column.enableResizing) != null ? _column$enableResizin : instance.options.enableColumnResizing) != null ? _ref3 : column.defaultCanResize) != null ? _ref2 : true;
94
+ },
95
+ getColumnIsResizing: function getColumnIsResizing(columnId) {
96
+ var column = instance.getColumn(columnId);
97
+
98
+ if (!column) {
99
+ throw new Error();
100
+ }
101
+
102
+ return instance.getState().columnSizingInfo.isResizingColumn === columnId;
103
+ },
104
+ getHeaderIsResizing: function getHeaderIsResizing(headerId) {
105
+ var header = instance.getHeader(headerId);
106
+
107
+ if (!header) {
108
+ throw new Error();
109
+ }
110
+
111
+ return instance.getColumnIsResizing(header.column.id);
112
+ },
113
+ getHeaderResizerProps: function getHeaderResizerProps(headerId, userProps) {
114
+ var header = instance.getHeader(headerId);
115
+ var column = instance.getColumn(header.column.id);
116
+ var canResize = column.getCanResize();
117
+
118
+ var onResizeStart = function onResizeStart(e) {
119
+ if (isTouchStartEvent(e)) {
120
+ // lets not respond to multiple touches (e.g. 2 or 3 fingers)
121
+ if (e.touches && e.touches.length > 1) {
122
+ return;
123
+ }
124
+ }
125
+
126
+ var header = headerId ? instance.getHeader(headerId) : undefined;
127
+ var startSize = header ? header.getWidth() : column.getWidth();
128
+ var columnSizingStart = header ? header.getLeafHeaders().map(function (d) {
129
+ return [d.column.id, d.getWidth()];
130
+ }) : [[column.id, column.getWidth()]];
131
+ var clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;
132
+
133
+ var updateOffset = function updateOffset(eventType, clientXPos) {
134
+ if (typeof clientXPos !== 'number') {
135
+ return;
136
+ }
137
+
138
+ var newColumnSizing = {};
139
+ instance.setColumnSizingInfo(function (old) {
140
+ var _old$startOffset, _old$startSize;
141
+
142
+ var deltaOffset = clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0);
143
+ var deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);
144
+ old.columnSizingStart.forEach(function (_ref4) {
145
+ var columnId = _ref4[0],
146
+ headerWidth = _ref4[1];
147
+ newColumnSizing[columnId] = Math.round(Math.max(headerWidth + headerWidth * deltaPercentage, 0) * 100) / 100;
148
+ });
149
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
150
+ deltaOffset: deltaOffset,
151
+ deltaPercentage: deltaPercentage
152
+ });
153
+ });
154
+
155
+ if (instance.options.columnResizeMode === 'onChange' || eventType === 'end') {
156
+ instance.setColumnSizing(function (old) {
157
+ return _rollupPluginBabelHelpers["extends"]({}, old, newColumnSizing);
158
+ });
159
+ }
160
+ };
161
+
162
+ var onMove = function onMove(clientXPos) {
163
+ return updateOffset('move', clientXPos);
164
+ };
165
+
166
+ var onEnd = function onEnd(clientXPos) {
167
+ updateOffset('end', clientXPos);
168
+ instance.setColumnSizingInfo(function (old) {
169
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
170
+ isResizingColumn: false,
171
+ startOffset: null,
172
+ startSize: null,
173
+ deltaOffset: null,
174
+ deltaPercentage: null,
175
+ columnSizingStart: []
176
+ });
177
+ });
178
+ };
179
+
180
+ var mouseEvents = {
181
+ moveHandler: function moveHandler(e) {
182
+ return onMove(e.clientX);
183
+ },
184
+ upHandler: function upHandler(e) {
185
+ document.removeEventListener('mousemove', mouseEvents.moveHandler);
186
+ document.removeEventListener('mouseup', mouseEvents.upHandler);
187
+ onEnd(e.clientX);
188
+ }
189
+ };
190
+ var touchEvents = {
191
+ moveHandler: function moveHandler(e) {
192
+ if (e.cancelable) {
193
+ e.preventDefault();
194
+ e.stopPropagation();
195
+ }
196
+
197
+ onMove(e.touches[0].clientX);
198
+ return false;
199
+ },
200
+ upHandler: function upHandler(e) {
201
+ document.removeEventListener('touchmove', touchEvents.moveHandler);
202
+ document.removeEventListener('touchend', touchEvents.upHandler);
203
+
204
+ if (e.cancelable) {
205
+ e.preventDefault();
206
+ e.stopPropagation();
207
+ }
208
+
209
+ onEnd(e.touches[0].clientX);
210
+ }
211
+ };
212
+ var passiveIfSupported = passiveEventSupported() ? {
213
+ passive: false
214
+ } : false;
215
+
216
+ if (isTouchStartEvent(e)) {
217
+ document.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);
218
+ document.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);
219
+ } else {
220
+ document.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);
221
+ document.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);
222
+ }
223
+
224
+ instance.setColumnSizingInfo(function (old) {
225
+ return _rollupPluginBabelHelpers["extends"]({}, old, {
226
+ startOffset: clientX,
227
+ startSize: startSize,
228
+ deltaOffset: 0,
229
+ deltaPercentage: 0,
230
+ columnSizingStart: columnSizingStart,
231
+ isResizingColumn: column.id
232
+ });
233
+ });
234
+ };
235
+
236
+ var initialProps = canResize ? {
237
+ title: 'Toggle Grouping',
238
+ draggable: false,
239
+ role: 'separator',
240
+ onMouseDown: function onMouseDown(e) {
241
+ e.persist();
242
+ onResizeStart(e);
243
+ },
244
+ onTouchStart: function onTouchStart(e) {
245
+ e.persist();
246
+ onResizeStart(e);
247
+ }
248
+ } : {};
249
+ return utils.propGetter(initialProps, userProps);
250
+ }
251
+ };
252
+ },
253
+ createColumn: function createColumn(column, instance) {
254
+ return {
255
+ getIsResizing: function getIsResizing() {
256
+ return instance.getColumnIsResizing(column.id);
257
+ },
258
+ getCanResize: function getCanResize() {
259
+ return instance.getColumnCanResize(column.id);
260
+ },
261
+ resetSize: function resetSize() {
262
+ return instance.resetColumnSize(column.id);
263
+ }
264
+ };
265
+ },
266
+ createHeader: function createHeader(header, instance) {
267
+ return {
268
+ getIsResizing: function getIsResizing() {
269
+ return instance.getColumnIsResizing(header.column.id);
270
+ },
271
+ getCanResize: function getCanResize() {
272
+ return instance.getColumnCanResize(header.column.id);
273
+ },
274
+ resetSize: function resetSize() {
275
+ return instance.resetColumnSize(header.column.id);
276
+ },
277
+ getResizerProps: function getResizerProps(userProps) {
278
+ return instance.getHeaderResizerProps(header.id, userProps);
279
+ }
280
+ };
281
+ }
282
+ };
283
+ var passiveSupported = null;
284
+ function passiveEventSupported() {
285
+ if (typeof passiveSupported === 'boolean') return passiveSupported;
286
+ var supported = false;
287
+
288
+ try {
289
+ var options = {
290
+ get passive() {
291
+ supported = true;
292
+ return false;
293
+ }
294
+
295
+ };
296
+
297
+ var noop = function noop() {};
298
+
299
+ window.addEventListener('test', noop, options);
300
+ window.removeEventListener('test', noop);
301
+ } catch (err) {
302
+ supported = false;
303
+ }
304
+
305
+ passiveSupported = supported;
306
+ return passiveSupported;
307
+ }
308
+
309
+ function isTouchStartEvent(e) {
310
+ return e.type === 'touchstart';
311
+ }
312
+
313
+ exports.ColumnSizing = ColumnSizing;
314
+ exports.defaultColumnSizing = defaultColumnSizing;
315
+ exports.passiveEventSupported = passiveEventSupported;
316
+ //# sourceMappingURL=ColumnSizing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnSizing.js","sources":["../../../src/features/ColumnSizing.ts"],"sourcesContent":["import {\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react'\nimport {\n Column,\n Getter,\n Header,\n OnChangeFn,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\n//\n\nexport type ColumnSizing = Record<string, number>\n\nexport type ColumnSizingInfoState = {\n startOffset: null | number\n startSize: null | number\n deltaOffset: null | number\n deltaPercentage: null | number\n isResizingColumn: false | string\n columnSizingStart: [string, number][]\n}\n\nexport type ColumnSizingTableState = {\n columnSizing: ColumnSizing\n columnSizingInfo: ColumnSizingInfoState\n}\n\nexport type ColumnResizeMode = 'onChange' | 'onEnd'\n\nexport type ColumnSizingOptions = {\n enableColumnResizing?: boolean\n columnResizeMode?: ColumnResizeMode\n onColumnSizingChange?: OnChangeFn<ColumnSizing>\n onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnSizingDefaultOptions = {\n columnResizeMode: ColumnResizeMode\n onColumnSizingChange: OnChangeFn<ColumnSizing>\n onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnResizerProps = {\n title?: string\n onMouseDown?: (e: ReactMouseEvent) => void\n onTouchStart?: (e: ReactTouchEvent) => void\n draggable?: boolean\n role?: string\n}\n\nexport type ColumnSizingInstance<TGenerics extends PartialGenerics> = {\n setColumnSizing: (updater: Updater<ColumnSizing>) => void\n setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void\n resetColumnSizing: () => void\n resetColumnSize: (columnId: string) => void\n resetHeaderSize: (headerId: string) => void\n resetHeaderSizeInfo: () => void\n getColumnCanResize: (columnId: string) => boolean\n getHeaderCanResize: (headerId: string) => boolean\n getHeaderResizerProps: <TGetter extends Getter<ColumnResizerProps>>(\n headerId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ColumnResizerProps, TGetter>\n getColumnIsResizing: (columnId: string) => boolean\n getHeaderIsResizing: (headerId: string) => boolean\n}\n\nexport type ColumnSizingColumnDef = {\n enableResizing?: boolean\n defaultCanResize?: boolean\n}\n\nexport type ColumnSizingColumn<TGenerics extends PartialGenerics> = {\n getCanResize: () => boolean\n getIsResizing: () => boolean\n resetSize: () => void\n}\n\nexport type ColumnSizingHeader<TGenerics extends PartialGenerics> = {\n getCanResize: () => boolean\n getIsResizing: () => boolean\n getResizerProps: <TGetter extends Getter<ColumnResizerProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ColumnResizerProps, TGetter>\n resetSize: () => void\n}\n\n//\n\nexport const defaultColumnSizing = {\n width: 150,\n minWidth: 20,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nexport const ColumnSizing = {\n getInitialState: (): ColumnSizingTableState => {\n return {\n columnSizing: {},\n columnSizingInfo: {\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n },\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ColumnSizingDefaultOptions => {\n return {\n columnResizeMode: 'onEnd',\n onColumnSizingChange: makeStateUpdater('columnSizing', instance),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', instance),\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ColumnSizingInstance<TGenerics> => {\n return {\n setColumnSizing: updater =>\n instance.options.onColumnSizingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnSizing)\n ),\n setColumnSizingInfo: updater =>\n instance.options.onColumnSizingInfoChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnSizingInfo)\n ),\n resetColumnSizing: () => {\n instance.setColumnSizing(instance.initialState.columnSizing ?? {})\n },\n resetHeaderSizeInfo: () => {\n instance.setColumnSizingInfo(\n instance.initialState.columnSizingInfo ?? {}\n )\n },\n resetColumnSize: columnId => {\n instance.setColumnSizing(({ [columnId]: _, ...rest }) => {\n return rest\n })\n },\n resetHeaderSize: headerId => {\n const header = instance.getHeader(headerId)\n\n return instance.resetColumnSize(header.column.id)\n },\n getHeaderCanResize: headerId => {\n const header = instance.getHeader(headerId)\n\n if (!header) {\n throw new Error()\n }\n\n return instance.getColumnCanResize(header.column.id)\n },\n getColumnCanResize: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableResizing ??\n instance.options.enableColumnResizing ??\n column.defaultCanResize ??\n true\n )\n },\n getColumnIsResizing: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n instance.getState().columnSizingInfo.isResizingColumn === columnId\n )\n },\n getHeaderIsResizing: headerId => {\n const header = instance.getHeader(headerId)\n\n if (!header) {\n throw new Error()\n }\n\n return instance.getColumnIsResizing(header.column.id)\n },\n\n getHeaderResizerProps: (headerId, userProps) => {\n const header = instance.getHeader(headerId)\n const column = instance.getColumn(header.column.id)\n\n const canResize = column.getCanResize()\n\n const onResizeStart = (e: ReactMouseEvent | ReactTouchEvent) => {\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n }\n\n const header = headerId ? instance.getHeader(headerId) : undefined\n\n const startSize = header ? header.getWidth() : column.getWidth()\n\n const columnSizingStart: [string, number][] = header\n ? header.getLeafHeaders().map(d => [d.column.id, d.getWidth()])\n : [[column.id, column.getWidth()]]\n\n const clientX = isTouchStartEvent(e)\n ? Math.round(e.touches[0].clientX)\n : e.clientX\n\n const updateOffset = (\n eventType: 'move' | 'end',\n clientXPos?: number\n ) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n let newColumnSizing: ColumnSizing = {}\n\n instance.setColumnSizingInfo(old => {\n const deltaOffset = clientXPos - (old?.startOffset ?? 0)\n const deltaPercentage = Math.max(\n deltaOffset / (old?.startSize ?? 0),\n -0.999999\n )\n\n old.columnSizingStart.forEach(([columnId, headerWidth]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(headerWidth + headerWidth * deltaPercentage, 0) *\n 100\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n instance.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n instance.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) =>\n updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n instance.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n document.removeEventListener('mousemove', mouseEvents.moveHandler)\n document.removeEventListener('mouseup', mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (e: TouchEvent) => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onMove(e.touches[0].clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n document.removeEventListener('touchmove', touchEvents.moveHandler)\n document.removeEventListener('touchend', touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0].clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(e)) {\n document.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported\n )\n } else {\n document.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported\n )\n }\n\n instance.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n\n const initialProps: ColumnResizerProps = canResize\n ? {\n title: 'Toggle Grouping',\n draggable: false,\n role: 'separator',\n onMouseDown: (e: ReactMouseEvent) => {\n e.persist()\n onResizeStart(e)\n },\n onTouchStart: (e: ReactTouchEvent) => {\n e.persist()\n onResizeStart(e)\n },\n }\n : {}\n\n return propGetter(initialProps, userProps)\n },\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ColumnSizingColumn<TGenerics> => {\n return {\n getIsResizing: () => instance.getColumnIsResizing(column.id),\n getCanResize: () => instance.getColumnCanResize(column.id),\n resetSize: () => instance.resetColumnSize(column.id),\n }\n },\n\n createHeader: <TGenerics extends PartialGenerics>(\n header: Header<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ColumnSizingHeader<TGenerics> => {\n return {\n getIsResizing: () => instance.getColumnIsResizing(header.column.id),\n getCanResize: () => instance.getColumnCanResize(header.column.id),\n resetSize: () => instance.resetColumnSize(header.column.id),\n getResizerProps: userProps =>\n instance.getHeaderResizerProps(header.id, userProps),\n }\n },\n}\n\nlet passiveSupported: boolean | null = null\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\nfunction isTouchStartEvent(\n e: ReactTouchEvent | ReactMouseEvent\n): e is ReactTouchEvent {\n return e.type === 'touchstart'\n}\n"],"names":["defaultColumnSizing","width","minWidth","maxWidth","Number","MAX_SAFE_INTEGER","ColumnSizing","getInitialState","columnSizing","columnSizingInfo","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","getDefaultOptions","instance","columnResizeMode","onColumnSizingChange","makeStateUpdater","onColumnSizingInfoChange","getInstance","setColumnSizing","updater","options","functionalUpdate","getState","setColumnSizingInfo","resetColumnSizing","initialState","resetHeaderSizeInfo","resetColumnSize","columnId","rest","resetHeaderSize","headerId","header","getHeader","column","id","getHeaderCanResize","Error","getColumnCanResize","getColumn","enableResizing","enableColumnResizing","defaultCanResize","getColumnIsResizing","getHeaderIsResizing","getHeaderResizerProps","userProps","canResize","getCanResize","onResizeStart","e","isTouchStartEvent","touches","length","undefined","getWidth","getLeafHeaders","map","d","clientX","Math","round","updateOffset","eventType","clientXPos","newColumnSizing","old","max","forEach","headerWidth","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","passiveIfSupported","passiveEventSupported","passive","addEventListener","initialProps","title","draggable","role","onMouseDown","persist","onTouchStart","propGetter","createColumn","getIsResizing","resetSize","createHeader","getResizerProps","passiveSupported","supported","noop","window","err","type"],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * table-core
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
+ var Expanding = {
20
+ getInitialState: function getInitialState() {
21
+ return {
22
+ expanded: {}
23
+ };
24
+ },
25
+ getDefaultOptions: function getDefaultOptions(instance) {
26
+ return {
27
+ onExpandedChange: utils.makeStateUpdater('expanded', instance),
28
+ autoResetExpanded: true,
29
+ getIsRowExpanded: function getIsRowExpanded(row) {
30
+ return !!(row == null ? void 0 : row.original).expanded;
31
+ },
32
+ expandSubRows: true,
33
+ paginateExpandedRows: true
34
+ };
35
+ },
36
+ getInstance: function getInstance(instance) {
37
+ var registered = false;
38
+ return {
39
+ _notifyExpandedReset: function _notifyExpandedReset() {
40
+ if (!registered) {
41
+ registered = true;
42
+ return;
43
+ }
44
+
45
+ if (instance.options.autoResetAll === false) {
46
+ return;
47
+ }
48
+
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
+ }
79
+
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
+ });
90
+ },
91
+ toggleAllRowsExpanded: function toggleAllRowsExpanded(expanded) {
92
+ if (expanded != null ? expanded : !instance.getIsAllRowsExpanded()) {
93
+ instance.setExpanded(true);
94
+ } else {
95
+ instance.setExpanded({});
96
+ }
97
+ },
98
+ resetExpanded: function resetExpanded() {
99
+ var _instance$initialStat, _instance$initialStat2;
100
+
101
+ instance.setExpanded((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.expanded) != null ? _instance$initialStat : {});
102
+ },
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);
133
+ },
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
148
+ };
149
+ return utils.propGetter(initialProps, userProps);
150
+ },
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);
160
+ },
161
+ getIsAllRowsExpanded: function getIsAllRowsExpanded() {
162
+ var expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
163
+
164
+ if (expanded === true) {
165
+ return true;
166
+ } // If any row is not expanded, return false
167
+
168
+
169
+ if (Object.keys(instance.getRowModel().rowsById).some(function (id) {
170
+ return !instance.getIsRowExpanded(id);
171
+ })) {
172
+ return false;
173
+ } // They must all be expanded :shrug:
174
+
175
+
176
+ return true;
177
+ },
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('.');
183
+ maxDepth = Math.max(maxDepth, splitId.length);
184
+ });
185
+ return maxDepth;
186
+ },
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;
193
+ }
194
+
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();
205
+ }
206
+ }),
207
+ getPreExpandedRowModel: function getPreExpandedRowModel() {
208
+ return instance.getGroupedRowModel();
209
+ }
210
+ };
211
+ },
212
+ createRow: function createRow(row, instance) {
213
+ return {
214
+ toggleExpanded: function toggleExpanded(expanded) {
215
+ return void instance.toggleRowExpanded(row.id, expanded);
216
+ },
217
+ getIsExpanded: function getIsExpanded() {
218
+ return instance.getIsRowExpanded(row.id);
219
+ },
220
+ getCanExpand: function getCanExpand() {
221
+ return row.subRows && !!row.subRows.length;
222
+ },
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
+ }
230
+ };
231
+ return utils.propGetter(initialProps, userProps);
232
+ }
233
+ };
234
+ }
235
+ };
236
+
237
+ exports.Expanding = Expanding;
238
+ //# sourceMappingURL=Expanding.js.map