@tanstack/table-core 9.0.0-beta.2 → 9.0.0-beta.21

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 (524) hide show
  1. package/dist/core/cells/constructCell.d.cts +3 -3
  2. package/dist/core/cells/constructCell.d.ts +3 -3
  3. package/dist/core/cells/coreCellsFeature.cjs +11 -20
  4. package/dist/core/cells/coreCellsFeature.cjs.map +1 -1
  5. package/dist/core/cells/coreCellsFeature.d.cts +4 -12
  6. package/dist/core/cells/coreCellsFeature.d.ts +4 -12
  7. package/dist/core/cells/coreCellsFeature.js +12 -20
  8. package/dist/core/cells/coreCellsFeature.js.map +1 -1
  9. package/dist/core/cells/coreCellsFeature.types.d.cts +6 -6
  10. package/dist/core/cells/coreCellsFeature.types.d.ts +6 -6
  11. package/dist/core/cells/coreCellsFeature.utils.d.cts +3 -3
  12. package/dist/core/cells/coreCellsFeature.utils.d.ts +3 -3
  13. package/dist/core/columns/constructColumn.cjs +5 -0
  14. package/dist/core/columns/constructColumn.cjs.map +1 -1
  15. package/dist/core/columns/constructColumn.d.cts +3 -3
  16. package/dist/core/columns/constructColumn.d.ts +3 -3
  17. package/dist/core/columns/constructColumn.js +5 -0
  18. package/dist/core/columns/constructColumn.js.map +1 -1
  19. package/dist/core/columns/coreColumnsFeature.cjs +59 -68
  20. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  21. package/dist/core/columns/coreColumnsFeature.d.cts +4 -12
  22. package/dist/core/columns/coreColumnsFeature.d.ts +4 -12
  23. package/dist/core/columns/coreColumnsFeature.js +60 -68
  24. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  25. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
  26. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
  27. package/dist/core/columns/coreColumnsFeature.utils.cjs +2 -2
  28. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  29. package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
  30. package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
  31. package/dist/core/columns/coreColumnsFeature.utils.js +3 -3
  32. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  33. package/dist/core/coreFeatures.cjs.map +1 -1
  34. package/dist/core/coreFeatures.d.cts +1 -1
  35. package/dist/core/coreFeatures.d.ts +1 -1
  36. package/dist/core/coreFeatures.js.map +1 -1
  37. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  38. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  39. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  40. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  41. package/dist/core/headers/constructHeader.d.cts +2 -2
  42. package/dist/core/headers/constructHeader.d.ts +2 -2
  43. package/dist/core/headers/coreHeadersFeature.cjs +44 -53
  44. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  45. package/dist/core/headers/coreHeadersFeature.d.cts +4 -12
  46. package/dist/core/headers/coreHeadersFeature.d.ts +4 -12
  47. package/dist/core/headers/coreHeadersFeature.js +45 -53
  48. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  49. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  50. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  51. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  52. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  53. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  54. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  55. package/dist/core/row-models/coreRowModelsFeature.cjs +17 -26
  56. package/dist/core/row-models/coreRowModelsFeature.cjs.map +1 -1
  57. package/dist/core/row-models/coreRowModelsFeature.d.cts +4 -12
  58. package/dist/core/row-models/coreRowModelsFeature.d.ts +4 -12
  59. package/dist/core/row-models/coreRowModelsFeature.js +18 -26
  60. package/dist/core/row-models/coreRowModelsFeature.js.map +1 -1
  61. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +6 -16
  62. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +6 -16
  63. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +13 -13
  64. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  65. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +14 -14
  66. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +14 -14
  67. package/dist/core/row-models/coreRowModelsFeature.utils.js +13 -13
  68. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  69. package/dist/core/row-models/createCoreRowModel.cjs +2 -3
  70. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  71. package/dist/core/row-models/createCoreRowModel.d.cts +1 -1
  72. package/dist/core/row-models/createCoreRowModel.d.ts +1 -1
  73. package/dist/core/row-models/createCoreRowModel.js +3 -4
  74. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  75. package/dist/core/rows/constructRow.cjs +3 -2
  76. package/dist/core/rows/constructRow.cjs.map +1 -1
  77. package/dist/core/rows/constructRow.d.cts +2 -2
  78. package/dist/core/rows/constructRow.d.ts +2 -2
  79. package/dist/core/rows/constructRow.js +4 -2
  80. package/dist/core/rows/constructRow.js.map +1 -1
  81. package/dist/core/rows/coreRowsFeature.cjs +27 -36
  82. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  83. package/dist/core/rows/coreRowsFeature.d.cts +4 -12
  84. package/dist/core/rows/coreRowsFeature.d.ts +4 -12
  85. package/dist/core/rows/coreRowsFeature.js +28 -36
  86. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  87. package/dist/core/rows/coreRowsFeature.types.d.cts +6 -6
  88. package/dist/core/rows/coreRowsFeature.types.d.ts +6 -6
  89. package/dist/core/rows/coreRowsFeature.utils.cjs +3 -3
  90. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  91. package/dist/core/rows/coreRowsFeature.utils.d.cts +3 -3
  92. package/dist/core/rows/coreRowsFeature.utils.d.ts +3 -3
  93. package/dist/core/rows/coreRowsFeature.utils.js +4 -4
  94. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  95. package/dist/core/table/constructTable.cjs +21 -6
  96. package/dist/core/table/constructTable.cjs.map +1 -1
  97. package/dist/core/table/constructTable.d.cts +1 -1
  98. package/dist/core/table/constructTable.d.ts +1 -1
  99. package/dist/core/table/constructTable.js +21 -6
  100. package/dist/core/table/constructTable.js.map +1 -1
  101. package/dist/core/table/coreTablesFeature.cjs +7 -16
  102. package/dist/core/table/coreTablesFeature.cjs.map +1 -1
  103. package/dist/core/table/coreTablesFeature.d.cts +4 -12
  104. package/dist/core/table/coreTablesFeature.d.ts +4 -12
  105. package/dist/core/table/coreTablesFeature.js +8 -16
  106. package/dist/core/table/coreTablesFeature.js.map +1 -1
  107. package/dist/core/table/coreTablesFeature.types.d.cts +28 -16
  108. package/dist/core/table/coreTablesFeature.types.d.ts +28 -16
  109. package/dist/core/table/coreTablesFeature.utils.cjs +33 -12
  110. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  111. package/dist/core/table/coreTablesFeature.utils.d.cts +8 -6
  112. package/dist/core/table/coreTablesFeature.utils.d.ts +8 -6
  113. package/dist/core/table/coreTablesFeature.utils.js +33 -12
  114. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  115. package/dist/features/column-faceting/columnFacetingFeature.cjs +49 -61
  116. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  117. package/dist/features/column-faceting/columnFacetingFeature.d.cts +4 -15
  118. package/dist/features/column-faceting/columnFacetingFeature.d.ts +4 -15
  119. package/dist/features/column-faceting/columnFacetingFeature.js +50 -61
  120. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  121. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +8 -29
  122. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +8 -29
  123. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +12 -12
  124. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  125. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +8 -8
  126. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +8 -8
  127. package/dist/features/column-faceting/columnFacetingFeature.utils.js +12 -12
  128. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  129. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  130. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  131. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  132. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  133. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  134. package/dist/features/column-faceting/createFacetedRowModel.d.cts +1 -1
  135. package/dist/features/column-faceting/createFacetedRowModel.d.ts +1 -1
  136. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  137. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  138. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  139. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  140. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  141. package/dist/features/column-filtering/columnFilteringFeature.cjs +40 -53
  142. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  143. package/dist/features/column-filtering/columnFilteringFeature.d.cts +4 -16
  144. package/dist/features/column-filtering/columnFilteringFeature.d.ts +4 -16
  145. package/dist/features/column-filtering/columnFilteringFeature.js +42 -54
  146. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  147. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +40 -26
  148. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +40 -26
  149. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +1 -1
  150. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  151. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +12 -12
  152. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +12 -12
  153. package/dist/features/column-filtering/columnFilteringFeature.utils.js +1 -1
  154. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  155. package/dist/features/column-filtering/createFilteredRowModel.cjs +12 -7
  156. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  157. package/dist/features/column-filtering/createFilteredRowModel.d.cts +5 -3
  158. package/dist/features/column-filtering/createFilteredRowModel.d.ts +5 -3
  159. package/dist/features/column-filtering/createFilteredRowModel.js +13 -8
  160. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  161. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  162. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  163. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  164. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  165. package/dist/features/column-grouping/columnGroupingFeature.cjs +57 -69
  166. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  167. package/dist/features/column-grouping/columnGroupingFeature.d.cts +4 -15
  168. package/dist/features/column-grouping/columnGroupingFeature.d.ts +4 -15
  169. package/dist/features/column-grouping/columnGroupingFeature.js +59 -70
  170. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  171. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +28 -21
  172. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +28 -21
  173. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +4 -4
  174. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  175. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +11 -11
  176. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +11 -11
  177. package/dist/features/column-grouping/columnGroupingFeature.utils.js +5 -5
  178. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  179. package/dist/features/column-grouping/createGroupedRowModel.cjs +9 -7
  180. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  181. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -3
  182. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -3
  183. package/dist/features/column-grouping/createGroupedRowModel.js +10 -8
  184. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  185. package/dist/features/column-ordering/columnOrderingFeature.cjs +47 -59
  186. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  187. package/dist/features/column-ordering/columnOrderingFeature.d.cts +4 -15
  188. package/dist/features/column-ordering/columnOrderingFeature.d.ts +4 -15
  189. package/dist/features/column-ordering/columnOrderingFeature.js +48 -59
  190. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  191. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +1 -1
  192. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +1 -1
  193. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +9 -9
  194. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +9 -9
  195. package/dist/features/column-pinning/columnPinningFeature.cjs +209 -221
  196. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  197. package/dist/features/column-pinning/columnPinningFeature.d.cts +4 -15
  198. package/dist/features/column-pinning/columnPinningFeature.d.ts +4 -15
  199. package/dist/features/column-pinning/columnPinningFeature.js +210 -221
  200. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  201. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +2 -2
  202. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +2 -2
  203. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  204. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +31 -30
  205. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +31 -30
  206. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  207. package/dist/features/column-resizing/columnResizingFeature.cjs +31 -43
  208. package/dist/features/column-resizing/columnResizingFeature.cjs.map +1 -1
  209. package/dist/features/column-resizing/columnResizingFeature.d.cts +4 -15
  210. package/dist/features/column-resizing/columnResizingFeature.d.ts +4 -15
  211. package/dist/features/column-resizing/columnResizingFeature.js +32 -43
  212. package/dist/features/column-resizing/columnResizingFeature.js.map +1 -1
  213. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  214. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  215. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +2 -5
  216. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  217. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  218. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  219. package/dist/features/column-resizing/columnResizingFeature.utils.js +3 -6
  220. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  221. package/dist/features/column-sizing/columnSizingFeature.cjs +112 -125
  222. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  223. package/dist/features/column-sizing/columnSizingFeature.d.cts +4 -16
  224. package/dist/features/column-sizing/columnSizingFeature.d.ts +4 -16
  225. package/dist/features/column-sizing/columnSizingFeature.js +113 -125
  226. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  227. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +11 -4
  228. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  229. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +12 -12
  230. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +12 -12
  231. package/dist/features/column-sizing/columnSizingFeature.utils.js +12 -5
  232. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  233. package/dist/features/column-visibility/columnVisibilityFeature.cjs +83 -95
  234. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  235. package/dist/features/column-visibility/columnVisibilityFeature.d.cts +4 -15
  236. package/dist/features/column-visibility/columnVisibilityFeature.d.ts +4 -15
  237. package/dist/features/column-visibility/columnVisibilityFeature.js +84 -95
  238. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  239. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +2 -2
  240. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +2 -2
  241. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +12 -9
  242. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  243. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +14 -14
  244. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +14 -14
  245. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +13 -10
  246. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  247. package/dist/features/global-filtering/globalFilteringFeature.cjs +31 -43
  248. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  249. package/dist/features/global-filtering/globalFilteringFeature.d.cts +4 -15
  250. package/dist/features/global-filtering/globalFilteringFeature.d.ts +4 -15
  251. package/dist/features/global-filtering/globalFilteringFeature.js +32 -43
  252. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  253. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  254. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  255. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  256. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +10 -8
  257. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -8
  258. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  259. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  260. package/dist/features/row-expanding/createExpandedRowModel.d.cts +1 -1
  261. package/dist/features/row-expanding/createExpandedRowModel.d.ts +1 -1
  262. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  263. package/dist/features/row-expanding/rowExpandingFeature.cjs +37 -49
  264. package/dist/features/row-expanding/rowExpandingFeature.cjs.map +1 -1
  265. package/dist/features/row-expanding/rowExpandingFeature.d.cts +4 -15
  266. package/dist/features/row-expanding/rowExpandingFeature.d.ts +4 -15
  267. package/dist/features/row-expanding/rowExpandingFeature.js +38 -49
  268. package/dist/features/row-expanding/rowExpandingFeature.js.map +1 -1
  269. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +5 -14
  270. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +5 -14
  271. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +21 -12
  272. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  273. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  274. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  275. package/dist/features/row-expanding/rowExpandingFeature.utils.js +22 -13
  276. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  277. package/dist/features/row-pagination/createPaginatedRowModel.cjs +1 -1
  278. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  279. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +1 -1
  280. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +1 -1
  281. package/dist/features/row-pagination/createPaginatedRowModel.js +1 -1
  282. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  283. package/dist/features/row-pagination/rowPaginationFeature.cjs +35 -47
  284. package/dist/features/row-pagination/rowPaginationFeature.cjs.map +1 -1
  285. package/dist/features/row-pagination/rowPaginationFeature.d.cts +4 -15
  286. package/dist/features/row-pagination/rowPaginationFeature.d.ts +4 -15
  287. package/dist/features/row-pagination/rowPaginationFeature.js +36 -47
  288. package/dist/features/row-pagination/rowPaginationFeature.js.map +1 -1
  289. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +4 -13
  290. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +4 -13
  291. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  292. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  293. package/dist/features/row-pinning/rowPinningFeature.cjs +55 -67
  294. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  295. package/dist/features/row-pinning/rowPinningFeature.d.cts +4 -15
  296. package/dist/features/row-pinning/rowPinningFeature.d.ts +4 -15
  297. package/dist/features/row-pinning/rowPinningFeature.js +56 -67
  298. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  299. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  300. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  301. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +2 -2
  302. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  303. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  304. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  305. package/dist/features/row-pinning/rowPinningFeature.utils.js +2 -2
  306. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  307. package/dist/features/row-selection/rowSelectionFeature.cjs +108 -77
  308. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  309. package/dist/features/row-selection/rowSelectionFeature.d.cts +4 -15
  310. package/dist/features/row-selection/rowSelectionFeature.d.ts +4 -15
  311. package/dist/features/row-selection/rowSelectionFeature.js +110 -78
  312. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  313. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +13 -5
  314. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +13 -5
  315. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +76 -60
  316. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  317. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +48 -23
  318. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +48 -23
  319. package/dist/features/row-selection/rowSelectionFeature.utils.js +77 -62
  320. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  321. package/dist/features/row-sorting/createSortedRowModel.cjs +5 -3
  322. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  323. package/dist/features/row-sorting/createSortedRowModel.d.cts +5 -3
  324. package/dist/features/row-sorting/createSortedRowModel.d.ts +5 -3
  325. package/dist/features/row-sorting/createSortedRowModel.js +6 -4
  326. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  327. package/dist/features/row-sorting/rowSortingFeature.cjs +45 -57
  328. package/dist/features/row-sorting/rowSortingFeature.cjs.map +1 -1
  329. package/dist/features/row-sorting/rowSortingFeature.d.cts +4 -15
  330. package/dist/features/row-sorting/rowSortingFeature.d.ts +4 -15
  331. package/dist/features/row-sorting/rowSortingFeature.js +46 -57
  332. package/dist/features/row-sorting/rowSortingFeature.js.map +1 -1
  333. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +24 -21
  334. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +24 -21
  335. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +8 -5
  336. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  337. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  338. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  339. package/dist/features/row-sorting/rowSortingFeature.utils.js +8 -5
  340. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  341. package/dist/fns/aggregationFns.cjs +18 -18
  342. package/dist/fns/aggregationFns.cjs.map +1 -1
  343. package/dist/fns/aggregationFns.d.cts +21 -19
  344. package/dist/fns/aggregationFns.d.ts +21 -19
  345. package/dist/fns/aggregationFns.js +18 -18
  346. package/dist/fns/aggregationFns.js.map +1 -1
  347. package/dist/fns/filterFns.cjs +51 -65
  348. package/dist/fns/filterFns.cjs.map +1 -1
  349. package/dist/fns/filterFns.d.cts +82 -28
  350. package/dist/fns/filterFns.d.ts +82 -28
  351. package/dist/fns/filterFns.js +51 -65
  352. package/dist/fns/filterFns.js.map +1 -1
  353. package/dist/fns/sortFns.cjs +18 -6
  354. package/dist/fns/sortFns.cjs.map +1 -1
  355. package/dist/fns/sortFns.d.cts +15 -13
  356. package/dist/fns/sortFns.d.ts +15 -13
  357. package/dist/fns/sortFns.js +18 -6
  358. package/dist/fns/sortFns.js.map +1 -1
  359. package/dist/helpers/columnHelper.cjs.map +1 -1
  360. package/dist/helpers/columnHelper.d.cts +2 -2
  361. package/dist/helpers/columnHelper.d.ts +2 -2
  362. package/dist/helpers/columnHelper.js.map +1 -1
  363. package/dist/helpers/metaHelper.cjs +30 -0
  364. package/dist/helpers/metaHelper.cjs.map +1 -0
  365. package/dist/helpers/metaHelper.d.cts +26 -0
  366. package/dist/helpers/metaHelper.d.ts +26 -0
  367. package/dist/helpers/metaHelper.js +29 -0
  368. package/dist/helpers/metaHelper.js.map +1 -0
  369. package/dist/helpers/tableFeatures.cjs +31 -3
  370. package/dist/helpers/tableFeatures.cjs.map +1 -1
  371. package/dist/helpers/tableFeatures.d.cts +33 -5
  372. package/dist/helpers/tableFeatures.d.ts +33 -5
  373. package/dist/helpers/tableFeatures.js +31 -3
  374. package/dist/helpers/tableFeatures.js.map +1 -1
  375. package/dist/index.cjs +4 -20
  376. package/dist/index.d.cts +50 -49
  377. package/dist/index.d.ts +50 -49
  378. package/dist/index.js +23 -22
  379. package/dist/static-functions.cjs +1 -0
  380. package/dist/static-functions.d.cts +2 -2
  381. package/dist/static-functions.d.ts +2 -2
  382. package/dist/static-functions.js +2 -2
  383. package/dist/store-reactivity-bindings.cjs +1 -1
  384. package/dist/store-reactivity-bindings.cjs.map +1 -1
  385. package/dist/store-reactivity-bindings.d.cts +1 -1
  386. package/dist/store-reactivity-bindings.d.ts +1 -1
  387. package/dist/store-reactivity-bindings.js +1 -1
  388. package/dist/store-reactivity-bindings.js.map +1 -1
  389. package/dist/types/Cell.d.cts +4 -9
  390. package/dist/types/Cell.d.ts +4 -9
  391. package/dist/types/Column.d.cts +11 -18
  392. package/dist/types/Column.d.ts +11 -18
  393. package/dist/types/ColumnDef.d.cts +23 -14
  394. package/dist/types/ColumnDef.d.ts +23 -14
  395. package/dist/types/Header.d.cts +5 -10
  396. package/dist/types/Header.d.ts +5 -10
  397. package/dist/types/HeaderGroup.d.cts +4 -9
  398. package/dist/types/HeaderGroup.d.ts +4 -9
  399. package/dist/types/Row.d.cts +7 -12
  400. package/dist/types/Row.d.ts +7 -12
  401. package/dist/types/RowModel.d.cts +12 -28
  402. package/dist/types/RowModel.d.ts +12 -28
  403. package/dist/types/RowModelFns.d.cts +6 -11
  404. package/dist/types/RowModelFns.d.ts +6 -11
  405. package/dist/types/Table.d.cts +26 -36
  406. package/dist/types/Table.d.ts +26 -36
  407. package/dist/types/TableFeatures.d.cts +328 -54
  408. package/dist/types/TableFeatures.d.ts +328 -54
  409. package/dist/types/TableOptions.d.cts +22 -17
  410. package/dist/types/TableOptions.d.ts +22 -17
  411. package/dist/types/TableState.d.cts +11 -16
  412. package/dist/types/TableState.d.ts +11 -16
  413. package/dist/utils.cjs +24 -2
  414. package/dist/utils.cjs.map +1 -1
  415. package/dist/utils.d.cts +23 -7
  416. package/dist/utils.d.ts +23 -7
  417. package/dist/utils.js +23 -3
  418. package/dist/utils.js.map +1 -1
  419. package/package.json +2 -2
  420. package/skills/column-definitions/SKILL.md +3 -6
  421. package/skills/column-layout/SKILL.md +0 -2
  422. package/skills/customizing-feature-behavior/SKILL.md +63 -56
  423. package/skills/filtering/SKILL.md +60 -42
  424. package/skills/filtering/references/faceting-and-fuzzy.md +59 -32
  425. package/skills/grouping/SKILL.md +49 -54
  426. package/skills/migrate-v8-to-v9/SKILL.md +30 -33
  427. package/skills/pagination/SKILL.md +22 -20
  428. package/skills/row-expanding/SKILL.md +33 -25
  429. package/skills/row-pinning/SKILL.md +11 -7
  430. package/skills/row-selection/SKILL.md +0 -3
  431. package/skills/setup/SKILL.md +55 -65
  432. package/skills/sorting/SKILL.md +21 -21
  433. package/skills/state-management/SKILL.md +40 -25
  434. package/src/core/cells/coreCellsFeature.ts +17 -39
  435. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  436. package/src/core/columns/constructColumn.ts +6 -0
  437. package/src/core/columns/coreColumnsFeature.ts +56 -83
  438. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  439. package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
  440. package/src/core/coreFeatures.ts +1 -1
  441. package/src/core/headers/buildHeaderGroups.ts +4 -2
  442. package/src/core/headers/coreHeadersFeature.ts +42 -64
  443. package/src/core/headers/coreHeadersFeature.types.ts +12 -12
  444. package/src/core/headers/coreHeadersFeature.utils.ts +1 -1
  445. package/src/core/row-models/coreRowModelsFeature.ts +43 -64
  446. package/src/core/row-models/coreRowModelsFeature.types.ts +7 -24
  447. package/src/core/row-models/coreRowModelsFeature.utils.ts +7 -7
  448. package/src/core/row-models/createCoreRowModel.ts +7 -6
  449. package/src/core/rows/constructRow.ts +3 -2
  450. package/src/core/rows/coreRowsFeature.ts +45 -72
  451. package/src/core/rows/coreRowsFeature.types.ts +8 -8
  452. package/src/core/rows/coreRowsFeature.utils.ts +4 -4
  453. package/src/core/table/constructTable.ts +50 -13
  454. package/src/core/table/coreTablesFeature.ts +13 -35
  455. package/src/core/table/coreTablesFeature.types.ts +40 -17
  456. package/src/core/table/coreTablesFeature.utils.ts +52 -18
  457. package/src/features/column-faceting/columnFacetingFeature.ts +71 -102
  458. package/src/features/column-faceting/columnFacetingFeature.types.ts +11 -44
  459. package/src/features/column-faceting/columnFacetingFeature.utils.ts +6 -6
  460. package/src/features/column-faceting/createFacetedMinMaxValues.ts +1 -1
  461. package/src/features/column-faceting/createFacetedRowModel.ts +1 -1
  462. package/src/features/column-faceting/createFacetedUniqueValues.ts +1 -1
  463. package/src/features/column-filtering/columnFilteringFeature.ts +61 -103
  464. package/src/features/column-filtering/columnFilteringFeature.types.ts +55 -39
  465. package/src/features/column-filtering/columnFilteringFeature.utils.ts +2 -2
  466. package/src/features/column-filtering/createFilteredRowModel.ts +18 -17
  467. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  468. package/src/features/column-grouping/columnGroupingFeature.ts +83 -126
  469. package/src/features/column-grouping/columnGroupingFeature.types.ts +42 -34
  470. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -2
  471. package/src/features/column-grouping/createGroupedRowModel.ts +17 -16
  472. package/src/features/column-ordering/columnOrderingFeature.ts +52 -84
  473. package/src/features/column-ordering/columnOrderingFeature.types.ts +2 -2
  474. package/src/features/column-pinning/columnPinningFeature.ts +268 -304
  475. package/src/features/column-pinning/columnPinningFeature.types.ts +4 -4
  476. package/src/features/column-pinning/columnPinningFeature.utils.ts +11 -19
  477. package/src/features/column-resizing/columnResizingFeature.ts +44 -78
  478. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  479. package/src/features/column-resizing/columnResizingFeature.utils.ts +5 -6
  480. package/src/features/column-sizing/columnSizingFeature.ts +115 -152
  481. package/src/features/column-sizing/columnSizingFeature.utils.ts +27 -5
  482. package/src/features/column-visibility/columnVisibilityFeature.ts +92 -129
  483. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  484. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +31 -15
  485. package/src/features/global-filtering/globalFilteringFeature.ts +45 -79
  486. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  487. package/src/features/global-filtering/globalFilteringFeature.utils.ts +5 -3
  488. package/src/features/row-expanding/createExpandedRowModel.ts +1 -1
  489. package/src/features/row-expanding/rowExpandingFeature.ts +65 -101
  490. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -22
  491. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  492. package/src/features/row-pagination/createPaginatedRowModel.ts +2 -2
  493. package/src/features/row-pagination/rowPaginationFeature.ts +69 -103
  494. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -20
  495. package/src/features/row-pinning/rowPinningFeature.ts +72 -104
  496. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  497. package/src/features/row-selection/rowSelectionFeature.ts +125 -135
  498. package/src/features/row-selection/rowSelectionFeature.types.ts +17 -7
  499. package/src/features/row-selection/rowSelectionFeature.utils.ts +144 -66
  500. package/src/features/row-sorting/createSortedRowModel.ts +12 -15
  501. package/src/features/row-sorting/rowSortingFeature.ts +73 -114
  502. package/src/features/row-sorting/rowSortingFeature.types.ts +33 -32
  503. package/src/features/row-sorting/rowSortingFeature.utils.ts +8 -6
  504. package/src/fns/aggregationFns.ts +26 -42
  505. package/src/fns/filterFns.ts +237 -264
  506. package/src/fns/sortFns.ts +51 -29
  507. package/src/helpers/columnHelper.ts +4 -4
  508. package/src/helpers/metaHelper.ts +24 -0
  509. package/src/helpers/tableFeatures.ts +36 -5
  510. package/src/index.ts +1 -0
  511. package/src/store-reactivity-bindings.ts +1 -1
  512. package/src/types/Cell.ts +5 -21
  513. package/src/types/Column.ts +12 -26
  514. package/src/types/ColumnDef.ts +28 -18
  515. package/src/types/Header.ts +4 -20
  516. package/src/types/HeaderGroup.ts +7 -18
  517. package/src/types/Row.ts +6 -21
  518. package/src/types/RowModel.ts +15 -88
  519. package/src/types/RowModelFns.ts +9 -24
  520. package/src/types/Table.ts +54 -44
  521. package/src/types/TableFeatures.ts +402 -123
  522. package/src/types/TableOptions.ts +59 -21
  523. package/src/types/TableState.ts +5 -17
  524. package/src/utils.ts +40 -8
@@ -1 +1 @@
1
- {"version":3,"file":"columnGroupingFeature.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n cell_getIsAggregated,\n cell_getIsGrouped,\n cell_getIsPlaceholder,\n column_getAggregationFn,\n column_getAutoAggregationFn,\n column_getCanGroup,\n column_getGroupedIndex,\n column_getIsGrouped,\n column_getToggleGroupingHandler,\n column_toggleGrouping,\n getDefaultGroupingState,\n row_getGroupingValue,\n row_getIsGrouped,\n table_resetGrouping,\n table_setGrouping,\n} from './columnGroupingFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// CachedRowModel_Grouped,\n// Cell_ColumnGrouping,\n// ColumnDef_ColumnGrouping,\n// Column_ColumnGrouping,\n// CreateRowModel_Grouped,\n// RowModelFns_ColumnGrouping,\n// Row_ColumnGrouping,\n// TableOptions_ColumnGrouping,\n// TableState_ColumnGrouping,\n// Table_ColumnGrouping,\n// } from './columnGroupingFeature.types'\n\nexport interface ColumnGroupingFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // CachedRowModel: CachedRowModel_Grouped<TFeatures, TData>\n // Cell: Cell_ColumnGrouping\n // Column: Column_ColumnGrouping<TFeatures, TData>\n // ColumnDef: ColumnDef_ColumnGrouping<TFeatures, TData>\n // CreateRowModels: CreateRowModel_Grouped<TFeatures, TData>\n // Row: Row_ColumnGrouping\n // RowModelFns: RowModelFns_ColumnGrouping<TFeatures, TData>\n // Table: Table_ColumnGrouping<TFeatures, TData>\n // TableOptions: TableOptions_ColumnGrouping\n // TableState: TableState_ColumnGrouping\n}\n\n/**\n * Creates the stock column grouping feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnGroupingFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnGroupingFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n grouping: getDefaultGroupingState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: ({ getValue }: any) => getValue()?.toString?.() ?? null,\n aggregationFn: 'auto',\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder',\n }\n },\n\n assignCellPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnGroupingFeature', prototype, table, {\n cell_getIsGrouped: {\n fn: (cell) => cell_getIsGrouped(cell),\n },\n cell_getIsPlaceholder: {\n fn: (cell) => cell_getIsPlaceholder(cell),\n },\n cell_getIsAggregated: {\n fn: (cell) => cell_getIsAggregated(cell),\n },\n })\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnGroupingFeature', prototype, table, {\n column_toggleGrouping: {\n fn: (column) => column_toggleGrouping(column),\n },\n column_getCanGroup: {\n fn: (column) => column_getCanGroup(column),\n },\n column_getIsGrouped: {\n fn: (column) => column_getIsGrouped(column),\n },\n column_getGroupedIndex: {\n fn: (column) => column_getGroupedIndex(column),\n },\n column_getToggleGroupingHandler: {\n fn: (column) => column_getToggleGroupingHandler(column),\n },\n column_getAutoAggregationFn: {\n fn: (column) => column_getAutoAggregationFn(column),\n },\n column_getAggregationFn: {\n fn: (column) => column_getAggregationFn(column),\n },\n })\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnGroupingFeature', prototype, table, {\n row_getIsGrouped: {\n fn: (row) => row_getIsGrouped(row),\n },\n row_getGroupingValue: {\n fn: (row, columnId) => row_getGroupingValue(row, columnId),\n },\n })\n },\n\n initRowInstanceData: (row) => {\n ;(row as any)._groupingValuesCache = {}\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnGroupingFeature', table, {\n table_setGrouping: {\n fn: (updater) => table_setGrouping(table, updater),\n },\n table_resetGrouping: {\n fn: (defaultState) => table_resetGrouping(table, defaultState),\n },\n })\n },\n }\n}\n\n/**\n * The stock column grouping feature.\n *\n * Register this feature to add grouping state, aggregation defaults, grouped\n * row-model support, and table/row/column/cell grouping APIs.\n */\nexport const columnGroupingFeature = constructColumnGroupingFeature()\n"],"mappings":";;;;;;;;;AA0DA,SAAgB,iCAGuD;CACrE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,UAAU,wBAAwB;IAClC,GAAG;GACL;EACF;EAEA,2BAA2B;GACzB,OAAO;IACL,iBAAiB,EAAE,eAAoB;;mCAAS,uEAAG,gGAAW,MAAK;IAAG;IACtE,eAAe;GACjB;EACF;EAEA,yBAAyB,UAAU;GACjC,OAAO;IACL,kBAAkB,iBAAiB,YAAY,KAAK;IACpD,mBAAmB;GACrB;EACF;EAEA,sBAAsB,WAAW,UAAU;GACzC,oBAAoB,yBAAyB,WAAW,OAAO;IAC7D,mBAAmB,EACjB,KAAK,SAAS,kBAAkB,IAAI,EACtC;IACA,uBAAuB,EACrB,KAAK,SAAS,sBAAsB,IAAI,EAC1C;IACA,sBAAsB,EACpB,KAAK,SAAS,qBAAqB,IAAI,EACzC;GACF,CAAC;EACH;EAEA,wBAAwB,WAAW,UAAU;GAC3C,oBAAoB,yBAAyB,WAAW,OAAO;IAC7D,uBAAuB,EACrB,KAAK,WAAW,sBAAsB,MAAM,EAC9C;IACA,oBAAoB,EAClB,KAAK,WAAW,mBAAmB,MAAM,EAC3C;IACA,qBAAqB,EACnB,KAAK,WAAW,oBAAoB,MAAM,EAC5C;IACA,wBAAwB,EACtB,KAAK,WAAW,uBAAuB,MAAM,EAC/C;IACA,iCAAiC,EAC/B,KAAK,WAAW,gCAAgC,MAAM,EACxD;IACA,6BAA6B,EAC3B,KAAK,WAAW,4BAA4B,MAAM,EACpD;IACA,yBAAyB,EACvB,KAAK,WAAW,wBAAwB,MAAM,EAChD;GACF,CAAC;EACH;EAEA,qBAAqB,WAAW,UAAU;GACxC,oBAAoB,yBAAyB,WAAW,OAAO;IAC7D,kBAAkB,EAChB,KAAK,QAAQ,iBAAiB,GAAG,EACnC;IACA,sBAAsB,EACpB,KAAK,KAAK,aAAa,qBAAqB,KAAK,QAAQ,EAC3D;GACF,CAAC;EACH;EAEA,sBAAsB,QAAQ;GAC3B,AAAC,IAAY,uBAAuB,CAAC;EACxC;EAEA,qBAAqB,UAAU;GAC7B,gBAAgB,yBAAyB,OAAO;IAC9C,mBAAmB,EACjB,KAAK,YAAY,kBAAkB,OAAO,OAAO,EACnD;IACA,qBAAqB,EACnB,KAAK,iBAAiB,oBAAoB,OAAO,YAAY,EAC/D;GACF,CAAC;EACH;CACF;AACF;;;;;;;AAQA,MAAa,wBAAwB,+BAA+B"}
1
+ {"version":3,"file":"columnGroupingFeature.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeObjectMap,\n makeStateUpdater,\n} from '../../utils'\nimport {\n cell_getIsAggregated,\n cell_getIsGrouped,\n cell_getIsPlaceholder,\n column_getAggregationFn,\n column_getAutoAggregationFn,\n column_getCanGroup,\n column_getGroupedIndex,\n column_getIsGrouped,\n column_getToggleGroupingHandler,\n column_toggleGrouping,\n getDefaultGroupingState,\n row_getGroupingValue,\n row_getIsGrouped,\n table_resetGrouping,\n table_setGrouping,\n} from './columnGroupingFeature.utils'\nimport type { TableFeature } from '../../types/TableFeatures'\n\n/**\n * Feature that adds column grouping state, aggregation defaults, and grouped row APIs.\n */\nexport const columnGroupingFeature: TableFeature = {\n getInitialState: (initialState) => {\n return {\n grouping: getDefaultGroupingState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: ({ getValue }: any) => getValue()?.toString?.() ?? null,\n aggregationFn: 'auto',\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder',\n }\n },\n\n assignCellPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnGroupingFeature', prototype, table, {\n cell_getIsGrouped: {\n fn: (cell) => cell_getIsGrouped(cell),\n },\n cell_getIsPlaceholder: {\n fn: (cell) => cell_getIsPlaceholder(cell),\n },\n cell_getIsAggregated: {\n fn: (cell) => cell_getIsAggregated(cell),\n },\n })\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnGroupingFeature', prototype, table, {\n column_toggleGrouping: {\n fn: (column) => column_toggleGrouping(column),\n },\n column_getCanGroup: {\n fn: (column) => column_getCanGroup(column),\n },\n column_getIsGrouped: {\n fn: (column) => column_getIsGrouped(column),\n },\n column_getGroupedIndex: {\n fn: (column) => column_getGroupedIndex(column),\n },\n column_getToggleGroupingHandler: {\n fn: (column) => column_getToggleGroupingHandler(column),\n },\n column_getAutoAggregationFn: {\n fn: (column) => column_getAutoAggregationFn(column),\n },\n column_getAggregationFn: {\n fn: (column) => column_getAggregationFn(column),\n },\n })\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnGroupingFeature', prototype, table, {\n row_getIsGrouped: {\n fn: (row) => row_getIsGrouped(row),\n },\n row_getGroupingValue: {\n fn: (row, columnId) => row_getGroupingValue(row, columnId),\n },\n })\n },\n\n initRowInstanceData: (row) => {\n ;(row as any)._groupingValuesCache = makeObjectMap()\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnGroupingFeature', table, {\n table_setGrouping: {\n fn: (updater) => table_setGrouping(table, updater),\n },\n table_resetGrouping: {\n fn: (defaultState) => table_resetGrouping(table, defaultState),\n },\n })\n },\n}\n"],"mappings":";;;;;;;AA4BA,MAAa,wBAAsC;CACjD,kBAAkB,iBAAiB;EACjC,OAAO;GACL,UAAU,wBAAwB;GAClC,GAAG;EACL;CACF;CAEA,2BAA2B;EACzB,OAAO;GACL,iBAAiB,EAAE,eAAoB;;kCAAS,uEAAG,gGAAW,MAAK;GAAG;GACtE,eAAe;EACjB;CACF;CAEA,yBAAyB,UAAU;EACjC,OAAO;GACL,kBAAkB,iBAAiB,YAAY,KAAK;GACpD,mBAAmB;EACrB;CACF;CAEA,sBAAsB,WAAW,UAAU;EACzC,oBAAoB,yBAAyB,WAAW,OAAO;GAC7D,mBAAmB,EACjB,KAAK,SAAS,kBAAkB,IAAI,EACtC;GACA,uBAAuB,EACrB,KAAK,SAAS,sBAAsB,IAAI,EAC1C;GACA,sBAAsB,EACpB,KAAK,SAAS,qBAAqB,IAAI,EACzC;EACF,CAAC;CACH;CAEA,wBAAwB,WAAW,UAAU;EAC3C,oBAAoB,yBAAyB,WAAW,OAAO;GAC7D,uBAAuB,EACrB,KAAK,WAAW,sBAAsB,MAAM,EAC9C;GACA,oBAAoB,EAClB,KAAK,WAAW,mBAAmB,MAAM,EAC3C;GACA,qBAAqB,EACnB,KAAK,WAAW,oBAAoB,MAAM,EAC5C;GACA,wBAAwB,EACtB,KAAK,WAAW,uBAAuB,MAAM,EAC/C;GACA,iCAAiC,EAC/B,KAAK,WAAW,gCAAgC,MAAM,EACxD;GACA,6BAA6B,EAC3B,KAAK,WAAW,4BAA4B,MAAM,EACpD;GACA,yBAAyB,EACvB,KAAK,WAAW,wBAAwB,MAAM,EAChD;EACF,CAAC;CACH;CAEA,qBAAqB,WAAW,UAAU;EACxC,oBAAoB,yBAAyB,WAAW,OAAO;GAC7D,kBAAkB,EAChB,KAAK,QAAQ,iBAAiB,GAAG,EACnC;GACA,sBAAsB,EACpB,KAAK,KAAK,aAAa,qBAAqB,KAAK,QAAQ,EAC3D;EACF,CAAC;CACH;CAEA,sBAAsB,QAAQ;EAC3B,AAAC,IAAY,uBAAuB,cAAc;CACrD;CAEA,qBAAqB,UAAU;EAC7B,gBAAgB,yBAAyB,OAAO;GAC9C,mBAAmB,EACjB,KAAK,YAAY,kBAAkB,OAAO,OAAO,EACnD;GACA,qBAAqB,EACnB,KAAK,iBAAiB,oBAAoB,OAAO,YAAY,EAC/D;EACF,CAAC;CACH;AACF"}
@@ -1,8 +1,7 @@
1
1
  import { CellData, OnChangeFn, RowData, Updater } from "../../types/type-utils.cjs";
2
2
  import { Row } from "../../types/Row.cjs";
3
3
  import { ColumnDefTemplate } from "../../types/ColumnDef.cjs";
4
- import { TableFeatures } from "../../types/TableFeatures.cjs";
5
- import { Table } from "../../types/Table.cjs";
4
+ import { IsAny, TableFeatures } from "../../types/TableFeatures.cjs";
6
5
  import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.cjs";
7
6
  import { BuiltInAggregationFn } from "../../fns/aggregationFns.cjs";
8
7
  import { Cell } from "../../types/Cell.cjs";
@@ -12,14 +11,27 @@ type GroupingState = Array<string>;
12
11
  interface TableState_ColumnGrouping {
13
12
  grouping: GroupingState;
14
13
  }
15
- interface RowModelFns_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData> {
16
- aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>;
14
+ interface RowModelFns_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
15
+ aggregationFns: Record<string, AggregationFn<TFeatures, TData>>;
17
16
  }
18
17
  interface AggregationFns {}
19
18
  type AggregationFn<TFeatures extends TableFeatures, TData extends RowData> = (columnId: string, leafRows: Array<Row<TFeatures, TData>>, childRows: Array<Row<TFeatures, TData>>) => any;
20
19
  type CustomAggregationFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, AggregationFn<TFeatures, TData>>;
21
- type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | keyof AggregationFns | BuiltInAggregationFn | AggregationFn<TFeatures, TData>;
22
- interface ColumnDef_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> {
20
+ /**
21
+ * Resolves the valid string names for `columnDef.aggregationFn` for a feature
22
+ * set.
23
+ *
24
+ * When the features object declares an `aggregationFns` registry
25
+ * (`tableFeatures({ ..., aggregationFns })`), its keys are the only valid
26
+ * names; a name is only assignable if an aggregation function is actually
27
+ * registered for it. Otherwise this falls back to the global
28
+ * declaration-merged `AggregationFns` interface.
29
+ */
30
+ type ExtractAggregationFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof AggregationFns | BuiltInAggregationFn : TFeatures extends {
31
+ aggregationFns: infer TAggregationFns extends object;
32
+ } ? Extract<keyof TAggregationFns, string> : keyof AggregationFns;
33
+ type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractAggregationFnKeys<TFeatures> | AggregationFn<TFeatures, TData>;
34
+ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
23
35
  /**
24
36
  * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
25
37
  */
@@ -35,11 +47,14 @@ interface ColumnDef_ColumnGrouping<TFeatures extends TableFeatures, TData extend
35
47
  */
36
48
  enableGrouping?: boolean;
37
49
  /**
38
- * Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.
50
+ * Returns the value used to group rows for this column.
51
+ *
52
+ * When omitted, grouping uses the value derived from this column's
53
+ * `accessorKey` or `accessorFn`.
39
54
  */
40
- getGroupingValue?: (row: TData) => any;
55
+ getGroupingValue?: (originalRow: TData, index: number, row: Row<TFeatures, TData>) => any;
41
56
  }
42
- interface Column_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData> {
57
+ interface Column_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
43
58
  /**
44
59
  * Returns the aggregation function for the column.
45
60
  */
@@ -127,7 +142,7 @@ interface TableOptions_ColumnGrouping {
127
142
  onGroupingChange?: OnChangeFn<GroupingState>;
128
143
  }
129
144
  type GroupingColumnMode = false | 'reorder' | 'remove';
130
- interface Table_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData> {
145
+ interface Table_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
131
146
  /**
132
147
  * Resets `grouping` to `initialState.grouping`.
133
148
  *
@@ -139,7 +154,7 @@ interface Table_ColumnGrouping<TFeatures extends TableFeatures, TData extends Ro
139
154
  */
140
155
  setGrouping: (updater: Updater<GroupingState>) => void;
141
156
  }
142
- interface Table_RowModels_Grouped<TFeatures extends TableFeatures, TData extends RowData> {
157
+ interface Table_RowModels_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
143
158
  /**
144
159
  * Resolves the row model after grouping and aggregation have been applied.
145
160
  */
@@ -149,17 +164,9 @@ interface Table_RowModels_Grouped<TFeatures extends TableFeatures, TData extends
149
164
  */
150
165
  getPreGroupedRowModel: () => RowModel<TFeatures, TData>;
151
166
  }
152
- interface CreateRowModel_Grouped<TFeatures extends TableFeatures, TData extends RowData> {
153
- /**
154
- * Factory used to retrieve the grouped row model. If using server-side
155
- * grouping, this is not required. To use client-side grouping, pass
156
- * `createGroupedRowModel()` or implement your own factory.
157
- */
158
- groupedRowModel?: (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
159
- }
160
- interface CachedRowModel_Grouped<TFeatures extends TableFeatures, TData extends RowData> {
167
+ interface CachedRowModel_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
161
168
  groupedRowModel: () => RowModel<TFeatures, TData>;
162
169
  }
163
170
  //#endregion
164
- export { AggregationFn, AggregationFnOption, AggregationFns, CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, CreateRowModel_Grouped, CustomAggregationFns, GroupingColumnMode, GroupingState, RowModelFns_ColumnGrouping, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
171
+ export { AggregationFn, AggregationFnOption, AggregationFns, CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, CustomAggregationFns, ExtractAggregationFnKeys, GroupingColumnMode, GroupingState, RowModelFns_ColumnGrouping, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
165
172
  //# sourceMappingURL=columnGroupingFeature.types.d.cts.map
@@ -1,8 +1,7 @@
1
1
  import { CellData, OnChangeFn, RowData, Updater } from "../../types/type-utils.js";
2
2
  import { Row } from "../../types/Row.js";
3
3
  import { ColumnDefTemplate } from "../../types/ColumnDef.js";
4
- import { TableFeatures } from "../../types/TableFeatures.js";
5
- import { Table } from "../../types/Table.js";
4
+ import { IsAny, TableFeatures } from "../../types/TableFeatures.js";
6
5
  import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.js";
7
6
  import { BuiltInAggregationFn } from "../../fns/aggregationFns.js";
8
7
  import { Cell } from "../../types/Cell.js";
@@ -12,14 +11,27 @@ type GroupingState = Array<string>;
12
11
  interface TableState_ColumnGrouping {
13
12
  grouping: GroupingState;
14
13
  }
15
- interface RowModelFns_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData> {
16
- aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>;
14
+ interface RowModelFns_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
15
+ aggregationFns: Record<string, AggregationFn<TFeatures, TData>>;
17
16
  }
18
17
  interface AggregationFns {}
19
18
  type AggregationFn<TFeatures extends TableFeatures, TData extends RowData> = (columnId: string, leafRows: Array<Row<TFeatures, TData>>, childRows: Array<Row<TFeatures, TData>>) => any;
20
19
  type CustomAggregationFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, AggregationFn<TFeatures, TData>>;
21
- type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | keyof AggregationFns | BuiltInAggregationFn | AggregationFn<TFeatures, TData>;
22
- interface ColumnDef_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> {
20
+ /**
21
+ * Resolves the valid string names for `columnDef.aggregationFn` for a feature
22
+ * set.
23
+ *
24
+ * When the features object declares an `aggregationFns` registry
25
+ * (`tableFeatures({ ..., aggregationFns })`), its keys are the only valid
26
+ * names; a name is only assignable if an aggregation function is actually
27
+ * registered for it. Otherwise this falls back to the global
28
+ * declaration-merged `AggregationFns` interface.
29
+ */
30
+ type ExtractAggregationFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof AggregationFns | BuiltInAggregationFn : TFeatures extends {
31
+ aggregationFns: infer TAggregationFns extends object;
32
+ } ? Extract<keyof TAggregationFns, string> : keyof AggregationFns;
33
+ type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractAggregationFnKeys<TFeatures> | AggregationFn<TFeatures, TData>;
34
+ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
23
35
  /**
24
36
  * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
25
37
  */
@@ -35,11 +47,14 @@ interface ColumnDef_ColumnGrouping<TFeatures extends TableFeatures, TData extend
35
47
  */
36
48
  enableGrouping?: boolean;
37
49
  /**
38
- * Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.
50
+ * Returns the value used to group rows for this column.
51
+ *
52
+ * When omitted, grouping uses the value derived from this column's
53
+ * `accessorKey` or `accessorFn`.
39
54
  */
40
- getGroupingValue?: (row: TData) => any;
55
+ getGroupingValue?: (originalRow: TData, index: number, row: Row<TFeatures, TData>) => any;
41
56
  }
42
- interface Column_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData> {
57
+ interface Column_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
43
58
  /**
44
59
  * Returns the aggregation function for the column.
45
60
  */
@@ -127,7 +142,7 @@ interface TableOptions_ColumnGrouping {
127
142
  onGroupingChange?: OnChangeFn<GroupingState>;
128
143
  }
129
144
  type GroupingColumnMode = false | 'reorder' | 'remove';
130
- interface Table_ColumnGrouping<TFeatures extends TableFeatures, TData extends RowData> {
145
+ interface Table_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
131
146
  /**
132
147
  * Resets `grouping` to `initialState.grouping`.
133
148
  *
@@ -139,7 +154,7 @@ interface Table_ColumnGrouping<TFeatures extends TableFeatures, TData extends Ro
139
154
  */
140
155
  setGrouping: (updater: Updater<GroupingState>) => void;
141
156
  }
142
- interface Table_RowModels_Grouped<TFeatures extends TableFeatures, TData extends RowData> {
157
+ interface Table_RowModels_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
143
158
  /**
144
159
  * Resolves the row model after grouping and aggregation have been applied.
145
160
  */
@@ -149,17 +164,9 @@ interface Table_RowModels_Grouped<TFeatures extends TableFeatures, TData extends
149
164
  */
150
165
  getPreGroupedRowModel: () => RowModel<TFeatures, TData>;
151
166
  }
152
- interface CreateRowModel_Grouped<TFeatures extends TableFeatures, TData extends RowData> {
153
- /**
154
- * Factory used to retrieve the grouped row model. If using server-side
155
- * grouping, this is not required. To use client-side grouping, pass
156
- * `createGroupedRowModel()` or implement your own factory.
157
- */
158
- groupedRowModel?: (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
159
- }
160
- interface CachedRowModel_Grouped<TFeatures extends TableFeatures, TData extends RowData> {
167
+ interface CachedRowModel_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
161
168
  groupedRowModel: () => RowModel<TFeatures, TData>;
162
169
  }
163
170
  //#endregion
164
- export { AggregationFn, AggregationFnOption, AggregationFns, CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, CreateRowModel_Grouped, CustomAggregationFns, GroupingColumnMode, GroupingState, RowModelFns_ColumnGrouping, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
171
+ export { AggregationFn, AggregationFnOption, AggregationFns, CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, CustomAggregationFns, ExtractAggregationFnKeys, GroupingColumnMode, GroupingState, RowModelFns_ColumnGrouping, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
165
172
  //# sourceMappingURL=columnGroupingFeature.types.d.ts.map
@@ -181,12 +181,12 @@ function row_getIsGrouped(row) {
181
181
  * ```
182
182
  */
183
183
  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];
184
+ var _row$_groupingValuesC;
185
+ if (row._groupingValuesCache && require_utils.hasOwn(row._groupingValuesCache, columnId)) return row._groupingValuesCache[columnId];
186
186
  const column = row.table.getColumn(columnId);
187
187
  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];
188
+ if (row._groupingValuesCache) row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original, row.index, row);
189
+ return (_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC[columnId];
190
190
  }
191
191
  /**
192
192
  * Checks whether this cell represents the grouped column for a grouped row.
@@ -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":"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"}
1
+ {"version":3,"file":"columnGroupingFeature.utils.cjs","names":["isFunction","cloneState","hasOwn"],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn, 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 && 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\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":"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"}
@@ -1,8 +1,8 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.cjs";
2
- import { Column_Internal } from "../../types/Column.cjs";
3
2
  import { Row } from "../../types/Row.cjs";
3
+ import { Table } from "../../types/Table.cjs";
4
+ import { Column } from "../../types/Column.cjs";
4
5
  import { TableFeatures } from "../../types/TableFeatures.cjs";
5
- import { Table_Internal } from "../../types/Table.cjs";
6
6
  import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
7
7
  import { Cell } from "../../types/Cell.cjs";
8
8
 
@@ -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,7 +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;
79
+ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
80
80
  /**
81
81
  * Chooses a built-in aggregation function from the first core row value.
82
82
  *
@@ -88,7 +88,7 @@ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures
88
88
  * const aggregationFn = column_getAutoAggregationFn(column)
89
89
  * ```
90
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;
91
+ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
92
92
  /**
93
93
  * Resolves the aggregation function configured for a column.
94
94
  *
@@ -101,7 +101,7 @@ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TD
101
101
  * const aggregationFn = column_getAggregationFn(column)
102
102
  * ```
103
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;
104
+ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
105
105
  /**
106
106
  * Routes a grouping updater through the table's grouping change handler.
107
107
  *
@@ -113,7 +113,7 @@ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData
113
113
  * table_setGrouping(table, (old) => [...old, 'status'])
114
114
  * ```
115
115
  */
116
- declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>): void;
116
+ declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<GroupingState>): void;
117
117
  /**
118
118
  * Resets `grouping` to the configured initial state or feature default.
119
119
  *
@@ -126,7 +126,7 @@ declare function table_setGrouping<TFeatures extends TableFeatures, TData extend
126
126
  * table_resetGrouping(table, true)
127
127
  * ```
128
128
  */
129
- declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
129
+ declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
130
130
  /**
131
131
  * Checks whether this row was created as a grouped row.
132
132
  *
@@ -1,8 +1,8 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.js";
2
- import { Column_Internal } from "../../types/Column.js";
3
2
  import { Row } from "../../types/Row.js";
3
+ import { Table } from "../../types/Table.js";
4
+ import { Column } from "../../types/Column.js";
4
5
  import { TableFeatures } from "../../types/TableFeatures.js";
5
- import { Table_Internal } from "../../types/Table.js";
6
6
  import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
7
7
  import { Cell } from "../../types/Cell.js";
8
8
 
@@ -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,7 +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;
79
+ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
80
80
  /**
81
81
  * Chooses a built-in aggregation function from the first core row value.
82
82
  *
@@ -88,7 +88,7 @@ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures
88
88
  * const aggregationFn = column_getAutoAggregationFn(column)
89
89
  * ```
90
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;
91
+ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
92
92
  /**
93
93
  * Resolves the aggregation function configured for a column.
94
94
  *
@@ -101,7 +101,7 @@ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TD
101
101
  * const aggregationFn = column_getAggregationFn(column)
102
102
  * ```
103
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;
104
+ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
105
105
  /**
106
106
  * Routes a grouping updater through the table's grouping change handler.
107
107
  *
@@ -113,7 +113,7 @@ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData
113
113
  * table_setGrouping(table, (old) => [...old, 'status'])
114
114
  * ```
115
115
  */
116
- declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>): void;
116
+ declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<GroupingState>): void;
117
117
  /**
118
118
  * Resets `grouping` to the configured initial state or feature default.
119
119
  *
@@ -126,7 +126,7 @@ declare function table_setGrouping<TFeatures extends TableFeatures, TData extend
126
126
  * table_resetGrouping(table, true)
127
127
  * ```
128
128
  */
129
- declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
129
+ declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
130
130
  /**
131
131
  * Checks whether this row was created as a grouped row.
132
132
  *
@@ -1,4 +1,4 @@
1
- import { cloneState, isFunction } from "../../utils.js";
1
+ import { cloneState, hasOwn, isFunction } from "../../utils.js";
2
2
 
3
3
  //#region src/features/column-grouping/columnGroupingFeature.utils.ts
4
4
  /**
@@ -181,12 +181,12 @@ function row_getIsGrouped(row) {
181
181
  * ```
182
182
  */
183
183
  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];
184
+ var _row$_groupingValuesC;
185
+ if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) return row._groupingValuesCache[columnId];
186
186
  const column = row.table.getColumn(columnId);
187
187
  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];
188
+ if (row._groupingValuesCache) row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original, row.index, row);
189
+ return (_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC[columnId];
190
190
  }
191
191
  /**
192
192
  * Checks whether this cell represents the grouped column for a grouped row.
@@ -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":"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"}
1
+ {"version":3,"file":"columnGroupingFeature.utils.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn, 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 && 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\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":"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"}