@tanstack/table-core 8.0.13 → 8.1.1

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 (96) hide show
  1. package/build/cjs/core/cell.js +13 -13
  2. package/build/cjs/core/cell.js.map +1 -1
  3. package/build/cjs/core/column.js +20 -21
  4. package/build/cjs/core/column.js.map +1 -1
  5. package/build/cjs/core/headers.js +63 -68
  6. package/build/cjs/core/headers.js.map +1 -1
  7. package/build/cjs/core/row.js +16 -11
  8. package/build/cjs/core/row.js.map +1 -1
  9. package/build/cjs/core/{instance.js → table.js} +46 -57
  10. package/build/cjs/core/table.js.map +1 -0
  11. package/build/cjs/features/ColumnSizing.js +36 -36
  12. package/build/cjs/features/ColumnSizing.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +34 -34
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +46 -52
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +24 -49
  18. package/build/cjs/features/Grouping.js.map +1 -1
  19. package/build/cjs/features/Ordering.js +8 -8
  20. package/build/cjs/features/Ordering.js.map +1 -1
  21. package/build/cjs/features/Pagination.js +37 -37
  22. package/build/cjs/features/Pagination.js.map +1 -1
  23. package/build/cjs/features/Pinning.js +33 -33
  24. package/build/cjs/features/Pinning.js.map +1 -1
  25. package/build/cjs/features/RowSelection.js +86 -74
  26. package/build/cjs/features/RowSelection.js.map +1 -1
  27. package/build/cjs/features/Sorting.js +36 -40
  28. package/build/cjs/features/Sorting.js.map +1 -1
  29. package/build/cjs/features/Visibility.js +30 -30
  30. package/build/cjs/features/Visibility.js.map +1 -1
  31. package/build/cjs/index.js +3 -4
  32. package/build/cjs/index.js.map +1 -1
  33. package/build/cjs/utils/filterRowsUtils.js +8 -8
  34. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  35. package/build/cjs/utils/getCoreRowModel.js +8 -8
  36. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  37. package/build/cjs/utils/getExpandedRowModel.js +4 -4
  38. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  39. package/build/cjs/utils/getFacetedMinMaxValues.js +3 -3
  40. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  41. package/build/cjs/utils/getFacetedRowModel.js +4 -4
  42. package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
  43. package/build/cjs/utils/getFacetedUniqueValues.js +3 -3
  44. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
  45. package/build/cjs/utils/getFilteredRowModel.js +8 -8
  46. package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
  47. package/build/cjs/utils/getGroupedRowModel.js +9 -9
  48. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  49. package/build/cjs/utils/getPaginationRowModel.js +4 -4
  50. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  51. package/build/cjs/utils/getSortedRowModel.js +7 -7
  52. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  53. package/build/cjs/utils.js +2 -2
  54. package/build/cjs/utils.js.map +1 -1
  55. package/build/esm/index.js +585 -677
  56. package/build/esm/index.js.map +1 -1
  57. package/build/stats-html.html +1 -1
  58. package/build/stats-react.json +352 -377
  59. package/build/types/index.d.ts +286 -360
  60. package/build/umd/index.development.js +586 -678
  61. package/build/umd/index.development.js.map +1 -1
  62. package/build/umd/index.production.js +1 -1
  63. package/build/umd/index.production.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/core/cell.ts +34 -28
  66. package/src/core/column.ts +83 -72
  67. package/src/core/headers.ts +118 -149
  68. package/src/core/row.ts +31 -25
  69. package/src/core/{instance.ts → table.ts} +85 -116
  70. package/src/features/ColumnSizing.ts +45 -47
  71. package/src/features/Expanding.ts +53 -59
  72. package/src/features/Filters.ts +112 -132
  73. package/src/features/Grouping.ts +63 -112
  74. package/src/features/Ordering.ts +19 -21
  75. package/src/features/Pagination.ts +54 -55
  76. package/src/features/Pinning.ts +49 -61
  77. package/src/features/RowSelection.ts +115 -114
  78. package/src/features/Sorting.ts +57 -72
  79. package/src/features/Visibility.ts +48 -48
  80. package/src/index.ts +1 -2
  81. package/src/types.ts +64 -69
  82. package/src/utils/filterRowsUtils.ts +33 -28
  83. package/src/utils/getCoreRowModel.ts +22 -22
  84. package/src/utils/getExpandedRowModel.ts +15 -15
  85. package/src/utils/getFacetedMinMaxValues.ts +6 -6
  86. package/src/utils/getFacetedRowModel.ts +12 -12
  87. package/src/utils/getFacetedUniqueValues.ts +6 -6
  88. package/src/utils/getFilteredRowModel.ts +17 -17
  89. package/src/utils/getGroupedRowModel.ts +18 -21
  90. package/src/utils/getPaginationRowModel.ts +10 -13
  91. package/src/utils/getSortedRowModel.ts +14 -14
  92. package/src/utils.ts +8 -2
  93. package/build/cjs/core/instance.js.map +0 -1
  94. package/build/cjs/createTable.js +0 -72
  95. package/build/cjs/createTable.js.map +0 -1
  96. package/src/createTable.ts +0 -188
@@ -4,15 +4,15 @@ import {
4
4
  Updater,
5
5
  TableOptionsResolved,
6
6
  TableState,
7
- TableInstance,
8
- Renderable,
9
- TableGenerics,
7
+ Table,
8
+ ColumnDefTemplate,
10
9
  InitialTableState,
11
10
  Row,
12
11
  Column,
13
12
  RowModel,
14
13
  ColumnDef,
15
14
  TableOptions,
15
+ RowData,
16
16
  } from '../types'
17
17
 
18
18
  //
@@ -32,14 +32,14 @@ import { Sorting } from '../features/Sorting'
32
32
  import { Visibility } from '../features/Visibility'
33
33
 
34
34
  export type TableFeature = {
35
- getDefaultOptions?: (instance: any) => any
35
+ getDefaultOptions?: (table: any) => any
36
36
  getInitialState?: (initialState?: InitialTableState) => any
37
- createInstance?: (instance: any) => any
37
+ createTable?: (table: any) => any
38
38
  getDefaultColumnDef?: () => any
39
- createColumn?: (column: any, instance: any) => any
40
- createHeader?: (column: any, instance: any) => any
41
- createCell?: (cell: any, column: any, row: any, instance: any) => any
42
- createRow?: (row: any, instance: any) => any
39
+ createColumn?: (column: any, table: any) => any
40
+ createHeader?: (column: any, table: any) => any
41
+ createCell?: (cell: any, column: any, row: any, table: any) => any
42
+ createRow?: (row: any, table: any) => any
43
43
  }
44
44
 
45
45
  const features = [
@@ -60,11 +60,10 @@ const features = [
60
60
 
61
61
  export type CoreTableState = {}
62
62
 
63
- export type CoreOptions<TGenerics extends TableGenerics> = {
64
- data: TGenerics['Row'][]
63
+ export type CoreOptions<TData extends RowData> = {
64
+ data: TData[]
65
65
  state: Partial<TableState>
66
66
  onStateChange: (updater: Updater<TableState>) => void
67
- render: TGenerics['Renderer']
68
67
  debugAll?: boolean
69
68
  debugTable?: boolean
70
69
  debugHeaders?: boolean
@@ -73,72 +72,57 @@ export type CoreOptions<TGenerics extends TableGenerics> = {
73
72
  initialState?: InitialTableState
74
73
  autoResetAll?: boolean
75
74
  mergeOptions?: (
76
- defaultOptions: TableOptions<TGenerics>,
77
- options: Partial<TableOptions<TGenerics>>
78
- ) => TableOptions<TGenerics>
79
- meta?: TGenerics['TableMeta']
80
- getCoreRowModel: (instance: TableInstance<any>) => () => RowModel<any>
81
- getSubRows?: (
82
- originalRow: TGenerics['Row'],
83
- index: number
84
- ) => undefined | TGenerics['Row'][]
85
- getRowId?: (
86
- originalRow: TGenerics['Row'],
87
- index: number,
88
- parent?: Row<TGenerics>
89
- ) => string
90
- columns: ColumnDef<TGenerics>[]
91
- defaultColumn?: Partial<ColumnDef<TGenerics>>
75
+ defaultOptions: TableOptions<TData>,
76
+ options: Partial<TableOptions<TData>>
77
+ ) => TableOptions<TData>
78
+ meta?: unknown
79
+ getCoreRowModel: (table: Table<any>) => () => RowModel<any>
80
+ getSubRows?: (originalRow: TData, index: number) => undefined | TData[]
81
+ getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string
82
+ columns: ColumnDef<TData>[]
83
+ defaultColumn?: Partial<ColumnDef<TData>>
92
84
  renderFallbackValue: any
93
85
  }
94
86
 
95
- export type CoreInstance<TGenerics extends TableGenerics> = {
87
+ export type CoreInstance<TData extends RowData> = {
96
88
  initialState: TableState
97
89
  reset: () => void
98
- options: RequiredKeys<TableOptionsResolved<TGenerics>, 'state'>
99
- setOptions: (newOptions: Updater<TableOptionsResolved<TGenerics>>) => void
90
+ options: RequiredKeys<TableOptionsResolved<TData>, 'state'>
91
+ setOptions: (newOptions: Updater<TableOptionsResolved<TData>>) => void
100
92
  getState: () => TableState
101
93
  setState: (updater: Updater<TableState>) => void
102
94
  _features: readonly TableFeature[]
103
95
  _queue: (cb: () => void) => void
104
- _render: <TProps>(
105
- template: Renderable<TGenerics, TProps>,
106
- props: TProps
107
- ) => string | null | TGenerics['Rendered']
108
- _getRowId: (
109
- _: TGenerics['Row'],
110
- index: number,
111
- parent?: Row<TGenerics>
112
- ) => string
113
- getCoreRowModel: () => RowModel<TGenerics>
114
- _getCoreRowModel?: () => RowModel<TGenerics>
115
- getRowModel: () => RowModel<TGenerics>
116
- getRow: (id: string) => Row<TGenerics>
117
- _getDefaultColumnDef: () => Partial<ColumnDef<TGenerics>>
118
- _getColumnDefs: () => ColumnDef<TGenerics>[]
119
- _getAllFlatColumnsById: () => Record<string, Column<TGenerics>>
120
- getAllColumns: () => Column<TGenerics>[]
121
- getAllFlatColumns: () => Column<TGenerics>[]
122
- getAllLeafColumns: () => Column<TGenerics>[]
123
- getColumn: (columnId: string) => Column<TGenerics>
96
+ _getRowId: (_: TData, index: number, parent?: Row<TData>) => string
97
+ getCoreRowModel: () => RowModel<TData>
98
+ _getCoreRowModel?: () => RowModel<TData>
99
+ getRowModel: () => RowModel<TData>
100
+ getRow: (id: string) => Row<TData>
101
+ _getDefaultColumnDef: () => Partial<ColumnDef<TData>>
102
+ _getColumnDefs: () => ColumnDef<TData>[]
103
+ _getAllFlatColumnsById: () => Record<string, Column<TData>>
104
+ getAllColumns: () => Column<TData>[]
105
+ getAllFlatColumns: () => Column<TData>[]
106
+ getAllLeafColumns: () => Column<TData>[]
107
+ getColumn: (columnId: string) => Column<TData>
124
108
  }
125
109
 
126
- export function createTableInstance<TGenerics extends TableGenerics>(
127
- options: TableOptionsResolved<TGenerics>
128
- ): TableInstance<TGenerics> {
110
+ export function createTable<TData extends RowData>(
111
+ options: TableOptionsResolved<TData>
112
+ ): Table<TData> {
129
113
  if (options.debugAll || options.debugTable) {
130
114
  console.info('Creating Table Instance...')
131
115
  }
132
116
 
133
- let instance = { _features: features } as unknown as TableInstance<TGenerics>
117
+ let table = { _features: features } as unknown as Table<TData>
134
118
 
135
- const defaultOptions = instance._features.reduce((obj, feature) => {
136
- return Object.assign(obj, feature.getDefaultOptions?.(instance))
137
- }, {}) as TableOptionsResolved<TGenerics>
119
+ const defaultOptions = table._features.reduce((obj, feature) => {
120
+ return Object.assign(obj, feature.getDefaultOptions?.(table))
121
+ }, {}) as TableOptionsResolved<TData>
138
122
 
139
- const mergeOptions = (options: TableOptionsResolved<TGenerics>) => {
140
- if (instance.options.mergeOptions) {
141
- return instance.options.mergeOptions(defaultOptions, options)
123
+ const mergeOptions = (options: TableOptionsResolved<TData>) => {
124
+ if (table.options.mergeOptions) {
125
+ return table.options.mergeOptions(defaultOptions, options)
142
126
  }
143
127
 
144
128
  return {
@@ -154,14 +138,14 @@ export function createTableInstance<TGenerics extends TableGenerics>(
154
138
  ...(options.initialState ?? {}),
155
139
  } as TableState
156
140
 
157
- instance._features.forEach(feature => {
141
+ table._features.forEach(feature => {
158
142
  initialState = feature.getInitialState?.(initialState) ?? initialState
159
143
  })
160
144
 
161
145
  const queued: (() => void)[] = []
162
146
  let queuedTimeout = false
163
147
 
164
- const coreInstance: CoreInstance<TGenerics> = {
148
+ const coreInstance: CoreInstance<TData> = {
165
149
  _features: features,
166
150
  options: {
167
151
  ...defaultOptions,
@@ -191,59 +175,44 @@ export function createTableInstance<TGenerics extends TableGenerics>(
191
175
  }
192
176
  },
193
177
  reset: () => {
194
- instance.setState(instance.initialState)
178
+ table.setState(table.initialState)
195
179
  },
196
180
  setOptions: updater => {
197
- const newOptions = functionalUpdate(updater, instance.options)
198
- instance.options = mergeOptions(newOptions) as RequiredKeys<
199
- TableOptionsResolved<TGenerics>,
181
+ const newOptions = functionalUpdate(updater, table.options)
182
+ table.options = mergeOptions(newOptions) as RequiredKeys<
183
+ TableOptionsResolved<TData>,
200
184
  'state'
201
185
  >
202
186
  },
203
- _render: (template, props) => {
204
- if (typeof instance.options.render === 'function') {
205
- return instance.options.render(template, props)
206
- }
207
-
208
- if (typeof template === 'function') {
209
- return (template as Function)(props)
210
- }
211
-
212
- return template
213
- },
214
187
 
215
188
  getState: () => {
216
- return instance.options.state as TableState
189
+ return table.options.state as TableState
217
190
  },
218
191
 
219
192
  setState: (updater: Updater<TableState>) => {
220
- instance.options.onStateChange?.(updater)
193
+ table.options.onStateChange?.(updater)
221
194
  },
222
195
 
223
- _getRowId: (
224
- row: TGenerics['Row'],
225
- index: number,
226
- parent?: Row<TGenerics>
227
- ) =>
228
- instance.options.getRowId?.(row, index, parent) ??
196
+ _getRowId: (row: TData, index: number, parent?: Row<TData>) =>
197
+ table.options.getRowId?.(row, index, parent) ??
229
198
  `${parent ? [parent.id, index].join('.') : index}`,
230
199
 
231
200
  getCoreRowModel: () => {
232
- if (!instance._getCoreRowModel) {
233
- instance._getCoreRowModel = instance.options.getCoreRowModel(instance)
201
+ if (!table._getCoreRowModel) {
202
+ table._getCoreRowModel = table.options.getCoreRowModel(table)
234
203
  }
235
204
 
236
- return instance._getCoreRowModel()
205
+ return table._getCoreRowModel!()
237
206
  },
238
207
 
239
208
  // The final calls start at the bottom of the model,
240
209
  // expanded rows, which then work their way up
241
210
 
242
211
  getRowModel: () => {
243
- return instance.getPaginationRowModel()
212
+ return table.getPaginationRowModel()
244
213
  },
245
214
  getRow: (id: string) => {
246
- const row = instance.getRowModel().rowsById[id]
215
+ const row = table.getRowModel().rowsById[id]
247
216
 
248
217
  if (!row) {
249
218
  if (process.env.NODE_ENV !== 'production') {
@@ -255,38 +224,38 @@ export function createTableInstance<TGenerics extends TableGenerics>(
255
224
  return row
256
225
  },
257
226
  _getDefaultColumnDef: memo(
258
- () => [instance.options.defaultColumn],
227
+ () => [table.options.defaultColumn],
259
228
  defaultColumn => {
260
- defaultColumn = (defaultColumn ?? {}) as Partial<ColumnDef<TGenerics>>
229
+ defaultColumn = (defaultColumn ?? {}) as Partial<ColumnDef<TData>>
261
230
 
262
231
  return {
263
232
  header: props => props.header.column.id,
264
233
  footer: props => props.header.column.id,
265
- cell: props => props.getValue()?.toString?.() ?? null,
266
- ...instance._features.reduce((obj, feature) => {
234
+ cell: props => (props.renderValue() as any)?.toString?.() ?? null,
235
+ ...table._features.reduce((obj, feature) => {
267
236
  return Object.assign(obj, feature.getDefaultColumnDef?.())
268
237
  }, {}),
269
238
  ...defaultColumn,
270
- } as Partial<ColumnDef<TGenerics>>
239
+ } as Partial<ColumnDef<TData>>
271
240
  },
272
241
  {
273
- debug: () => instance.options.debugAll ?? instance.options.debugColumns,
242
+ debug: () => table.options.debugAll ?? table.options.debugColumns,
274
243
  key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef',
275
244
  }
276
245
  ),
277
246
 
278
- _getColumnDefs: () => instance.options.columns,
247
+ _getColumnDefs: () => table.options.columns,
279
248
 
280
249
  getAllColumns: memo(
281
- () => [instance._getColumnDefs()],
250
+ () => [table._getColumnDefs()],
282
251
  columnDefs => {
283
252
  const recurseColumns = (
284
- columnDefs: ColumnDef<TGenerics>[],
285
- parent?: Column<TGenerics>,
253
+ columnDefs: ColumnDef<TData>[],
254
+ parent?: Column<TData>,
286
255
  depth = 0
287
- ): Column<TGenerics>[] => {
256
+ ): Column<TData>[] => {
288
257
  return columnDefs.map(columnDef => {
289
- const column = createColumn(instance, columnDef, depth, parent)
258
+ const column = createColumn(table, columnDef, depth, parent)
290
259
 
291
260
  column.columns = columnDef.columns
292
261
  ? recurseColumns(columnDef.columns, column, depth + 1)
@@ -300,12 +269,12 @@ export function createTableInstance<TGenerics extends TableGenerics>(
300
269
  },
301
270
  {
302
271
  key: process.env.NODE_ENV === 'development' && 'getAllColumns',
303
- debug: () => instance.options.debugAll ?? instance.options.debugColumns,
272
+ debug: () => table.options.debugAll ?? table.options.debugColumns,
304
273
  }
305
274
  ),
306
275
 
307
276
  getAllFlatColumns: memo(
308
- () => [instance.getAllColumns()],
277
+ () => [table.getAllColumns()],
309
278
  allColumns => {
310
279
  return allColumns.flatMap(column => {
311
280
  return column.getFlatColumns()
@@ -313,38 +282,38 @@ export function createTableInstance<TGenerics extends TableGenerics>(
313
282
  },
314
283
  {
315
284
  key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',
316
- debug: () => instance.options.debugAll ?? instance.options.debugColumns,
285
+ debug: () => table.options.debugAll ?? table.options.debugColumns,
317
286
  }
318
287
  ),
319
288
 
320
289
  _getAllFlatColumnsById: memo(
321
- () => [instance.getAllFlatColumns()],
290
+ () => [table.getAllFlatColumns()],
322
291
  flatColumns => {
323
292
  return flatColumns.reduce((acc, column) => {
324
293
  acc[column.id] = column
325
294
  return acc
326
- }, {} as Record<string, Column<TGenerics>>)
295
+ }, {} as Record<string, Column<TData>>)
327
296
  },
328
297
  {
329
298
  key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',
330
- debug: () => instance.options.debugAll ?? instance.options.debugColumns,
299
+ debug: () => table.options.debugAll ?? table.options.debugColumns,
331
300
  }
332
301
  ),
333
302
 
334
303
  getAllLeafColumns: memo(
335
- () => [instance.getAllColumns(), instance._getOrderColumnsFn()],
304
+ () => [table.getAllColumns(), table._getOrderColumnsFn()],
336
305
  (allColumns, orderColumns) => {
337
306
  let leafColumns = allColumns.flatMap(column => column.getLeafColumns())
338
307
  return orderColumns(leafColumns)
339
308
  },
340
309
  {
341
310
  key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',
342
- debug: () => instance.options.debugAll ?? instance.options.debugColumns,
311
+ debug: () => table.options.debugAll ?? table.options.debugColumns,
343
312
  }
344
313
  ),
345
314
 
346
315
  getColumn: columnId => {
347
- const column = instance._getAllFlatColumnsById()[columnId]
316
+ const column = table._getAllFlatColumnsById()[columnId]
348
317
 
349
318
  if (!column) {
350
319
  if (process.env.NODE_ENV !== 'production') {
@@ -357,11 +326,11 @@ export function createTableInstance<TGenerics extends TableGenerics>(
357
326
  },
358
327
  }
359
328
 
360
- Object.assign(instance, coreInstance)
329
+ Object.assign(table, coreInstance)
361
330
 
362
- instance._features.forEach(feature => {
363
- return Object.assign(instance, feature.createInstance?.(instance))
331
+ table._features.forEach(feature => {
332
+ return Object.assign(table, feature.createTable?.(table))
364
333
  })
365
334
 
366
- return instance
335
+ return table
367
336
  }
@@ -1,10 +1,11 @@
1
- import { TableFeature } from '../core/instance'
1
+ import { TableFeature } from '../core/table'
2
2
  import {
3
+ RowData,
3
4
  Column,
4
5
  Header,
5
6
  OnChangeFn,
6
7
  TableGenerics,
7
- TableInstance,
8
+ Table,
8
9
  Updater,
9
10
  } from '../types'
10
11
  import { makeStateUpdater } from '../utils'
@@ -43,7 +44,7 @@ export type ColumnSizingDefaultOptions = {
43
44
  onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>
44
45
  }
45
46
 
46
- export type ColumnSizingInstance<TGenerics extends TableGenerics> = {
47
+ export type ColumnSizingInstance = {
47
48
  setColumnSizing: (updater: Updater<ColumnSizingState>) => void
48
49
  setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
49
50
  resetColumnSizing: (defaultState?: boolean) => void
@@ -61,7 +62,7 @@ export type ColumnSizingColumnDef = {
61
62
  maxSize?: number
62
63
  }
63
64
 
64
- export type ColumnSizingColumn<TGenerics extends TableGenerics> = {
65
+ export type ColumnSizingColumn = {
65
66
  getSize: () => number
66
67
  getStart: (position?: ColumnPinningPosition) => number
67
68
  getCanResize: () => boolean
@@ -69,7 +70,7 @@ export type ColumnSizingColumn<TGenerics extends TableGenerics> = {
69
70
  resetSize: () => void
70
71
  }
71
72
 
72
- export type ColumnSizingHeader<TGenerics extends TableGenerics> = {
73
+ export type ColumnSizingHeader = {
73
74
  getSize: () => number
74
75
  getStart: (position?: ColumnPinningPosition) => number
75
76
  getResizeHandler: () => (event: unknown) => void
@@ -104,23 +105,23 @@ export const ColumnSizing: TableFeature = {
104
105
  }
105
106
  },
106
107
 
107
- getDefaultOptions: <TGenerics extends TableGenerics>(
108
- instance: TableInstance<TGenerics>
108
+ getDefaultOptions: <TData extends RowData>(
109
+ table: Table<TData>
109
110
  ): ColumnSizingDefaultOptions => {
110
111
  return {
111
112
  columnResizeMode: 'onEnd',
112
- onColumnSizingChange: makeStateUpdater('columnSizing', instance),
113
- onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', instance),
113
+ onColumnSizingChange: makeStateUpdater('columnSizing', table),
114
+ onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table),
114
115
  }
115
116
  },
116
117
 
117
- createColumn: <TGenerics extends TableGenerics>(
118
- column: Column<TGenerics>,
119
- instance: TableInstance<TGenerics>
120
- ): ColumnSizingColumn<TGenerics> => {
118
+ createColumn: <TData extends RowData>(
119
+ column: Column<TData>,
120
+ table: Table<TData>
121
+ ): ColumnSizingColumn => {
121
122
  return {
122
123
  getSize: () => {
123
- const columnSize = instance.getState().columnSizing[column.id]
124
+ const columnSize = table.getState().columnSizing[column.id]
124
125
 
125
126
  return Math.min(
126
127
  Math.max(
@@ -132,10 +133,10 @@ export const ColumnSizing: TableFeature = {
132
133
  },
133
134
  getStart: position => {
134
135
  const columns = !position
135
- ? instance.getVisibleLeafColumns()
136
+ ? table.getVisibleLeafColumns()
136
137
  : position === 'left'
137
- ? instance.getLeftVisibleLeafColumns()
138
- : instance.getRightVisibleLeafColumns()
138
+ ? table.getLeftVisibleLeafColumns()
139
+ : table.getRightVisibleLeafColumns()
139
140
 
140
141
  const index = columns.findIndex(d => d.id === column.id)
141
142
 
@@ -150,33 +151,31 @@ export const ColumnSizing: TableFeature = {
150
151
  return 0
151
152
  },
152
153
  resetSize: () => {
153
- instance.setColumnSizing(({ [column.id]: _, ...rest }) => {
154
+ table.setColumnSizing(({ [column.id]: _, ...rest }) => {
154
155
  return rest
155
156
  })
156
157
  },
157
158
  getCanResize: () => {
158
159
  return (
159
160
  (column.columnDef.enableResizing ?? true) &&
160
- (instance.options.enableColumnResizing ?? true)
161
+ (table.options.enableColumnResizing ?? true)
161
162
  )
162
163
  },
163
164
  getIsResizing: () => {
164
- return (
165
- instance.getState().columnSizingInfo.isResizingColumn === column.id
166
- )
165
+ return table.getState().columnSizingInfo.isResizingColumn === column.id
167
166
  },
168
167
  }
169
168
  },
170
169
 
171
- createHeader: <TGenerics extends TableGenerics>(
172
- header: Header<TGenerics>,
173
- instance: TableInstance<TGenerics>
174
- ): ColumnSizingHeader<TGenerics> => {
170
+ createHeader: <TData extends RowData>(
171
+ header: Header<TData>,
172
+ table: Table<TData>
173
+ ): ColumnSizingHeader => {
175
174
  return {
176
175
  getSize: () => {
177
176
  let sum = 0
178
177
 
179
- const recurse = (header: Header<TGenerics>) => {
178
+ const recurse = (header: Header<TData>) => {
180
179
  if (header.subHeaders.length) {
181
180
  header.subHeaders.forEach(recurse)
182
181
  } else {
@@ -198,7 +197,7 @@ export const ColumnSizing: TableFeature = {
198
197
  return 0
199
198
  },
200
199
  getResizeHandler: () => {
201
- const column = instance.getColumn(header.column.id)
200
+ const column = table.getColumn(header.column.id)
202
201
  const canResize = column.getCanResize()
203
202
 
204
203
  return (e: unknown) => {
@@ -237,7 +236,7 @@ export const ColumnSizing: TableFeature = {
237
236
 
238
237
  let newColumnSizing: ColumnSizingState = {}
239
238
 
240
- instance.setColumnSizingInfo(old => {
239
+ table.setColumnSizingInfo(old => {
241
240
  const deltaOffset = clientXPos - (old?.startOffset ?? 0)
242
241
  const deltaPercentage = Math.max(
243
242
  deltaOffset / (old?.startSize ?? 0),
@@ -259,10 +258,10 @@ export const ColumnSizing: TableFeature = {
259
258
  })
260
259
 
261
260
  if (
262
- instance.options.columnResizeMode === 'onChange' ||
261
+ table.options.columnResizeMode === 'onChange' ||
263
262
  eventType === 'end'
264
263
  ) {
265
- instance.setColumnSizing(old => ({
264
+ table.setColumnSizing(old => ({
266
265
  ...old,
267
266
  ...newColumnSizing,
268
267
  }))
@@ -275,7 +274,7 @@ export const ColumnSizing: TableFeature = {
275
274
  const onEnd = (clientXPos?: number) => {
276
275
  updateOffset('end', clientXPos)
277
276
 
278
- instance.setColumnSizingInfo(old => ({
277
+ table.setColumnSizingInfo(old => ({
279
278
  ...old,
280
279
  isResizingColumn: false,
281
280
  startOffset: null,
@@ -333,7 +332,7 @@ export const ColumnSizing: TableFeature = {
333
332
  )
334
333
  }
335
334
 
336
- instance.setColumnSizingInfo(old => ({
335
+ table.setColumnSizingInfo(old => ({
337
336
  ...old,
338
337
  startOffset: clientX,
339
338
  startSize,
@@ -347,41 +346,40 @@ export const ColumnSizing: TableFeature = {
347
346
  }
348
347
  },
349
348
 
350
- createInstance: <TGenerics extends TableGenerics>(
351
- instance: TableInstance<TGenerics>
352
- ): ColumnSizingInstance<TGenerics> => {
349
+ createTable: <TData extends RowData>(
350
+ table: Table<TData>
351
+ ): ColumnSizingInstance => {
353
352
  return {
354
- setColumnSizing: updater =>
355
- instance.options.onColumnSizingChange?.(updater),
353
+ setColumnSizing: updater => table.options.onColumnSizingChange?.(updater),
356
354
  setColumnSizingInfo: updater =>
357
- instance.options.onColumnSizingInfoChange?.(updater),
355
+ table.options.onColumnSizingInfoChange?.(updater),
358
356
  resetColumnSizing: defaultState => {
359
- instance.setColumnSizing(
360
- defaultState ? {} : instance.initialState.columnSizing ?? {}
357
+ table.setColumnSizing(
358
+ defaultState ? {} : table.initialState.columnSizing ?? {}
361
359
  )
362
360
  },
363
361
  resetHeaderSizeInfo: defaultState => {
364
- instance.setColumnSizingInfo(
362
+ table.setColumnSizingInfo(
365
363
  defaultState
366
364
  ? getDefaultColumnSizingInfoState()
367
- : instance.initialState.columnSizingInfo ??
365
+ : table.initialState.columnSizingInfo ??
368
366
  getDefaultColumnSizingInfoState()
369
367
  )
370
368
  },
371
369
  getTotalSize: () =>
372
- instance.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
370
+ table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {
373
371
  return sum + header.getSize()
374
372
  }, 0) ?? 0,
375
373
  getLeftTotalSize: () =>
376
- instance.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
374
+ table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {
377
375
  return sum + header.getSize()
378
376
  }, 0) ?? 0,
379
377
  getCenterTotalSize: () =>
380
- instance.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
378
+ table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {
381
379
  return sum + header.getSize()
382
380
  }, 0) ?? 0,
383
381
  getRightTotalSize: () =>
384
- instance.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
382
+ table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {
385
383
  return sum + header.getSize()
386
384
  }, 0) ?? 0,
387
385
  }