@tanstack/react-table 8.0.0-alpha.2 → 8.0.0-alpha.5

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 (99) hide show
  1. package/build/cjs/core.js +85 -52
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/createTable.js +11 -6
  4. package/build/cjs/createTable.js.map +1 -1
  5. package/build/cjs/features/ColumnSizing.js +2 -16
  6. package/build/cjs/features/ColumnSizing.js.map +1 -1
  7. package/build/cjs/features/Expanding.js +23 -2
  8. package/build/cjs/features/Expanding.js.map +1 -1
  9. package/build/cjs/features/Filters.js +54 -5
  10. package/build/cjs/features/Filters.js.map +1 -1
  11. package/build/cjs/features/Grouping.js +23 -2
  12. package/build/cjs/features/Grouping.js.map +1 -1
  13. package/build/cjs/features/Headers.js +87 -24
  14. package/build/cjs/features/Headers.js.map +1 -1
  15. package/build/cjs/features/Ordering.js +4 -1
  16. package/build/cjs/features/Ordering.js.map +1 -1
  17. package/build/cjs/features/Pagination.js +198 -0
  18. package/build/cjs/features/Pagination.js.map +1 -0
  19. package/build/cjs/features/Pinning.js +0 -14
  20. package/build/cjs/features/Pinning.js.map +1 -1
  21. package/build/cjs/features/RowSelection.js +541 -0
  22. package/build/cjs/features/RowSelection.js.map +1 -0
  23. package/build/cjs/features/Sorting.js +76 -18
  24. package/build/cjs/features/Sorting.js.map +1 -1
  25. package/build/cjs/features/Visibility.js +8 -2
  26. package/build/cjs/features/Visibility.js.map +1 -1
  27. package/build/cjs/index.js +2 -0
  28. package/build/cjs/index.js.map +1 -1
  29. package/build/cjs/sortTypes.js +1 -0
  30. package/build/cjs/sortTypes.js.map +1 -1
  31. package/build/cjs/utils/columnFilterRowsFn.js +3 -2
  32. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
  33. package/build/cjs/utils/expandRowsFn.js +2 -2
  34. package/build/cjs/utils/expandRowsFn.js.map +1 -1
  35. package/build/cjs/utils/globalFilterRowsFn.js +3 -2
  36. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
  37. package/build/cjs/utils/groupRowsFn.js +4 -3
  38. package/build/cjs/utils/groupRowsFn.js.map +1 -1
  39. package/build/cjs/utils/paginateRowsFn.js +44 -0
  40. package/build/cjs/utils/paginateRowsFn.js.map +1 -0
  41. package/build/cjs/utils/sortRowsFn.js +3 -2
  42. package/build/cjs/utils/sortRowsFn.js.map +1 -1
  43. package/build/cjs/utils.js +6 -3
  44. package/build/cjs/utils.js.map +1 -1
  45. package/build/esm/index.js +2626 -1571
  46. package/build/esm/index.js.map +1 -1
  47. package/build/stats-html.html +1 -1
  48. package/build/stats-react.json +350 -248
  49. package/build/types/core.d.ts +10 -25
  50. package/build/types/createTable.d.ts +21 -4
  51. package/build/types/features/ColumnSizing.d.ts +4 -10
  52. package/build/types/features/Expanding.d.ts +2 -1
  53. package/build/types/features/Filters.d.ts +7 -2
  54. package/build/types/features/Grouping.d.ts +2 -2
  55. package/build/types/features/Ordering.d.ts +1 -1
  56. package/build/types/features/Pagination.d.ts +44 -0
  57. package/build/types/features/Pinning.d.ts +3 -3
  58. package/build/types/features/RowSelection.d.ts +66 -0
  59. package/build/types/features/Sorting.d.ts +5 -2
  60. package/build/types/index.d.ts +2 -1
  61. package/build/types/sortTypes.d.ts +1 -0
  62. package/build/types/types.d.ts +9 -6
  63. package/build/types/utils/columnFilterRowsFn.d.ts +2 -2
  64. package/build/types/utils/expandRowsFn.d.ts +2 -2
  65. package/build/types/utils/globalFilterRowsFn.d.ts +2 -2
  66. package/build/types/utils/groupRowsFn.d.ts +2 -2
  67. package/build/types/utils/paginateRowsFn.d.ts +2 -0
  68. package/build/types/utils/sortRowsFn.d.ts +2 -2
  69. package/build/types/utils.d.ts +5 -1
  70. package/build/umd/index.development.js +2626 -1570
  71. package/build/umd/index.development.js.map +1 -1
  72. package/build/umd/index.production.js +1 -1
  73. package/build/umd/index.production.js.map +1 -1
  74. package/package.json +1 -1
  75. package/src/core.tsx +222 -273
  76. package/src/createTable.tsx +69 -9
  77. package/src/features/ColumnSizing.ts +8 -37
  78. package/src/features/Expanding.ts +27 -11
  79. package/src/features/Filters.ts +74 -19
  80. package/src/features/Grouping.ts +27 -12
  81. package/src/features/Headers.ts +26 -58
  82. package/src/features/Ordering.ts +2 -3
  83. package/src/features/Pagination.ts +327 -0
  84. package/src/features/Pinning.ts +3 -16
  85. package/src/features/RowSelection.ts +831 -0
  86. package/src/features/Sorting.ts +82 -22
  87. package/src/features/Visibility.ts +2 -4
  88. package/src/index.tsx +2 -1
  89. package/src/sortTypes.ts +1 -1
  90. package/src/types.ts +25 -8
  91. package/src/utils/columnFilterRowsFn.ts +5 -12
  92. package/src/utils/expandRowsFn.ts +2 -5
  93. package/src/utils/globalFilterRowsFn.ts +3 -10
  94. package/src/utils/groupRowsFn.ts +3 -5
  95. package/src/utils/paginateRowsFn.ts +34 -0
  96. package/src/utils/sortRowsFn.ts +5 -5
  97. package/src/utils.tsx +12 -4
  98. package/src/features/withPagination.oldts +0 -208
  99. package/src/features/withRowSelection.oldts +0 -467
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/react-table",
3
3
  "author": "Tanner Linsley",
4
- "version": "8.0.0-alpha.2",
4
+ "version": "8.0.0-alpha.5",
5
5
  "description": "Hooks for building lightweight, fast and extendable datagrids for React",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/tanstack/react-table#readme",
package/src/core.tsx CHANGED
@@ -39,11 +39,23 @@ import * as Sorting from './features/Sorting'
39
39
  import * as Grouping from './features/Grouping'
40
40
  import * as Expanding from './features/Expanding'
41
41
  import * as ColumnSizing from './features/ColumnSizing'
42
+ import * as Pagination from './features/Pagination'
43
+ import * as RowSelection from './features/RowSelection'
42
44
  import { RowModel } from '.'
43
45
 
44
- // import './features/withColumnResizing';
45
- // import './features/withPagination';
46
- // import './features/withRowSelection';
46
+ const features = [
47
+ Visibility,
48
+ Ordering,
49
+ Pinning,
50
+ Headers,
51
+ Filters,
52
+ Sorting,
53
+ Grouping,
54
+ Expanding,
55
+ ColumnSizing,
56
+ Pagination,
57
+ RowSelection,
58
+ ]
47
59
 
48
60
  export type CoreOptions<
49
61
  TData,
@@ -67,6 +79,7 @@ export type CoreOptions<
67
79
  parent?: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
68
80
  ) => string
69
81
  onStateChange?: (newState: TableState) => void
82
+ autoResetAll?: boolean
70
83
  }
71
84
 
72
85
  export type TableCore<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =
@@ -261,93 +274,138 @@ export type CoreColumnDef<
261
274
  TFilterFns,
262
275
  TSortingFns,
263
276
  TAggregationFns
264
- > = (
265
- | {
266
- accessorFn: AccessorFn<TData>
267
- id: string
268
- accessorKey?: never
269
- header?:
270
- | string
271
- | Renderable<{
272
- header: Header<
273
- TData,
274
- TValue,
275
- TFilterFns,
276
- TSortingFns,
277
- TAggregationFns
278
- >
279
- column: Column<
280
- TData,
281
- TValue,
282
- TFilterFns,
283
- TSortingFns,
284
- TAggregationFns
285
- >
286
- }>
287
- }
288
- | {
289
- accessorKey: string & keyof TData
290
- id?: string
291
- accessorFn?: never
292
- header?:
293
- | string
294
- | Renderable<{
295
- header: Header<
296
- TData,
297
- TValue,
298
- TFilterFns,
299
- TSortingFns,
300
- TAggregationFns
301
- >
302
- column: Column<
303
- TData,
304
- TValue,
305
- TFilterFns,
306
- TSortingFns,
307
- TAggregationFns
308
- >
309
- }>
310
- }
311
- | {
312
- id: string
313
- accessorKey?: never
314
- accessorFn?: never
315
- header?:
316
- | string
317
- | Renderable<{
318
- header: Header<
319
- TData,
320
- TValue,
321
- TFilterFns,
322
- TSortingFns,
323
- TAggregationFns
324
- >
325
- column: Column<
326
- TData,
327
- TValue,
328
- TFilterFns,
329
- TSortingFns,
330
- TAggregationFns
331
- >
332
- }>
333
- }
334
- | {
335
- header: string
336
- id?: string
337
- accessorKey?: never
338
- accessorFn?: never
339
- }
340
- ) & {
277
+ > = {
278
+ id: string
279
+ accessorKey?: string & keyof TData
280
+ accessorFn?: AccessorFn<TData>
281
+ header?:
282
+ | string
283
+ | Renderable<{
284
+ instance: ReactTable<
285
+ TData,
286
+ TValue,
287
+ TFilterFns,
288
+ TSortingFns,
289
+ TAggregationFns
290
+ >
291
+ header: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
292
+ column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
293
+ }>
294
+ } & // instance: ReactTable< // | Renderable<{ // | string // header?: // accessorKey?: never // id: string // accessorFn: AccessorFn<TData> // | {
295
+ // TData,
296
+ // TValue,
297
+ // TFilterFns,
298
+ // TSortingFns,
299
+ // TAggregationFns
300
+ // >
301
+ // header: Header<
302
+ // TData,
303
+ // TValue,
304
+ // TFilterFns,
305
+ // TSortingFns,
306
+ // TAggregationFns
307
+ // >
308
+ // column: Column<
309
+ // TData,
310
+ // TValue,
311
+ // TFilterFns,
312
+ // TSortingFns,
313
+ // TAggregationFns
314
+ // >
315
+ // }>
316
+ // }
317
+ // | {
318
+ // accessorKey: string & keyof TData
319
+ // id?: string
320
+ // accessorFn?: never
321
+ // header?:
322
+ // | string
323
+ // | Renderable<{
324
+ // instance: ReactTable<
325
+ // TData,
326
+ // TValue,
327
+ // TFilterFns,
328
+ // TSortingFns,
329
+ // TAggregationFns
330
+ // >
331
+ // header: Header<
332
+ // TData,
333
+ // TValue,
334
+ // TFilterFns,
335
+ // TSortingFns,
336
+ // TAggregationFns
337
+ // >
338
+ // column: Column<
339
+ // TData,
340
+ // TValue,
341
+ // TFilterFns,
342
+ // TSortingFns,
343
+ // TAggregationFns
344
+ // >
345
+ // }>
346
+ // }
347
+ // | {
348
+ // id: string
349
+ // accessorKey?: never
350
+ // accessorFn?: never
351
+ // header?:
352
+ // | string
353
+ // | Renderable<{
354
+ // instance: ReactTable<
355
+ // TData,
356
+ // TValue,
357
+ // TFilterFns,
358
+ // TSortingFns,
359
+ // TAggregationFns
360
+ // >
361
+ // header: Header<
362
+ // TData,
363
+ // TValue,
364
+ // TFilterFns,
365
+ // TSortingFns,
366
+ // TAggregationFns
367
+ // >
368
+ // column: Column<
369
+ // TData,
370
+ // TValue,
371
+ // TFilterFns,
372
+ // TSortingFns,
373
+ // TAggregationFns
374
+ // >
375
+ // }>
376
+ // }
377
+ // | {
378
+ // header: string
379
+ // id?: string
380
+ // accessorKey?: never
381
+ // accessorFn?: never
382
+ // }
383
+ {
341
384
  __generated: true
342
385
  width?: number
343
386
  minWidth?: number
344
387
  maxWidth?: number
345
388
  columns?: ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
346
389
  footer?: Renderable<{
390
+ instance: ReactTable<
391
+ TData,
392
+ TValue,
393
+ TFilterFns,
394
+ TSortingFns,
395
+ TAggregationFns
396
+ >
347
397
  header: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
348
398
  column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
349
399
  }>
350
400
  cell?: Renderable<{
401
+ instance: ReactTable<
402
+ TData,
403
+ TValue,
404
+ TFilterFns,
405
+ TSortingFns,
406
+ TAggregationFns
407
+ >
408
+ row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
351
409
  column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
352
410
  cell: Cell<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
353
411
  value: TValue
@@ -407,16 +465,9 @@ export function createTableInstance<
407
465
  TAggregationFns
408
466
  >
409
467
 
410
- const defaultOptions = {
411
- ...Visibility.getDefaultOptions(instance),
412
- ...Ordering.getDefaultOptions(instance),
413
- ...Pinning.getDefaultOptions(instance),
414
- ...Filters.getDefaultOptions(instance),
415
- ...Sorting.getDefaultOptions(instance),
416
- ...Grouping.getDefaultOptions(instance),
417
- ...Expanding.getDefaultOptions(instance),
418
- ...ColumnSizing.getDefaultOptions(instance),
419
- }
468
+ const defaultOptions = features.reduce((obj, feature) => {
469
+ return Object.assign(obj, (feature as any).getDefaultOptions?.(instance))
470
+ }, {})
420
471
 
421
472
  const defaultState = {}
422
473
 
@@ -431,16 +482,11 @@ export function createTableInstance<
431
482
  instance.options = buildOptions(options)
432
483
 
433
484
  const initialState = {
434
- ...Visibility.getInitialState(),
435
- ...Ordering.getInitialState(),
436
- ...Pinning.getInitialState(),
437
- ...Filters.getInitialState(),
438
- ...Sorting.getInitialState(),
439
- ...Grouping.getInitialState(),
440
- ...Expanding.getInitialState(),
441
- ...ColumnSizing.getInitialState(),
485
+ ...features.reduce((obj, feature) => {
486
+ return Object.assign(obj, (feature as any).getInitialState?.())
487
+ }, {}),
442
488
  ...(options.initialState ?? {}),
443
- }
489
+ } as TableState
444
490
 
445
491
  const finalInstance: ReactTable<
446
492
  TData,
@@ -450,15 +496,9 @@ export function createTableInstance<
450
496
  TAggregationFns
451
497
  > = {
452
498
  ...instance,
453
- ...Visibility.getInstance(instance),
454
- ...Ordering.getInstance(instance),
455
- ...Pinning.getInstance(instance),
456
- ...Headers.getInstance(instance),
457
- ...Filters.getInstance(instance),
458
- ...Sorting.getInstance(instance),
459
- ...Grouping.getInstance(instance),
460
- ...Expanding.getInstance(instance),
461
- ...ColumnSizing.getInstance(instance),
499
+ ...features.reduce((obj, feature) => {
500
+ return Object.assign(obj, (feature as any).getInstance?.(instance))
501
+ }, {}),
462
502
  rerender,
463
503
  initialState,
464
504
  internalState: initialState,
@@ -476,19 +516,23 @@ export function createTableInstance<
476
516
  ) => `${parent ? [parent.id, index].join('.') : index}`,
477
517
 
478
518
  getState: () => {
479
- return {
519
+ let state = {
480
520
  ...instance.internalState,
481
521
  ...instance.options.state,
482
522
  }
523
+
524
+ return state
483
525
  },
484
526
 
485
527
  setState: (
486
528
  updater: Updater<TableState>,
487
529
  shouldRerender: boolean = true
488
530
  ) => {
489
- const newState = functionalUpdate(updater, instance.internalState)
490
531
  const onStateChange = instance.options.onStateChange
491
532
 
533
+ let internalState = instance.internalState
534
+ let newState = functionalUpdate(updater, internalState)
535
+
492
536
  instance.internalState = newState
493
537
 
494
538
  if (onStateChange) {
@@ -521,17 +565,15 @@ export function createTableInstance<
521
565
  ) => props.header.column.id,
522
566
  cell: ({ value = '' }: { value: any }): JSX.Element =>
523
567
  typeof value === 'boolean' ? value.toString() : value,
524
- ...Visibility.getDefaultColumn(),
525
- ...Filters.getDefaultColumn(),
526
- ...Sorting.getDefaultColumn(),
527
- ...Grouping.getDefaultColumn(),
568
+ ...features.reduce((obj, feature) => {
569
+ return Object.assign(obj, (feature as any).getDefaultColumn?.())
570
+ }, {}),
528
571
  ...defaultColumn,
529
572
  } as Partial<
530
573
  ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
531
574
  >
532
575
  },
533
- 'getDefaultColumn',
534
- instance.options.debug
576
+ { debug: instance.options.debug, key: 'getDefaultColumn' }
535
577
  ),
536
578
 
537
579
  getColumnDefs: () => instance.options.columns,
@@ -595,8 +637,10 @@ export function createTableInstance<
595
637
  ...column.columns?.flatMap(d => d.getFlatColumns()),
596
638
  ]
597
639
  },
598
- 'column.getFlatColumns',
599
- instance.options.debug
640
+ {
641
+ key: 'column.getFlatColumns',
642
+ debug: instance.options.debug,
643
+ }
600
644
  ),
601
645
  getLeafColumns: memo(
602
646
  () => [instance.getOrderColumnsFn()],
@@ -619,74 +663,19 @@ export function createTableInstance<
619
663
  >,
620
664
  ]
621
665
  },
622
- 'column.getLeafColumns',
623
- instance.options.debug
666
+ {
667
+ key: 'column.getLeafColumns',
668
+ debug: instance.options.debug,
669
+ }
624
670
  ),
625
671
  }
626
672
 
627
- column = Object.assign(
628
- column,
629
- Visibility.createColumn(
630
- column as Column<
631
- TData,
632
- TValue,
633
- TFilterFns,
634
- TSortingFns,
635
- TAggregationFns
636
- >,
637
- instance
638
- ),
639
- Pinning.createColumn(
640
- column as Column<
641
- TData,
642
- TValue,
643
- TFilterFns,
644
- TSortingFns,
645
- TAggregationFns
646
- >,
647
- instance
648
- ),
649
- Filters.createColumn(
650
- column as Column<
651
- TData,
652
- TValue,
653
- TFilterFns,
654
- TSortingFns,
655
- TAggregationFns
656
- >,
657
- instance
658
- ),
659
- Sorting.createColumn(
660
- column as Column<
661
- TData,
662
- TValue,
663
- TFilterFns,
664
- TSortingFns,
665
- TAggregationFns
666
- >,
667
- instance
668
- ),
669
- Grouping.createColumn(
670
- column as Column<
671
- TData,
672
- TValue,
673
- TFilterFns,
674
- TSortingFns,
675
- TAggregationFns
676
- >,
677
- instance
678
- ),
679
- ColumnSizing.createColumn(
680
- column as Column<
681
- TData,
682
- TValue,
683
- TFilterFns,
684
- TSortingFns,
685
- TAggregationFns
686
- >,
687
- instance
673
+ column = features.reduce((obj, feature) => {
674
+ return Object.assign(
675
+ obj,
676
+ (feature as any).createColumn?.(column, instance)
688
677
  )
689
- )
678
+ }, column)
690
679
 
691
680
  // Yes, we have to convert instance to uknown, because we know more than the compiler here.
692
681
  return column as Column<
@@ -740,8 +729,7 @@ export function createTableInstance<
740
729
 
741
730
  return recurseColumns(columnDefs)
742
731
  },
743
- 'getAllColumns',
744
- instance.options.debug
732
+ { key: 'getAllColumns', debug: instance.options.debug }
745
733
  ),
746
734
 
747
735
  getAllFlatColumns: memo(
@@ -751,8 +739,7 @@ export function createTableInstance<
751
739
  return column.getFlatColumns()
752
740
  })
753
741
  },
754
- 'getAllFlatColumns',
755
- instance.options.debug
742
+ { key: 'getAllFlatColumns', debug: instance.options.debug }
756
743
  ),
757
744
 
758
745
  getAllFlatColumnsById: memo(
@@ -763,8 +750,7 @@ export function createTableInstance<
763
750
  return acc
764
751
  }, {} as Record<string, Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>>)
765
752
  },
766
- 'getAllFlatColumnsById',
767
- instance.options.debug
753
+ { key: 'getAllFlatColumnsById', debug: instance.options.debug }
768
754
  ),
769
755
 
770
756
  getAllLeafColumns: memo(
@@ -773,8 +759,7 @@ export function createTableInstance<
773
759
  let leafColumns = allColumns.flatMap(column => column.getLeafColumns())
774
760
  return orderColumns(leafColumns)
775
761
  },
776
- 'getAllLeafColumns',
777
- instance.options.debug
762
+ { key: 'getAllLeafColumns', debug: instance.options.debug }
778
763
  ),
779
764
 
780
765
  getColumn: columnId => {
@@ -826,24 +811,28 @@ export function createTableInstance<
826
811
  value,
827
812
  getCellProps: userProps =>
828
813
  instance.getCellProps(row.id, column.id, userProps)!,
829
- renderCell: () => flexRender(column.cell, { column, cell, value }),
814
+ renderCell: () =>
815
+ flexRender(column.cell, { instance, column, row, cell, value }),
830
816
  }
831
817
 
832
- Object.assign(cell, {
833
- ...Grouping.createCell(
834
- cell as Cell<
835
- TData,
836
- TValue,
837
- TFilterFns,
838
- TSortingFns,
839
- TAggregationFns
840
- > &
841
- Grouping.GroupingCell,
842
- column,
843
- row as Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
844
- instance
845
- ),
846
- })
818
+ features.forEach(feature => {
819
+ Object.assign(
820
+ cell,
821
+ (feature as any).createCell?.(
822
+ cell as Cell<
823
+ TData,
824
+ TValue,
825
+ TFilterFns,
826
+ TSortingFns,
827
+ TAggregationFns
828
+ > &
829
+ Grouping.GroupingCell,
830
+ column,
831
+ row as Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
832
+ instance
833
+ )
834
+ )
835
+ }, {})
847
836
 
848
837
  return cell
849
838
  },
@@ -885,8 +874,10 @@ export function createTableInstance<
885
874
  )
886
875
  })
887
876
  },
888
- process.env.NODE_ENV !== 'production' ? 'row.getAllCells' : '',
889
- instance.options.debug
877
+ {
878
+ key: process.env.NODE_ENV !== 'production' ? 'row.getAllCells' : '',
879
+ debug: instance.options.debug,
880
+ }
890
881
  )
891
882
 
892
883
  row.getAllCellsByColumnId = memo(
@@ -897,25 +888,15 @@ export function createTableInstance<
897
888
  return acc
898
889
  }, {} as Record<string, Cell<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>>)
899
890
  },
900
- 'row.getAllCellsByColumnId',
901
- instance.options.debug
891
+ {
892
+ key: 'row.getAllCellsByColumnId',
893
+ debug: instance.options.debug,
894
+ }
902
895
  )
903
896
 
904
- row = Object.assign(
905
- row,
906
- Headers.createRow(
907
- row as Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
908
- instance
909
- ),
910
- Grouping.createRow(
911
- row as Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
912
- instance
913
- ),
914
- Expanding.createRow(
915
- row as Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
916
- instance
917
- )
918
- )
897
+ features.forEach(feature => {
898
+ Object.assign(row, (feature as any).createRow?.(row, instance))
899
+ })
919
900
 
920
901
  return row as Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
921
902
  },
@@ -935,50 +916,6 @@ export function createTableInstance<
935
916
  if (process.env.NODE_ENV !== 'production' && instance.options.debug)
936
917
  console.info('Accessing...')
937
918
 
938
- // Auto-reset data-dependent states if configured
939
- if (
940
- instance.options.autoResetColumnFilters &&
941
- // @ts-ignore
942
- instance.getRowModelNonFirst
943
- ) {
944
- instance.resetColumnFilters()
945
- }
946
-
947
- if (
948
- instance.options.autoResetGlobalFilter &&
949
- // @ts-ignore
950
- instance.getRowModelNonFirst
951
- ) {
952
- instance.resetGlobalFilter()
953
- }
954
-
955
- if (
956
- instance.options.autoResetSorting &&
957
- // @ts-ignore
958
- instance.getRowModelNonFirst
959
- ) {
960
- instance.resetSorting()
961
- }
962
-
963
- if (
964
- instance.options.autoResetGrouping &&
965
- // @ts-ignore
966
- instance.getRowModelNonFirst
967
- ) {
968
- instance.resetGrouping()
969
- }
970
-
971
- if (
972
- instance.options.autoResetExpanded &&
973
- // @ts-ignore
974
- instance.getRowModelNonFirst
975
- ) {
976
- instance.resetExpanded()
977
- }
978
-
979
- // @ts-ignore
980
- instance.getRowModelNonFirst = true
981
-
982
919
  // Access the row model using initial columns
983
920
  const rows: Row<
984
921
  TData,
@@ -1087,8 +1024,14 @@ export function createTableInstance<
1087
1024
 
1088
1025
  return { rows, flatRows, rowsById }
1089
1026
  },
1090
- 'getRowModel',
1091
- instance.options.debug
1027
+ {
1028
+ key: 'getRowModel',
1029
+ debug: instance.options.debug,
1030
+ onChange: () => {
1031
+ instance._notifyRowSelectionReset()
1032
+ instance._notifyFiltersReset()
1033
+ },
1034
+ }
1092
1035
  ),
1093
1036
 
1094
1037
  // The standard
@@ -1109,7 +1052,7 @@ export function createTableInstance<
1109
1052
  // expanded rows, which then work their way up
1110
1053
 
1111
1054
  getRowModel: () => {
1112
- return instance.getExpandedRowModel()
1055
+ return instance.getPaginationRowModel()
1113
1056
  },
1114
1057
 
1115
1058
  getRows: () => {
@@ -1228,5 +1171,11 @@ export function createTableInstance<
1228
1171
  }, 0) ?? 0,
1229
1172
  }
1230
1173
 
1231
- return Object.assign(instance, finalInstance)
1174
+ instance = Object.assign(instance, finalInstance)
1175
+
1176
+ // This won't trigger a rerender yet, but it will force
1177
+ // pagination derivation to run (particularly pageSize detection)
1178
+ instance.setPagination(d => d)
1179
+
1180
+ return instance
1232
1181
  }