@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
@@ -0,0 +1,430 @@
1
+ import { hasOwn, makeObjectMap } from '../../utils'
2
+ import type { Cell } from '../../types/Cell'
3
+ import type { Column, Column_Internal } from '../../types/Column'
4
+ import type { Row } from '../../types/Row'
5
+ import type { TableFeatures } from '../../types/TableFeatures'
6
+ import type { CellData, RowData } from '../../types/type-utils'
7
+ import type {
8
+ AggregationContext,
9
+ AggregationFnDef,
10
+ AggregationFnDescriptor,
11
+ AggregationFnRef,
12
+ AggregationValueOptions,
13
+ ColumnAggregationValue,
14
+ ResolvedAggregationFn,
15
+ } from './rowAggregationFeature.types'
16
+
17
+ interface AggregationCacheEntry {
18
+ aggregationFnOption: unknown
19
+ dependency: unknown
20
+ maxDepth: number
21
+ registry: unknown
22
+ value: unknown
23
+ }
24
+
25
+ interface ResolvedAggregationFnsCacheEntry<
26
+ TFeatures extends TableFeatures,
27
+ TData extends RowData,
28
+ > {
29
+ coreRowModel: unknown
30
+ option: unknown
31
+ registry: unknown
32
+ value: ReadonlyArray<ResolvedAggregationFn<TFeatures, TData>>
33
+ }
34
+
35
+ function isAggregationFnDef(value: unknown): value is AggregationFnDef {
36
+ return !!value && typeof value === 'object' && 'aggregate' in value
37
+ }
38
+
39
+ function isAggregationFnDescriptor(
40
+ value: unknown,
41
+ ): value is AggregationFnDescriptor<any, any> {
42
+ return (
43
+ !!value &&
44
+ typeof value === 'object' &&
45
+ 'id' in value &&
46
+ 'aggregationFn' in value
47
+ )
48
+ }
49
+
50
+ function warn(message: string) {
51
+ if (process.env.NODE_ENV === 'development') {
52
+ console.warn(message)
53
+ }
54
+ }
55
+
56
+ function resolveMaxAggregationDepth(maxDepth: number | undefined) {
57
+ return maxDepth === undefined || Number.isNaN(maxDepth)
58
+ ? 0
59
+ : Math.max(0, Math.floor(maxDepth))
60
+ }
61
+
62
+ /**
63
+ * Selects unique rows at a maximum relative depth in encounter order.
64
+ * Branches that end before the requested depth contribute their deepest row.
65
+ */
66
+ export function normalizeAggregationRows<
67
+ TFeatures extends TableFeatures,
68
+ TData extends RowData,
69
+ >(
70
+ rows: ReadonlyArray<Row<TFeatures, TData>>,
71
+ maxDepth = 0,
72
+ ): Array<Row<TFeatures, TData>> {
73
+ const result: Array<Row<TFeatures, TData>> = []
74
+ const seen = new Set<string>()
75
+ const normalizedMaxDepth = resolveMaxAggregationDepth(maxDepth)
76
+
77
+ const visit = (row: Row<TFeatures, TData>, depth: number) => {
78
+ if (row.subRows.length && depth < normalizedMaxDepth) {
79
+ for (let i = 0; i < row.subRows.length; i++) {
80
+ visit(row.subRows[i]!, depth + 1)
81
+ }
82
+ return
83
+ }
84
+
85
+ if (!seen.has(row.id)) {
86
+ seen.add(row.id)
87
+ result.push(row)
88
+ }
89
+ }
90
+
91
+ for (let i = 0; i < rows.length; i++) {
92
+ visit(rows[i]!, 0)
93
+ }
94
+
95
+ return result
96
+ }
97
+
98
+ function getAutoAggregationFnName(
99
+ value: unknown,
100
+ ): 'extent' | 'sum' | undefined {
101
+ if (typeof value === 'number') {
102
+ return 'sum'
103
+ }
104
+
105
+ if (value instanceof Date && !Number.isNaN(value.getTime())) {
106
+ return 'extent'
107
+ }
108
+
109
+ return undefined
110
+ }
111
+
112
+ /** Resolves the `sum` or `extent` definition inferred from the first core row. */
113
+ export function column_getAutoAggregationFn<
114
+ TFeatures extends TableFeatures,
115
+ TData extends RowData,
116
+ TValue extends CellData = CellData,
117
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
118
+ const value = column.table.getCoreRowModel().flatRows[0]?.getValue(column.id)
119
+
120
+ const name = getAutoAggregationFnName(value)
121
+ if (!name) return undefined
122
+
123
+ const aggregationFn = column.table._rowModelFns.aggregationFns?.[name]
124
+
125
+ if (!aggregationFn) {
126
+ warn(
127
+ `aggregationFn '${name}' (auto) for column '${column.id}' is not registered`,
128
+ )
129
+ }
130
+
131
+ return aggregationFn
132
+ }
133
+
134
+ function resolveAggregationFn<
135
+ TFeatures extends TableFeatures,
136
+ TData extends RowData,
137
+ >(
138
+ column: Column_Internal<TFeatures, TData, any>,
139
+ ref: AggregationFnRef<TFeatures, TData, any, any>,
140
+ ): AggregationFnDef<TFeatures, TData, any, any> | undefined {
141
+ if (isAggregationFnDef(ref)) return ref as any
142
+ if (ref === 'auto') return column_getAutoAggregationFn(column)
143
+
144
+ const aggregationFn =
145
+ column.table._rowModelFns.aggregationFns?.[ref as string]
146
+ if (!aggregationFn) {
147
+ warn(
148
+ `aggregationFn '${String(ref)}' for column '${column.id}' is not registered`,
149
+ )
150
+ }
151
+ return aggregationFn
152
+ }
153
+
154
+ /** Resolves and validates a column's scalar or multiple aggregation option. */
155
+ export function column_getAggregationFns<
156
+ TFeatures extends TableFeatures,
157
+ TData extends RowData,
158
+ TValue extends CellData = CellData,
159
+ >(
160
+ column: Column_Internal<TFeatures, TData, TValue>,
161
+ ): ReadonlyArray<ResolvedAggregationFn<TFeatures, TData>> {
162
+ const option = column.columnDef.aggregationFn
163
+ const registry = column.table._rowModelFns.aggregationFns
164
+ const coreRowModel = column.table.getCoreRowModel()
165
+ const previous = (column as any)._resolvedAggregationFnsCache as
166
+ | ResolvedAggregationFnsCacheEntry<TFeatures, TData>
167
+ | undefined
168
+
169
+ if (
170
+ previous &&
171
+ previous.option === option &&
172
+ previous.registry === registry &&
173
+ previous.coreRowModel === coreRowModel
174
+ ) {
175
+ return previous.value
176
+ }
177
+
178
+ const finish = (
179
+ value: ReadonlyArray<ResolvedAggregationFn<TFeatures, TData>>,
180
+ ) => {
181
+ ;(column as any)._resolvedAggregationFnsCache = {
182
+ coreRowModel,
183
+ option,
184
+ registry,
185
+ value,
186
+ } satisfies ResolvedAggregationFnsCacheEntry<TFeatures, TData>
187
+ return value
188
+ }
189
+
190
+ if (option == null) return finish([])
191
+
192
+ if (!Array.isArray(option)) {
193
+ return finish([
194
+ {
195
+ aggregationFn: resolveAggregationFn(column, option as any),
196
+ id: typeof option === 'string' ? option : undefined,
197
+ },
198
+ ])
199
+ }
200
+
201
+ const ids = makeObjectMap<number>()
202
+ for (let i = 0; i < option.length; i++) {
203
+ const item = option[i]
204
+ const id =
205
+ typeof item === 'string'
206
+ ? item
207
+ : isAggregationFnDescriptor(item)
208
+ ? item.id
209
+ : undefined
210
+ if (id !== undefined) ids[id] = (ids[id] ?? 0) + 1
211
+ }
212
+
213
+ const resolved: Array<ResolvedAggregationFn<TFeatures, TData>> = []
214
+
215
+ for (let i = 0; i < option.length; i++) {
216
+ const item = option[i]
217
+ const id =
218
+ typeof item === 'string'
219
+ ? item
220
+ : isAggregationFnDescriptor(item)
221
+ ? item.id
222
+ : undefined
223
+
224
+ if (id === undefined) {
225
+ warn(
226
+ `aggregationFn at index ${i} for column '${column.id}' needs a stable id`,
227
+ )
228
+ resolved.push({ aggregationFn: undefined, id: undefined })
229
+ continue
230
+ }
231
+
232
+ if (ids[id]! > 1) {
233
+ warn(`aggregationFn id '${id}' for column '${column.id}' is duplicated`)
234
+ resolved.push({ aggregationFn: undefined, id })
235
+ continue
236
+ }
237
+
238
+ const ref = isAggregationFnDescriptor(item) ? item.aggregationFn : item
239
+ resolved.push({
240
+ aggregationFn: resolveAggregationFn(column, ref),
241
+ id,
242
+ })
243
+ }
244
+
245
+ return finish(resolved)
246
+ }
247
+
248
+ function getSubRowResult(
249
+ subRowValue: unknown,
250
+ isMultiple: boolean,
251
+ id: string | undefined,
252
+ ) {
253
+ if (!isMultiple) return subRowValue
254
+ if (!id || !subRowValue || typeof subRowValue !== 'object') return undefined
255
+ return hasOwn(subRowValue, id)
256
+ ? (subRowValue as Record<string, unknown>)[id]
257
+ : undefined
258
+ }
259
+
260
+ /** Executes every configured aggregation over a depth-selected row frontier. */
261
+ export function aggregateColumnValue<
262
+ TFeatures extends TableFeatures,
263
+ TData extends RowData,
264
+ >(args: {
265
+ maxDepth?: number
266
+ subRows?: ReadonlyArray<Row<TFeatures, TData>>
267
+ column: Column<TFeatures, TData, unknown>
268
+ groupingRow?: Row<TFeatures, TData>
269
+ rows: ReadonlyArray<Row<TFeatures, TData>>
270
+ }): unknown {
271
+ const { subRows, column, groupingRow, rows } = args
272
+ const internalColumn = column as Column_Internal<TFeatures, TData, unknown>
273
+ const maxDepth = resolveMaxAggregationDepth(
274
+ args.maxDepth ?? internalColumn.columnDef.maxAggregationDepth,
275
+ )
276
+ const aggregationRows = normalizeAggregationRows(rows, maxDepth)
277
+ const entries = column_getAggregationFns(internalColumn)
278
+ const isMultiple = Array.isArray(internalColumn.columnDef.aggregationFn)
279
+ const canMerge =
280
+ !!subRows?.length &&
281
+ subRows.every(
282
+ (row) =>
283
+ !!(row as any).groupingColumnId &&
284
+ (row as any).groupingColumnId !== column.id,
285
+ )
286
+
287
+ const execute = (entry: ResolvedAggregationFn<TFeatures, TData>) => {
288
+ const definition = entry.aggregationFn
289
+ if (!definition) return undefined
290
+
291
+ const context: AggregationContext<TFeatures, TData, unknown> = {
292
+ ...(subRows ? { subRows } : {}),
293
+ column,
294
+ columnId: column.id,
295
+ getValue: (row: Row<TFeatures, TData>) => row.getValue(column.id),
296
+ ...(groupingRow ? { groupingRow } : {}),
297
+ maxDepth,
298
+ rows: aggregationRows,
299
+ table: column.table as any,
300
+ }
301
+
302
+ if (canMerge && definition.merge) {
303
+ return definition.merge({
304
+ ...context,
305
+ subRowResults: subRows.map((row) =>
306
+ getSubRowResult(row.getValue(column.id), isMultiple, entry.id),
307
+ ),
308
+ subRows,
309
+ })
310
+ }
311
+
312
+ return definition.aggregate(context)
313
+ }
314
+
315
+ if (!isMultiple) {
316
+ return entries[0] ? execute(entries[0]) : undefined
317
+ }
318
+
319
+ const result = makeObjectMap<unknown>()
320
+ for (let i = 0; i < entries.length; i++) {
321
+ const entry = entries[i]!
322
+ if (entry.id !== undefined) {
323
+ result[entry.id] = execute(entry)
324
+ }
325
+ }
326
+ return result
327
+ }
328
+
329
+ /** Implements `column.getAggregationValue(options?)` and its default cache. */
330
+ export function column_getAggregationValue<
331
+ TFeatures extends TableFeatures,
332
+ TData extends RowData,
333
+ TValue extends CellData = CellData,
334
+ >(
335
+ column: Column_Internal<TFeatures, TData, TValue>,
336
+ options?: AggregationValueOptions<TFeatures, TData>,
337
+ ): ColumnAggregationValue<TFeatures> {
338
+ const rows = options?.rows
339
+ const resolvedMaxDepth = resolveMaxAggregationDepth(
340
+ options?.maxDepth ?? column.columnDef.maxAggregationDepth,
341
+ )
342
+ const providedResult = column.columnDef.getAggregationValue?.({
343
+ column: column as any,
344
+ maxDepth: resolvedMaxDepth,
345
+ rows,
346
+ table: column.table as any,
347
+ })
348
+
349
+ if (providedResult) return providedResult.value as any
350
+ if (column.table.options.manualAggregation) return undefined
351
+
352
+ if (rows !== undefined) {
353
+ return aggregateColumnValue({
354
+ column: column as any,
355
+ maxDepth: resolvedMaxDepth,
356
+ rows,
357
+ }) as any
358
+ }
359
+
360
+ const model = column.table.getPreGroupedRowModel()
361
+ const previous = (column as any)._aggregationValueCache as
362
+ | AggregationCacheEntry
363
+ | undefined
364
+ const registry = column.table._rowModelFns.aggregationFns
365
+ const aggregationFnOption = column.columnDef.aggregationFn
366
+
367
+ if (
368
+ previous &&
369
+ previous.dependency === model &&
370
+ previous.maxDepth === resolvedMaxDepth &&
371
+ previous.registry === registry &&
372
+ previous.aggregationFnOption === aggregationFnOption
373
+ ) {
374
+ return previous.value as any
375
+ }
376
+
377
+ const value = aggregateColumnValue({
378
+ column: column as any,
379
+ maxDepth: resolvedMaxDepth,
380
+ rows: model.rows,
381
+ })
382
+ ;(column as any)._aggregationValueCache = {
383
+ aggregationFnOption,
384
+ dependency: model,
385
+ maxDepth: resolvedMaxDepth,
386
+ registry,
387
+ value,
388
+ } satisfies AggregationCacheEntry
389
+ return value as any
390
+ }
391
+
392
+ /** Implements `cell.getIsAggregated()` for synthetic grouped rows. */
393
+ export function cell_getIsAggregated<
394
+ TFeatures extends TableFeatures,
395
+ TData extends RowData,
396
+ TValue extends CellData = CellData,
397
+ >(cell: Cell<TFeatures, TData, TValue>) {
398
+ const groupingColumnId = (cell.row as any).groupingColumnId as
399
+ | string
400
+ | undefined
401
+ if (!groupingColumnId || groupingColumnId === cell.column.id) return false
402
+
403
+ const grouping = (cell.column.table as any).atoms.grouping?.get?.() as
404
+ | Array<string>
405
+ | undefined
406
+ if (grouping?.includes(cell.column.id)) return false
407
+
408
+ return column_getAggregationFns(cell.column as any).some(
409
+ (entry) => !!entry.aggregationFn,
410
+ )
411
+ }
412
+
413
+ /** Formats the default scalar or keyed aggregated-cell representation. */
414
+ export function formatAggregatedCellValue(
415
+ value: unknown,
416
+ option: unknown,
417
+ ): string | null {
418
+ if (value == null) return null
419
+
420
+ if (Array.isArray(option) && typeof value === 'object') {
421
+ const entries = Object.keys(value)
422
+ return entries
423
+ .map(
424
+ (key) => `${key}: ${String((value as Record<string, unknown>)[key])}`,
425
+ )
426
+ .join(', ')
427
+ }
428
+
429
+ return String(value)
430
+ }
@@ -1,4 +1,3 @@
1
- import type { Table } from '../../types/Table'
2
1
  import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
3
2
  import type { TableFeatures } from '../../types/TableFeatures'
4
3
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
@@ -35,8 +34,8 @@ export interface Row_RowExpanding {
35
34
  }
36
35
 
37
36
  export interface TableOptions_RowExpanding<
38
- TFeatures extends TableFeatures,
39
- TData extends RowData,
37
+ in out TFeatures extends TableFeatures,
38
+ in out TData extends RowData,
40
39
  > {
41
40
  /**
42
41
  * Enables automatic expanded-state resets when page-altering table state changes.
@@ -71,8 +70,8 @@ export interface TableOptions_RowExpanding<
71
70
  }
72
71
 
73
72
  export interface Table_RowExpanding<
74
- TFeatures extends TableFeatures,
75
- TData extends RowData,
73
+ in out _TFeatures extends TableFeatures,
74
+ in out _TData extends RowData,
76
75
  > {
77
76
  autoResetExpanded: () => void
78
77
  /**
@@ -112,8 +111,8 @@ export interface Table_RowExpanding<
112
111
  }
113
112
 
114
113
  export interface Table_RowModels_Expanded<
115
- TFeatures extends TableFeatures,
116
- TData extends RowData,
114
+ in out TFeatures extends TableFeatures,
115
+ in out TData extends RowData,
117
116
  > {
118
117
  /**
119
118
  * Resolves the row model after expanded rows have been flattened into view.
@@ -125,23 +124,9 @@ export interface Table_RowModels_Expanded<
125
124
  getPreExpandedRowModel: () => RowModel<TFeatures, TData>
126
125
  }
127
126
 
128
- export interface CreateRowModel_Expanded<
129
- TFeatures extends TableFeatures,
130
- TData extends RowData,
131
- > {
132
- /**
133
- * Factory used to retrieve the expanded row model. If this function is not
134
- * provided, the table will not expand rows. To use client-side expansion,
135
- * pass `createExpandedRowModel()` or implement your own factory.
136
- */
137
- expandedRowModel?: (
138
- table: Table<TFeatures, TData>,
139
- ) => () => RowModel<TFeatures, TData>
140
- }
141
-
142
127
  export interface CachedRowModel_Expanded<
143
- TFeatures extends TableFeatures,
144
- TData extends RowData,
128
+ in out TFeatures extends TableFeatures,
129
+ in out TData extends RowData,
145
130
  > {
146
131
  expandedRowModel: () => RowModel<TFeatures, TData>
147
132
  }
@@ -1,4 +1,4 @@
1
- import { cloneState } from '../../utils'
1
+ import { cloneState, hasOwn, makeObjectMap } from '../../utils'
2
2
  import type { RowData, Updater } from '../../types/type-utils'
3
3
  import type { TableFeatures } from '../../types/TableFeatures'
4
4
  import type { Table_Internal } from '../../types/Table'
@@ -20,7 +20,7 @@ import type {
20
20
  * ```
21
21
  */
22
22
  export function getDefaultExpandedState(): ExpandedState {
23
- return {}
23
+ return makeObjectMap()
24
24
  }
25
25
 
26
26
  /**
@@ -85,7 +85,7 @@ export function table_toggleAllRowsExpanded<
85
85
  if (expanded ?? !table_getIsAllRowsExpanded(table)) {
86
86
  table_setExpanded(table, true)
87
87
  } else {
88
- table_setExpanded(table, {})
88
+ table_setExpanded(table, makeObjectMap())
89
89
  }
90
90
  }
91
91
 
@@ -105,9 +105,17 @@ export function table_resetExpanded<
105
105
  TFeatures extends TableFeatures,
106
106
  TData extends RowData,
107
107
  >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
108
+ const initialExpanded = table.initialState.expanded
108
109
  table_setExpanded(
109
110
  table,
110
- defaultState ? {} : cloneState(table.initialState.expanded ?? {}),
111
+ defaultState
112
+ ? makeObjectMap()
113
+ : initialExpanded === true
114
+ ? true
115
+ : Object.assign(
116
+ makeObjectMap<boolean | undefined>(),
117
+ cloneState(initialExpanded ?? {}),
118
+ ),
111
119
  )
112
120
  }
113
121
 
@@ -252,29 +260,34 @@ export function row_toggleExpanded<
252
260
  TData extends RowData,
253
261
  >(row: Row<TFeatures, TData>, expanded?: boolean) {
254
262
  table_setExpanded(row.table, (old) => {
255
- const exists = old === true ? true : !!old[row.id]
263
+ const exists = old === true ? true : isExpandedRowId(old, row.id)
256
264
 
257
- let oldExpanded: ExpandedStateList = {}
265
+ let oldExpanded: ExpandedStateList = makeObjectMap()
258
266
 
259
267
  if (old === true) {
260
268
  Object.keys(row.table.getRowModel().rowsById).forEach((rowId) => {
261
269
  oldExpanded[rowId] = true
262
270
  })
263
271
  } else {
264
- oldExpanded = old
272
+ oldExpanded = Object.assign(makeObjectMap<boolean | undefined>(), old)
265
273
  }
266
274
 
267
275
  expanded = expanded ?? !exists
268
276
 
269
277
  if (!exists && expanded) {
270
- return {
271
- ...oldExpanded,
272
- [row.id]: true,
273
- }
278
+ oldExpanded[row.id] = true
279
+ return oldExpanded
274
280
  }
275
281
 
276
282
  if (exists && !expanded) {
277
- const { [row.id]: _, ...rest } = oldExpanded
283
+ const rest: ExpandedStateList = makeObjectMap()
284
+ const rowIds = Object.keys(oldExpanded)
285
+ for (let i = 0; i < rowIds.length; i++) {
286
+ const rowId = rowIds[i]!
287
+ if (rowId !== row.id && oldExpanded[rowId]) {
288
+ rest[rowId] = true
289
+ }
290
+ }
278
291
  return rest
279
292
  }
280
293
 
@@ -301,7 +314,19 @@ export function row_getIsExpanded<
301
314
 
302
315
  return !!(
303
316
  row.table.options.getIsRowExpanded?.(row) ??
304
- (expanded === true || expanded[row.id])
317
+ (expanded === true || isExpandedRowId(expanded, row.id))
318
+ )
319
+ }
320
+
321
+ function isExpandedRowId(
322
+ expanded: ExpandedState | undefined,
323
+ rowId: string,
324
+ ): boolean {
325
+ return !!(
326
+ expanded &&
327
+ expanded !== true &&
328
+ hasOwn(expanded, rowId) &&
329
+ expanded[rowId]
305
330
  )
306
331
  }
307
332
 
@@ -25,7 +25,7 @@ export function createPaginatedRowModel<
25
25
  memoDeps: () => [
26
26
  table.getPrePaginatedRowModel(),
27
27
  table.atoms.pagination?.get(),
28
- table.options.paginateExpandedRows
28
+ !table.options.paginateExpandedRows
29
29
  ? table.atoms.expanded?.get()
30
30
  : undefined,
31
31
  ],
@@ -1,5 +1,4 @@
1
1
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
2
- import type { Table } from '../../types/Table'
3
2
  import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
4
3
  import type { TableFeatures } from '../../types/TableFeatures'
5
4
 
@@ -42,8 +41,8 @@ export interface PaginationDefaultOptions {
42
41
  }
43
42
 
44
43
  export interface Table_RowPagination<
45
- TFeatures extends TableFeatures,
46
- TData extends RowData,
44
+ in out _TFeatures extends TableFeatures,
45
+ in out _TData extends RowData,
47
46
  > {
48
47
  _autoResetPageIndex: () => void
49
48
  /**
@@ -117,8 +116,8 @@ export interface Table_RowPagination<
117
116
  }
118
117
 
119
118
  export interface Table_RowModels_Paginated<
120
- TFeatures extends TableFeatures,
121
- TData extends RowData,
119
+ in out TFeatures extends TableFeatures,
120
+ in out TData extends RowData,
122
121
  > {
123
122
  /**
124
123
  * Resolves the row model after pagination has sliced the current page.
@@ -130,23 +129,9 @@ export interface Table_RowModels_Paginated<
130
129
  getPrePaginatedRowModel: () => RowModel<TFeatures, TData>
131
130
  }
132
131
 
133
- export interface CreateRowModel_Paginated<
134
- TFeatures extends TableFeatures,
135
- TData extends RowData,
136
- > {
137
- /**
138
- * Factory used to retrieve the paginated row model. If using server-side
139
- * pagination, this is not required. To use client-side pagination, pass
140
- * `createPaginatedRowModel()` or implement your own factory.
141
- */
142
- paginatedRowModel?: (
143
- table: Table<TFeatures, TData>,
144
- ) => () => RowModel<TFeatures, TData>
145
- }
146
-
147
132
  export interface CachedRowModel_Paginated<
148
- TFeatures extends TableFeatures,
149
- TData extends RowData,
133
+ in out TFeatures extends TableFeatures,
134
+ in out TData extends RowData,
150
135
  > {
151
136
  paginatedRowModel: () => RowModel<TFeatures, TData>
152
137
  }
@@ -46,7 +46,7 @@ export function table_autoResetPageIndex<
46
46
  table.options.autoResetPageIndex ??
47
47
  !table.options.manualPagination
48
48
  ) {
49
- table_resetPageIndex(table)
49
+ table_resetPageIndex(table, true)
50
50
  }
51
51
  }
52
52
 
@@ -14,8 +14,8 @@ export interface TableState_RowPinning {
14
14
  }
15
15
 
16
16
  export interface TableOptions_RowPinning<
17
- TFeatures extends TableFeatures,
18
- TData extends RowData,
17
+ in out TFeatures extends TableFeatures,
18
+ in out TData extends RowData,
19
19
  > {
20
20
  /**
21
21
  * Allows rows to be pinned to top or bottom regions.
@@ -63,8 +63,8 @@ export interface Row_RowPinning {
63
63
  }
64
64
 
65
65
  export interface Table_RowPinning<
66
- TFeatures extends TableFeatures,
67
- TData extends RowData,
66
+ in out TFeatures extends TableFeatures,
67
+ in out TData extends RowData,
68
68
  > {
69
69
  /**
70
70
  * Gets rows pinned to the bottom region.