@tanstack/table-core 9.0.0-beta.5 → 9.0.0-beta.51

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 (602) hide show
  1. package/README.md +2 -0
  2. package/dist/core/cells/constructCell.cjs +1 -4
  3. package/dist/core/cells/constructCell.cjs.map +1 -1
  4. package/dist/core/cells/constructCell.d.cts +4 -4
  5. package/dist/core/cells/constructCell.d.ts +4 -4
  6. package/dist/core/cells/constructCell.js +1 -4
  7. package/dist/core/cells/constructCell.js.map +1 -1
  8. package/dist/core/cells/coreCellsFeature.types.d.cts +7 -7
  9. package/dist/core/cells/coreCellsFeature.types.d.ts +7 -7
  10. package/dist/core/cells/coreCellsFeature.utils.d.cts +4 -4
  11. package/dist/core/cells/coreCellsFeature.utils.d.ts +4 -4
  12. package/dist/core/columns/constructColumn.cjs +4 -5
  13. package/dist/core/columns/constructColumn.cjs.map +1 -1
  14. package/dist/core/columns/constructColumn.d.cts +3 -3
  15. package/dist/core/columns/constructColumn.d.ts +3 -3
  16. package/dist/core/columns/constructColumn.js +4 -5
  17. package/dist/core/columns/constructColumn.js.map +1 -1
  18. package/dist/core/columns/coreColumnsFeature.cjs +12 -18
  19. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  20. package/dist/core/columns/coreColumnsFeature.js +12 -18
  21. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  22. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
  23. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
  24. package/dist/core/columns/coreColumnsFeature.utils.cjs +4 -8
  25. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  26. package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
  27. package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
  28. package/dist/core/columns/coreColumnsFeature.utils.js +5 -9
  29. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  30. package/dist/core/coreFeatures.cjs.map +1 -1
  31. package/dist/core/coreFeatures.d.cts +1 -1
  32. package/dist/core/coreFeatures.d.ts +1 -1
  33. package/dist/core/coreFeatures.js.map +1 -1
  34. package/dist/core/headers/buildHeaderGroups.cjs +1 -2
  35. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  36. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  37. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  38. package/dist/core/headers/buildHeaderGroups.js +1 -2
  39. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  40. package/dist/core/headers/constructHeader.cjs +1 -4
  41. package/dist/core/headers/constructHeader.cjs.map +1 -1
  42. package/dist/core/headers/constructHeader.d.cts +2 -2
  43. package/dist/core/headers/constructHeader.d.ts +2 -2
  44. package/dist/core/headers/constructHeader.js +1 -4
  45. package/dist/core/headers/constructHeader.js.map +1 -1
  46. package/dist/core/headers/coreHeadersFeature.cjs +8 -11
  47. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  48. package/dist/core/headers/coreHeadersFeature.js +8 -11
  49. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  50. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  51. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  52. package/dist/core/headers/coreHeadersFeature.utils.cjs +8 -10
  53. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  54. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  55. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  56. package/dist/core/headers/coreHeadersFeature.utils.js +8 -10
  57. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  58. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +7 -15
  59. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -15
  60. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +8 -26
  61. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  62. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +16 -16
  63. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +16 -16
  64. package/dist/core/row-models/coreRowModelsFeature.utils.js +8 -26
  65. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  66. package/dist/core/row-models/createCoreRowModel.cjs +4 -6
  67. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  68. package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
  69. package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
  70. package/dist/core/row-models/createCoreRowModel.js +5 -7
  71. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  72. package/dist/core/rows/constructRow.cjs +6 -10
  73. package/dist/core/rows/constructRow.cjs.map +1 -1
  74. package/dist/core/rows/constructRow.d.cts +2 -2
  75. package/dist/core/rows/constructRow.d.ts +2 -2
  76. package/dist/core/rows/constructRow.js +7 -10
  77. package/dist/core/rows/constructRow.js.map +1 -1
  78. package/dist/core/rows/coreRowsFeature.cjs +18 -2
  79. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  80. package/dist/core/rows/coreRowsFeature.js +19 -3
  81. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  82. package/dist/core/rows/coreRowsFeature.types.d.cts +41 -7
  83. package/dist/core/rows/coreRowsFeature.types.d.ts +41 -7
  84. package/dist/core/rows/coreRowsFeature.utils.cjs +62 -8
  85. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  86. package/dist/core/rows/coreRowsFeature.utils.d.cts +24 -5
  87. package/dist/core/rows/coreRowsFeature.utils.d.ts +24 -5
  88. package/dist/core/rows/coreRowsFeature.utils.js +61 -10
  89. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  90. package/dist/core/table/constructTable.cjs +24 -14
  91. package/dist/core/table/constructTable.cjs.map +1 -1
  92. package/dist/core/table/constructTable.d.cts +1 -1
  93. package/dist/core/table/constructTable.d.ts +1 -1
  94. package/dist/core/table/constructTable.js +24 -14
  95. package/dist/core/table/constructTable.js.map +1 -1
  96. package/dist/core/table/coreTablesFeature.types.d.cts +32 -19
  97. package/dist/core/table/coreTablesFeature.types.d.ts +32 -19
  98. package/dist/core/table/coreTablesFeature.utils.cjs +38 -14
  99. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  100. package/dist/core/table/coreTablesFeature.utils.d.cts +10 -7
  101. package/dist/core/table/coreTablesFeature.utils.d.ts +10 -7
  102. package/dist/core/table/coreTablesFeature.utils.js +38 -14
  103. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  104. package/dist/experimental-worker-plugin.cjs +14 -0
  105. package/dist/experimental-worker-plugin.d.cts +5 -0
  106. package/dist/experimental-worker-plugin.d.ts +5 -0
  107. package/dist/experimental-worker-plugin.js +6 -0
  108. package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
  109. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  110. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  111. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  112. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
  113. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
  114. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
  115. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  116. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
  117. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
  118. package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
  119. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  120. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
  121. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  122. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  123. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  124. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  125. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  126. package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
  127. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  128. package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
  129. package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
  130. package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
  131. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  132. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
  133. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  134. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  135. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  136. package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
  137. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  138. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  139. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  140. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  141. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  142. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
  143. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
  144. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
  145. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  146. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
  147. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
  148. package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
  149. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  150. package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
  151. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  152. package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
  153. package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
  154. package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
  155. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  156. package/dist/features/column-filtering/filterFns.cjs +399 -0
  157. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  158. package/dist/features/column-filtering/filterFns.d.cts +210 -0
  159. package/dist/features/column-filtering/filterFns.d.ts +210 -0
  160. package/dist/features/column-filtering/filterFns.js +375 -0
  161. package/dist/features/column-filtering/filterFns.js.map +1 -0
  162. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  163. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  164. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  165. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  166. package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
  167. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  168. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  169. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  170. package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
  171. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  172. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
  173. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
  174. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
  175. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  176. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
  177. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
  178. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
  179. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  180. package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
  181. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  182. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
  183. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
  184. package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
  185. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  186. package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
  187. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  188. package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
  189. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  190. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
  191. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
  192. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
  193. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  194. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
  195. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
  196. package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
  197. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  198. package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
  199. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  200. package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
  201. package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
  202. package/dist/features/column-pinning/columnPinningFeature.js +125 -144
  203. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  204. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
  205. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
  206. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
  207. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  208. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
  209. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
  210. package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
  211. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  212. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  213. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  214. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
  215. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  216. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  217. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  218. package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
  219. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  220. package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
  221. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  222. package/dist/features/column-sizing/columnSizingFeature.js +34 -68
  223. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  224. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
  225. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
  226. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
  227. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  228. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
  229. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
  230. package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
  231. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  232. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
  233. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  234. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
  235. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  236. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
  237. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
  238. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
  239. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  240. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
  241. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
  242. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
  243. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  244. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  245. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  246. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  247. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  248. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  249. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  250. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
  251. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  252. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
  253. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
  254. package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
  255. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  256. package/dist/features/row-aggregation/aggregationFns.cjs +246 -0
  257. package/dist/features/row-aggregation/aggregationFns.cjs.map +1 -0
  258. package/dist/features/row-aggregation/aggregationFns.d.cts +68 -0
  259. package/dist/features/row-aggregation/aggregationFns.d.ts +68 -0
  260. package/dist/features/row-aggregation/aggregationFns.js +235 -0
  261. package/dist/features/row-aggregation/aggregationFns.js.map +1 -0
  262. package/dist/features/row-aggregation/rowAggregationFeature.cjs +39 -0
  263. package/dist/features/row-aggregation/rowAggregationFeature.cjs.map +1 -0
  264. package/dist/features/row-aggregation/rowAggregationFeature.d.cts +10 -0
  265. package/dist/features/row-aggregation/rowAggregationFeature.d.ts +10 -0
  266. package/dist/features/row-aggregation/rowAggregationFeature.js +39 -0
  267. package/dist/features/row-aggregation/rowAggregationFeature.js.map +1 -0
  268. package/dist/features/row-aggregation/rowAggregationFeature.types.cjs +13 -0
  269. package/dist/features/row-aggregation/rowAggregationFeature.types.cjs.map +1 -0
  270. package/dist/features/row-aggregation/rowAggregationFeature.types.d.cts +195 -0
  271. package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +195 -0
  272. package/dist/features/row-aggregation/rowAggregationFeature.types.js +12 -0
  273. package/dist/features/row-aggregation/rowAggregationFeature.types.js.map +1 -0
  274. package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs +212 -0
  275. package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs.map +1 -0
  276. package/dist/features/row-aggregation/rowAggregationFeature.utils.d.cts +34 -0
  277. package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +34 -0
  278. package/dist/features/row-aggregation/rowAggregationFeature.utils.js +206 -0
  279. package/dist/features/row-aggregation/rowAggregationFeature.utils.js.map +1 -0
  280. package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
  281. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  282. package/dist/features/row-expanding/createExpandedRowModel.d.cts +2 -2
  283. package/dist/features/row-expanding/createExpandedRowModel.d.ts +2 -2
  284. package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
  285. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  286. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +6 -15
  287. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -15
  288. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +28 -26
  289. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  290. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  291. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  292. package/dist/features/row-expanding/rowExpandingFeature.utils.js +29 -27
  293. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  294. package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
  295. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  296. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +2 -2
  297. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +2 -2
  298. package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
  299. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  300. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +5 -14
  301. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -14
  302. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +9 -15
  303. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  304. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  305. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  306. package/dist/features/row-pagination/rowPaginationFeature.utils.js +9 -15
  307. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  308. package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
  309. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  310. package/dist/features/row-pinning/rowPinningFeature.js +4 -16
  311. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  312. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  313. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  314. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +9 -14
  315. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  316. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  317. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  318. package/dist/features/row-pinning/rowPinningFeature.utils.js +9 -14
  319. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  320. package/dist/features/row-selection/rowSelectionFeature.cjs +66 -22
  321. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  322. package/dist/features/row-selection/rowSelectionFeature.js +67 -23
  323. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  324. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +49 -11
  325. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +49 -11
  326. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +128 -72
  327. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  328. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +57 -30
  329. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +57 -30
  330. package/dist/features/row-selection/rowSelectionFeature.utils.js +129 -74
  331. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  332. package/dist/features/row-sorting/createSortedRowModel.cjs +69 -50
  333. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  334. package/dist/features/row-sorting/createSortedRowModel.d.cts +10 -4
  335. package/dist/features/row-sorting/createSortedRowModel.d.ts +10 -4
  336. package/dist/features/row-sorting/createSortedRowModel.js +70 -51
  337. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  338. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +54 -22
  339. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -22
  340. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +31 -17
  341. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  342. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  343. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  344. package/dist/features/row-sorting/rowSortingFeature.utils.js +31 -17
  345. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  346. package/dist/features/row-sorting/sortFns.cjs +226 -0
  347. package/dist/features/row-sorting/sortFns.cjs.map +1 -0
  348. package/dist/features/row-sorting/sortFns.d.cts +98 -0
  349. package/dist/features/row-sorting/sortFns.d.ts +98 -0
  350. package/dist/features/row-sorting/sortFns.js +217 -0
  351. package/dist/features/row-sorting/sortFns.js.map +1 -0
  352. package/dist/features/stockFeatures.cjs +2 -0
  353. package/dist/features/stockFeatures.cjs.map +1 -1
  354. package/dist/features/stockFeatures.d.cts +2 -0
  355. package/dist/features/stockFeatures.d.ts +2 -0
  356. package/dist/features/stockFeatures.js +2 -0
  357. package/dist/features/stockFeatures.js.map +1 -1
  358. package/dist/flex-render.d.cts +1 -1
  359. package/dist/flex-render.d.ts +1 -1
  360. package/dist/helpers/columnHelper.cjs.map +1 -1
  361. package/dist/helpers/columnHelper.d.cts +2 -2
  362. package/dist/helpers/columnHelper.d.ts +2 -2
  363. package/dist/helpers/columnHelper.js.map +1 -1
  364. package/dist/helpers/metaHelper.cjs +30 -0
  365. package/dist/helpers/metaHelper.cjs.map +1 -0
  366. package/dist/helpers/metaHelper.d.cts +26 -0
  367. package/dist/helpers/metaHelper.d.ts +26 -0
  368. package/dist/helpers/metaHelper.js +29 -0
  369. package/dist/helpers/metaHelper.js.map +1 -0
  370. package/dist/helpers/tableFeatures.cjs +32 -3
  371. package/dist/helpers/tableFeatures.cjs.map +1 -1
  372. package/dist/helpers/tableFeatures.d.cts +34 -5
  373. package/dist/helpers/tableFeatures.d.ts +34 -5
  374. package/dist/helpers/tableFeatures.js +32 -3
  375. package/dist/helpers/tableFeatures.js.map +1 -1
  376. package/dist/index.cjs +23 -3
  377. package/dist/index.d.cts +31 -28
  378. package/dist/index.d.ts +31 -28
  379. package/dist/index.js +8 -5
  380. package/dist/static-functions.cjs +30 -19
  381. package/dist/static-functions.d.cts +8 -7
  382. package/dist/static-functions.d.ts +8 -7
  383. package/dist/static-functions.js +8 -7
  384. package/dist/store-reactivity-bindings.cjs +3 -3
  385. package/dist/store-reactivity-bindings.cjs.map +1 -1
  386. package/dist/store-reactivity-bindings.d.cts +1 -1
  387. package/dist/store-reactivity-bindings.d.ts +1 -1
  388. package/dist/store-reactivity-bindings.js +3 -3
  389. package/dist/store-reactivity-bindings.js.map +1 -1
  390. package/dist/types/Cell.d.cts +4 -2
  391. package/dist/types/Cell.d.ts +4 -2
  392. package/dist/types/Column.d.cts +15 -15
  393. package/dist/types/Column.d.ts +15 -15
  394. package/dist/types/ColumnDef.d.cts +30 -14
  395. package/dist/types/ColumnDef.d.ts +30 -14
  396. package/dist/types/Header.d.cts +2 -2
  397. package/dist/types/Header.d.ts +2 -2
  398. package/dist/types/HeaderGroup.d.cts +2 -2
  399. package/dist/types/HeaderGroup.d.ts +2 -2
  400. package/dist/types/Row.d.cts +6 -4
  401. package/dist/types/Row.d.ts +6 -4
  402. package/dist/types/RowModel.d.cts +11 -23
  403. package/dist/types/RowModel.d.ts +11 -23
  404. package/dist/types/RowModelFns.d.cts +4 -4
  405. package/dist/types/RowModelFns.d.ts +4 -4
  406. package/dist/types/Table.d.cts +26 -31
  407. package/dist/types/Table.d.ts +26 -31
  408. package/dist/types/TableFeatures.d.cts +350 -22
  409. package/dist/types/TableFeatures.d.ts +350 -22
  410. package/dist/types/TableOptions.d.cts +22 -14
  411. package/dist/types/TableOptions.d.ts +22 -14
  412. package/dist/types/TableState.d.cts +6 -6
  413. package/dist/types/TableState.d.ts +6 -6
  414. package/dist/types/type-utils.d.cts +8 -1
  415. package/dist/types/type-utils.d.ts +8 -1
  416. package/dist/utils.cjs +51 -29
  417. package/dist/utils.cjs.map +1 -1
  418. package/dist/utils.d.cts +30 -8
  419. package/dist/utils.d.ts +30 -8
  420. package/dist/utils.js +49 -30
  421. package/dist/utils.js.map +1 -1
  422. package/dist/worker/createTableWorker.cjs +189 -0
  423. package/dist/worker/createTableWorker.cjs.map +1 -0
  424. package/dist/worker/createTableWorker.d.cts +102 -0
  425. package/dist/worker/createTableWorker.d.ts +102 -0
  426. package/dist/worker/createTableWorker.js +186 -0
  427. package/dist/worker/createTableWorker.js.map +1 -0
  428. package/dist/worker/createWorkerRowModel.cjs +78 -0
  429. package/dist/worker/createWorkerRowModel.cjs.map +1 -0
  430. package/dist/worker/createWorkerRowModel.d.cts +42 -0
  431. package/dist/worker/createWorkerRowModel.d.ts +42 -0
  432. package/dist/worker/createWorkerRowModel.js +78 -0
  433. package/dist/worker/createWorkerRowModel.js.map +1 -0
  434. package/dist/worker/initTableWorker.cjs +100 -0
  435. package/dist/worker/initTableWorker.cjs.map +1 -0
  436. package/dist/worker/initTableWorker.d.cts +33 -0
  437. package/dist/worker/initTableWorker.d.ts +33 -0
  438. package/dist/worker/initTableWorker.js +100 -0
  439. package/dist/worker/initTableWorker.js.map +1 -0
  440. package/dist/worker/rebuildRowModel.cjs +72 -0
  441. package/dist/worker/rebuildRowModel.cjs.map +1 -0
  442. package/dist/worker/rebuildRowModel.d.cts +9 -0
  443. package/dist/worker/rebuildRowModel.d.ts +9 -0
  444. package/dist/worker/rebuildRowModel.js +72 -0
  445. package/dist/worker/rebuildRowModel.js.map +1 -0
  446. package/dist/worker/serializeRowModel.cjs +53 -0
  447. package/dist/worker/serializeRowModel.cjs.map +1 -0
  448. package/dist/worker/serializeRowModel.js +52 -0
  449. package/dist/worker/serializeRowModel.js.map +1 -0
  450. package/dist/worker/tableWorkerProtocol.cjs +29 -0
  451. package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
  452. package/dist/worker/tableWorkerProtocol.d.cts +88 -0
  453. package/dist/worker/tableWorkerProtocol.d.ts +88 -0
  454. package/dist/worker/tableWorkerProtocol.js +27 -0
  455. package/dist/worker/tableWorkerProtocol.js.map +1 -0
  456. package/package.json +8 -3
  457. package/skills/aggregation/SKILL.md +141 -0
  458. package/skills/api-not-found/SKILL.md +113 -0
  459. package/skills/client-vs-server/SKILL.md +164 -0
  460. package/skills/column-faceting/SKILL.md +97 -0
  461. package/skills/column-filtering/SKILL.md +87 -0
  462. package/skills/column-ordering/SKILL.md +75 -0
  463. package/skills/column-pinning/SKILL.md +89 -0
  464. package/skills/column-resizing/SKILL.md +91 -0
  465. package/skills/column-sizing/SKILL.md +72 -0
  466. package/skills/column-visibility/SKILL.md +75 -0
  467. package/skills/core/SKILL.md +175 -0
  468. package/skills/custom-features/SKILL.md +235 -0
  469. package/skills/expanding/SKILL.md +80 -0
  470. package/skills/global-filtering/SKILL.md +84 -0
  471. package/skills/grouping/SKILL.md +51 -401
  472. package/skills/migrate-v8-to-v9/SKILL.md +274 -416
  473. package/skills/pagination/SKILL.md +37 -344
  474. package/skills/row-pinning/SKILL.md +47 -234
  475. package/skills/row-selection/SKILL.md +75 -302
  476. package/skills/sorting/SKILL.md +45 -303
  477. package/skills/table-features/SKILL.md +159 -0
  478. package/skills/typescript/SKILL.md +126 -0
  479. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  480. package/src/core/columns/constructColumn.ts +6 -0
  481. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  482. package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
  483. package/src/core/coreFeatures.ts +1 -1
  484. package/src/core/headers/buildHeaderGroups.ts +4 -2
  485. package/src/core/headers/coreHeadersFeature.types.ts +12 -12
  486. package/src/core/headers/coreHeadersFeature.utils.ts +7 -8
  487. package/src/core/row-models/coreRowModelsFeature.types.ts +6 -20
  488. package/src/core/row-models/coreRowModelsFeature.utils.ts +8 -8
  489. package/src/core/row-models/createCoreRowModel.ts +7 -6
  490. package/src/core/rows/constructRow.ts +4 -2
  491. package/src/core/rows/coreRowsFeature.ts +21 -0
  492. package/src/core/rows/coreRowsFeature.types.ts +45 -8
  493. package/src/core/rows/coreRowsFeature.utils.ts +93 -5
  494. package/src/core/table/constructTable.ts +44 -6
  495. package/src/core/table/coreTablesFeature.types.ts +45 -20
  496. package/src/core/table/coreTablesFeature.utils.ts +59 -19
  497. package/src/experimental-worker-plugin.ts +22 -0
  498. package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
  499. package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
  500. package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
  501. package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
  502. package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
  503. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  504. package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
  505. package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
  506. package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
  507. package/src/features/column-filtering/filterFns.ts +533 -0
  508. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  509. package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
  510. package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
  511. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
  512. package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
  513. package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
  514. package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
  515. package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
  516. package/src/features/column-pinning/columnPinningFeature.ts +76 -59
  517. package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
  518. package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
  519. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  520. package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
  521. package/src/features/column-sizing/columnSizingFeature.ts +24 -24
  522. package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
  523. package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
  524. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  525. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  526. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
  527. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  528. package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
  529. package/src/features/row-aggregation/aggregationFns.ts +345 -0
  530. package/src/features/row-aggregation/rowAggregationFeature.ts +60 -0
  531. package/src/features/row-aggregation/rowAggregationFeature.types.ts +339 -0
  532. package/src/features/row-aggregation/rowAggregationFeature.utils.ts +430 -0
  533. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
  534. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  535. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  536. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
  537. package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
  538. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  539. package/src/features/row-selection/rowSelectionFeature.ts +53 -3
  540. package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
  541. package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
  542. package/src/features/row-sorting/createSortedRowModel.ts +107 -75
  543. package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
  544. package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
  545. package/src/features/row-sorting/sortFns.ts +366 -0
  546. package/src/features/stockFeatures.ts +3 -0
  547. package/src/helpers/columnHelper.ts +4 -4
  548. package/src/helpers/metaHelper.ts +24 -0
  549. package/src/helpers/tableFeatures.ts +37 -5
  550. package/src/index.ts +8 -8
  551. package/src/static-functions.ts +1 -0
  552. package/src/store-reactivity-bindings.ts +1 -1
  553. package/src/types/Cell.ts +4 -2
  554. package/src/types/Column.ts +13 -9
  555. package/src/types/ColumnDef.ts +40 -10
  556. package/src/types/Header.ts +2 -2
  557. package/src/types/HeaderGroup.ts +6 -6
  558. package/src/types/Row.ts +6 -4
  559. package/src/types/RowModel.ts +19 -74
  560. package/src/types/RowModelFns.ts +10 -10
  561. package/src/types/Table.ts +52 -27
  562. package/src/types/TableFeatures.ts +392 -14
  563. package/src/types/TableOptions.ts +67 -14
  564. package/src/types/TableState.ts +15 -1
  565. package/src/types/type-utils.ts +8 -0
  566. package/src/utils.ts +60 -8
  567. package/src/worker/createTableWorker.ts +357 -0
  568. package/src/worker/createWorkerRowModel.ts +121 -0
  569. package/src/worker/initTableWorker.ts +164 -0
  570. package/src/worker/rebuildRowModel.ts +120 -0
  571. package/src/worker/serializeRowModel.ts +80 -0
  572. package/src/worker/tableWorkerProtocol.ts +105 -0
  573. package/dist/fns/aggregationFns.cjs +0 -161
  574. package/dist/fns/aggregationFns.cjs.map +0 -1
  575. package/dist/fns/aggregationFns.d.cts +0 -85
  576. package/dist/fns/aggregationFns.d.ts +0 -85
  577. package/dist/fns/aggregationFns.js +0 -151
  578. package/dist/fns/aggregationFns.js.map +0 -1
  579. package/dist/fns/filterFns.cjs +0 -201
  580. package/dist/fns/filterFns.cjs.map +0 -1
  581. package/dist/fns/filterFns.d.cts +0 -167
  582. package/dist/fns/filterFns.d.ts +0 -167
  583. package/dist/fns/filterFns.js +0 -185
  584. package/dist/fns/filterFns.js.map +0 -1
  585. package/dist/fns/sortFns.cjs +0 -118
  586. package/dist/fns/sortFns.cjs.map +0 -1
  587. package/dist/fns/sortFns.d.cts +0 -65
  588. package/dist/fns/sortFns.d.ts +0 -65
  589. package/dist/fns/sortFns.js +0 -110
  590. package/dist/fns/sortFns.js.map +0 -1
  591. package/skills/column-definitions/SKILL.md +0 -333
  592. package/skills/column-layout/SKILL.md +0 -328
  593. package/skills/column-layout/references/subsystems.md +0 -220
  594. package/skills/customizing-feature-behavior/SKILL.md +0 -416
  595. package/skills/filtering/SKILL.md +0 -357
  596. package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
  597. package/skills/row-expanding/SKILL.md +0 -348
  598. package/skills/setup/SKILL.md +0 -400
  599. package/skills/state-management/SKILL.md +0 -388
  600. package/src/fns/aggregationFns.ts +0 -245
  601. package/src/fns/filterFns.ts +0 -382
  602. package/src/fns/sortFns.ts +0 -217
@@ -1,388 +0,0 @@
1
- ---
2
- name: state-management
3
- description: >
4
- Coordinate TanStack Table v9 state across `initialState`, controlled
5
- `state`+`on*Change`, and external `atoms`. Covers the atom model
6
- (`table.atoms.<slice>`, `table.baseAtoms.<slice>`, `table.store`, `table.state`),
7
- per-slice precedence (atoms beat state beat initialState beat baseAtoms),
8
- `manualSorting` / `manualFiltering` / `manualPagination` / `manualGrouping` /
9
- `manualExpanding` for server-side data, `autoResetPageIndex` / `autoResetAll`,
10
- reset APIs (`resetSorting`, `resetPagination`, `reset()`), and the
11
- `SortingState` / `PaginationState` / `RowSelectionState` / `ColumnFiltersState` /
12
- `GroupingState` shapes. Foundational for every other skill.
13
- type: core
14
- library: tanstack-table
15
- library_version: '9.0.0-alpha.48'
16
- sources:
17
- - TanStack/table:docs/framework/vanilla/guide/table-state.md
18
- - TanStack/table:docs/framework/react/guide/table-state.md
19
- - TanStack/table:packages/table-core/src/store-reactivity-bindings.ts
20
- - TanStack/table:packages/table-core/src/reactivity.ts
21
- - TanStack/table:packages/table-core/src/core/table/constructTable.ts
22
- ---
23
-
24
- ## Setup
25
-
26
- TanStack Table v9 is built on TanStack Store. Each state slice (sorting, pagination, columnFilters, rowSelection, columnVisibility, …) is a separate atom. There are four ownership patterns, and the table reads from them in a fixed precedence.
27
-
28
- ```ts
29
- import {
30
- constructTable,
31
- tableFeatures,
32
- rowSortingFeature,
33
- rowPaginationFeature,
34
- createSortedRowModel,
35
- createPaginatedRowModel,
36
- sortFns,
37
- } from '@tanstack/table-core'
38
-
39
- const features = tableFeatures({ rowSortingFeature, rowPaginationFeature })
40
-
41
- const table = constructTable({
42
- features,
43
- rowModels: {
44
- sortedRowModel: createSortedRowModel(sortFns),
45
- paginatedRowModel: createPaginatedRowModel(),
46
- },
47
- columns,
48
- data,
49
- // 1. initialState — set starting values; read once at construction
50
- initialState: {
51
- sorting: [{ id: 'lastName', desc: false }],
52
- pagination: { pageIndex: 0, pageSize: 10 },
53
- },
54
- })
55
-
56
- // Read APIs:
57
- table.store.state // flat snapshot of every slice (no subscription)
58
- table.atoms.sorting.get() // single-slice atom read (no subscription)
59
- table.state // typed output of the `useTable` selector (framework adapters)
60
-
61
- // Write APIs use the feature setters — they're atom-aware:
62
- table.setSorting([{ id: 'firstName', desc: true }])
63
- table.setPageIndex(2)
64
- ```
65
-
66
- The four ownership patterns per slice:
67
-
68
- | Pattern | When to use | Wins over |
69
- | ----------------------------------- | ---------------------------------------------------- | ------------------------------- |
70
- | internal (default) | Most slices in a simple table | nothing — baseline |
71
- | `initialState.<slice>` | Set starting value only | internal default |
72
- | `state.<slice>` + `on<Slice>Change` | v8-style controlled state | `initialState` |
73
- | `atoms.<slice>` | v9 preferred — share with other components / queries | `state`+`on*Change` (silently!) |
74
-
75
- ## Core Patterns
76
-
77
- ### Internal state with `initialState`
78
-
79
- ```ts
80
- const table = constructTable({
81
- features,
82
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
83
- columns,
84
- data,
85
- initialState: { sorting: [{ id: 'age', desc: false }] },
86
- })
87
- // State lives entirely inside the table.
88
- table.setSorting([{ id: 'firstName', desc: true }])
89
- ```
90
-
91
- ### Controlled state with `state` + `on*Change` (v8-style)
92
-
93
- ```tsx
94
- const [sorting, setSorting] = React.useState<SortingState>([])
95
-
96
- const table = useTable({
97
- features,
98
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
99
- columns,
100
- data,
101
- state: { sorting },
102
- onSortingChange: setSorting,
103
- })
104
- ```
105
-
106
- `state` and `on*Change` must be paired. Without the callback the table cannot update React state, so toggling sort appears to do nothing.
107
-
108
- ### External atom (v9 preferred for shared slices)
109
-
110
- ```tsx
111
- import { useCreateAtom } from '@tanstack/react-store'
112
-
113
- function MyTable() {
114
- // Hoist or pass via context to share with queries / other components.
115
- const paginationAtom = useCreateAtom<PaginationState>({
116
- pageIndex: 0,
117
- pageSize: 10,
118
- })
119
-
120
- const table = useTable({
121
- features,
122
- rowModels: { paginatedRowModel: createPaginatedRowModel() },
123
- columns,
124
- data,
125
- atoms: { pagination: paginationAtom },
126
- // no state.pagination, no onPaginationChange needed
127
- })
128
-
129
- return <Pager paginationAtom={paginationAtom} />
130
- }
131
- ```
132
-
133
- The atom IS the source of truth; `table.atoms.pagination` derives from it.
134
-
135
- ### Server-side / manual mode
136
-
137
- ```tsx
138
- const [pagination, setPagination] = React.useState({
139
- pageIndex: 0,
140
- pageSize: 10,
141
- })
142
- const dataQuery = useQuery({
143
- queryKey: ['rows', pagination],
144
- queryFn: () => fetchPage(pagination),
145
- })
146
-
147
- const table = useTable({
148
- features: tableFeatures({ rowPaginationFeature }),
149
- rowModels: {}, // can drop paginatedRowModel — server paginates
150
- columns,
151
- data: dataQuery.data?.rows ?? EMPTY,
152
- rowCount: dataQuery.data?.rowCount, // server tells the table the total
153
- state: { pagination },
154
- onPaginationChange: setPagination,
155
- manualPagination: true, // ← tell the table to NOT re-paginate
156
- })
157
- ```
158
-
159
- The same shape applies to `manualSorting`, `manualFiltering`, `manualGrouping`, `manualExpanding`. Without the flag, the table re-applies its client-side pipeline on top of already-prepared server data.
160
-
161
- ## Common Mistakes
162
-
163
- ### [CRITICAL] Passing both `state.<slice>` and `atoms.<slice>`
164
-
165
- Wrong:
166
-
167
- ```tsx
168
- // both ownership paths for the same slice
169
- const paginationAtom = useCreateAtom<PaginationState>({ pageIndex: 0, pageSize: 10 })
170
- const [pagination, setPagination] = React.useState(...)
171
-
172
- const table = useTable({
173
- features, rowModels: {...}, columns, data,
174
- state: { pagination }, // ignored
175
- onPaginationChange: setPagination,
176
- atoms: { pagination: paginationAtom }, // wins
177
- })
178
- ```
179
-
180
- Correct:
181
-
182
- ```tsx
183
- // pick one ownership path per slice — here, external atoms
184
- const paginationAtom = useCreateAtom<PaginationState>({ pageIndex: 0, pageSize: 10 })
185
-
186
- const table = useTable({
187
- features, rowModels: {...}, columns, data,
188
- atoms: { pagination: paginationAtom },
189
- })
190
- ```
191
-
192
- When both are supplied, the external atom wins silently. `state.pagination` becomes dead config and `setPagination` writes never reach the table.
193
-
194
- Source: docs/framework/react/guide/table-state.md; packages/table-core/src/core/table/constructTable.ts
195
-
196
- ### [CRITICAL] Using external `state` without the matching `on*Change` callback
197
-
198
- Wrong:
199
-
200
- ```tsx
201
- const [sorting, setSorting] = React.useState<SortingState>([])
202
- const table = useTable({
203
- features,
204
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
205
- columns,
206
- data,
207
- state: { sorting }, // no onSortingChange
208
- })
209
- ```
210
-
211
- Correct:
212
-
213
- ```tsx
214
- const [sorting, setSorting] = React.useState<SortingState>([])
215
- const table = useTable({
216
- features,
217
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
218
- columns,
219
- data,
220
- state: { sorting },
221
- onSortingChange: setSorting,
222
- })
223
- ```
224
-
225
- The table keeps reading from `state.sorting`, so the UI looks stuck — sort toggles never make it back into React state.
226
-
227
- Source: docs/framework/react/guide/table-state.md; examples/react/basic-external-state/src/main.tsx
228
-
229
- ### [HIGH] Using `initialState` to control or update state
230
-
231
- Wrong:
232
-
233
- ```tsx
234
- // updates to initialState are ignored after first render
235
- function MyTable({ defaultSort }: { defaultSort: SortingState }) {
236
- const table = useTable({
237
- features,
238
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
239
- columns,
240
- data,
241
- initialState: { sorting: defaultSort }, // later changes never sync
242
- })
243
- }
244
- ```
245
-
246
- Correct:
247
-
248
- ```tsx
249
- function MyTable({ defaultSort }: { defaultSort: SortingState }) {
250
- const [sorting, setSorting] = React.useState(defaultSort)
251
- const table = useTable({
252
- features,
253
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
254
- columns,
255
- data,
256
- state: { sorting },
257
- onSortingChange: setSorting,
258
- })
259
- }
260
- ```
261
-
262
- `initialState` is read once at construction to seed `baseAtoms`. Mutating it later does nothing.
263
-
264
- Source: docs/framework/vanilla/guide/table-state.md; docs/framework/react/guide/table-state.md
265
-
266
- ### [HIGH] Writing to `table.baseAtoms.<slice>` while `atoms.<slice>` owns the slice
267
-
268
- Wrong:
269
-
270
- ```ts
271
- const paginationAtom = useCreateAtom<PaginationState>({ pageIndex: 0, pageSize: 10 })
272
- const table = useTable({ features, rowModels: {...}, columns, data, atoms: { pagination: paginationAtom } })
273
-
274
- table.baseAtoms.pagination.set((old) => ({ ...old, pageIndex: 0 }))
275
- // baseAtom updated, but table.atoms.pagination still reads from paginationAtom
276
- ```
277
-
278
- Correct:
279
-
280
- ```ts
281
- // Write to the external atom directly, OR use the feature's setter API
282
- paginationAtom.set((old) => ({ ...old, pageIndex: 0 }))
283
- // or
284
- table.setPageIndex(0) // setter writes through the slice's updater (atom-aware)
285
- ```
286
-
287
- When an external atom owns a slice, `table.atoms.<slice>` derives from it — not from `baseAtoms`. Direct base-atom writes drift and never surface in the UI.
288
-
289
- Source: docs/framework/vanilla/guide/table-state.md; packages/table-core/src/core/table/constructTable.ts
290
-
291
- ### [CRITICAL] Forgetting `manualSorting` / `manualFiltering` / `manualPagination` for server-side data
292
-
293
- Wrong:
294
-
295
- ```tsx
296
- // data is already paginated server-side, but table still slices it
297
- const dataQuery = useQuery({
298
- queryKey: ['data', pagination],
299
- queryFn: fetchPage,
300
- })
301
- const table = useTable({
302
- features,
303
- rowModels: { paginatedRowModel: createPaginatedRowModel() },
304
- columns,
305
- data: dataQuery.data?.rows ?? [],
306
- rowCount: dataQuery.data?.rowCount,
307
- atoms: { pagination: paginationAtom },
308
- // ❌ missing manualPagination: true
309
- })
310
- ```
311
-
312
- Correct:
313
-
314
- ```tsx
315
- const table = useTable({
316
- features,
317
- rowModels: {}, // drop paginatedRowModel if fully server-side
318
- columns,
319
- data: dataQuery.data?.rows ?? [],
320
- rowCount: dataQuery.data?.rowCount,
321
- atoms: { pagination: paginationAtom },
322
- manualPagination: true,
323
- })
324
- ```
325
-
326
- Without the manual flag, the table re-applies its client-side row models on top of already-prepared server data — wrong rows, broken page math, blank pages.
327
-
328
- Source: docs/framework/react/guide/table-state.md; packages/table-core/src/features/row-pagination/rowPaginationFeature.types.ts
329
-
330
- ### [HIGH] Using `table.reset()` to clear externally owned state
331
-
332
- Wrong:
333
-
334
- ```ts
335
- // external atom keeps its current value; only baseAtoms reset
336
- const sortingAtom = useCreateAtom<SortingState>([])
337
- const table = useTable({
338
- features, rowModels: {...}, columns, data,
339
- atoms: { sorting: sortingAtom },
340
- })
341
- table.reset() // sortingAtom is NOT cleared
342
- ```
343
-
344
- Correct:
345
-
346
- ```ts
347
- // Use feature-specific reset — atom-aware
348
- table.resetSorting()
349
- // or, to clear the external atom specifically:
350
- sortingAtom.set([])
351
- ```
352
-
353
- `table.reset()` only resets `baseAtoms` to `initialState`; slices owned by external atoms or external `state` are untouched. The atom split makes `reset()` less safe than v8.
354
-
355
- Source: docs/framework/vanilla/guide/table-state.md; packages/table-core/src/core/table/coreTablesFeature.utils.ts
356
-
357
- ### [CRITICAL] Reimplementing what built-in setters provide
358
-
359
- Wrong:
360
-
361
- ```ts
362
- // Reimplements sorting state manually instead of using the API
363
- const [sorting, setSorting] = useState([])
364
- const sortedData = useMemo(() => [...data].sort(/* ... */), [data, sorting])
365
- // then uses sortedData directly, bypassing the table
366
- ```
367
-
368
- Correct:
369
-
370
- ```ts
371
- const table = useTable({
372
- features: tableFeatures({ rowSortingFeature }),
373
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
374
- columns,
375
- data,
376
- })
377
- // table.setSorting(...), column.toggleSorting(), header.getToggleSortingHandler()
378
- ```
379
-
380
- The setters honor reset behavior, multi-sort, internal invariants. Hand-rolled state loops skip all of that.
381
-
382
- Source: maintainer interview (Phase 4, 2026-05-17)
383
-
384
- ## See also
385
-
386
- - `tanstack-table/setup` — how `features` and `rowModels` are wired
387
- - `tanstack-table/pagination`, `tanstack-table/sorting`, `tanstack-table/filtering` — feature-specific `manual*` and reset semantics
388
- - `tanstack-table/migrate-v8-to-v9` — `table.getState()` → `table.store.state` / `table.atoms.<slice>.get()`
@@ -1,245 +0,0 @@
1
- import type { RowData } from '../types/type-utils'
2
- import type { TableFeatures } from '../types/TableFeatures'
3
- import type { Row } from '../types/Row'
4
-
5
- /**
6
- * Sums numeric child-row values for a grouped column.
7
- *
8
- * Non-number values contribute `0`. Child rows are used so nested group totals
9
- * can reuse already aggregated values.
10
- */
11
- export function aggregationFn_sum<
12
- TFeatures extends TableFeatures,
13
- TData extends RowData,
14
- >(
15
- columnId: string,
16
- _leafRows: Array<Row<TFeatures, TData>>,
17
- childRows: Array<Row<TFeatures, TData>>,
18
- ) {
19
- // It's faster to just add the aggregations together instead of
20
- // process leaf nodes individually
21
- return childRows.reduce((sumValue, next) => {
22
- const nextValue = next.getValue(columnId)
23
- return sumValue + (typeof nextValue === 'number' ? nextValue : 0)
24
- }, 0)
25
- }
26
-
27
- /**
28
- * Finds the minimum numeric child-row value for a grouped column.
29
- *
30
- * Nullish and non-number values are ignored. Returns `undefined` when no
31
- * numeric value is found.
32
- */
33
- export function aggregationFn_min<
34
- TFeatures extends TableFeatures,
35
- TData extends RowData,
36
- >(
37
- columnId: string,
38
- _leafRows: Array<Row<TFeatures, TData>>,
39
- childRows: Array<Row<TFeatures, TData>>,
40
- ) {
41
- let minValue: number | undefined
42
-
43
- childRows.forEach((row) => {
44
- const value = row.getValue(columnId)
45
-
46
- if (
47
- value != null &&
48
- typeof value === 'number' &&
49
- (minValue === undefined || value < minValue)
50
- ) {
51
- minValue = value
52
- }
53
- })
54
-
55
- return minValue
56
- }
57
-
58
- /**
59
- * Finds the maximum numeric child-row value for a grouped column.
60
- *
61
- * Nullish and non-number values are ignored. Returns `undefined` when no
62
- * numeric value is found.
63
- */
64
- export function aggregationFn_max<
65
- TFeatures extends TableFeatures,
66
- TData extends RowData,
67
- >(
68
- columnId: string,
69
- _leafRows: Array<Row<TFeatures, TData>>,
70
- childRows: Array<Row<TFeatures, TData>>,
71
- ) {
72
- let maxValue: number | undefined
73
-
74
- childRows.forEach((row) => {
75
- const value = row.getValue(columnId)
76
- if (
77
- value != null &&
78
- typeof value === 'number' &&
79
- (maxValue === undefined || value > maxValue)
80
- ) {
81
- maxValue = value
82
- }
83
- })
84
-
85
- return maxValue
86
- }
87
-
88
- /**
89
- * Finds the numeric extent for a grouped column.
90
- *
91
- * Returns `[min, max]`, where each entry is `undefined` when no numeric value is
92
- * present.
93
- */
94
- export function aggregationFn_extent<
95
- TFeatures extends TableFeatures,
96
- TData extends RowData,
97
- >(
98
- columnId: string,
99
- _leafRows: Array<Row<TFeatures, TData>>,
100
- childRows: Array<Row<TFeatures, TData>>,
101
- ) {
102
- let minValue: number | undefined
103
- let maxValue: number | undefined
104
-
105
- childRows.forEach((row) => {
106
- const value = row.getValue(columnId)
107
- if (value != null && typeof value === 'number') {
108
- if (minValue === undefined) {
109
- minValue = maxValue = value
110
- } else {
111
- if (minValue > value) minValue = value
112
- if (maxValue! < value) maxValue = value
113
- }
114
- }
115
- })
116
-
117
- return [minValue, maxValue]
118
- }
119
-
120
- /**
121
- * Averages numeric leaf-row values for a grouped column.
122
- *
123
- * Number-like values are coerced with unary `+`; nullish and non-numeric values
124
- * are ignored.
125
- */
126
- export function aggregationFn_mean<
127
- TFeatures extends TableFeatures,
128
- TData extends RowData,
129
- >(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
130
- let count = 0
131
- let sumValue = 0
132
-
133
- leafRows.forEach((row) => {
134
- const value = row.getValue(columnId)
135
- if (value != null && typeof value === 'number') {
136
- ++count
137
- sumValue += value
138
- } else if (value != null) {
139
- const numValue = +value
140
- if (!Number.isNaN(numValue)) {
141
- ++count
142
- sumValue += numValue
143
- }
144
- }
145
- })
146
-
147
- if (count) return sumValue / count
148
-
149
- return
150
- }
151
-
152
- /**
153
- * Computes the median of numeric leaf-row values for a grouped column.
154
- *
155
- * All values must be numbers. If any value is non-numeric, or no leaf rows are
156
- * present, the result is `undefined`.
157
- */
158
- export function aggregationFn_median<
159
- TFeatures extends TableFeatures,
160
- TData extends RowData,
161
- >(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
162
- if (!leafRows.length) {
163
- return
164
- }
165
-
166
- const values: Array<number> = new Array(leafRows.length)
167
- for (let i = 0; i < leafRows.length; i++) {
168
- const v = leafRows[i]!.getValue(columnId)
169
- if (typeof v !== 'number') return
170
- values[i] = v
171
- }
172
-
173
- if (values.length === 1) {
174
- return values[0]
175
- }
176
-
177
- const mid = Math.floor(values.length / 2)
178
- values.sort((a, b) => a - b)
179
- return values.length % 2 !== 0
180
- ? values[mid]
181
- : (values[mid - 1]! + values[mid]!) / 2
182
- }
183
-
184
- /**
185
- * Collects unique leaf-row values for a grouped column.
186
- *
187
- * Values are compared with JavaScript `Set` semantics.
188
- */
189
- export function aggregationFn_unique<
190
- TFeatures extends TableFeatures,
191
- TData extends RowData,
192
- >(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
193
- const set = new Set<unknown>()
194
- for (let i = 0; i < leafRows.length; i++) {
195
- set.add(leafRows[i]!.getValue(columnId))
196
- }
197
- return Array.from(set.values())
198
- }
199
-
200
- /**
201
- * Counts unique leaf-row values for a grouped column.
202
- *
203
- * Values are compared with JavaScript `Set` semantics.
204
- */
205
- export function aggregationFn_uniqueCount<
206
- TFeatures extends TableFeatures,
207
- TData extends RowData,
208
- >(columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
209
- const set = new Set<unknown>()
210
- for (let i = 0; i < leafRows.length; i++) {
211
- set.add(leafRows[i]!.getValue(columnId))
212
- }
213
- return set.size
214
- }
215
-
216
- /**
217
- * Counts the number of leaf rows in the group.
218
- *
219
- * The column id is ignored because the result is based only on group size.
220
- */
221
- export function aggregationFn_count<
222
- TFeatures extends TableFeatures,
223
- TData extends RowData,
224
- >(_columnId: string, leafRows: Array<Row<TFeatures, TData>>) {
225
- return leafRows.length
226
- }
227
-
228
- /**
229
- * The built-in aggregation function registry.
230
- *
231
- * Pass this object to grouped row model creation or extend it with custom aggregation functions for grouped columns.
232
- */
233
- export const aggregationFns = {
234
- sum: aggregationFn_sum,
235
- min: aggregationFn_min,
236
- max: aggregationFn_max,
237
- extent: aggregationFn_extent,
238
- mean: aggregationFn_mean,
239
- median: aggregationFn_median,
240
- unique: aggregationFn_unique,
241
- uniqueCount: aggregationFn_uniqueCount,
242
- count: aggregationFn_count,
243
- }
244
-
245
- export type BuiltInAggregationFn = keyof typeof aggregationFns