@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
@@ -45,11 +45,10 @@ export type GroupingColumnDef<TGenerics extends TableGenerics> = {
45
45
  row: Row<TGenerics>
46
46
  column: Column<TGenerics>
47
47
  cell: Cell<TGenerics>
48
- value: TGenerics['Value']
48
+ getValue: () => TGenerics['Value']
49
49
  }
50
50
  >
51
51
  enableGrouping?: boolean
52
- defaultCanGroup?: boolean
53
52
  }
54
53
 
55
54
  export type GroupingColumn<TGenerics extends TableGenerics> = {
@@ -59,12 +58,15 @@ export type GroupingColumn<TGenerics extends TableGenerics> = {
59
58
  getGroupedIndex: () => number
60
59
  toggleGrouping: () => void
61
60
  getToggleGroupingHandler: () => () => void
61
+ getColumnAutoAggregationFn: () => AggregationFn<TGenerics> | undefined
62
+ getColumnAggregationFn: () => AggregationFn<TGenerics> | undefined
62
63
  }
63
64
 
64
65
  export type GroupingRow = {
65
66
  groupingColumnId?: string
66
67
  groupingValue?: any
67
68
  getIsGrouped: () => boolean
69
+ groupingValuesCache: Record<string, any>
68
70
  }
69
71
 
70
72
  export type GroupingCell<TGenerics extends TableGenerics> = {
@@ -96,20 +98,8 @@ export type GroupingOptions<TGenerics extends TableGenerics> = {
96
98
  export type GroupingColumnMode = false | 'reorder' | 'remove'
97
99
 
98
100
  export type GroupingInstance<TGenerics extends TableGenerics> = {
99
- getColumnAutoAggregationFn: (
100
- columnId: string
101
- ) => AggregationFn<TGenerics> | undefined
102
- getColumnAggregationFn: (
103
- columnId: string
104
- ) => AggregationFn<TGenerics> | undefined
105
101
  setGrouping: (updater: Updater<GroupingState>) => void
106
102
  resetGrouping: () => void
107
- toggleColumnGrouping: (columnId: string) => void
108
- getColumnCanGroup: (columnId: string) => boolean
109
- getColumnIsGrouped: (columnId: string) => boolean
110
- getColumnGroupedIndex: (columnId: string) => number
111
- getToggleGroupingHandler: (columnId: string) => undefined | (() => void)
112
- getRowIsGrouped: (rowId: string) => boolean
113
103
  getPreGroupedRowModel: () => RowModel<TGenerics>
114
104
  getGroupedRowModel: () => RowModel<TGenerics>
115
105
  _getGroupedRowModel?: () => RowModel<TGenerics>
@@ -147,24 +137,45 @@ export const Grouping: TableFeature = {
147
137
  instance: TableInstance<TGenerics>
148
138
  ): GroupingColumn<TGenerics> => {
149
139
  return {
150
- aggregationFn: column.aggregationFn,
151
- getCanGroup: () => instance.getColumnCanGroup(column.id),
152
- getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),
153
- getIsGrouped: () => instance.getColumnIsGrouped(column.id),
154
- toggleGrouping: () => instance.toggleColumnGrouping(column.id),
155
- getToggleGroupingHandler: () =>
156
- instance.getToggleGroupingHandler(column.id)!,
157
- }
158
- },
140
+ toggleGrouping: () => {
141
+ instance.setGrouping(old => {
142
+ // Find any existing grouping for this column
143
+ if (old?.includes(column.id)) {
144
+ return old.filter(d => d !== column.id)
145
+ }
159
146
 
160
- createInstance: <TGenerics extends TableGenerics>(
161
- instance: TableInstance<TGenerics>
162
- ): GroupingInstance<TGenerics> => {
163
- return {
164
- getColumnAutoAggregationFn: columnId => {
147
+ return [...(old ?? []), column.id]
148
+ })
149
+ },
150
+
151
+ getCanGroup: () => {
152
+ return (
153
+ column.enableGrouping ??
154
+ true ??
155
+ instance.options.enableGrouping ??
156
+ true ??
157
+ !!column.accessorFn
158
+ )
159
+ },
160
+
161
+ getIsGrouped: () => {
162
+ return instance.getState().grouping?.includes(column.id)
163
+ },
164
+
165
+ getGroupedIndex: () => instance.getState().grouping?.indexOf(column.id),
166
+
167
+ getToggleGroupingHandler: () => {
168
+ const canGroup = column.getCanGroup()
169
+
170
+ return () => {
171
+ if (!canGroup) return
172
+ column.toggleGrouping()
173
+ }
174
+ },
175
+ getColumnAutoAggregationFn: () => {
165
176
  const firstRow = instance.getCoreRowModel().flatRows[0]
166
177
 
167
- const value = firstRow?.values[columnId]
178
+ const value = firstRow?.getValue(column.id)
168
179
 
169
180
  if (typeof value === 'number') {
170
181
  return aggregationFns.sum
@@ -176,8 +187,7 @@ export const Grouping: TableFeature = {
176
187
 
177
188
  return aggregationFns.count
178
189
  },
179
- getColumnAggregationFn: columnId => {
180
- const column = instance.getColumn(columnId)
190
+ getColumnAggregationFn: () => {
181
191
  const userAggregationFns = instance.options.aggregationFns
182
192
 
183
193
  if (!column) {
@@ -187,7 +197,7 @@ export const Grouping: TableFeature = {
187
197
  return isFunction(column.aggregationFn)
188
198
  ? column.aggregationFn
189
199
  : column.aggregationFn === 'auto'
190
- ? instance.getColumnAutoAggregationFn(columnId)
200
+ ? column.getColumnAutoAggregationFn()
191
201
  : (userAggregationFns as Record<string, any>)?.[
192
202
  column.aggregationFn as string
193
203
  ] ??
@@ -195,58 +205,19 @@ export const Grouping: TableFeature = {
195
205
  column.aggregationFn as BuiltInAggregationFn
196
206
  ] as AggregationFn<TGenerics>)
197
207
  },
208
+ }
209
+ },
198
210
 
211
+ createInstance: <TGenerics extends TableGenerics>(
212
+ instance: TableInstance<TGenerics>
213
+ ): GroupingInstance<TGenerics> => {
214
+ return {
199
215
  setGrouping: updater => instance.options.onGroupingChange?.(updater),
200
216
 
201
- toggleColumnGrouping: columnId => {
202
- instance.setGrouping(old => {
203
- // Find any existing grouping for this column
204
- if (old?.includes(columnId)) {
205
- return old.filter(d => d !== columnId)
206
- }
207
-
208
- return [...(old ?? []), columnId]
209
- })
210
- },
211
-
212
- getColumnCanGroup: columnId => {
213
- const column = instance.getColumn(columnId)
214
-
215
- if (!column) {
216
- throw new Error()
217
- }
218
-
219
- return (
220
- column.enableGrouping ??
221
- instance.options.enableGrouping ??
222
- column.defaultCanGroup ??
223
- !!column.accessorFn
224
- )
225
- },
226
-
227
- getColumnIsGrouped: columnId => {
228
- return instance.getState().grouping?.includes(columnId)
229
- },
230
-
231
- getColumnGroupedIndex: columnId =>
232
- instance.getState().grouping?.indexOf(columnId),
233
-
234
217
  resetGrouping: () => {
235
218
  instance.setGrouping(instance.initialState?.grouping ?? [])
236
219
  },
237
220
 
238
- getToggleGroupingHandler: columnId => {
239
- const column = instance.getColumn(columnId)
240
- const canGroup = column.getCanGroup()
241
-
242
- return () => {
243
- if (!canGroup) return
244
- column.toggleGrouping?.()
245
- }
246
- },
247
-
248
- getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,
249
-
250
221
  getPreGroupedRowModel: () => instance.getSortedRowModel(),
251
222
  getGroupedRowModel: () => {
252
223
  if (
@@ -271,7 +242,8 @@ export const Grouping: TableFeature = {
271
242
  instance: TableInstance<TGenerics>
272
243
  ): GroupingRow => {
273
244
  return {
274
- getIsGrouped: () => instance.getRowIsGrouped(row.id),
245
+ getIsGrouped: () => !!row.groupingColumnId,
246
+ groupingValuesCache: {},
275
247
  }
276
248
  },
277
249
 
@@ -298,7 +270,7 @@ export const Grouping: TableFeature = {
298
270
  column,
299
271
  row,
300
272
  cell,
301
- value: cell.value,
273
+ getValue: cell.getValue,
302
274
  })
303
275
  : null
304
276
  },
@@ -72,30 +72,6 @@ export const Headers = {
72
72
  colSpan: 0,
73
73
  rowSpan: 0,
74
74
  headerGroup: null!,
75
- getSize: () => {
76
- let sum = 0
77
-
78
- const recurse = (header: CoreHeader<TGenerics>) => {
79
- if (header.subHeaders.length) {
80
- header.subHeaders.forEach(recurse)
81
- } else {
82
- sum += header.column.getSize() ?? 0
83
- }
84
- }
85
-
86
- recurse(header)
87
-
88
- return sum
89
- },
90
- getStart: () => {
91
- if (header.index > 0) {
92
- const prevSiblingHeader =
93
- header.headerGroup.headers[header.index - 1]
94
- return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()
95
- }
96
-
97
- return 0
98
- },
99
75
  getLeafHeaders: (): Header<TGenerics>[] => {
100
76
  const leafHeaders: CoreHeader<TGenerics>[] = []
101
77
 
@@ -163,7 +139,7 @@ export const Headers = {
163
139
  return headerGroups
164
140
  },
165
141
  {
166
- key: 'getHeaderGroups',
142
+ key: process.env.NODE_ENV === 'development' && 'getHeaderGroups',
167
143
  debug: () =>
168
144
  instance.options.debugAll ?? instance.options.debugHeaders,
169
145
  }
@@ -183,7 +159,8 @@ export const Headers = {
183
159
  return buildHeaderGroups(allColumns, leafColumns, instance, 'center')
184
160
  },
185
161
  {
186
- key: 'getCenterHeaderGroups',
162
+ key:
163
+ process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',
187
164
  debug: () =>
188
165
  instance.options.debugAll ?? instance.options.debugHeaders,
189
166
  }
@@ -200,7 +177,7 @@ export const Headers = {
200
177
  return buildHeaderGroups(allColumns, leafColumns, instance, 'left')
201
178
  },
202
179
  {
203
- key: 'getLeftHeaderGroups',
180
+ key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',
204
181
  debug: () =>
205
182
  instance.options.debugAll ?? instance.options.debugHeaders,
206
183
  }
@@ -217,7 +194,7 @@ export const Headers = {
217
194
  return buildHeaderGroups(allColumns, leafColumns, instance, 'right')
218
195
  },
219
196
  {
220
- key: 'getRightHeaderGroups',
197
+ key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',
221
198
  debug: () =>
222
199
  instance.options.debugAll ?? instance.options.debugHeaders,
223
200
  }
@@ -231,7 +208,7 @@ export const Headers = {
231
208
  return [...headerGroups].reverse()
232
209
  },
233
210
  {
234
- key: 'getFooterGroups',
211
+ key: process.env.NODE_ENV === 'development' && 'getFooterGroups',
235
212
  debug: () =>
236
213
  instance.options.debugAll ?? instance.options.debugHeaders,
237
214
  }
@@ -243,7 +220,7 @@ export const Headers = {
243
220
  return [...headerGroups].reverse()
244
221
  },
245
222
  {
246
- key: 'getLeftFooterGroups',
223
+ key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',
247
224
  debug: () =>
248
225
  instance.options.debugAll ?? instance.options.debugHeaders,
249
226
  }
@@ -255,7 +232,8 @@ export const Headers = {
255
232
  return [...headerGroups].reverse()
256
233
  },
257
234
  {
258
- key: 'getCenterFooterGroups',
235
+ key:
236
+ process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',
259
237
  debug: () =>
260
238
  instance.options.debugAll ?? instance.options.debugHeaders,
261
239
  }
@@ -267,7 +245,7 @@ export const Headers = {
267
245
  return [...headerGroups].reverse()
268
246
  },
269
247
  {
270
- key: 'getRightFooterGroups',
248
+ key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',
271
249
  debug: () =>
272
250
  instance.options.debugAll ?? instance.options.debugHeaders,
273
251
  }
@@ -285,7 +263,7 @@ export const Headers = {
285
263
  .flat()
286
264
  },
287
265
  {
288
- key: 'getFlatHeaders',
266
+ key: process.env.NODE_ENV === 'development' && 'getFlatHeaders',
289
267
  debug: () =>
290
268
  instance.options.debugAll ?? instance.options.debugHeaders,
291
269
  }
@@ -301,7 +279,7 @@ export const Headers = {
301
279
  .flat()
302
280
  },
303
281
  {
304
- key: 'getLeftFlatHeaders',
282
+ key: process.env.NODE_ENV === 'development' && 'getLeftFlatHeaders',
305
283
  debug: () =>
306
284
  instance.options.debugAll ?? instance.options.debugHeaders,
307
285
  }
@@ -317,7 +295,7 @@ export const Headers = {
317
295
  .flat()
318
296
  },
319
297
  {
320
- key: 'getCenterFlatHeaders',
298
+ key: process.env.NODE_ENV === 'development' && 'getCenterFlatHeaders',
321
299
  debug: () =>
322
300
  instance.options.debugAll ?? instance.options.debugHeaders,
323
301
  }
@@ -333,7 +311,7 @@ export const Headers = {
333
311
  .flat()
334
312
  },
335
313
  {
336
- key: 'getRightFlatHeaders',
314
+ key: process.env.NODE_ENV === 'development' && 'getRightFlatHeaders',
337
315
  debug: () =>
338
316
  instance.options.debugAll ?? instance.options.debugHeaders,
339
317
  }
@@ -347,7 +325,7 @@ export const Headers = {
347
325
  return flatHeaders.filter(header => !header.subHeaders?.length)
348
326
  },
349
327
  {
350
- key: 'getCenterLeafHeaders',
328
+ key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',
351
329
  debug: () =>
352
330
  instance.options.debugAll ?? instance.options.debugHeaders,
353
331
  }
@@ -359,7 +337,7 @@ export const Headers = {
359
337
  return flatHeaders.filter(header => !header.subHeaders?.length)
360
338
  },
361
339
  {
362
- key: 'getLeftLeafHeaders',
340
+ key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',
363
341
  debug: () =>
364
342
  instance.options.debugAll ?? instance.options.debugHeaders,
365
343
  }
@@ -371,7 +349,7 @@ export const Headers = {
371
349
  return flatHeaders.filter(header => !header.subHeaders?.length)
372
350
  },
373
351
  {
374
- key: 'getRightLeafHeaders',
352
+ key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',
375
353
  debug: () =>
376
354
  instance.options.debugAll ?? instance.options.debugHeaders,
377
355
  }
@@ -395,7 +373,7 @@ export const Headers = {
395
373
  .flat()
396
374
  },
397
375
  {
398
- key: 'getLeafHeaders',
376
+ key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',
399
377
  debug: () =>
400
378
  instance.options.debugAll ?? instance.options.debugHeaders,
401
379
  }
@@ -100,7 +100,7 @@ export const Ordering: TableFeature = {
100
100
  return orderColumns(orderedColumns, grouping, groupedColumnMode)
101
101
  },
102
102
  {
103
- key: 'getOrderColumnsFn',
103
+ key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn',
104
104
  // debug: () => instance.options.debugAll ?? instance.options.debugTable,
105
105
  }
106
106
  ),
@@ -184,7 +184,7 @@ export const Pagination: TableFeature = {
184
184
  return pageOptions
185
185
  },
186
186
  {
187
- key: 'getPageOptions',
187
+ key: process.env.NODE_ENV === 'development' && 'getPageOptions',
188
188
  debug: () => instance.options.debugAll ?? instance.options.debugTable,
189
189
  }
190
190
  ),
@@ -50,10 +50,6 @@ export type ColumnPinningRow<TGenerics extends TableGenerics> = {
50
50
  export type ColumnPinningInstance<TGenerics extends TableGenerics> = {
51
51
  setColumnPinning: (updater: Updater<ColumnPinningState>) => void
52
52
  resetColumnPinning: () => void
53
- pinColumn: (columnId: string, position: ColumnPinningPosition) => void
54
- getColumnCanPin: (columnId: string) => boolean
55
- getColumnIsPinned: (columnId: string) => ColumnPinningPosition
56
- getColumnPinnedIndex: (columnId: string) => number
57
53
  getIsSomeColumnsPinned: () => boolean
58
54
  getLeftLeafColumns: () => Column<TGenerics>[]
59
55
  getRightLeafColumns: () => Column<TGenerics>[]
@@ -86,10 +82,69 @@ export const Pinning: TableFeature = {
86
82
  instance: TableInstance<TGenerics>
87
83
  ): ColumnPinningColumn => {
88
84
  return {
89
- getCanPin: () => instance.getColumnCanPin(column.id),
90
- getPinnedIndex: () => instance.getColumnPinnedIndex(column.id),
91
- getIsPinned: () => instance.getColumnIsPinned(column.id),
92
- pin: position => instance.pinColumn(column.id, position),
85
+ pin: position => {
86
+ const columnIds = column
87
+ .getLeafColumns()
88
+ .map(d => d.id)
89
+ .filter(Boolean) as string[]
90
+
91
+ instance.setColumnPinning(old => {
92
+ if (position === 'right') {
93
+ return {
94
+ left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
95
+ right: [
96
+ ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),
97
+ ...columnIds,
98
+ ],
99
+ }
100
+ }
101
+
102
+ if (position === 'left') {
103
+ return {
104
+ left: [
105
+ ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),
106
+ ...columnIds,
107
+ ],
108
+ right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
109
+ }
110
+ }
111
+
112
+ return {
113
+ left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
114
+ right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
115
+ }
116
+ })
117
+ },
118
+
119
+ getCanPin: () => {
120
+ const leafColumns = column.getLeafColumns()
121
+
122
+ return leafColumns.some(
123
+ d =>
124
+ (d.enablePinning ?? true) &&
125
+ (instance.options.enablePinning ?? true)
126
+ )
127
+ },
128
+
129
+ getIsPinned: () => {
130
+ const leafColumnIds = column.getLeafColumns().map(d => d.id)
131
+
132
+ const { left, right } = instance.getState().columnPinning
133
+
134
+ const isLeft = leafColumnIds.some(d => left?.includes(d))
135
+ const isRight = leafColumnIds.some(d => right?.includes(d))
136
+
137
+ return isLeft ? 'left' : isRight ? 'right' : false
138
+ },
139
+
140
+ getPinnedIndex: () => {
141
+ const position = column.getIsPinned()
142
+
143
+ return position
144
+ ? instance.getState().columnPinning?.[position]?.indexOf(column.id) ??
145
+ -1
146
+ : 0
147
+ },
93
148
  }
94
149
  },
95
150
 
@@ -110,7 +165,9 @@ export const Pinning: TableFeature = {
110
165
  return allCells.filter(d => !leftAndRight.includes(d.columnId))
111
166
  },
112
167
  {
113
- key: 'row.getCenterVisibleCells',
168
+ key:
169
+ process.env.NODE_ENV === 'production' &&
170
+ 'row.getCenterVisibleCells',
114
171
  debug: () => instance.options.debugAll ?? instance.options.debugRows,
115
172
  }
116
173
  ),
@@ -129,7 +186,8 @@ export const Pinning: TableFeature = {
129
186
  return cells
130
187
  },
131
188
  {
132
- key: 'row.getLeftVisibleCells',
189
+ key:
190
+ process.env.NODE_ENV === 'production' && 'row.getLeftVisibleCells',
133
191
  debug: () => instance.options.debugAll ?? instance.options.debugRows,
134
192
  }
135
193
  ),
@@ -147,7 +205,8 @@ export const Pinning: TableFeature = {
147
205
  return cells
148
206
  },
149
207
  {
150
- key: 'row.getRightVisibleCells',
208
+ key:
209
+ process.env.NODE_ENV === 'production' && 'row.getRightVisibleCells',
151
210
  debug: () => instance.options.debugAll ?? instance.options.debugRows,
152
211
  }
153
212
  ),
@@ -164,84 +223,6 @@ export const Pinning: TableFeature = {
164
223
  resetColumnPinning: () =>
165
224
  instance.setColumnPinning(instance.initialState?.columnPinning ?? {}),
166
225
 
167
- pinColumn: (columnId, position) => {
168
- const column = instance.getColumn(columnId)
169
-
170
- const columnIds = column
171
- ?.getLeafColumns()
172
- .map(d => d.id)
173
- .filter(Boolean) as string[]
174
-
175
- instance.setColumnPinning(old => {
176
- if (position === 'right') {
177
- return {
178
- left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
179
- right: [
180
- ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),
181
- ...columnIds,
182
- ],
183
- }
184
- }
185
-
186
- if (position === 'left') {
187
- return {
188
- left: [
189
- ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),
190
- ...columnIds,
191
- ],
192
- right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
193
- }
194
- }
195
-
196
- return {
197
- left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),
198
- right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),
199
- }
200
- })
201
- },
202
-
203
- getColumnCanPin: columnId => {
204
- const column = instance.getColumn(columnId)
205
-
206
- if (!column) {
207
- throw new Error()
208
- }
209
-
210
- const leafColumns = column.getLeafColumns()
211
-
212
- return leafColumns.some(
213
- d =>
214
- (d.enablePinning ?? true) &&
215
- (instance.options.enablePinning ?? true)
216
- )
217
- },
218
-
219
- getColumnIsPinned: columnId => {
220
- const column = instance.getColumn(columnId)
221
-
222
- if (!column) {
223
- throw new Error()
224
- }
225
-
226
- const leafColumnIds = column.getLeafColumns().map(d => d.id)
227
-
228
- const { left, right } = instance.getState().columnPinning
229
-
230
- const isLeft = leafColumnIds.some(d => left?.includes(d))
231
- const isRight = leafColumnIds.some(d => right?.includes(d))
232
-
233
- return isLeft ? 'left' : isRight ? 'right' : false
234
- },
235
-
236
- getColumnPinnedIndex: columnId => {
237
- const position = instance.getColumnIsPinned(columnId)
238
-
239
- return position
240
- ? instance.getState().columnPinning?.[position]?.indexOf(columnId) ??
241
- -1
242
- : 0
243
- },
244
-
245
226
  getIsSomeColumnsPinned: () => {
246
227
  const { left, right } = instance.getState().columnPinning
247
228
 
@@ -259,7 +240,7 @@ export const Pinning: TableFeature = {
259
240
  .filter(Boolean)
260
241
  },
261
242
  {
262
- key: 'getLeftLeafColumns',
243
+ key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',
263
244
  debug: () =>
264
245
  instance.options.debugAll ?? instance.options.debugColumns,
265
246
  }
@@ -276,7 +257,7 @@ export const Pinning: TableFeature = {
276
257
  .filter(Boolean)
277
258
  },
278
259
  {
279
- key: 'getRightLeafColumns',
260
+ key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',
280
261
  debug: () =>
281
262
  instance.options.debugAll ?? instance.options.debugColumns,
282
263
  }
@@ -294,7 +275,7 @@ export const Pinning: TableFeature = {
294
275
  return allColumns.filter(d => !leftAndRight.includes(d.id))
295
276
  },
296
277
  {
297
- key: 'getCenterLeafColumns',
278
+ key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',
298
279
  debug: () =>
299
280
  instance.options.debugAll ?? instance.options.debugColumns,
300
281
  }