@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,14 +1,12 @@
1
1
  import {
2
2
  assignPrototypeAPIs,
3
3
  assignTableAPIs,
4
+ makeObjectMap,
4
5
  makeStateUpdater,
5
6
  } from '../../utils'
6
7
  import {
7
- cell_getIsAggregated,
8
8
  cell_getIsGrouped,
9
9
  cell_getIsPlaceholder,
10
- column_getAggregationFn,
11
- column_getAutoAggregationFn,
12
10
  column_getCanGroup,
13
11
  column_getGroupedIndex,
14
12
  column_getIsGrouped,
@@ -23,7 +21,7 @@ import {
23
21
  import type { TableFeature } from '../../types/TableFeatures'
24
22
 
25
23
  /**
26
- * Feature that adds column grouping state, aggregation defaults, and grouped row APIs.
24
+ * Feature that adds column grouping state and grouped row APIs.
27
25
  */
28
26
  export const columnGroupingFeature: TableFeature = {
29
27
  getInitialState: (initialState) => {
@@ -33,13 +31,6 @@ export const columnGroupingFeature: TableFeature = {
33
31
  }
34
32
  },
35
33
 
36
- getDefaultColumnDef: () => {
37
- return {
38
- aggregatedCell: ({ getValue }: any) => getValue()?.toString?.() ?? null,
39
- aggregationFn: 'auto',
40
- }
41
- },
42
-
43
34
  getDefaultTableOptions: (table) => {
44
35
  return {
45
36
  onGroupingChange: makeStateUpdater('grouping', table),
@@ -55,9 +46,6 @@ export const columnGroupingFeature: TableFeature = {
55
46
  cell_getIsPlaceholder: {
56
47
  fn: (cell) => cell_getIsPlaceholder(cell),
57
48
  },
58
- cell_getIsAggregated: {
59
- fn: (cell) => cell_getIsAggregated(cell),
60
- },
61
49
  })
62
50
  },
63
51
 
@@ -78,12 +66,6 @@ export const columnGroupingFeature: TableFeature = {
78
66
  column_getToggleGroupingHandler: {
79
67
  fn: (column) => column_getToggleGroupingHandler(column),
80
68
  },
81
- column_getAutoAggregationFn: {
82
- fn: (column) => column_getAutoAggregationFn(column),
83
- },
84
- column_getAggregationFn: {
85
- fn: (column) => column_getAggregationFn(column),
86
- },
87
69
  })
88
70
  },
89
71
 
@@ -99,7 +81,7 @@ export const columnGroupingFeature: TableFeature = {
99
81
  },
100
82
 
101
83
  initRowInstanceData: (row) => {
102
- ;(row as any)._groupingValuesCache = {}
84
+ ;(row as any)._groupingValuesCache = makeObjectMap()
103
85
  },
104
86
 
105
87
  constructTableAPIs: (table) => {
@@ -1,16 +1,7 @@
1
1
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
2
- import type { Table } from '../../types/Table'
3
- import type { BuiltInAggregationFn } from '../../fns/aggregationFns'
4
- import type {
5
- CellData,
6
- OnChangeFn,
7
- RowData,
8
- Updater,
9
- } from '../../types/type-utils'
2
+ import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
10
3
  import type { TableFeatures } from '../../types/TableFeatures'
11
4
  import type { Row } from '../../types/Row'
12
- import type { Cell } from '../../types/Cell'
13
- import type { ColumnDefTemplate } from '../../types/ColumnDef'
14
5
 
15
6
  export type GroupingState = Array<string>
16
7
 
@@ -18,53 +9,10 @@ export interface TableState_ColumnGrouping {
18
9
  grouping: GroupingState
19
10
  }
20
11
 
21
- export interface RowModelFns_ColumnGrouping<
22
- TFeatures extends TableFeatures,
23
- TData extends RowData,
24
- > {
25
- aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>
26
- }
27
-
28
- export interface AggregationFns {}
29
-
30
- export type AggregationFn<
31
- TFeatures extends TableFeatures,
32
- TData extends RowData,
33
- > = (
34
- columnId: string,
35
- leafRows: Array<Row<TFeatures, TData>>,
36
- childRows: Array<Row<TFeatures, TData>>,
37
- ) => any
38
-
39
- export type CustomAggregationFns<
40
- TFeatures extends TableFeatures,
41
- TData extends RowData,
42
- > = Record<string, AggregationFn<TFeatures, TData>>
43
-
44
- export type AggregationFnOption<
45
- TFeatures extends TableFeatures,
46
- TData extends RowData,
47
- > =
48
- | 'auto'
49
- | keyof AggregationFns
50
- | BuiltInAggregationFn
51
- | AggregationFn<TFeatures, TData>
52
-
53
12
  export interface ColumnDef_ColumnGrouping<
54
- TFeatures extends TableFeatures,
55
- TData extends RowData,
56
- TValue extends CellData = CellData,
13
+ in out TFeatures extends TableFeatures,
14
+ in out TData extends RowData,
57
15
  > {
58
- /**
59
- * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
60
- */
61
- aggregatedCell?: ColumnDefTemplate<
62
- ReturnType<Cell<TFeatures, TData, TValue>['getContext']>
63
- >
64
- /**
65
- * The resolved aggregation function for the column.
66
- */
67
- aggregationFn?: AggregationFnOption<TFeatures, TData>
68
16
  /**
69
17
  * Allows this column to be added to grouping state.
70
18
  *
@@ -72,23 +20,19 @@ export interface ColumnDef_ColumnGrouping<
72
20
  */
73
21
  enableGrouping?: boolean
74
22
  /**
75
- * Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.
76
- */
77
- getGroupingValue?: (row: TData) => any
23
+ * Returns the value used to group rows for this column.
24
+ *
25
+ * When omitted, grouping uses the value derived from this column's
26
+ * `accessorKey` or `accessorFn`.
27
+ */
28
+ getGroupingValue?: (
29
+ originalRow: TData,
30
+ index: number,
31
+ row: Row<TFeatures, TData>,
32
+ ) => any
78
33
  }
79
34
 
80
- export interface Column_ColumnGrouping<
81
- TFeatures extends TableFeatures,
82
- TData extends RowData,
83
- > {
84
- /**
85
- * Returns the aggregation function for the column.
86
- */
87
- getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined
88
- /**
89
- * Returns the automatically inferred aggregation function for the column.
90
- */
91
- getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined
35
+ export interface Column_ColumnGrouping {
92
36
  /**
93
37
  * Checks whether this column can currently be grouped.
94
38
  */
@@ -132,10 +76,6 @@ export interface Row_ColumnGrouping {
132
76
  }
133
77
 
134
78
  export interface Cell_ColumnGrouping {
135
- /**
136
- * Checks whether this cell should render an aggregated value.
137
- */
138
- getIsAggregated: () => boolean
139
79
  /**
140
80
  * Checks whether this cell represents the active grouping column.
141
81
  */
@@ -175,8 +115,8 @@ export interface TableOptions_ColumnGrouping {
175
115
  export type GroupingColumnMode = false | 'reorder' | 'remove'
176
116
 
177
117
  export interface Table_ColumnGrouping<
178
- TFeatures extends TableFeatures,
179
- TData extends RowData,
118
+ in out _TFeatures extends TableFeatures,
119
+ in out _TData extends RowData,
180
120
  > {
181
121
  /**
182
122
  * Resets `grouping` to `initialState.grouping`.
@@ -191,11 +131,11 @@ export interface Table_ColumnGrouping<
191
131
  }
192
132
 
193
133
  export interface Table_RowModels_Grouped<
194
- TFeatures extends TableFeatures,
195
- TData extends RowData,
134
+ in out TFeatures extends TableFeatures,
135
+ in out TData extends RowData,
196
136
  > {
197
137
  /**
198
- * Resolves the row model after grouping and aggregation have been applied.
138
+ * Resolves the row model after grouping has been applied.
199
139
  */
200
140
  getGroupedRowModel: () => RowModel<TFeatures, TData>
201
141
  /**
@@ -204,23 +144,9 @@ export interface Table_RowModels_Grouped<
204
144
  getPreGroupedRowModel: () => RowModel<TFeatures, TData>
205
145
  }
206
146
 
207
- export interface CreateRowModel_Grouped<
208
- TFeatures extends TableFeatures,
209
- TData extends RowData,
210
- > {
211
- /**
212
- * Factory used to retrieve the grouped row model. If using server-side
213
- * grouping, this is not required. To use client-side grouping, pass
214
- * `createGroupedRowModel()` or implement your own factory.
215
- */
216
- groupedRowModel?: (
217
- table: Table<TFeatures, TData>,
218
- ) => () => RowModel<TFeatures, TData>
219
- }
220
-
221
147
  export interface CachedRowModel_Grouped<
222
- TFeatures extends TableFeatures,
223
- TData extends RowData,
148
+ in out TFeatures extends TableFeatures,
149
+ in out TData extends RowData,
224
150
  > {
225
151
  groupedRowModel: () => RowModel<TFeatures, TData>
226
152
  }
@@ -1,4 +1,4 @@
1
- import { cloneState, isFunction } from '../../utils'
1
+ import { cloneState, hasOwn } from '../../utils'
2
2
  import type { Column_Internal } from '../../types/Column'
3
3
  import type { CellData, RowData, Updater } from '../../types/type-utils'
4
4
  import type { TableFeatures } from '../../types/TableFeatures'
@@ -6,7 +6,6 @@ import type { Table_Internal } from '../../types/Table'
6
6
  import type { Row } from '../../types/Row'
7
7
  import type { Cell } from '../../types/Cell'
8
8
  import type {
9
- AggregationFn,
10
9
  GroupingState,
11
10
  Row_ColumnGrouping,
12
11
  } from './columnGroupingFeature.types'
@@ -135,67 +134,6 @@ export function column_getToggleGroupingHandler<
135
134
  }
136
135
  }
137
136
 
138
- /**
139
- * Chooses a built-in aggregation function from the first core row value.
140
- *
141
- * Numeric columns default to `sum`, date-like values default to `extent`, and
142
- * other value types leave aggregation unspecified.
143
- *
144
- * @example
145
- * ```ts
146
- * const aggregationFn = column_getAutoAggregationFn(column)
147
- * ```
148
- */
149
- export function column_getAutoAggregationFn<
150
- TFeatures extends TableFeatures,
151
- TData extends RowData,
152
- TValue extends CellData = CellData,
153
- >(column: Column_Internal<TFeatures, TData, TValue>) {
154
- const aggregationFns:
155
- | Record<string, AggregationFn<TFeatures, TData>>
156
- | undefined = column.table._rowModelFns.aggregationFns
157
-
158
- const firstRow = column.table.getCoreRowModel().flatRows[0]
159
-
160
- const value = firstRow?.getValue(column.id)
161
-
162
- if (typeof value === 'number') {
163
- return aggregationFns?.sum
164
- }
165
-
166
- if (Object.prototype.toString.call(value) === '[object Date]') {
167
- return aggregationFns?.extent
168
- }
169
- }
170
-
171
- /**
172
- * Resolves the aggregation function configured for a column.
173
- *
174
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
175
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
176
- * the table's aggregation function registry.
177
- *
178
- * @example
179
- * ```ts
180
- * const aggregationFn = column_getAggregationFn(column)
181
- * ```
182
- */
183
- export function column_getAggregationFn<
184
- TFeatures extends TableFeatures,
185
- TData extends RowData,
186
- TValue extends CellData = CellData,
187
- >(column: Column_Internal<TFeatures, TData, TValue>) {
188
- const aggregationFns:
189
- | Record<string, AggregationFn<TFeatures, TData>>
190
- | undefined = column.table._rowModelFns.aggregationFns
191
-
192
- return isFunction(column.columnDef.aggregationFn)
193
- ? column.columnDef.aggregationFn
194
- : column.columnDef.aggregationFn === 'auto'
195
- ? column_getAutoAggregationFn(column)
196
- : aggregationFns?.[column.columnDef.aggregationFn as string]
197
- }
198
-
199
137
  /**
200
138
  * Routes a grouping updater through the table's grouping change handler.
201
139
  *
@@ -268,7 +206,7 @@ export function row_getGroupingValue<
268
206
  TFeatures extends TableFeatures,
269
207
  TData extends RowData,
270
208
  >(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {
271
- if (row._groupingValuesCache?.hasOwnProperty(columnId)) {
209
+ if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) {
272
210
  return row._groupingValuesCache[columnId]
273
211
  }
274
212
 
@@ -284,6 +222,8 @@ export function row_getGroupingValue<
284
222
  if (row._groupingValuesCache) {
285
223
  row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(
286
224
  row.original,
225
+ row.index,
226
+ row,
287
227
  )
288
228
  }
289
229
 
@@ -329,26 +269,3 @@ export function cell_getIsPlaceholder<
329
269
  >(cell: Cell<TFeatures, TData, TValue>) {
330
270
  return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)
331
271
  }
332
-
333
- /**
334
- * Checks whether this cell should render an aggregated value.
335
- *
336
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
337
- * subRows.
338
- *
339
- * @example
340
- * ```ts
341
- * const isAggregated = cell_getIsAggregated(cell)
342
- * ```
343
- */
344
- export function cell_getIsAggregated<
345
- TFeatures extends TableFeatures,
346
- TData extends RowData,
347
- TValue extends CellData = CellData,
348
- >(cell: Cell<TFeatures, TData, TValue>) {
349
- return (
350
- !cell_getIsGrouped(cell) &&
351
- !cell_getIsPlaceholder(cell) &&
352
- !!cell.row.subRows.length
353
- )
354
- }
@@ -1,18 +1,14 @@
1
- import { flattenBy, tableMemo } from '../../utils'
1
+ import { hasOwn, makeObjectMap, tableMemo } from '../../utils'
2
2
  import { constructRow } from '../../core/rows/constructRow'
3
3
  import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
4
4
  import { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'
5
5
  import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
6
6
  import {
7
- column_getAggregationFn,
8
- row_getGroupingValue,
9
- } from './columnGroupingFeature.utils'
10
- import type { Column } from '../../types/Column'
11
- import type {
12
- AggregationFn,
13
- AggregationFns,
14
- Row_ColumnGrouping,
15
- } from './columnGroupingFeature.types'
7
+ aggregateColumnValue,
8
+ normalizeAggregationRows,
9
+ } from '../row-aggregation/rowAggregationFeature.utils'
10
+ import { row_getGroupingValue } from './columnGroupingFeature.utils'
11
+ import type { Row_ColumnGrouping } from './columnGroupingFeature.types'
16
12
  import type { TableFeatures } from '../../types/TableFeatures'
17
13
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
18
14
  import type { Table, Table_Internal } from '../../types/Table'
@@ -23,17 +19,16 @@ import type { RowData } from '../../types/type-utils'
23
19
  * Creates a memoized grouped row model factory.
24
20
  *
25
21
  * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
22
+ *
23
+ * When rowAggregationFeature is also registered, grouped rows use its shared
24
+ * executor for non-group values. Grouping remains useful without aggregation.
26
25
  */
27
26
  export function createGroupedRowModel<
28
27
  TFeatures extends TableFeatures,
29
28
  TData extends RowData = any,
30
- >(
31
- aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>,
32
- ): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
29
+ >(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
33
30
  return (_table) => {
34
31
  const table = _table as unknown as Table_Internal<TFeatures, TData>
35
- if (!table._rowModelFns.aggregationFns)
36
- table._rowModelFns.aggregationFns = aggregationFns
37
32
  return tableMemo({
38
33
  feature: 'columnGroupingFeature',
39
34
  table,
@@ -41,6 +36,7 @@ export function createGroupedRowModel<
41
36
  memoDeps: () => [
42
37
  table.atoms.grouping?.get(),
43
38
  table.getPreGroupedRowModel(),
39
+ table.options.columns,
44
40
  ],
45
41
  fn: () => _createGroupedRowModel(table),
46
42
  onAfterUpdate: () => {
@@ -73,7 +69,7 @@ function _createGroupedRowModel<
73
69
 
74
70
  const groupedFlatRows: Array<Row<TFeatures, TData>> &
75
71
  Partial<Row_ColumnGrouping> = []
76
- const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}
72
+ const groupedRowsById = makeObjectMap<Row<TFeatures, TData>>()
77
73
 
78
74
  // Recursively group the data
79
75
  const groupUpRecursively = (
@@ -87,11 +83,17 @@ function _createGroupedRowModel<
87
83
  return rows.map((row) => {
88
84
  row.depth = depth
89
85
 
90
- groupedFlatRows.push(row)
91
- groupedRowsById[row.id] = row
92
-
86
+ // Every row is pushed into flatRows/rowsById exactly once, by its
87
+ // parent frame: rows returned here are pushed by the caller (the
88
+ // parent group's loop or the root loop), so only descendants below
89
+ // the terminal depth are pushed here.
93
90
  if (row.subRows.length) {
94
91
  row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)
92
+ for (let i = 0; i < row.subRows.length; i++) {
93
+ const subRow = row.subRows[i]!
94
+ groupedFlatRows.push(subRow)
95
+ groupedRowsById[subRow.id] = subRow
96
+ }
95
97
  }
96
98
 
97
99
  return row
@@ -116,10 +118,7 @@ function _createGroupedRowModel<
116
118
  subRow.parentId = id
117
119
  })
118
120
 
119
- // Flatten the leaf rows of the rows in this group
120
- const leafRows = depth
121
- ? flattenBy(groupedRows, (row) => row.subRows)
122
- : groupedRows
121
+ const leafRows = normalizeAggregationRows(groupedRows, Infinity)
123
122
 
124
123
  const row = constructRow(
125
124
  table,
@@ -137,9 +136,13 @@ function _createGroupedRowModel<
137
136
  subRows,
138
137
  leafRows,
139
138
  getValue: (colId: string) => {
140
- // Don't aggregate columns that are in the grouping
141
- if (existingGrouping.includes(colId)) {
142
- if (row._valuesCache.hasOwnProperty(colId)) {
139
+ const groupingIndex = existingGrouping.indexOf(colId)
140
+
141
+ // The active grouping column and ancestor grouping columns expose
142
+ // their inherited grouping values. Columns grouped at deeper
143
+ // levels are still eligible for aggregation here.
144
+ if (groupingIndex !== -1 && groupingIndex <= depth) {
145
+ if (hasOwn(row._valuesCache, colId)) {
143
146
  return row._valuesCache[colId]
144
147
  }
145
148
 
@@ -151,27 +154,25 @@ function _createGroupedRowModel<
151
154
  return row._valuesCache[colId]
152
155
  }
153
156
 
154
- if (row._groupingValuesCache?.hasOwnProperty(colId)) {
155
- return row._groupingValuesCache[colId]
157
+ const aggregationCache = (row as any)._aggregationValuesCache as
158
+ | Record<string, unknown>
159
+ | undefined
160
+ if (aggregationCache && hasOwn(aggregationCache, colId)) {
161
+ return aggregationCache[colId]
156
162
  }
157
163
 
158
- // Aggregate the values
159
- const column = table.getColumn(colId)
160
- const aggregateFn = column_getAggregationFn(
161
- column as Column<TFeatures, TData, unknown>,
162
- )
163
-
164
- if (!row._groupingValuesCache) row._groupingValuesCache = {}
165
-
166
- if (aggregateFn) {
167
- row._groupingValuesCache[colId] = aggregateFn(
168
- colId,
169
- leafRows,
170
- groupedRows,
171
- )
172
-
173
- return row._groupingValuesCache[colId]
174
- }
164
+ const column = table.getColumn(colId) as any
165
+ if (typeof column.getAggregationFns !== 'function') return undefined
166
+
167
+ const cache = ((row as any)._aggregationValuesCache ??=
168
+ makeObjectMap())
169
+ cache[colId] = aggregateColumnValue({
170
+ subRows,
171
+ column,
172
+ groupingRow: row,
173
+ rows: groupedRows,
174
+ })
175
+ return cache[colId]
175
176
  },
176
177
  })
177
178
 
@@ -8,6 +8,7 @@ import {
8
8
  column_getIsFirstColumn,
9
9
  column_getIsLastColumn,
10
10
  getDefaultColumnOrderState,
11
+ table_getColumnIndexes,
11
12
  table_getOrderColumnsFn,
12
13
  table_resetColumnOrder,
13
14
  table_setColumnOrder,
@@ -35,13 +36,6 @@ export const columnOrderingFeature: TableFeature = {
35
36
  assignPrototypeAPIs('columnOrderingFeature', prototype, table, {
36
37
  column_getIndex: {
37
38
  fn: (column, position) => column_getIndex(column, position),
38
- memoDeps: (column, position) => [
39
- position,
40
- column.table.atoms.columnOrder?.get(),
41
- column.table.atoms.columnPinning?.get(),
42
- column.table.atoms.grouping?.get(),
43
- column.table.atoms.columnVisibility?.get(),
44
- ],
45
39
  },
46
40
  column_getIsFirstColumn: {
47
41
  fn: (column, position) => column_getIsFirstColumn(column, position),
@@ -54,6 +48,17 @@ export const columnOrderingFeature: TableFeature = {
54
48
 
55
49
  constructTableAPIs: (table) => {
56
50
  assignTableAPIs('columnOrderingFeature', table, {
51
+ table_getColumnIndexes: {
52
+ fn: () => table_getColumnIndexes(table),
53
+ memoDeps: () => [
54
+ table.options.columns,
55
+ table.atoms.columnOrder?.get(),
56
+ table.atoms.columnPinning?.get(),
57
+ table.atoms.columnVisibility?.get(),
58
+ table.atoms.grouping?.get(),
59
+ table.options.groupedColumnMode,
60
+ ],
61
+ },
57
62
  table_setColumnOrder: {
58
63
  fn: (updater) => table_setColumnOrder(table, updater),
59
64
  },
@@ -4,6 +4,25 @@ import type { ColumnPinningPosition } from '../column-pinning/columnPinningFeatu
4
4
 
5
5
  export type ColumnOrderState = Array<string>
6
6
 
7
+ export interface ColumnIndexes {
8
+ /**
9
+ * Maps each visible leaf column id to its index in the full visible column list.
10
+ */
11
+ all: Record<string, number>
12
+ /**
13
+ * Maps each unpinned visible leaf column id to its index within the center region.
14
+ */
15
+ center: Record<string, number>
16
+ /**
17
+ * Maps each start-pinned visible leaf column id to its index within the start region.
18
+ */
19
+ start: Record<string, number>
20
+ /**
21
+ * Maps each end-pinned visible leaf column id to its index within the end region.
22
+ */
23
+ end: Record<string, number>
24
+ }
25
+
7
26
  export interface TableState_ColumnOrdering {
8
27
  columnOrder: ColumnOrderState
9
28
  }
@@ -21,7 +40,7 @@ export interface Column_ColumnOrdering {
21
40
  /**
22
41
  * Finds this column's zero-based index among visible columns.
23
42
  *
24
- * Pass `'left'`, `'center'`, or `'right'` to measure within that pinned
43
+ * Pass `'start'`, `'center'`, or `'end'` to measure within that pinned
25
44
  * region instead of the full visible leaf order.
26
45
  */
27
46
  getIndex: (position?: ColumnPinningPosition | 'center') => number
@@ -44,9 +63,16 @@ export interface ColumnOrderDefaultOptions {
44
63
  }
45
64
 
46
65
  export interface Table_ColumnOrdering<
47
- TFeatures extends TableFeatures,
48
- TData extends RowData,
66
+ in out _TFeatures extends TableFeatures,
67
+ in out _TData extends RowData,
49
68
  > {
69
+ /**
70
+ * Builds column-id to index records for each visible pinning region.
71
+ *
72
+ * This is the memoized source that `column.getIndex` reads from; most apps
73
+ * will not need to call it directly.
74
+ */
75
+ getColumnIndexes: () => ColumnIndexes
50
76
  /**
51
77
  * Resets `columnOrder` to `initialState.columnOrder`.
52
78
  *