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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/README.md +2 -0
  2. package/dist/core/cells/constructCell.cjs +1 -4
  3. package/dist/core/cells/constructCell.cjs.map +1 -1
  4. package/dist/core/cells/constructCell.d.cts +4 -4
  5. package/dist/core/cells/constructCell.d.ts +4 -4
  6. package/dist/core/cells/constructCell.js +1 -4
  7. package/dist/core/cells/constructCell.js.map +1 -1
  8. package/dist/core/cells/coreCellsFeature.types.d.cts +7 -7
  9. package/dist/core/cells/coreCellsFeature.types.d.ts +7 -7
  10. package/dist/core/cells/coreCellsFeature.utils.d.cts +4 -4
  11. package/dist/core/cells/coreCellsFeature.utils.d.ts +4 -4
  12. package/dist/core/columns/constructColumn.cjs +4 -5
  13. package/dist/core/columns/constructColumn.cjs.map +1 -1
  14. package/dist/core/columns/constructColumn.d.cts +3 -3
  15. package/dist/core/columns/constructColumn.d.ts +3 -3
  16. package/dist/core/columns/constructColumn.js +4 -5
  17. package/dist/core/columns/constructColumn.js.map +1 -1
  18. package/dist/core/columns/coreColumnsFeature.cjs +12 -18
  19. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  20. package/dist/core/columns/coreColumnsFeature.js +12 -18
  21. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  22. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
  23. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
  24. package/dist/core/columns/coreColumnsFeature.utils.cjs +4 -8
  25. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  26. package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
  27. package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
  28. package/dist/core/columns/coreColumnsFeature.utils.js +5 -9
  29. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  30. package/dist/core/coreFeatures.cjs.map +1 -1
  31. package/dist/core/coreFeatures.d.cts +1 -1
  32. package/dist/core/coreFeatures.d.ts +1 -1
  33. package/dist/core/coreFeatures.js.map +1 -1
  34. package/dist/core/headers/buildHeaderGroups.cjs +1 -2
  35. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  36. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  37. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  38. package/dist/core/headers/buildHeaderGroups.js +1 -2
  39. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  40. package/dist/core/headers/constructHeader.cjs +1 -4
  41. package/dist/core/headers/constructHeader.cjs.map +1 -1
  42. package/dist/core/headers/constructHeader.d.cts +2 -2
  43. package/dist/core/headers/constructHeader.d.ts +2 -2
  44. package/dist/core/headers/constructHeader.js +1 -4
  45. package/dist/core/headers/constructHeader.js.map +1 -1
  46. package/dist/core/headers/coreHeadersFeature.cjs +8 -11
  47. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  48. package/dist/core/headers/coreHeadersFeature.js +8 -11
  49. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  50. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  51. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  52. package/dist/core/headers/coreHeadersFeature.utils.cjs +8 -10
  53. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  54. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  55. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  56. package/dist/core/headers/coreHeadersFeature.utils.js +8 -10
  57. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  58. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +7 -15
  59. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -15
  60. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +8 -26
  61. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  62. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +16 -16
  63. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +16 -16
  64. package/dist/core/row-models/coreRowModelsFeature.utils.js +8 -26
  65. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  66. package/dist/core/row-models/createCoreRowModel.cjs +4 -6
  67. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  68. package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
  69. package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
  70. package/dist/core/row-models/createCoreRowModel.js +5 -7
  71. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  72. package/dist/core/rows/constructRow.cjs +6 -10
  73. package/dist/core/rows/constructRow.cjs.map +1 -1
  74. package/dist/core/rows/constructRow.d.cts +2 -2
  75. package/dist/core/rows/constructRow.d.ts +2 -2
  76. package/dist/core/rows/constructRow.js +7 -10
  77. package/dist/core/rows/constructRow.js.map +1 -1
  78. package/dist/core/rows/coreRowsFeature.cjs +18 -2
  79. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  80. package/dist/core/rows/coreRowsFeature.js +19 -3
  81. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  82. package/dist/core/rows/coreRowsFeature.types.d.cts +41 -7
  83. package/dist/core/rows/coreRowsFeature.types.d.ts +41 -7
  84. package/dist/core/rows/coreRowsFeature.utils.cjs +62 -8
  85. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  86. package/dist/core/rows/coreRowsFeature.utils.d.cts +24 -5
  87. package/dist/core/rows/coreRowsFeature.utils.d.ts +24 -5
  88. package/dist/core/rows/coreRowsFeature.utils.js +61 -10
  89. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  90. package/dist/core/table/constructTable.cjs +24 -14
  91. package/dist/core/table/constructTable.cjs.map +1 -1
  92. package/dist/core/table/constructTable.d.cts +1 -1
  93. package/dist/core/table/constructTable.d.ts +1 -1
  94. package/dist/core/table/constructTable.js +24 -14
  95. package/dist/core/table/constructTable.js.map +1 -1
  96. package/dist/core/table/coreTablesFeature.types.d.cts +32 -19
  97. package/dist/core/table/coreTablesFeature.types.d.ts +32 -19
  98. package/dist/core/table/coreTablesFeature.utils.cjs +38 -14
  99. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  100. package/dist/core/table/coreTablesFeature.utils.d.cts +10 -7
  101. package/dist/core/table/coreTablesFeature.utils.d.ts +10 -7
  102. package/dist/core/table/coreTablesFeature.utils.js +38 -14
  103. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  104. package/dist/experimental-worker-plugin.cjs +14 -0
  105. package/dist/experimental-worker-plugin.d.cts +5 -0
  106. package/dist/experimental-worker-plugin.d.ts +5 -0
  107. package/dist/experimental-worker-plugin.js +6 -0
  108. package/dist/features/aggregation/aggregationFeature.cjs +39 -0
  109. package/dist/features/aggregation/aggregationFeature.cjs.map +1 -0
  110. package/dist/features/aggregation/aggregationFeature.d.cts +10 -0
  111. package/dist/features/aggregation/aggregationFeature.d.ts +10 -0
  112. package/dist/features/aggregation/aggregationFeature.js +39 -0
  113. package/dist/features/aggregation/aggregationFeature.js.map +1 -0
  114. package/dist/features/aggregation/aggregationFeature.types.cjs +13 -0
  115. package/dist/features/aggregation/aggregationFeature.types.cjs.map +1 -0
  116. package/dist/features/aggregation/aggregationFeature.types.d.cts +195 -0
  117. package/dist/features/aggregation/aggregationFeature.types.d.ts +195 -0
  118. package/dist/features/aggregation/aggregationFeature.types.js +12 -0
  119. package/dist/features/aggregation/aggregationFeature.types.js.map +1 -0
  120. package/dist/features/aggregation/aggregationFeature.utils.cjs +212 -0
  121. package/dist/features/aggregation/aggregationFeature.utils.cjs.map +1 -0
  122. package/dist/features/aggregation/aggregationFeature.utils.d.cts +34 -0
  123. package/dist/features/aggregation/aggregationFeature.utils.d.ts +34 -0
  124. package/dist/features/aggregation/aggregationFeature.utils.js +206 -0
  125. package/dist/features/aggregation/aggregationFeature.utils.js.map +1 -0
  126. package/dist/features/aggregation/aggregationFns.cjs +246 -0
  127. package/dist/features/aggregation/aggregationFns.cjs.map +1 -0
  128. package/dist/features/aggregation/aggregationFns.d.cts +68 -0
  129. package/dist/features/aggregation/aggregationFns.d.ts +68 -0
  130. package/dist/features/aggregation/aggregationFns.js +235 -0
  131. package/dist/features/aggregation/aggregationFns.js.map +1 -0
  132. package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
  133. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  134. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  135. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  136. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
  137. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
  138. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
  139. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  140. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
  141. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
  142. package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
  143. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  144. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
  145. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  146. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  147. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  148. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  149. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  150. package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
  151. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  152. package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
  153. package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
  154. package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
  155. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  156. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
  157. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  158. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  159. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  160. package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
  161. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  162. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  163. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  164. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  165. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  166. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
  167. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
  168. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
  169. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  170. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
  171. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
  172. package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
  173. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  174. package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
  175. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  176. package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
  177. package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
  178. package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
  179. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  180. package/dist/features/column-filtering/filterFns.cjs +399 -0
  181. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  182. package/dist/features/column-filtering/filterFns.d.cts +210 -0
  183. package/dist/features/column-filtering/filterFns.d.ts +210 -0
  184. package/dist/features/column-filtering/filterFns.js +375 -0
  185. package/dist/features/column-filtering/filterFns.js.map +1 -0
  186. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  187. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  188. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  189. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  190. package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
  191. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  192. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  193. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  194. package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
  195. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  196. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
  197. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
  198. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
  199. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  200. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
  201. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
  202. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
  203. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  204. package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
  205. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  206. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
  207. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
  208. package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
  209. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  210. package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
  211. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  212. package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
  213. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  214. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
  215. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
  216. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
  217. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  218. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
  219. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
  220. package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
  221. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  222. package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
  223. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  224. package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
  225. package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
  226. package/dist/features/column-pinning/columnPinningFeature.js +125 -144
  227. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  228. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
  229. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
  230. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
  231. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  232. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
  233. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
  234. package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
  235. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  236. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  237. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  238. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
  239. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  240. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  241. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  242. package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
  243. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  244. package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
  245. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  246. package/dist/features/column-sizing/columnSizingFeature.js +34 -68
  247. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  248. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
  249. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
  250. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
  251. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  252. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
  253. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
  254. package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
  255. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  256. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
  257. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  258. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
  259. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  260. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
  261. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
  262. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
  263. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  264. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
  265. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
  266. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
  267. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  268. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  269. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  270. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  271. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  272. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  273. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  274. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
  275. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  276. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
  277. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
  278. package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
  279. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  280. package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
  281. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  282. package/dist/features/row-expanding/createExpandedRowModel.d.cts +2 -2
  283. package/dist/features/row-expanding/createExpandedRowModel.d.ts +2 -2
  284. package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
  285. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  286. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +6 -15
  287. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -15
  288. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +28 -26
  289. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  290. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  291. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  292. package/dist/features/row-expanding/rowExpandingFeature.utils.js +29 -27
  293. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  294. package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
  295. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  296. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +2 -2
  297. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +2 -2
  298. package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
  299. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  300. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +5 -14
  301. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -14
  302. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +9 -15
  303. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  304. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  305. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  306. package/dist/features/row-pagination/rowPaginationFeature.utils.js +9 -15
  307. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  308. package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
  309. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  310. package/dist/features/row-pinning/rowPinningFeature.js +4 -16
  311. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  312. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  313. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  314. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +9 -14
  315. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  316. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  317. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  318. package/dist/features/row-pinning/rowPinningFeature.utils.js +9 -14
  319. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  320. package/dist/features/row-selection/rowSelectionFeature.cjs +66 -22
  321. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  322. package/dist/features/row-selection/rowSelectionFeature.js +67 -23
  323. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  324. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +49 -11
  325. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +49 -11
  326. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +128 -72
  327. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  328. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +57 -30
  329. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +57 -30
  330. package/dist/features/row-selection/rowSelectionFeature.utils.js +129 -74
  331. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  332. package/dist/features/row-sorting/createSortedRowModel.cjs +69 -50
  333. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  334. package/dist/features/row-sorting/createSortedRowModel.d.cts +10 -4
  335. package/dist/features/row-sorting/createSortedRowModel.d.ts +10 -4
  336. package/dist/features/row-sorting/createSortedRowModel.js +70 -51
  337. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  338. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +54 -22
  339. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -22
  340. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +31 -17
  341. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  342. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  343. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  344. package/dist/features/row-sorting/rowSortingFeature.utils.js +31 -17
  345. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  346. package/dist/features/row-sorting/sortFns.cjs +226 -0
  347. package/dist/features/row-sorting/sortFns.cjs.map +1 -0
  348. package/dist/features/row-sorting/sortFns.d.cts +98 -0
  349. package/dist/features/row-sorting/sortFns.d.ts +98 -0
  350. package/dist/features/row-sorting/sortFns.js +217 -0
  351. package/dist/features/row-sorting/sortFns.js.map +1 -0
  352. package/dist/features/stockFeatures.cjs +2 -0
  353. package/dist/features/stockFeatures.cjs.map +1 -1
  354. package/dist/features/stockFeatures.d.cts +2 -0
  355. package/dist/features/stockFeatures.d.ts +2 -0
  356. package/dist/features/stockFeatures.js +2 -0
  357. package/dist/features/stockFeatures.js.map +1 -1
  358. package/dist/flex-render.d.cts +1 -1
  359. package/dist/flex-render.d.ts +1 -1
  360. package/dist/helpers/columnHelper.cjs.map +1 -1
  361. package/dist/helpers/columnHelper.d.cts +2 -2
  362. package/dist/helpers/columnHelper.d.ts +2 -2
  363. package/dist/helpers/columnHelper.js.map +1 -1
  364. package/dist/helpers/metaHelper.cjs +30 -0
  365. package/dist/helpers/metaHelper.cjs.map +1 -0
  366. package/dist/helpers/metaHelper.d.cts +26 -0
  367. package/dist/helpers/metaHelper.d.ts +26 -0
  368. package/dist/helpers/metaHelper.js +29 -0
  369. package/dist/helpers/metaHelper.js.map +1 -0
  370. package/dist/helpers/tableFeatures.cjs +32 -3
  371. package/dist/helpers/tableFeatures.cjs.map +1 -1
  372. package/dist/helpers/tableFeatures.d.cts +34 -5
  373. package/dist/helpers/tableFeatures.d.ts +34 -5
  374. package/dist/helpers/tableFeatures.js +32 -3
  375. package/dist/helpers/tableFeatures.js.map +1 -1
  376. package/dist/index.cjs +23 -3
  377. package/dist/index.d.cts +31 -28
  378. package/dist/index.d.ts +31 -28
  379. package/dist/index.js +8 -5
  380. package/dist/static-functions.cjs +30 -19
  381. package/dist/static-functions.d.cts +8 -7
  382. package/dist/static-functions.d.ts +8 -7
  383. package/dist/static-functions.js +8 -7
  384. package/dist/store-reactivity-bindings.cjs +3 -3
  385. package/dist/store-reactivity-bindings.cjs.map +1 -1
  386. package/dist/store-reactivity-bindings.d.cts +1 -1
  387. package/dist/store-reactivity-bindings.d.ts +1 -1
  388. package/dist/store-reactivity-bindings.js +3 -3
  389. package/dist/store-reactivity-bindings.js.map +1 -1
  390. package/dist/types/Cell.d.cts +4 -2
  391. package/dist/types/Cell.d.ts +4 -2
  392. package/dist/types/Column.d.cts +15 -15
  393. package/dist/types/Column.d.ts +15 -15
  394. package/dist/types/ColumnDef.d.cts +30 -14
  395. package/dist/types/ColumnDef.d.ts +30 -14
  396. package/dist/types/Header.d.cts +2 -2
  397. package/dist/types/Header.d.ts +2 -2
  398. package/dist/types/HeaderGroup.d.cts +2 -2
  399. package/dist/types/HeaderGroup.d.ts +2 -2
  400. package/dist/types/Row.d.cts +6 -4
  401. package/dist/types/Row.d.ts +6 -4
  402. package/dist/types/RowModel.d.cts +11 -23
  403. package/dist/types/RowModel.d.ts +11 -23
  404. package/dist/types/RowModelFns.d.cts +4 -4
  405. package/dist/types/RowModelFns.d.ts +4 -4
  406. package/dist/types/Table.d.cts +26 -31
  407. package/dist/types/Table.d.ts +26 -31
  408. package/dist/types/TableFeatures.d.cts +350 -22
  409. package/dist/types/TableFeatures.d.ts +350 -22
  410. package/dist/types/TableOptions.d.cts +22 -14
  411. package/dist/types/TableOptions.d.ts +22 -14
  412. package/dist/types/TableState.d.cts +6 -6
  413. package/dist/types/TableState.d.ts +6 -6
  414. package/dist/types/type-utils.d.cts +8 -1
  415. package/dist/types/type-utils.d.ts +8 -1
  416. package/dist/utils.cjs +51 -29
  417. package/dist/utils.cjs.map +1 -1
  418. package/dist/utils.d.cts +30 -8
  419. package/dist/utils.d.ts +30 -8
  420. package/dist/utils.js +49 -30
  421. package/dist/utils.js.map +1 -1
  422. package/dist/worker/createTableWorker.cjs +189 -0
  423. package/dist/worker/createTableWorker.cjs.map +1 -0
  424. package/dist/worker/createTableWorker.d.cts +102 -0
  425. package/dist/worker/createTableWorker.d.ts +102 -0
  426. package/dist/worker/createTableWorker.js +186 -0
  427. package/dist/worker/createTableWorker.js.map +1 -0
  428. package/dist/worker/createWorkerRowModel.cjs +78 -0
  429. package/dist/worker/createWorkerRowModel.cjs.map +1 -0
  430. package/dist/worker/createWorkerRowModel.d.cts +42 -0
  431. package/dist/worker/createWorkerRowModel.d.ts +42 -0
  432. package/dist/worker/createWorkerRowModel.js +78 -0
  433. package/dist/worker/createWorkerRowModel.js.map +1 -0
  434. package/dist/worker/initTableWorker.cjs +100 -0
  435. package/dist/worker/initTableWorker.cjs.map +1 -0
  436. package/dist/worker/initTableWorker.d.cts +33 -0
  437. package/dist/worker/initTableWorker.d.ts +33 -0
  438. package/dist/worker/initTableWorker.js +100 -0
  439. package/dist/worker/initTableWorker.js.map +1 -0
  440. package/dist/worker/rebuildRowModel.cjs +72 -0
  441. package/dist/worker/rebuildRowModel.cjs.map +1 -0
  442. package/dist/worker/rebuildRowModel.d.cts +9 -0
  443. package/dist/worker/rebuildRowModel.d.ts +9 -0
  444. package/dist/worker/rebuildRowModel.js +72 -0
  445. package/dist/worker/rebuildRowModel.js.map +1 -0
  446. package/dist/worker/serializeRowModel.cjs +53 -0
  447. package/dist/worker/serializeRowModel.cjs.map +1 -0
  448. package/dist/worker/serializeRowModel.js +52 -0
  449. package/dist/worker/serializeRowModel.js.map +1 -0
  450. package/dist/worker/tableWorkerProtocol.cjs +29 -0
  451. package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
  452. package/dist/worker/tableWorkerProtocol.d.cts +88 -0
  453. package/dist/worker/tableWorkerProtocol.d.ts +88 -0
  454. package/dist/worker/tableWorkerProtocol.js +27 -0
  455. package/dist/worker/tableWorkerProtocol.js.map +1 -0
  456. package/package.json +8 -3
  457. package/skills/aggregation/SKILL.md +141 -0
  458. package/skills/api-not-found/SKILL.md +113 -0
  459. package/skills/client-vs-server/SKILL.md +164 -0
  460. package/skills/column-faceting/SKILL.md +97 -0
  461. package/skills/column-filtering/SKILL.md +87 -0
  462. package/skills/column-ordering/SKILL.md +75 -0
  463. package/skills/column-pinning/SKILL.md +89 -0
  464. package/skills/column-resizing/SKILL.md +91 -0
  465. package/skills/column-sizing/SKILL.md +72 -0
  466. package/skills/column-visibility/SKILL.md +75 -0
  467. package/skills/core/SKILL.md +175 -0
  468. package/skills/custom-features/SKILL.md +235 -0
  469. package/skills/expanding/SKILL.md +80 -0
  470. package/skills/global-filtering/SKILL.md +84 -0
  471. package/skills/grouping/SKILL.md +51 -401
  472. package/skills/migrate-v8-to-v9/SKILL.md +274 -416
  473. package/skills/pagination/SKILL.md +37 -344
  474. package/skills/row-pinning/SKILL.md +47 -234
  475. package/skills/row-selection/SKILL.md +75 -302
  476. package/skills/sorting/SKILL.md +45 -303
  477. package/skills/table-features/SKILL.md +159 -0
  478. package/skills/typescript/SKILL.md +126 -0
  479. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  480. package/src/core/columns/constructColumn.ts +6 -0
  481. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  482. package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
  483. package/src/core/coreFeatures.ts +1 -1
  484. package/src/core/headers/buildHeaderGroups.ts +4 -2
  485. package/src/core/headers/coreHeadersFeature.types.ts +12 -12
  486. package/src/core/headers/coreHeadersFeature.utils.ts +7 -8
  487. package/src/core/row-models/coreRowModelsFeature.types.ts +6 -20
  488. package/src/core/row-models/coreRowModelsFeature.utils.ts +8 -8
  489. package/src/core/row-models/createCoreRowModel.ts +7 -6
  490. package/src/core/rows/constructRow.ts +4 -2
  491. package/src/core/rows/coreRowsFeature.ts +21 -0
  492. package/src/core/rows/coreRowsFeature.types.ts +45 -8
  493. package/src/core/rows/coreRowsFeature.utils.ts +93 -5
  494. package/src/core/table/constructTable.ts +44 -6
  495. package/src/core/table/coreTablesFeature.types.ts +45 -20
  496. package/src/core/table/coreTablesFeature.utils.ts +59 -19
  497. package/src/experimental-worker-plugin.ts +22 -0
  498. package/src/features/aggregation/aggregationFeature.ts +60 -0
  499. package/src/features/aggregation/aggregationFeature.types.ts +339 -0
  500. package/src/features/aggregation/aggregationFeature.utils.ts +430 -0
  501. package/src/features/aggregation/aggregationFns.ts +345 -0
  502. package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
  503. package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
  504. package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
  505. package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
  506. package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
  507. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  508. package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
  509. package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
  510. package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
  511. package/src/features/column-filtering/filterFns.ts +533 -0
  512. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  513. package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
  514. package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
  515. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
  516. package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
  517. package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
  518. package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
  519. package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
  520. package/src/features/column-pinning/columnPinningFeature.ts +76 -59
  521. package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
  522. package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
  523. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  524. package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
  525. package/src/features/column-sizing/columnSizingFeature.ts +24 -24
  526. package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
  527. package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
  528. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  529. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  530. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
  531. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  532. package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
  533. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
  534. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  535. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  536. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
  537. package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
  538. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  539. package/src/features/row-selection/rowSelectionFeature.ts +53 -3
  540. package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
  541. package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
  542. package/src/features/row-sorting/createSortedRowModel.ts +107 -75
  543. package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
  544. package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
  545. package/src/features/row-sorting/sortFns.ts +366 -0
  546. package/src/features/stockFeatures.ts +3 -0
  547. package/src/helpers/columnHelper.ts +4 -4
  548. package/src/helpers/metaHelper.ts +24 -0
  549. package/src/helpers/tableFeatures.ts +37 -5
  550. package/src/index.ts +8 -8
  551. package/src/static-functions.ts +1 -0
  552. package/src/store-reactivity-bindings.ts +1 -1
  553. package/src/types/Cell.ts +4 -2
  554. package/src/types/Column.ts +13 -9
  555. package/src/types/ColumnDef.ts +40 -10
  556. package/src/types/Header.ts +2 -2
  557. package/src/types/HeaderGroup.ts +6 -6
  558. package/src/types/Row.ts +6 -4
  559. package/src/types/RowModel.ts +19 -74
  560. package/src/types/RowModelFns.ts +10 -10
  561. package/src/types/Table.ts +52 -27
  562. package/src/types/TableFeatures.ts +392 -14
  563. package/src/types/TableOptions.ts +67 -14
  564. package/src/types/TableState.ts +15 -1
  565. package/src/types/type-utils.ts +8 -0
  566. package/src/utils.ts +60 -8
  567. package/src/worker/createTableWorker.ts +357 -0
  568. package/src/worker/createWorkerRowModel.ts +121 -0
  569. package/src/worker/initTableWorker.ts +164 -0
  570. package/src/worker/rebuildRowModel.ts +120 -0
  571. package/src/worker/serializeRowModel.ts +80 -0
  572. package/src/worker/tableWorkerProtocol.ts +105 -0
  573. package/dist/fns/aggregationFns.cjs +0 -161
  574. package/dist/fns/aggregationFns.cjs.map +0 -1
  575. package/dist/fns/aggregationFns.d.cts +0 -85
  576. package/dist/fns/aggregationFns.d.ts +0 -85
  577. package/dist/fns/aggregationFns.js +0 -151
  578. package/dist/fns/aggregationFns.js.map +0 -1
  579. package/dist/fns/filterFns.cjs +0 -201
  580. package/dist/fns/filterFns.cjs.map +0 -1
  581. package/dist/fns/filterFns.d.cts +0 -167
  582. package/dist/fns/filterFns.d.ts +0 -167
  583. package/dist/fns/filterFns.js +0 -185
  584. package/dist/fns/filterFns.js.map +0 -1
  585. package/dist/fns/sortFns.cjs +0 -118
  586. package/dist/fns/sortFns.cjs.map +0 -1
  587. package/dist/fns/sortFns.d.cts +0 -65
  588. package/dist/fns/sortFns.d.ts +0 -65
  589. package/dist/fns/sortFns.js +0 -110
  590. package/dist/fns/sortFns.js.map +0 -1
  591. package/skills/column-definitions/SKILL.md +0 -333
  592. package/skills/column-layout/SKILL.md +0 -328
  593. package/skills/column-layout/references/subsystems.md +0 -220
  594. package/skills/customizing-feature-behavior/SKILL.md +0 -416
  595. package/skills/filtering/SKILL.md +0 -357
  596. package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
  597. package/skills/row-expanding/SKILL.md +0 -348
  598. package/skills/setup/SKILL.md +0 -400
  599. package/skills/state-management/SKILL.md +0 -388
  600. package/src/fns/aggregationFns.ts +0 -245
  601. package/src/fns/filterFns.ts +0 -382
  602. package/src/fns/sortFns.ts +0 -217
@@ -0,0 +1,345 @@
1
+ import { constructAggregationFn } from './aggregationFeature.types'
2
+ import type { AggregationContext } from './aggregationFeature.types'
3
+
4
+ type RangeValue = Date | number
5
+
6
+ function isNumber(value: unknown): value is number {
7
+ return typeof value === 'number'
8
+ }
9
+
10
+ function isValidDate(value: unknown): value is Date {
11
+ return value instanceof Date && !Number.isNaN(value.getTime())
12
+ }
13
+
14
+ function getRangeKind(value: unknown): 'date' | 'number' | undefined {
15
+ if (isNumber(value)) return 'number'
16
+ if (isValidDate(value)) return 'date'
17
+ return undefined
18
+ }
19
+
20
+ function compareRangeValues(left: RangeValue, right: RangeValue) {
21
+ const leftValue = left instanceof Date ? left.getTime() : left
22
+ const rightValue = right instanceof Date ? right.getTime() : right
23
+ return leftValue - rightValue
24
+ }
25
+
26
+ function collectRangeValues(context: AggregationContext<any, any, unknown>) {
27
+ const values: Array<RangeValue> = []
28
+ let kind: 'date' | 'number' | undefined
29
+
30
+ for (let i = 0; i < context.rows.length; i++) {
31
+ const value = context.getValue(context.rows[i]!)
32
+ const valueKind = getRangeKind(value)
33
+ if (!valueKind) continue
34
+ kind ??= valueKind
35
+ if (valueKind === kind) values.push(value as RangeValue)
36
+ }
37
+
38
+ return values
39
+ }
40
+
41
+ /**
42
+ * Sums numeric selected-row values. Non-number values contribute zero. As in
43
+ * the previous API, `NaN` is a number and therefore propagates through the sum.
44
+ */
45
+ export const aggregationFn_sum = constructAggregationFn<
46
+ any,
47
+ any,
48
+ unknown,
49
+ number
50
+ >({
51
+ aggregate: (context) => {
52
+ let sum = 0
53
+ for (let i = 0; i < context.rows.length; i++) {
54
+ const value = context.getValue(context.rows[i]!)
55
+ sum += typeof value === 'number' ? value : 0
56
+ }
57
+ return sum
58
+ },
59
+ merge: ({ subRowResults }) => {
60
+ let sum = 0
61
+ for (let i = 0; i < subRowResults.length; i++) {
62
+ const value = subRowResults[i]
63
+ if (isNumber(value)) sum += value
64
+ }
65
+ return sum
66
+ },
67
+ })
68
+
69
+ /**
70
+ * Finds the minimum numeric or Date value from the selected rows. Invalid value
71
+ * types are ignored; `NaN` preserves the legacy numeric seeding behavior.
72
+ */
73
+ export const aggregationFn_min = constructAggregationFn<
74
+ any,
75
+ any,
76
+ unknown,
77
+ RangeValue | undefined
78
+ >({
79
+ aggregate: (context) => {
80
+ const values = collectRangeValues(context)
81
+ let result = values[0]
82
+ for (let i = 1; i < values.length; i++) {
83
+ if (compareRangeValues(values[i]!, result!) < 0) result = values[i]
84
+ }
85
+ return result
86
+ },
87
+ merge: ({ subRowResults }) => {
88
+ let result: RangeValue | undefined
89
+ let kind: 'date' | 'number' | undefined
90
+ for (let i = 0; i < subRowResults.length; i++) {
91
+ const value = subRowResults[i]
92
+ const valueKind = getRangeKind(value)
93
+ if (!valueKind) continue
94
+ if (value === undefined) continue
95
+ kind ??= valueKind
96
+ if (kind !== valueKind) continue
97
+ if (result === undefined || compareRangeValues(value, result) < 0) {
98
+ result = value
99
+ }
100
+ }
101
+ return result
102
+ },
103
+ })
104
+
105
+ /**
106
+ * Finds the maximum numeric or Date value from the selected rows. Invalid value
107
+ * types are ignored; `NaN` preserves the legacy numeric seeding behavior.
108
+ */
109
+ export const aggregationFn_max = constructAggregationFn<
110
+ any,
111
+ any,
112
+ unknown,
113
+ RangeValue | undefined
114
+ >({
115
+ aggregate: (context) => {
116
+ const values = collectRangeValues(context)
117
+ let result = values[0]
118
+ for (let i = 1; i < values.length; i++) {
119
+ if (compareRangeValues(values[i]!, result!) > 0) result = values[i]
120
+ }
121
+ return result
122
+ },
123
+ merge: ({ subRowResults }) => {
124
+ let result: RangeValue | undefined
125
+ let kind: 'date' | 'number' | undefined
126
+ for (let i = 0; i < subRowResults.length; i++) {
127
+ const value = subRowResults[i]
128
+ const valueKind = getRangeKind(value)
129
+ if (!valueKind) continue
130
+ if (value === undefined) continue
131
+ kind ??= valueKind
132
+ if (kind !== valueKind) continue
133
+ if (result === undefined || compareRangeValues(value, result) > 0) {
134
+ result = value
135
+ }
136
+ }
137
+ return result
138
+ },
139
+ })
140
+
141
+ /**
142
+ * Finds the minimum and maximum numeric or Date values from the selected rows.
143
+ * Empty inputs return
144
+ * `[undefined, undefined]`, preserving the previous built-in result shape.
145
+ */
146
+ export const aggregationFn_extent = constructAggregationFn<
147
+ any,
148
+ any,
149
+ unknown,
150
+ [RangeValue | undefined, RangeValue | undefined]
151
+ >({
152
+ aggregate: (context) => {
153
+ const values = collectRangeValues(context)
154
+ if (!values.length) return [undefined, undefined]
155
+ let min = values[0]!
156
+ let max = values[0]!
157
+ for (let i = 1; i < values.length; i++) {
158
+ const value = values[i]!
159
+ if (compareRangeValues(value, min) < 0) min = value
160
+ if (compareRangeValues(value, max) > 0) max = value
161
+ }
162
+ return [min, max]
163
+ },
164
+ merge: ({ subRowResults }) => {
165
+ let result: [RangeValue | undefined, RangeValue | undefined] = [
166
+ undefined,
167
+ undefined,
168
+ ]
169
+ let kind: 'date' | 'number' | undefined
170
+ for (let i = 0; i < subRowResults.length; i++) {
171
+ const extent = subRowResults[i]!
172
+ const min = extent[0]
173
+ const max = extent[1]
174
+ const valueKind = getRangeKind(min)
175
+ if (!valueKind || min === undefined || max === undefined) continue
176
+ kind ??= valueKind
177
+ if (kind !== valueKind) continue
178
+ if (result[0] === undefined) {
179
+ result = [min, max]
180
+ } else {
181
+ if (compareRangeValues(min, result[0]) < 0) {
182
+ result[0] = min
183
+ }
184
+ const currentMax = result[1]
185
+ if (
186
+ currentMax === undefined ||
187
+ compareRangeValues(max, currentMax) > 0
188
+ ) {
189
+ result[1] = max
190
+ }
191
+ }
192
+ }
193
+ return result
194
+ },
195
+ })
196
+
197
+ /**
198
+ * Averages number and number-like row values. Nullish and non-numeric values
199
+ * are ignored; other values retain the legacy unary-plus coercion behavior.
200
+ */
201
+ export const aggregationFn_mean = constructAggregationFn<
202
+ any,
203
+ any,
204
+ unknown,
205
+ number | undefined
206
+ >({
207
+ aggregate: (context) => {
208
+ let count = 0
209
+ let sum = 0
210
+ for (let i = 0; i < context.rows.length; i++) {
211
+ const value = context.getValue(context.rows[i]!)
212
+ if (value == null) continue
213
+ const numberValue = typeof value === 'number' ? value : +value
214
+ if (!Number.isNaN(numberValue)) {
215
+ count++
216
+ sum += numberValue
217
+ }
218
+ }
219
+ return count ? sum / count : undefined
220
+ },
221
+ })
222
+
223
+ /**
224
+ * Computes the median when every row value is a number. Returns `undefined`
225
+ * for empty inputs or when any value is non-numeric.
226
+ */
227
+ export const aggregationFn_median = constructAggregationFn<
228
+ any,
229
+ any,
230
+ unknown,
231
+ number | undefined
232
+ >({
233
+ aggregate: (context) => {
234
+ if (!context.rows.length) return undefined
235
+ const values = new Array<number>(context.rows.length)
236
+ for (let i = 0; i < context.rows.length; i++) {
237
+ const value = context.getValue(context.rows[i]!)
238
+ if (typeof value !== 'number') return undefined
239
+ values[i] = value
240
+ }
241
+ values.sort((a, b) => a - b)
242
+ const mid = Math.floor(values.length / 2)
243
+ return values.length % 2
244
+ ? values[mid]
245
+ : (values[mid - 1]! + values[mid]!) / 2
246
+ },
247
+ })
248
+
249
+ /** Collects distinct row values using JavaScript `Set` semantics. */
250
+ export const aggregationFn_unique = constructAggregationFn<
251
+ any,
252
+ any,
253
+ unknown,
254
+ Array<unknown>
255
+ >({
256
+ aggregate: (context) => {
257
+ const values = new Set<unknown>()
258
+ for (let i = 0; i < context.rows.length; i++) {
259
+ values.add(context.getValue(context.rows[i]!))
260
+ }
261
+ return Array.from(values)
262
+ },
263
+ })
264
+
265
+ /** Counts distinct row values using JavaScript `Set` semantics. */
266
+ export const aggregationFn_uniqueCount = constructAggregationFn<
267
+ any,
268
+ any,
269
+ unknown,
270
+ number
271
+ >({
272
+ aggregate: (context) => {
273
+ const values = new Set<unknown>()
274
+ for (let i = 0; i < context.rows.length; i++) {
275
+ values.add(context.getValue(context.rows[i]!))
276
+ }
277
+ return values.size
278
+ },
279
+ })
280
+
281
+ /** Counts rows, independently of the column's values. */
282
+ export const aggregationFn_count = constructAggregationFn<
283
+ any,
284
+ any,
285
+ unknown,
286
+ number
287
+ >({
288
+ aggregate: ({ rows }) => rows.length,
289
+ merge: ({ subRowResults }) => {
290
+ let count = 0
291
+ for (let i = 0; i < subRowResults.length; i++) {
292
+ const value = subRowResults[i]
293
+ if (isNumber(value)) count += value
294
+ }
295
+ return count
296
+ },
297
+ })
298
+
299
+ /** Returns the first row's value, including a nullish value. */
300
+ export const aggregationFn_first = constructAggregationFn<
301
+ any,
302
+ any,
303
+ unknown,
304
+ unknown
305
+ >({
306
+ aggregate: (context) =>
307
+ context.rows[0] ? context.getValue(context.rows[0]) : undefined,
308
+ merge: ({ subRowResults }) => subRowResults[0],
309
+ })
310
+
311
+ /** Returns the last row's value, including a nullish value. */
312
+ export const aggregationFn_last = constructAggregationFn<
313
+ any,
314
+ any,
315
+ unknown,
316
+ unknown
317
+ >({
318
+ aggregate: (context) => {
319
+ const row = context.rows[context.rows.length - 1]
320
+ return row ? context.getValue(row) : undefined
321
+ },
322
+ merge: ({ subRowResults }) => subRowResults[subRowResults.length - 1],
323
+ })
324
+
325
+ /**
326
+ * Full built-in registry. Register individual definitions for tree-shaking.
327
+ *
328
+ * @deprecated Import individual `aggregationFn_*` definitions instead for a
329
+ * smaller bundle. This registry remains available for compatibility.
330
+ */
331
+ export const aggregationFns = {
332
+ sum: aggregationFn_sum,
333
+ min: aggregationFn_min,
334
+ max: aggregationFn_max,
335
+ extent: aggregationFn_extent,
336
+ mean: aggregationFn_mean,
337
+ median: aggregationFn_median,
338
+ unique: aggregationFn_unique,
339
+ uniqueCount: aggregationFn_uniqueCount,
340
+ count: aggregationFn_count,
341
+ first: aggregationFn_first,
342
+ last: aggregationFn_last,
343
+ }
344
+
345
+ export type BuiltInAggregationFn = keyof typeof aggregationFns
@@ -1,11 +1,10 @@
1
- import type { Table } from '../../types/Table'
2
1
  import type { RowData } from '../../types/type-utils'
3
2
  import type { TableFeatures } from '../../types/TableFeatures'
4
3
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
5
4
 
6
5
  export interface Column_ColumnFaceting<
7
- TFeatures extends TableFeatures,
8
- TData extends RowData,
6
+ in out TFeatures extends TableFeatures,
7
+ in out TData extends RowData,
9
8
  > {
10
9
  /**
11
10
  * Computes min/max numeric facet values for this column.
@@ -25,74 +24,44 @@ export interface Column_ColumnFaceting<
25
24
  }
26
25
 
27
26
  export interface Table_RowModels_Faceted<
28
- TFeatures extends TableFeatures,
29
- TData extends RowData,
27
+ in out TFeatures extends TableFeatures,
28
+ in out TData extends RowData,
30
29
  > {
31
30
  /**
32
31
  * Computes min/max numeric facet values for the active faceting context.
33
32
  *
34
- * Requires a `facetedMinMaxValues` row-model factory in `rowModels`.
33
+ * Requires a `facetedMinMaxValues` row-model factory on the `features` option.
35
34
  */
36
35
  getFacetedMinMaxValues: () => undefined | [number, number]
37
36
  /**
38
37
  * Computes the row model used to derive facet values.
39
38
  *
40
- * Requires a `facetedRowModel` row-model factory in `rowModels`.
39
+ * Requires a `facetedRowModel` row-model factory on the `features` option.
41
40
  */
42
41
  getFacetedRowModel: () => RowModel<TFeatures, TData>
43
42
  /**
44
43
  * Computes unique facet values and occurrence counts.
45
44
  *
46
- * Requires a `facetedUniqueValues` row-model factory in `rowModels`.
45
+ * Requires a `facetedUniqueValues` row-model factory on the `features` option.
47
46
  */
48
47
  getFacetedUniqueValues: () => Map<any, number>
49
48
  }
50
49
 
51
- export interface CreateRowModel_Faceted<
52
- TFeatures extends TableFeatures,
53
- TData extends RowData,
54
- > {
55
- /**
56
- * Factory used to retrieve faceted min/max values. If using server-side
57
- * faceting, this is not required. To use client-side faceting, pass
58
- * `createFacetedMinMaxValues()` or implement your own factory.
59
- */
60
- facetedMinMaxValues?: (
61
- table: Table<TFeatures, TData>,
62
- columnId: string,
63
- ) => () => [number, number] | undefined
64
- /**
65
- * Factory used to retrieve the faceted row model. If using server-side
66
- * faceting, this is not required. To use client-side faceting, pass
67
- * `createFacetedRowModel()` or implement your own factory.
68
- */
69
- facetedRowModel?: (
70
- table: Table<TFeatures, TData>,
71
- columnId: string,
72
- ) => () => RowModel<TFeatures, TData>
73
- /**
74
- * Factory used to retrieve faceted unique values. If using server-side
75
- * faceting, this is not required. To use client-side faceting, pass
76
- * `createFacetedUniqueValues()` or implement your own factory.
77
- */
78
- facetedUniqueValues?: (
79
- table: Table<TFeatures, TData>,
80
- columnId: string,
81
- ) => () => Map<any, number>
82
- }
83
-
84
50
  export interface CachedRowModel_Faceted<
85
- TFeatures extends TableFeatures,
86
- TData extends RowData,
51
+ in out TFeatures extends TableFeatures,
52
+ in out TData extends RowData,
87
53
  > {
88
- facetedRowModel?: (columnId: string) => () => RowModel<TFeatures, TData>
89
- facetedMinMaxValues?: (columnId: string) => [number, number]
90
- facetedUniqueValues?: (columnId: string) => Map<any, number>
54
+ facetedRowModels?: Record<string, () => RowModel<TFeatures, TData>>
55
+ facetedMinMaxValues?: Record<string, () => undefined | [number, number]>
56
+ facetedUniqueValues?: Record<string, () => Map<any, number>>
57
+ globalFacetedRowModel?: () => RowModel<TFeatures, TData>
58
+ globalFacetedMinMaxValues?: () => undefined | [number, number]
59
+ globalFacetedUniqueValues?: () => Map<any, number>
91
60
  }
92
61
 
93
62
  export interface Table_ColumnFaceting<
94
- TFeatures extends TableFeatures,
95
- TData extends RowData,
63
+ in out TFeatures extends TableFeatures,
64
+ in out TData extends RowData,
96
65
  > {
97
66
  /**
98
67
  * Returns the min and max values for the global filter.
@@ -1,3 +1,4 @@
1
+ import { makeObjectMap } from '../../utils'
1
2
  import type { CellData, RowData } from '../../types/type-utils'
2
3
  import type { TableFeatures } from '../../types/TableFeatures'
3
4
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
@@ -23,9 +24,16 @@ export function column_getFacetedMinMaxValues<
23
24
  column: Column_Internal<TFeatures, TData, TValue>,
24
25
  table: Table_Internal<TFeatures, TData>,
25
26
  ): [number, number] | undefined {
26
- const facetedMinMaxValuesFn =
27
- table.options.rowModels?.facetedMinMaxValues?.(table, column.id) ??
28
- (() => undefined)
27
+ const facetedMinMaxValues = (table._rowModels.facetedMinMaxValues ??=
28
+ makeObjectMap())
29
+ let facetedMinMaxValuesFn = facetedMinMaxValues[column.id]
30
+
31
+ if (!facetedMinMaxValuesFn) {
32
+ facetedMinMaxValuesFn = facetedMinMaxValues[column.id] =
33
+ table.options.features.facetedMinMaxValues?.(table, column.id) ??
34
+ (() => undefined)
35
+ }
36
+
29
37
  return facetedMinMaxValuesFn()
30
38
  }
31
39
 
@@ -49,9 +57,17 @@ export function column_getFacetedRowModel<
49
57
  column: Column_Internal<TFeatures, TData, TValue> | undefined,
50
58
  table: Table_Internal<TFeatures, TData>,
51
59
  ): RowModel<TFeatures, TData> {
52
- const facetedRowModelFn =
53
- table.options.rowModels?.facetedRowModel?.(table, column?.id ?? '') ??
54
- (() => table.getPreFilteredRowModel())
60
+ const columnId = column?.id ?? ''
61
+ const facetedRowModels = (table._rowModels.facetedRowModels ??=
62
+ makeObjectMap())
63
+ let facetedRowModelFn = facetedRowModels[columnId]
64
+
65
+ if (!facetedRowModelFn) {
66
+ facetedRowModelFn = facetedRowModels[columnId] =
67
+ table.options.features.facetedRowModel?.(table, columnId) ??
68
+ (() => table.getPreFilteredRowModel())
69
+ }
70
+
55
71
  return facetedRowModelFn()
56
72
  }
57
73
 
@@ -74,9 +90,16 @@ export function column_getFacetedUniqueValues<
74
90
  column: Column_Internal<TFeatures, TData, TValue>,
75
91
  table: Table_Internal<TFeatures, TData>,
76
92
  ): Map<any, number> {
77
- const facetedUniqueValuesFn =
78
- table.options.rowModels?.facetedUniqueValues?.(table, column.id) ??
79
- (() => new Map<any, number>())
93
+ const facetedUniqueValues = (table._rowModels.facetedUniqueValues ??=
94
+ makeObjectMap())
95
+ let facetedUniqueValuesFn = facetedUniqueValues[column.id]
96
+
97
+ if (!facetedUniqueValuesFn) {
98
+ facetedUniqueValuesFn = facetedUniqueValues[column.id] =
99
+ table.options.features.facetedUniqueValues?.(table, column.id) ??
100
+ (() => new Map<any, number>())
101
+ }
102
+
80
103
  return facetedUniqueValuesFn()
81
104
  }
82
105
 
@@ -95,9 +118,13 @@ export function table_getGlobalFacetedMinMaxValues<
95
118
  TFeatures extends TableFeatures,
96
119
  TData extends RowData,
97
120
  >(table: Table_Internal<TFeatures, TData>): undefined | [number, number] {
98
- const facetedMinMaxValuesFn =
99
- table.options.rowModels?.facetedMinMaxValues?.(table, '__global__') ??
100
- (() => undefined)
121
+ if (!table._rowModels.globalFacetedMinMaxValues) {
122
+ table._rowModels.globalFacetedMinMaxValues =
123
+ table.options.features.facetedMinMaxValues?.(table, '__global__') ??
124
+ (() => undefined)
125
+ }
126
+
127
+ const facetedMinMaxValuesFn = table._rowModels.globalFacetedMinMaxValues
101
128
  return facetedMinMaxValuesFn()
102
129
  }
103
130
 
@@ -117,9 +144,13 @@ export function table_getGlobalFacetedRowModel<
117
144
  TFeatures extends TableFeatures,
118
145
  TData extends RowData,
119
146
  >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
120
- const facetedRowModelFn =
121
- table.options.rowModels?.facetedRowModel?.(table, '__global__') ??
122
- (() => table.getPreFilteredRowModel())
147
+ if (!table._rowModels.globalFacetedRowModel) {
148
+ table._rowModels.globalFacetedRowModel =
149
+ table.options.features.facetedRowModel?.(table, '__global__') ??
150
+ (() => table.getPreFilteredRowModel())
151
+ }
152
+
153
+ const facetedRowModelFn = table._rowModels.globalFacetedRowModel
123
154
  return facetedRowModelFn()
124
155
  }
125
156
 
@@ -138,8 +169,12 @@ export function table_getGlobalFacetedUniqueValues<
138
169
  TFeatures extends TableFeatures,
139
170
  TData extends RowData,
140
171
  >(table: Table_Internal<TFeatures, TData>): Map<any, number> {
141
- const facetedUniqueValuesFn =
142
- table.options.rowModels?.facetedUniqueValues?.(table, '__global__') ??
143
- (() => new Map())
172
+ if (!table._rowModels.globalFacetedUniqueValues) {
173
+ table._rowModels.globalFacetedUniqueValues =
174
+ table.options.features.facetedUniqueValues?.(table, '__global__') ??
175
+ (() => new Map())
176
+ }
177
+
178
+ const facetedUniqueValuesFn = table._rowModels.globalFacetedUniqueValues
144
179
  return facetedUniqueValuesFn()
145
180
  }
@@ -1,5 +1,9 @@
1
1
  import { callMemoOrStaticFn, tableMemo } from '../../utils'
2
- import { column_getFacetedRowModel } from './columnFacetingFeature.utils'
2
+ import { column_getCanGlobalFilter } from '../global-filtering/globalFilteringFeature.utils'
3
+ import {
4
+ column_getFacetedRowModel,
5
+ table_getGlobalFacetedRowModel,
6
+ } from './columnFacetingFeature.utils'
3
7
  import type { Row } from '../../types/Row'
4
8
  import type { Table, Table_Internal } from '../../types/Table'
5
9
  import type { TableFeatures } from '../../types/TableFeatures'
@@ -21,9 +25,18 @@ export function createFacetedMinMaxValues<
21
25
  const table = _table as unknown as Table_Internal<TFeatures, TData>
22
26
  return tableMemo({
23
27
  feature: 'columnFacetingFeature',
24
- fn: (flatRows) => _createFacetedMinMaxValues(columnId, flatRows),
28
+ fn: (flatRows) => _createFacetedMinMaxValues(table, columnId, flatRows),
25
29
  fnName: 'table.getFacetedMinMaxValues',
26
30
  memoDeps: () => {
31
+ if (columnId === '__global__') {
32
+ return [
33
+ callMemoOrStaticFn(
34
+ table,
35
+ 'getGlobalFacetedRowModel',
36
+ table_getGlobalFacetedRowModel,
37
+ ).flatRows,
38
+ ]
39
+ }
27
40
  const column = table.getColumn(columnId)
28
41
  if (!column) return [table.getPreFilteredRowModel().flatRows]
29
42
  return [
@@ -44,21 +57,34 @@ function _createFacetedMinMaxValues<
44
57
  TFeatures extends TableFeatures,
45
58
  TData extends RowData = any,
46
59
  >(
60
+ table: Table_Internal<TFeatures, TData>,
47
61
  columnId: string,
48
62
  flatRows: Array<Row<TFeatures, TData>>,
49
63
  ): undefined | [number, number] {
50
64
  if (!flatRows.length) return undefined
51
65
 
66
+ // The global context aggregates values across every column that
67
+ // participates in global filtering
68
+ const columnIds =
69
+ columnId === '__global__'
70
+ ? table
71
+ .getAllLeafColumns()
72
+ .filter((column) => column_getCanGlobalFilter(column))
73
+ .map((column) => column.id)
74
+ : [columnId]
75
+
52
76
  let facetedMinValue = Number.POSITIVE_INFINITY
53
77
  let facetedMaxValue = Number.NEGATIVE_INFINITY
54
78
  let foundAny = false
55
79
 
56
80
  for (let i = 0; i < flatRows.length; i++) {
57
- const value = Number(flatRows[i]!.getValue(columnId))
58
- if (Number.isNaN(value)) continue
59
- foundAny = true
60
- if (value < facetedMinValue) facetedMinValue = value
61
- if (value > facetedMaxValue) facetedMaxValue = value
81
+ for (let c = 0; c < columnIds.length; c++) {
82
+ const value = Number(flatRows[i]!.getValue(columnIds[c]!))
83
+ if (Number.isNaN(value)) continue
84
+ foundAny = true
85
+ if (value < facetedMinValue) facetedMinValue = value
86
+ if (value > facetedMaxValue) facetedMaxValue = value
87
+ }
62
88
  }
63
89
 
64
90
  if (!foundAny) return undefined
@@ -67,7 +67,14 @@ function _createFacetedRowModel<
67
67
  if (id !== columnId) filterableIds.push(id)
68
68
  }
69
69
  }
70
- if (globalFilter) filterableIds.push('__global__')
70
+ // The global context excludes the global filter itself, mirroring how a
71
+ // column's faceted model excludes that column's own filter
72
+ if (globalFilter && columnId !== '__global__')
73
+ filterableIds.push('__global__')
74
+
75
+ if (!filterableIds.length) {
76
+ return preRowModel
77
+ }
71
78
 
72
79
  const filterRowsImpl = (
73
80
  row: Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>,