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

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/aggregation/aggregationFeature.cjs +39 -0
  109. package/dist/features/aggregation/aggregationFeature.cjs.map +1 -0
  110. package/dist/features/aggregation/aggregationFeature.d.cts +10 -0
  111. package/dist/features/aggregation/aggregationFeature.d.ts +10 -0
  112. package/dist/features/aggregation/aggregationFeature.js +39 -0
  113. package/dist/features/aggregation/aggregationFeature.js.map +1 -0
  114. package/dist/features/aggregation/aggregationFeature.types.cjs +13 -0
  115. package/dist/features/aggregation/aggregationFeature.types.cjs.map +1 -0
  116. package/dist/features/aggregation/aggregationFeature.types.d.cts +195 -0
  117. package/dist/features/aggregation/aggregationFeature.types.d.ts +195 -0
  118. package/dist/features/aggregation/aggregationFeature.types.js +12 -0
  119. package/dist/features/aggregation/aggregationFeature.types.js.map +1 -0
  120. package/dist/features/aggregation/aggregationFeature.utils.cjs +212 -0
  121. package/dist/features/aggregation/aggregationFeature.utils.cjs.map +1 -0
  122. package/dist/features/aggregation/aggregationFeature.utils.d.cts +34 -0
  123. package/dist/features/aggregation/aggregationFeature.utils.d.ts +34 -0
  124. package/dist/features/aggregation/aggregationFeature.utils.js +206 -0
  125. package/dist/features/aggregation/aggregationFeature.utils.js.map +1 -0
  126. package/dist/features/aggregation/aggregationFns.cjs +246 -0
  127. package/dist/features/aggregation/aggregationFns.cjs.map +1 -0
  128. package/dist/features/aggregation/aggregationFns.d.cts +68 -0
  129. package/dist/features/aggregation/aggregationFns.d.ts +68 -0
  130. package/dist/features/aggregation/aggregationFns.js +235 -0
  131. package/dist/features/aggregation/aggregationFns.js.map +1 -0
  132. package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
  133. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  134. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  135. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  136. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
  137. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
  138. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
  139. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  140. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
  141. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
  142. package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
  143. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  144. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
  145. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  146. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  147. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  148. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  149. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  150. package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
  151. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  152. package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
  153. package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
  154. package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
  155. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  156. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
  157. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  158. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  159. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  160. package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
  161. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  162. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  163. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  164. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  165. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  166. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
  167. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
  168. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
  169. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  170. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
  171. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
  172. package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
  173. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  174. package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
  175. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  176. package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
  177. package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
  178. package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
  179. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  180. package/dist/features/column-filtering/filterFns.cjs +399 -0
  181. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  182. package/dist/features/column-filtering/filterFns.d.cts +210 -0
  183. package/dist/features/column-filtering/filterFns.d.ts +210 -0
  184. package/dist/features/column-filtering/filterFns.js +375 -0
  185. package/dist/features/column-filtering/filterFns.js.map +1 -0
  186. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  187. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  188. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  189. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  190. package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
  191. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  192. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  193. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  194. package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
  195. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  196. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
  197. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
  198. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
  199. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  200. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
  201. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
  202. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
  203. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  204. package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
  205. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  206. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
  207. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
  208. package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
  209. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  210. package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
  211. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  212. package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
  213. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  214. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
  215. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
  216. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
  217. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  218. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
  219. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
  220. package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
  221. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  222. package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
  223. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  224. package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
  225. package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
  226. package/dist/features/column-pinning/columnPinningFeature.js +125 -144
  227. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  228. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
  229. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
  230. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
  231. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  232. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
  233. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
  234. package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
  235. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  236. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  237. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  238. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
  239. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  240. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  241. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  242. package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
  243. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  244. package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
  245. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  246. package/dist/features/column-sizing/columnSizingFeature.js +34 -68
  247. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  248. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
  249. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
  250. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
  251. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  252. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
  253. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
  254. package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
  255. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  256. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
  257. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  258. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
  259. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  260. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
  261. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
  262. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
  263. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  264. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
  265. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
  266. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
  267. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  268. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  269. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  270. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  271. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  272. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  273. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  274. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
  275. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  276. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
  277. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
  278. package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
  279. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  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/aggregation/aggregationFeature.ts +60 -0
  499. package/src/features/aggregation/aggregationFeature.types.ts +339 -0
  500. package/src/features/aggregation/aggregationFeature.utils.ts +430 -0
  501. package/src/features/aggregation/aggregationFns.ts +345 -0
  502. package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
  503. package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
  504. package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
  505. package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
  506. package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
  507. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  508. package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
  509. package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
  510. package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
  511. package/src/features/column-filtering/filterFns.ts +533 -0
  512. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  513. package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
  514. package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
  515. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
  516. package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
  517. package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
  518. package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
  519. package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
  520. package/src/features/column-pinning/columnPinningFeature.ts +76 -59
  521. package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
  522. package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
  523. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  524. package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
  525. package/src/features/column-sizing/columnSizingFeature.ts +24 -24
  526. package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
  527. package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
  528. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  529. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  530. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
  531. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  532. package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
  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 +1 @@
1
- {"version":3,"file":"columnGroupingFeature.utils.cjs","names":["isFunction","cloneState"],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, isFunction } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n AggregationFn,\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Chooses a built-in aggregation function from the first core row value.\n *\n * Numeric columns default to `sum`, date-like values default to `extent`, and\n * other value types leave aggregation unspecified.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAutoAggregationFn(column)\n * ```\n */\nexport function column_getAutoAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns?.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns?.extent\n }\n}\n\n/**\n * Resolves the aggregation function configured for a column.\n *\n * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`\n * delegates to `column_getAutoAggregationFn`, and string values are looked up in\n * the table's aggregation function registry.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAggregationFn(column)\n * ```\n */\nexport function column_getAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column_getAutoAggregationFn(column)\n : aggregationFns?.[column.columnDef.aggregationFn as string]\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache?.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n\n/**\n * Checks whether this cell should render an aggregated value.\n *\n * Aggregated cells are non-placeholder, non-grouped cells on rows that have\n * subRows.\n *\n * @example\n * ```ts\n * const isAggregated = cell_getIsAggregated(cell)\n * ```\n */\nexport function cell_getIsAggregated<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return (\n !cell_getIsGrouped(cell) &&\n !cell_getIsPlaceholder(cell) &&\n !!cell.row.subRows.length\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;;CAC5D,OAAO,CAAC,2BAAC,OAAO,MAAM,MAAM,yGAAU,IAAI,iFAAG,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;;CAC3D,kCAAO,OAAO,MAAM,MAAM,4GAAU,IAAI,mFAAG,QAAQ,OAAO,EAAE,MAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,4BAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,MAAM,WAAW,OAAO,MAAM,gBAAgB,CAAC,CAAC,SAAS;CAEzD,MAAM,4DAAQ,SAAU,SAAS,OAAO,EAAE;CAE1C,IAAI,OAAO,UAAU,UACnB,uEAAO,eAAgB;CAGzB,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,iBAC5C,uEAAO,eAAgB;AAE3B;;;;;;;;;;;;;AAcA,SAAgB,wBAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,OAAOA,yBAAW,OAAO,UAAU,aAAa,IAC5C,OAAO,UAAU,gBACjB,OAAO,UAAU,kBAAkB,SACjC,4BAA4B,MAAM,oEAClC,eAAiB,OAAO,UAAU;AAC1C;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;;CAC1E,iDAAM,SAAQ,6GAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAIC,yBAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;;CAC5E,6BAAI,IAAI,oGAAsB,eAAe,QAAQ,GACnD,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,QACN;CAGF,iCAAO,IAAI,sGAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE;;;;;;;;;;;;AAaA,SAAgB,qBAId,MAAsC;CACtC,OACE,CAAC,kBAAkB,IAAI,KACvB,CAAC,sBAAsB,IAAI,KAC3B,CAAC,CAAC,KAAK,IAAI,QAAQ;AAEvB"}
1
+ {"version":3,"file":"columnGroupingFeature.utils.cjs","names":["cloneState","hasOwn"],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n row.index,\n row,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;CAC5D,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;CAC3D,OAAO,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,KAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;CAC1E,MAAM,QAAQ,mBAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAIA,yBAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;CAC5E,IAAI,IAAI,wBAAwBC,qBAAO,IAAI,sBAAsB,QAAQ,GACvE,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,UACJ,IAAI,OACJ,GACF;CAGF,OAAO,IAAI,uBAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE"}
@@ -1,10 +1,10 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.cjs";
2
- import { Column_Internal } from "../../types/Column.cjs";
2
+ import { GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
3
+ import { Cell } from "../../types/Cell.cjs";
3
4
  import { Row } from "../../types/Row.cjs";
5
+ import { Table } from "../../types/Table.cjs";
6
+ import { Column } from "../../types/Column.cjs";
4
7
  import { TableFeatures } from "../../types/TableFeatures.cjs";
5
- import { Table_Internal } from "../../types/Table.cjs";
6
- import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
7
- import { Cell } from "../../types/Cell.cjs";
8
8
 
9
9
  //#region src/features/column-grouping/columnGroupingFeature.utils.d.ts
10
10
  /**
@@ -30,7 +30,7 @@ declare function getDefaultGroupingState(): GroupingState;
30
30
  * column_toggleGrouping(column)
31
31
  * ```
32
32
  */
33
- declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): void;
33
+ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): void;
34
34
  /**
35
35
  * Checks whether this column can be used for grouping.
36
36
  *
@@ -42,7 +42,7 @@ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData ex
42
42
  * const canGroup = column_getCanGroup(column)
43
43
  * ```
44
44
  */
45
- declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
45
+ declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
46
46
  /**
47
47
  * Checks whether this column id is present in `state.grouping`.
48
48
  *
@@ -54,7 +54,7 @@ declare function column_getCanGroup<TFeatures extends TableFeatures, TData exten
54
54
  * const isGrouped = column_getIsGrouped(column)
55
55
  * ```
56
56
  */
57
- declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
57
+ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
58
58
  /**
59
59
  * Finds this column's position in the ordered grouping state.
60
60
  *
@@ -65,7 +65,7 @@ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData exte
65
65
  * const index = column_getGroupedIndex(column)
66
66
  * ```
67
67
  */
68
- declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): number;
68
+ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): number;
69
69
  /**
70
70
  * Creates a header/control handler that toggles grouping for this column.
71
71
  *
@@ -76,32 +76,7 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
76
76
  * const onClick = column_getToggleGroupingHandler(column)
77
77
  * ```
78
78
  */
79
- declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): () => void;
80
- /**
81
- * Chooses a built-in aggregation function from the first core row value.
82
- *
83
- * Numeric columns default to `sum`, date-like values default to `extent`, and
84
- * other value types leave aggregation unspecified.
85
- *
86
- * @example
87
- * ```ts
88
- * const aggregationFn = column_getAutoAggregationFn(column)
89
- * ```
90
- */
91
- declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
92
- /**
93
- * Resolves the aggregation function configured for a column.
94
- *
95
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
96
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
97
- * the table's aggregation function registry.
98
- *
99
- * @example
100
- * ```ts
101
- * const aggregationFn = column_getAggregationFn(column)
102
- * ```
103
- */
104
- declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
79
+ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
105
80
  /**
106
81
  * Routes a grouping updater through the table's grouping change handler.
107
82
  *
@@ -113,7 +88,7 @@ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData
113
88
  * table_setGrouping(table, (old) => [...old, 'status'])
114
89
  * ```
115
90
  */
116
- declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>): void;
91
+ declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<GroupingState>): void;
117
92
  /**
118
93
  * Resets `grouping` to the configured initial state or feature default.
119
94
  *
@@ -126,7 +101,7 @@ declare function table_setGrouping<TFeatures extends TableFeatures, TData extend
126
101
  * table_resetGrouping(table, true)
127
102
  * ```
128
103
  */
129
- declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
104
+ declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
130
105
  /**
131
106
  * Checks whether this row was created as a grouped row.
132
107
  *
@@ -173,18 +148,6 @@ declare function cell_getIsGrouped<TFeatures extends TableFeatures, TData extend
173
148
  * ```
174
149
  */
175
150
  declare function cell_getIsPlaceholder<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
176
- /**
177
- * Checks whether this cell should render an aggregated value.
178
- *
179
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
180
- * subRows.
181
- *
182
- * @example
183
- * ```ts
184
- * const isAggregated = cell_getIsAggregated(cell)
185
- * ```
186
- */
187
- declare function cell_getIsAggregated<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
188
151
  //#endregion
189
- export { cell_getIsAggregated, cell_getIsGrouped, cell_getIsPlaceholder, column_getAggregationFn, column_getAutoAggregationFn, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
152
+ export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
190
153
  //# sourceMappingURL=columnGroupingFeature.utils.d.cts.map
@@ -1,10 +1,10 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.js";
2
- import { Column_Internal } from "../../types/Column.js";
2
+ import { GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
3
+ import { Cell } from "../../types/Cell.js";
3
4
  import { Row } from "../../types/Row.js";
5
+ import { Table } from "../../types/Table.js";
6
+ import { Column } from "../../types/Column.js";
4
7
  import { TableFeatures } from "../../types/TableFeatures.js";
5
- import { Table_Internal } from "../../types/Table.js";
6
- import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
7
- import { Cell } from "../../types/Cell.js";
8
8
 
9
9
  //#region src/features/column-grouping/columnGroupingFeature.utils.d.ts
10
10
  /**
@@ -30,7 +30,7 @@ declare function getDefaultGroupingState(): GroupingState;
30
30
  * column_toggleGrouping(column)
31
31
  * ```
32
32
  */
33
- declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): void;
33
+ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): void;
34
34
  /**
35
35
  * Checks whether this column can be used for grouping.
36
36
  *
@@ -42,7 +42,7 @@ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData ex
42
42
  * const canGroup = column_getCanGroup(column)
43
43
  * ```
44
44
  */
45
- declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
45
+ declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
46
46
  /**
47
47
  * Checks whether this column id is present in `state.grouping`.
48
48
  *
@@ -54,7 +54,7 @@ declare function column_getCanGroup<TFeatures extends TableFeatures, TData exten
54
54
  * const isGrouped = column_getIsGrouped(column)
55
55
  * ```
56
56
  */
57
- declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
57
+ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
58
58
  /**
59
59
  * Finds this column's position in the ordered grouping state.
60
60
  *
@@ -65,7 +65,7 @@ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData exte
65
65
  * const index = column_getGroupedIndex(column)
66
66
  * ```
67
67
  */
68
- declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): number;
68
+ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): number;
69
69
  /**
70
70
  * Creates a header/control handler that toggles grouping for this column.
71
71
  *
@@ -76,32 +76,7 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
76
76
  * const onClick = column_getToggleGroupingHandler(column)
77
77
  * ```
78
78
  */
79
- declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): () => void;
80
- /**
81
- * Chooses a built-in aggregation function from the first core row value.
82
- *
83
- * Numeric columns default to `sum`, date-like values default to `extent`, and
84
- * other value types leave aggregation unspecified.
85
- *
86
- * @example
87
- * ```ts
88
- * const aggregationFn = column_getAutoAggregationFn(column)
89
- * ```
90
- */
91
- declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
92
- /**
93
- * Resolves the aggregation function configured for a column.
94
- *
95
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
96
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
97
- * the table's aggregation function registry.
98
- *
99
- * @example
100
- * ```ts
101
- * const aggregationFn = column_getAggregationFn(column)
102
- * ```
103
- */
104
- declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
79
+ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
105
80
  /**
106
81
  * Routes a grouping updater through the table's grouping change handler.
107
82
  *
@@ -113,7 +88,7 @@ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData
113
88
  * table_setGrouping(table, (old) => [...old, 'status'])
114
89
  * ```
115
90
  */
116
- declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>): void;
91
+ declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<GroupingState>): void;
117
92
  /**
118
93
  * Resets `grouping` to the configured initial state or feature default.
119
94
  *
@@ -126,7 +101,7 @@ declare function table_setGrouping<TFeatures extends TableFeatures, TData extend
126
101
  * table_resetGrouping(table, true)
127
102
  * ```
128
103
  */
129
- declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
104
+ declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
130
105
  /**
131
106
  * Checks whether this row was created as a grouped row.
132
107
  *
@@ -173,18 +148,6 @@ declare function cell_getIsGrouped<TFeatures extends TableFeatures, TData extend
173
148
  * ```
174
149
  */
175
150
  declare function cell_getIsPlaceholder<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
176
- /**
177
- * Checks whether this cell should render an aggregated value.
178
- *
179
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
180
- * subRows.
181
- *
182
- * @example
183
- * ```ts
184
- * const isAggregated = cell_getIsAggregated(cell)
185
- * ```
186
- */
187
- declare function cell_getIsAggregated<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
188
151
  //#endregion
189
- export { cell_getIsAggregated, cell_getIsGrouped, cell_getIsPlaceholder, column_getAggregationFn, column_getAutoAggregationFn, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
152
+ export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
190
153
  //# sourceMappingURL=columnGroupingFeature.utils.d.ts.map
@@ -1,4 +1,4 @@
1
- import { cloneState, isFunction } from "../../utils.js";
1
+ import { cloneState, hasOwn } from "../../utils.js";
2
2
 
3
3
  //#region src/features/column-grouping/columnGroupingFeature.utils.ts
4
4
  /**
@@ -58,8 +58,7 @@ function column_getCanGroup(column) {
58
58
  * ```
59
59
  */
60
60
  function column_getIsGrouped(column) {
61
- var _column$table$atoms$g;
62
- return !!((_column$table$atoms$g = column.table.atoms.grouping) === null || _column$table$atoms$g === void 0 || (_column$table$atoms$g = _column$table$atoms$g.get()) === null || _column$table$atoms$g === void 0 ? void 0 : _column$table$atoms$g.includes(column.id));
61
+ return !!column.table.atoms.grouping?.get()?.includes(column.id);
63
62
  }
64
63
  /**
65
64
  * Finds this column's position in the ordered grouping state.
@@ -72,8 +71,7 @@ function column_getIsGrouped(column) {
72
71
  * ```
73
72
  */
74
73
  function column_getGroupedIndex(column) {
75
- var _column$table$atoms$g2;
76
- return ((_column$table$atoms$g2 = column.table.atoms.grouping) === null || _column$table$atoms$g2 === void 0 || (_column$table$atoms$g2 = _column$table$atoms$g2.get()) === null || _column$table$atoms$g2 === void 0 ? void 0 : _column$table$atoms$g2.indexOf(column.id)) ?? -1;
74
+ return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1;
77
75
  }
78
76
  /**
79
77
  * Creates a header/control handler that toggles grouping for this column.
@@ -93,40 +91,6 @@ function column_getToggleGroupingHandler(column) {
93
91
  };
94
92
  }
95
93
  /**
96
- * Chooses a built-in aggregation function from the first core row value.
97
- *
98
- * Numeric columns default to `sum`, date-like values default to `extent`, and
99
- * other value types leave aggregation unspecified.
100
- *
101
- * @example
102
- * ```ts
103
- * const aggregationFn = column_getAutoAggregationFn(column)
104
- * ```
105
- */
106
- function column_getAutoAggregationFn(column) {
107
- const aggregationFns = column.table._rowModelFns.aggregationFns;
108
- const firstRow = column.table.getCoreRowModel().flatRows[0];
109
- const value = firstRow === null || firstRow === void 0 ? void 0 : firstRow.getValue(column.id);
110
- if (typeof value === "number") return aggregationFns === null || aggregationFns === void 0 ? void 0 : aggregationFns.sum;
111
- if (Object.prototype.toString.call(value) === "[object Date]") return aggregationFns === null || aggregationFns === void 0 ? void 0 : aggregationFns.extent;
112
- }
113
- /**
114
- * Resolves the aggregation function configured for a column.
115
- *
116
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
117
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
118
- * the table's aggregation function registry.
119
- *
120
- * @example
121
- * ```ts
122
- * const aggregationFn = column_getAggregationFn(column)
123
- * ```
124
- */
125
- function column_getAggregationFn(column) {
126
- const aggregationFns = column.table._rowModelFns.aggregationFns;
127
- return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === "auto" ? column_getAutoAggregationFn(column) : aggregationFns === null || aggregationFns === void 0 ? void 0 : aggregationFns[column.columnDef.aggregationFn];
128
- }
129
- /**
130
94
  * Routes a grouping updater through the table's grouping change handler.
131
95
  *
132
96
  * The updater may be a next `GroupingState` array or a function of the previous
@@ -138,8 +102,7 @@ function column_getAggregationFn(column) {
138
102
  * ```
139
103
  */
140
104
  function table_setGrouping(table, updater) {
141
- var _table$options$onGrou, _table$options;
142
- (_table$options$onGrou = (_table$options = table.options).onGroupingChange) === null || _table$options$onGrou === void 0 || _table$options$onGrou.call(_table$options, updater);
105
+ table.options.onGroupingChange?.(updater);
143
106
  }
144
107
  /**
145
108
  * Resets `grouping` to the configured initial state or feature default.
@@ -181,12 +144,11 @@ function row_getIsGrouped(row) {
181
144
  * ```
182
145
  */
183
146
  function row_getGroupingValue(row, columnId) {
184
- var _row$_groupingValuesC, _row$_groupingValuesC2;
185
- if ((_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC.hasOwnProperty(columnId)) return row._groupingValuesCache[columnId];
147
+ if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) return row._groupingValuesCache[columnId];
186
148
  const column = row.table.getColumn(columnId);
187
149
  if (!column.columnDef.getGroupingValue) return row.getValue(columnId);
188
- if (row._groupingValuesCache) row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);
189
- return (_row$_groupingValuesC2 = row._groupingValuesCache) === null || _row$_groupingValuesC2 === void 0 ? void 0 : _row$_groupingValuesC2[columnId];
150
+ if (row._groupingValuesCache) row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original, row.index, row);
151
+ return row._groupingValuesCache?.[columnId];
190
152
  }
191
153
  /**
192
154
  * Checks whether this cell represents the grouped column for a grouped row.
@@ -216,21 +178,7 @@ function cell_getIsGrouped(cell) {
216
178
  function cell_getIsPlaceholder(cell) {
217
179
  return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column);
218
180
  }
219
- /**
220
- * Checks whether this cell should render an aggregated value.
221
- *
222
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
223
- * subRows.
224
- *
225
- * @example
226
- * ```ts
227
- * const isAggregated = cell_getIsAggregated(cell)
228
- * ```
229
- */
230
- function cell_getIsAggregated(cell) {
231
- return !cell_getIsGrouped(cell) && !cell_getIsPlaceholder(cell) && !!cell.row.subRows.length;
232
- }
233
181
 
234
182
  //#endregion
235
- export { cell_getIsAggregated, cell_getIsGrouped, cell_getIsPlaceholder, column_getAggregationFn, column_getAutoAggregationFn, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
183
+ export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
236
184
  //# sourceMappingURL=columnGroupingFeature.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columnGroupingFeature.utils.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, isFunction } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n AggregationFn,\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Chooses a built-in aggregation function from the first core row value.\n *\n * Numeric columns default to `sum`, date-like values default to `extent`, and\n * other value types leave aggregation unspecified.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAutoAggregationFn(column)\n * ```\n */\nexport function column_getAutoAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns?.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns?.extent\n }\n}\n\n/**\n * Resolves the aggregation function configured for a column.\n *\n * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`\n * delegates to `column_getAutoAggregationFn`, and string values are looked up in\n * the table's aggregation function registry.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAggregationFn(column)\n * ```\n */\nexport function column_getAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column_getAutoAggregationFn(column)\n : aggregationFns?.[column.columnDef.aggregationFn as string]\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache?.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n\n/**\n * Checks whether this cell should render an aggregated value.\n *\n * Aggregated cells are non-placeholder, non-grouped cells on rows that have\n * subRows.\n *\n * @example\n * ```ts\n * const isAggregated = cell_getIsAggregated(cell)\n * ```\n */\nexport function cell_getIsAggregated<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return (\n !cell_getIsGrouped(cell) &&\n !cell_getIsPlaceholder(cell) &&\n !!cell.row.subRows.length\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;;CAC5D,OAAO,CAAC,2BAAC,OAAO,MAAM,MAAM,yGAAU,IAAI,iFAAG,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;;CAC3D,kCAAO,OAAO,MAAM,MAAM,4GAAU,IAAI,mFAAG,QAAQ,OAAO,EAAE,MAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,4BAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,MAAM,WAAW,OAAO,MAAM,gBAAgB,CAAC,CAAC,SAAS;CAEzD,MAAM,4DAAQ,SAAU,SAAS,OAAO,EAAE;CAE1C,IAAI,OAAO,UAAU,UACnB,uEAAO,eAAgB;CAGzB,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,iBAC5C,uEAAO,eAAgB;AAE3B;;;;;;;;;;;;;AAcA,SAAgB,wBAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,OAAO,WAAW,OAAO,UAAU,aAAa,IAC5C,OAAO,UAAU,gBACjB,OAAO,UAAU,kBAAkB,SACjC,4BAA4B,MAAM,oEAClC,eAAiB,OAAO,UAAU;AAC1C;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;;CAC1E,iDAAM,SAAQ,6GAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAI,WAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;;CAC5E,6BAAI,IAAI,oGAAsB,eAAe,QAAQ,GACnD,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,QACN;CAGF,iCAAO,IAAI,sGAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE;;;;;;;;;;;;AAaA,SAAgB,qBAId,MAAsC;CACtC,OACE,CAAC,kBAAkB,IAAI,KACvB,CAAC,sBAAsB,IAAI,KAC3B,CAAC,CAAC,KAAK,IAAI,QAAQ;AAEvB"}
1
+ {"version":3,"file":"columnGroupingFeature.utils.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n row.index,\n row,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;CAC5D,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;CAC3D,OAAO,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,KAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;CAC1E,MAAM,QAAQ,mBAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAI,WAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;CAC5E,IAAI,IAAI,wBAAwB,OAAO,IAAI,sBAAsB,QAAQ,GACvE,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,UACJ,IAAI,OACJ,GACF;CAGF,OAAO,IAAI,uBAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE"}
@@ -2,6 +2,7 @@ const require_utils = require('../../utils.cjs');
2
2
  const require_coreColumnsFeature_utils = require('../../core/columns/coreColumnsFeature.utils.cjs');
3
3
  const require_constructRow = require('../../core/rows/constructRow.cjs');
4
4
  const require_rowPaginationFeature_utils = require('../row-pagination/rowPaginationFeature.utils.cjs');
5
+ const require_aggregationFeature_utils = require('../aggregation/aggregationFeature.utils.cjs');
5
6
  const require_columnGroupingFeature_utils = require('./columnGroupingFeature.utils.cjs');
6
7
  const require_rowExpandingFeature_utils = require('../row-expanding/rowExpandingFeature.utils.cjs');
7
8
 
@@ -10,19 +11,22 @@ const require_rowExpandingFeature_utils = require('../row-expanding/rowExpanding
10
11
  * Creates a memoized grouped row model factory.
11
12
  *
12
13
  * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
14
+ *
15
+ * When aggregationFeature is also registered, grouped rows use its shared
16
+ * executor for non-group values. Grouping remains useful without aggregation.
13
17
  */
14
- function createGroupedRowModel(aggregationFns) {
18
+ function createGroupedRowModel() {
15
19
  return (_table) => {
16
20
  const table = _table;
17
- if (!table._rowModelFns.aggregationFns) table._rowModelFns.aggregationFns = aggregationFns;
18
21
  return require_utils.tableMemo({
19
22
  feature: "columnGroupingFeature",
20
23
  table,
21
24
  fnName: "table.getGroupedRowModel",
22
- memoDeps: () => {
23
- var _table$atoms$grouping;
24
- return [(_table$atoms$grouping = table.atoms.grouping) === null || _table$atoms$grouping === void 0 ? void 0 : _table$atoms$grouping.get(), table.getPreGroupedRowModel()];
25
- },
25
+ memoDeps: () => [
26
+ table.atoms.grouping?.get(),
27
+ table.getPreGroupedRowModel(),
28
+ table.options.columns
29
+ ],
26
30
  fn: () => _createGroupedRowModel(table),
27
31
  onAfterUpdate: () => {
28
32
  require_rowExpandingFeature_utils.table_autoResetExpanded(table);
@@ -32,10 +36,9 @@ function createGroupedRowModel(aggregationFns) {
32
36
  };
33
37
  }
34
38
  function _createGroupedRowModel(table) {
35
- var _table$atoms$grouping2;
36
39
  const rowModel = table.getPreGroupedRowModel();
37
- const grouping = (_table$atoms$grouping2 = table.atoms.grouping) === null || _table$atoms$grouping2 === void 0 ? void 0 : _table$atoms$grouping2.get();
38
- if (!rowModel.rows.length || !(grouping === null || grouping === void 0 ? void 0 : grouping.length)) {
40
+ const grouping = table.atoms.grouping?.get();
41
+ if (!rowModel.rows.length || !grouping?.length) {
39
42
  rowModel.rows.forEach((row) => {
40
43
  row.depth = 0;
41
44
  row.parentId = void 0;
@@ -44,13 +47,18 @@ function _createGroupedRowModel(table) {
44
47
  }
45
48
  const existingGrouping = grouping.filter((columnId) => require_coreColumnsFeature_utils.table_getColumn(table, columnId));
46
49
  const groupedFlatRows = [];
47
- const groupedRowsById = {};
50
+ const groupedRowsById = require_utils.makeObjectMap();
48
51
  const groupUpRecursively = (rows, depth = 0, parentId) => {
49
52
  if (depth >= existingGrouping.length) return rows.map((row) => {
50
53
  row.depth = depth;
51
- groupedFlatRows.push(row);
52
- groupedRowsById[row.id] = row;
53
- if (row.subRows.length) row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);
54
+ if (row.subRows.length) {
55
+ row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);
56
+ for (let i = 0; i < row.subRows.length; i++) {
57
+ const subRow = row.subRows[i];
58
+ groupedFlatRows.push(subRow);
59
+ groupedRowsById[subRow.id] = subRow;
60
+ }
61
+ }
54
62
  return row;
55
63
  });
56
64
  const columnId = existingGrouping[depth];
@@ -62,7 +70,7 @@ function _createGroupedRowModel(table) {
62
70
  subRows.forEach((subRow) => {
63
71
  subRow.parentId = id;
64
72
  });
65
- const leafRows = depth ? require_utils.flattenBy(groupedRows, (row) => row.subRows) : groupedRows;
73
+ const leafRows = require_aggregationFeature_utils.normalizeAggregationRows(groupedRows, Infinity);
66
74
  const row = require_constructRow.constructRow(table, id, leafRows[0].original, index, depth, void 0, parentId);
67
75
  Object.assign(row, {
68
76
  groupingColumnId: columnId,
@@ -70,19 +78,24 @@ function _createGroupedRowModel(table) {
70
78
  subRows,
71
79
  leafRows,
72
80
  getValue: (colId) => {
73
- var _row$_groupingValuesC;
74
- if (existingGrouping.includes(colId)) {
75
- if (row._valuesCache.hasOwnProperty(colId)) return row._valuesCache[colId];
81
+ const groupingIndex = existingGrouping.indexOf(colId);
82
+ if (groupingIndex !== -1 && groupingIndex <= depth) {
83
+ if (require_utils.hasOwn(row._valuesCache, colId)) return row._valuesCache[colId];
76
84
  if (groupedRows[0]) row._valuesCache[colId] = groupedRows[0].getValue(colId) ?? void 0;
77
85
  return row._valuesCache[colId];
78
86
  }
79
- if ((_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC.hasOwnProperty(colId)) return row._groupingValuesCache[colId];
80
- const aggregateFn = require_columnGroupingFeature_utils.column_getAggregationFn(table.getColumn(colId));
81
- if (!row._groupingValuesCache) row._groupingValuesCache = {};
82
- if (aggregateFn) {
83
- row._groupingValuesCache[colId] = aggregateFn(colId, leafRows, groupedRows);
84
- return row._groupingValuesCache[colId];
85
- }
87
+ const aggregationCache = row._aggregationValuesCache;
88
+ if (aggregationCache && require_utils.hasOwn(aggregationCache, colId)) return aggregationCache[colId];
89
+ const column = table.getColumn(colId);
90
+ if (typeof column.getAggregationFns !== "function") return void 0;
91
+ const cache = row._aggregationValuesCache ??= require_utils.makeObjectMap();
92
+ cache[colId] = require_aggregationFeature_utils.aggregateColumnValue({
93
+ subRows,
94
+ column,
95
+ groupingRow: row,
96
+ rows: groupedRows
97
+ });
98
+ return cache[colId];
86
99
  }
87
100
  });
88
101
  subRows.forEach((subRow) => {