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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/README.md +2 -0
  2. package/dist/core/cells/constructCell.cjs +1 -4
  3. package/dist/core/cells/constructCell.cjs.map +1 -1
  4. package/dist/core/cells/constructCell.d.cts +4 -4
  5. package/dist/core/cells/constructCell.d.ts +4 -4
  6. package/dist/core/cells/constructCell.js +1 -4
  7. package/dist/core/cells/constructCell.js.map +1 -1
  8. package/dist/core/cells/coreCellsFeature.types.d.cts +7 -7
  9. package/dist/core/cells/coreCellsFeature.types.d.ts +7 -7
  10. package/dist/core/cells/coreCellsFeature.utils.d.cts +4 -4
  11. package/dist/core/cells/coreCellsFeature.utils.d.ts +4 -4
  12. package/dist/core/columns/constructColumn.cjs +4 -5
  13. package/dist/core/columns/constructColumn.cjs.map +1 -1
  14. package/dist/core/columns/constructColumn.d.cts +3 -3
  15. package/dist/core/columns/constructColumn.d.ts +3 -3
  16. package/dist/core/columns/constructColumn.js +4 -5
  17. package/dist/core/columns/constructColumn.js.map +1 -1
  18. package/dist/core/columns/coreColumnsFeature.cjs +12 -18
  19. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  20. package/dist/core/columns/coreColumnsFeature.js +12 -18
  21. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  22. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
  23. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
  24. package/dist/core/columns/coreColumnsFeature.utils.cjs +4 -8
  25. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  26. package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
  27. package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
  28. package/dist/core/columns/coreColumnsFeature.utils.js +5 -9
  29. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  30. package/dist/core/coreFeatures.cjs.map +1 -1
  31. package/dist/core/coreFeatures.d.cts +1 -1
  32. package/dist/core/coreFeatures.d.ts +1 -1
  33. package/dist/core/coreFeatures.js.map +1 -1
  34. package/dist/core/headers/buildHeaderGroups.cjs +1 -2
  35. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  36. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  37. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  38. package/dist/core/headers/buildHeaderGroups.js +1 -2
  39. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  40. package/dist/core/headers/constructHeader.cjs +1 -4
  41. package/dist/core/headers/constructHeader.cjs.map +1 -1
  42. package/dist/core/headers/constructHeader.d.cts +2 -2
  43. package/dist/core/headers/constructHeader.d.ts +2 -2
  44. package/dist/core/headers/constructHeader.js +1 -4
  45. package/dist/core/headers/constructHeader.js.map +1 -1
  46. package/dist/core/headers/coreHeadersFeature.cjs +8 -11
  47. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  48. package/dist/core/headers/coreHeadersFeature.js +8 -11
  49. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  50. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  51. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  52. package/dist/core/headers/coreHeadersFeature.utils.cjs +8 -10
  53. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  54. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  55. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  56. package/dist/core/headers/coreHeadersFeature.utils.js +8 -10
  57. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  58. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +7 -15
  59. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -15
  60. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +8 -26
  61. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  62. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +16 -16
  63. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +16 -16
  64. package/dist/core/row-models/coreRowModelsFeature.utils.js +8 -26
  65. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  66. package/dist/core/row-models/createCoreRowModel.cjs +4 -6
  67. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  68. package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
  69. package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
  70. package/dist/core/row-models/createCoreRowModel.js +5 -7
  71. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  72. package/dist/core/rows/constructRow.cjs +6 -10
  73. package/dist/core/rows/constructRow.cjs.map +1 -1
  74. package/dist/core/rows/constructRow.d.cts +2 -2
  75. package/dist/core/rows/constructRow.d.ts +2 -2
  76. package/dist/core/rows/constructRow.js +7 -10
  77. package/dist/core/rows/constructRow.js.map +1 -1
  78. package/dist/core/rows/coreRowsFeature.cjs +18 -2
  79. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  80. package/dist/core/rows/coreRowsFeature.js +19 -3
  81. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  82. package/dist/core/rows/coreRowsFeature.types.d.cts +41 -7
  83. package/dist/core/rows/coreRowsFeature.types.d.ts +41 -7
  84. package/dist/core/rows/coreRowsFeature.utils.cjs +62 -8
  85. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  86. package/dist/core/rows/coreRowsFeature.utils.d.cts +24 -5
  87. package/dist/core/rows/coreRowsFeature.utils.d.ts +24 -5
  88. package/dist/core/rows/coreRowsFeature.utils.js +61 -10
  89. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  90. package/dist/core/table/constructTable.cjs +24 -14
  91. package/dist/core/table/constructTable.cjs.map +1 -1
  92. package/dist/core/table/constructTable.d.cts +1 -1
  93. package/dist/core/table/constructTable.d.ts +1 -1
  94. package/dist/core/table/constructTable.js +24 -14
  95. package/dist/core/table/constructTable.js.map +1 -1
  96. package/dist/core/table/coreTablesFeature.types.d.cts +32 -19
  97. package/dist/core/table/coreTablesFeature.types.d.ts +32 -19
  98. package/dist/core/table/coreTablesFeature.utils.cjs +38 -14
  99. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  100. package/dist/core/table/coreTablesFeature.utils.d.cts +10 -7
  101. package/dist/core/table/coreTablesFeature.utils.d.ts +10 -7
  102. package/dist/core/table/coreTablesFeature.utils.js +38 -14
  103. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  104. package/dist/experimental-worker-plugin.cjs +14 -0
  105. package/dist/experimental-worker-plugin.d.cts +5 -0
  106. package/dist/experimental-worker-plugin.d.ts +5 -0
  107. package/dist/experimental-worker-plugin.js +6 -0
  108. package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
  109. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  110. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  111. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  112. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
  113. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
  114. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
  115. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  116. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
  117. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
  118. package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
  119. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  120. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
  121. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  122. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  123. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  124. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  125. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  126. package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
  127. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  128. package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
  129. package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
  130. package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
  131. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  132. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
  133. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  134. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  135. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  136. package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
  137. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  138. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  139. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  140. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  141. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  142. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
  143. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
  144. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
  145. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  146. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
  147. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
  148. package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
  149. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  150. package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
  151. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  152. package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
  153. package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
  154. package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
  155. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  156. package/dist/features/column-filtering/filterFns.cjs +399 -0
  157. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  158. package/dist/features/column-filtering/filterFns.d.cts +210 -0
  159. package/dist/features/column-filtering/filterFns.d.ts +210 -0
  160. package/dist/features/column-filtering/filterFns.js +375 -0
  161. package/dist/features/column-filtering/filterFns.js.map +1 -0
  162. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  163. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  164. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  165. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  166. package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
  167. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  168. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  169. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  170. package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
  171. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  172. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
  173. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
  174. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
  175. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  176. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
  177. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
  178. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
  179. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  180. package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
  181. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  182. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
  183. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
  184. package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
  185. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  186. package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
  187. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  188. package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
  189. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  190. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
  191. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
  192. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
  193. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  194. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
  195. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
  196. package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
  197. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  198. package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
  199. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  200. package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
  201. package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
  202. package/dist/features/column-pinning/columnPinningFeature.js +125 -144
  203. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  204. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
  205. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
  206. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
  207. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  208. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
  209. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
  210. package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
  211. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  212. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  213. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  214. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
  215. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  216. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  217. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  218. package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
  219. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  220. package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
  221. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  222. package/dist/features/column-sizing/columnSizingFeature.js +34 -68
  223. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  224. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
  225. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
  226. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
  227. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  228. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
  229. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
  230. package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
  231. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  232. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
  233. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  234. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
  235. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  236. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
  237. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
  238. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
  239. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  240. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
  241. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
  242. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
  243. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  244. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  245. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  246. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  247. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  248. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  249. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  250. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
  251. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  252. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
  253. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
  254. package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
  255. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  256. package/dist/features/row-aggregation/aggregationFns.cjs +246 -0
  257. package/dist/features/row-aggregation/aggregationFns.cjs.map +1 -0
  258. package/dist/features/row-aggregation/aggregationFns.d.cts +68 -0
  259. package/dist/features/row-aggregation/aggregationFns.d.ts +68 -0
  260. package/dist/features/row-aggregation/aggregationFns.js +235 -0
  261. package/dist/features/row-aggregation/aggregationFns.js.map +1 -0
  262. package/dist/features/row-aggregation/rowAggregationFeature.cjs +39 -0
  263. package/dist/features/row-aggregation/rowAggregationFeature.cjs.map +1 -0
  264. package/dist/features/row-aggregation/rowAggregationFeature.d.cts +10 -0
  265. package/dist/features/row-aggregation/rowAggregationFeature.d.ts +10 -0
  266. package/dist/features/row-aggregation/rowAggregationFeature.js +39 -0
  267. package/dist/features/row-aggregation/rowAggregationFeature.js.map +1 -0
  268. package/dist/features/row-aggregation/rowAggregationFeature.types.cjs +13 -0
  269. package/dist/features/row-aggregation/rowAggregationFeature.types.cjs.map +1 -0
  270. package/dist/features/row-aggregation/rowAggregationFeature.types.d.cts +195 -0
  271. package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +195 -0
  272. package/dist/features/row-aggregation/rowAggregationFeature.types.js +12 -0
  273. package/dist/features/row-aggregation/rowAggregationFeature.types.js.map +1 -0
  274. package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs +212 -0
  275. package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs.map +1 -0
  276. package/dist/features/row-aggregation/rowAggregationFeature.utils.d.cts +34 -0
  277. package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +34 -0
  278. package/dist/features/row-aggregation/rowAggregationFeature.utils.js +206 -0
  279. package/dist/features/row-aggregation/rowAggregationFeature.utils.js.map +1 -0
  280. package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
  281. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  282. package/dist/features/row-expanding/createExpandedRowModel.d.cts +2 -2
  283. package/dist/features/row-expanding/createExpandedRowModel.d.ts +2 -2
  284. package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
  285. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  286. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +6 -15
  287. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -15
  288. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +28 -26
  289. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  290. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  291. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  292. package/dist/features/row-expanding/rowExpandingFeature.utils.js +29 -27
  293. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  294. package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
  295. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  296. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +2 -2
  297. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +2 -2
  298. package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
  299. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  300. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +5 -14
  301. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -14
  302. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +9 -15
  303. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  304. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  305. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  306. package/dist/features/row-pagination/rowPaginationFeature.utils.js +9 -15
  307. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  308. package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
  309. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  310. package/dist/features/row-pinning/rowPinningFeature.js +4 -16
  311. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  312. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  313. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  314. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +9 -14
  315. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  316. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  317. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  318. package/dist/features/row-pinning/rowPinningFeature.utils.js +9 -14
  319. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  320. package/dist/features/row-selection/rowSelectionFeature.cjs +66 -22
  321. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  322. package/dist/features/row-selection/rowSelectionFeature.js +67 -23
  323. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  324. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +49 -11
  325. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +49 -11
  326. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +128 -72
  327. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  328. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +57 -30
  329. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +57 -30
  330. package/dist/features/row-selection/rowSelectionFeature.utils.js +129 -74
  331. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  332. package/dist/features/row-sorting/createSortedRowModel.cjs +69 -50
  333. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  334. package/dist/features/row-sorting/createSortedRowModel.d.cts +10 -4
  335. package/dist/features/row-sorting/createSortedRowModel.d.ts +10 -4
  336. package/dist/features/row-sorting/createSortedRowModel.js +70 -51
  337. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  338. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +54 -22
  339. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -22
  340. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +31 -17
  341. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  342. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  343. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  344. package/dist/features/row-sorting/rowSortingFeature.utils.js +31 -17
  345. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  346. package/dist/features/row-sorting/sortFns.cjs +226 -0
  347. package/dist/features/row-sorting/sortFns.cjs.map +1 -0
  348. package/dist/features/row-sorting/sortFns.d.cts +98 -0
  349. package/dist/features/row-sorting/sortFns.d.ts +98 -0
  350. package/dist/features/row-sorting/sortFns.js +217 -0
  351. package/dist/features/row-sorting/sortFns.js.map +1 -0
  352. package/dist/features/stockFeatures.cjs +2 -0
  353. package/dist/features/stockFeatures.cjs.map +1 -1
  354. package/dist/features/stockFeatures.d.cts +2 -0
  355. package/dist/features/stockFeatures.d.ts +2 -0
  356. package/dist/features/stockFeatures.js +2 -0
  357. package/dist/features/stockFeatures.js.map +1 -1
  358. package/dist/flex-render.d.cts +1 -1
  359. package/dist/flex-render.d.ts +1 -1
  360. package/dist/helpers/columnHelper.cjs.map +1 -1
  361. package/dist/helpers/columnHelper.d.cts +2 -2
  362. package/dist/helpers/columnHelper.d.ts +2 -2
  363. package/dist/helpers/columnHelper.js.map +1 -1
  364. package/dist/helpers/metaHelper.cjs +30 -0
  365. package/dist/helpers/metaHelper.cjs.map +1 -0
  366. package/dist/helpers/metaHelper.d.cts +26 -0
  367. package/dist/helpers/metaHelper.d.ts +26 -0
  368. package/dist/helpers/metaHelper.js +29 -0
  369. package/dist/helpers/metaHelper.js.map +1 -0
  370. package/dist/helpers/tableFeatures.cjs +32 -3
  371. package/dist/helpers/tableFeatures.cjs.map +1 -1
  372. package/dist/helpers/tableFeatures.d.cts +34 -5
  373. package/dist/helpers/tableFeatures.d.ts +34 -5
  374. package/dist/helpers/tableFeatures.js +32 -3
  375. package/dist/helpers/tableFeatures.js.map +1 -1
  376. package/dist/index.cjs +23 -3
  377. package/dist/index.d.cts +31 -28
  378. package/dist/index.d.ts +31 -28
  379. package/dist/index.js +8 -5
  380. package/dist/static-functions.cjs +30 -19
  381. package/dist/static-functions.d.cts +8 -7
  382. package/dist/static-functions.d.ts +8 -7
  383. package/dist/static-functions.js +8 -7
  384. package/dist/store-reactivity-bindings.cjs +3 -3
  385. package/dist/store-reactivity-bindings.cjs.map +1 -1
  386. package/dist/store-reactivity-bindings.d.cts +1 -1
  387. package/dist/store-reactivity-bindings.d.ts +1 -1
  388. package/dist/store-reactivity-bindings.js +3 -3
  389. package/dist/store-reactivity-bindings.js.map +1 -1
  390. package/dist/types/Cell.d.cts +4 -2
  391. package/dist/types/Cell.d.ts +4 -2
  392. package/dist/types/Column.d.cts +15 -15
  393. package/dist/types/Column.d.ts +15 -15
  394. package/dist/types/ColumnDef.d.cts +30 -14
  395. package/dist/types/ColumnDef.d.ts +30 -14
  396. package/dist/types/Header.d.cts +2 -2
  397. package/dist/types/Header.d.ts +2 -2
  398. package/dist/types/HeaderGroup.d.cts +2 -2
  399. package/dist/types/HeaderGroup.d.ts +2 -2
  400. package/dist/types/Row.d.cts +6 -4
  401. package/dist/types/Row.d.ts +6 -4
  402. package/dist/types/RowModel.d.cts +11 -23
  403. package/dist/types/RowModel.d.ts +11 -23
  404. package/dist/types/RowModelFns.d.cts +4 -4
  405. package/dist/types/RowModelFns.d.ts +4 -4
  406. package/dist/types/Table.d.cts +26 -31
  407. package/dist/types/Table.d.ts +26 -31
  408. package/dist/types/TableFeatures.d.cts +350 -22
  409. package/dist/types/TableFeatures.d.ts +350 -22
  410. package/dist/types/TableOptions.d.cts +22 -14
  411. package/dist/types/TableOptions.d.ts +22 -14
  412. package/dist/types/TableState.d.cts +6 -6
  413. package/dist/types/TableState.d.ts +6 -6
  414. package/dist/types/type-utils.d.cts +8 -1
  415. package/dist/types/type-utils.d.ts +8 -1
  416. package/dist/utils.cjs +51 -29
  417. package/dist/utils.cjs.map +1 -1
  418. package/dist/utils.d.cts +30 -8
  419. package/dist/utils.d.ts +30 -8
  420. package/dist/utils.js +49 -30
  421. package/dist/utils.js.map +1 -1
  422. package/dist/worker/createTableWorker.cjs +189 -0
  423. package/dist/worker/createTableWorker.cjs.map +1 -0
  424. package/dist/worker/createTableWorker.d.cts +102 -0
  425. package/dist/worker/createTableWorker.d.ts +102 -0
  426. package/dist/worker/createTableWorker.js +186 -0
  427. package/dist/worker/createTableWorker.js.map +1 -0
  428. package/dist/worker/createWorkerRowModel.cjs +78 -0
  429. package/dist/worker/createWorkerRowModel.cjs.map +1 -0
  430. package/dist/worker/createWorkerRowModel.d.cts +42 -0
  431. package/dist/worker/createWorkerRowModel.d.ts +42 -0
  432. package/dist/worker/createWorkerRowModel.js +78 -0
  433. package/dist/worker/createWorkerRowModel.js.map +1 -0
  434. package/dist/worker/initTableWorker.cjs +100 -0
  435. package/dist/worker/initTableWorker.cjs.map +1 -0
  436. package/dist/worker/initTableWorker.d.cts +33 -0
  437. package/dist/worker/initTableWorker.d.ts +33 -0
  438. package/dist/worker/initTableWorker.js +100 -0
  439. package/dist/worker/initTableWorker.js.map +1 -0
  440. package/dist/worker/rebuildRowModel.cjs +72 -0
  441. package/dist/worker/rebuildRowModel.cjs.map +1 -0
  442. package/dist/worker/rebuildRowModel.d.cts +9 -0
  443. package/dist/worker/rebuildRowModel.d.ts +9 -0
  444. package/dist/worker/rebuildRowModel.js +72 -0
  445. package/dist/worker/rebuildRowModel.js.map +1 -0
  446. package/dist/worker/serializeRowModel.cjs +53 -0
  447. package/dist/worker/serializeRowModel.cjs.map +1 -0
  448. package/dist/worker/serializeRowModel.js +52 -0
  449. package/dist/worker/serializeRowModel.js.map +1 -0
  450. package/dist/worker/tableWorkerProtocol.cjs +29 -0
  451. package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
  452. package/dist/worker/tableWorkerProtocol.d.cts +88 -0
  453. package/dist/worker/tableWorkerProtocol.d.ts +88 -0
  454. package/dist/worker/tableWorkerProtocol.js +27 -0
  455. package/dist/worker/tableWorkerProtocol.js.map +1 -0
  456. package/package.json +8 -3
  457. package/skills/aggregation/SKILL.md +141 -0
  458. package/skills/api-not-found/SKILL.md +113 -0
  459. package/skills/client-vs-server/SKILL.md +164 -0
  460. package/skills/column-faceting/SKILL.md +97 -0
  461. package/skills/column-filtering/SKILL.md +87 -0
  462. package/skills/column-ordering/SKILL.md +75 -0
  463. package/skills/column-pinning/SKILL.md +89 -0
  464. package/skills/column-resizing/SKILL.md +91 -0
  465. package/skills/column-sizing/SKILL.md +72 -0
  466. package/skills/column-visibility/SKILL.md +75 -0
  467. package/skills/core/SKILL.md +175 -0
  468. package/skills/custom-features/SKILL.md +235 -0
  469. package/skills/expanding/SKILL.md +80 -0
  470. package/skills/global-filtering/SKILL.md +84 -0
  471. package/skills/grouping/SKILL.md +51 -401
  472. package/skills/migrate-v8-to-v9/SKILL.md +274 -416
  473. package/skills/pagination/SKILL.md +37 -344
  474. package/skills/row-pinning/SKILL.md +47 -234
  475. package/skills/row-selection/SKILL.md +75 -302
  476. package/skills/sorting/SKILL.md +45 -303
  477. package/skills/table-features/SKILL.md +159 -0
  478. package/skills/typescript/SKILL.md +126 -0
  479. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  480. package/src/core/columns/constructColumn.ts +6 -0
  481. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  482. package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
  483. package/src/core/coreFeatures.ts +1 -1
  484. package/src/core/headers/buildHeaderGroups.ts +4 -2
  485. package/src/core/headers/coreHeadersFeature.types.ts +12 -12
  486. package/src/core/headers/coreHeadersFeature.utils.ts +7 -8
  487. package/src/core/row-models/coreRowModelsFeature.types.ts +6 -20
  488. package/src/core/row-models/coreRowModelsFeature.utils.ts +8 -8
  489. package/src/core/row-models/createCoreRowModel.ts +7 -6
  490. package/src/core/rows/constructRow.ts +4 -2
  491. package/src/core/rows/coreRowsFeature.ts +21 -0
  492. package/src/core/rows/coreRowsFeature.types.ts +45 -8
  493. package/src/core/rows/coreRowsFeature.utils.ts +93 -5
  494. package/src/core/table/constructTable.ts +44 -6
  495. package/src/core/table/coreTablesFeature.types.ts +45 -20
  496. package/src/core/table/coreTablesFeature.utils.ts +59 -19
  497. package/src/experimental-worker-plugin.ts +22 -0
  498. package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
  499. package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
  500. package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
  501. package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
  502. package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
  503. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  504. package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
  505. package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
  506. package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
  507. package/src/features/column-filtering/filterFns.ts +533 -0
  508. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  509. package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
  510. package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
  511. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
  512. package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
  513. package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
  514. package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
  515. package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
  516. package/src/features/column-pinning/columnPinningFeature.ts +76 -59
  517. package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
  518. package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
  519. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  520. package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
  521. package/src/features/column-sizing/columnSizingFeature.ts +24 -24
  522. package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
  523. package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
  524. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  525. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  526. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
  527. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  528. package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
  529. package/src/features/row-aggregation/aggregationFns.ts +345 -0
  530. package/src/features/row-aggregation/rowAggregationFeature.ts +60 -0
  531. package/src/features/row-aggregation/rowAggregationFeature.types.ts +339 -0
  532. package/src/features/row-aggregation/rowAggregationFeature.utils.ts +430 -0
  533. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
  534. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  535. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  536. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
  537. package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
  538. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  539. package/src/features/row-selection/rowSelectionFeature.ts +53 -3
  540. package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
  541. package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
  542. package/src/features/row-sorting/createSortedRowModel.ts +107 -75
  543. package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
  544. package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
  545. package/src/features/row-sorting/sortFns.ts +366 -0
  546. package/src/features/stockFeatures.ts +3 -0
  547. package/src/helpers/columnHelper.ts +4 -4
  548. package/src/helpers/metaHelper.ts +24 -0
  549. package/src/helpers/tableFeatures.ts +37 -5
  550. package/src/index.ts +8 -8
  551. package/src/static-functions.ts +1 -0
  552. package/src/store-reactivity-bindings.ts +1 -1
  553. package/src/types/Cell.ts +4 -2
  554. package/src/types/Column.ts +13 -9
  555. package/src/types/ColumnDef.ts +40 -10
  556. package/src/types/Header.ts +2 -2
  557. package/src/types/HeaderGroup.ts +6 -6
  558. package/src/types/Row.ts +6 -4
  559. package/src/types/RowModel.ts +19 -74
  560. package/src/types/RowModelFns.ts +10 -10
  561. package/src/types/Table.ts +52 -27
  562. package/src/types/TableFeatures.ts +392 -14
  563. package/src/types/TableOptions.ts +67 -14
  564. package/src/types/TableState.ts +15 -1
  565. package/src/types/type-utils.ts +8 -0
  566. package/src/utils.ts +60 -8
  567. package/src/worker/createTableWorker.ts +357 -0
  568. package/src/worker/createWorkerRowModel.ts +121 -0
  569. package/src/worker/initTableWorker.ts +164 -0
  570. package/src/worker/rebuildRowModel.ts +120 -0
  571. package/src/worker/serializeRowModel.ts +80 -0
  572. package/src/worker/tableWorkerProtocol.ts +105 -0
  573. package/dist/fns/aggregationFns.cjs +0 -161
  574. package/dist/fns/aggregationFns.cjs.map +0 -1
  575. package/dist/fns/aggregationFns.d.cts +0 -85
  576. package/dist/fns/aggregationFns.d.ts +0 -85
  577. package/dist/fns/aggregationFns.js +0 -151
  578. package/dist/fns/aggregationFns.js.map +0 -1
  579. package/dist/fns/filterFns.cjs +0 -201
  580. package/dist/fns/filterFns.cjs.map +0 -1
  581. package/dist/fns/filterFns.d.cts +0 -167
  582. package/dist/fns/filterFns.d.ts +0 -167
  583. package/dist/fns/filterFns.js +0 -185
  584. package/dist/fns/filterFns.js.map +0 -1
  585. package/dist/fns/sortFns.cjs +0 -118
  586. package/dist/fns/sortFns.cjs.map +0 -1
  587. package/dist/fns/sortFns.d.cts +0 -65
  588. package/dist/fns/sortFns.d.ts +0 -65
  589. package/dist/fns/sortFns.js +0 -110
  590. package/dist/fns/sortFns.js.map +0 -1
  591. package/skills/column-definitions/SKILL.md +0 -333
  592. package/skills/column-layout/SKILL.md +0 -328
  593. package/skills/column-layout/references/subsystems.md +0 -220
  594. package/skills/customizing-feature-behavior/SKILL.md +0 -416
  595. package/skills/filtering/SKILL.md +0 -357
  596. package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
  597. package/skills/row-expanding/SKILL.md +0 -348
  598. package/skills/setup/SKILL.md +0 -400
  599. package/skills/state-management/SKILL.md +0 -388
  600. package/src/fns/aggregationFns.ts +0 -245
  601. package/src/fns/filterFns.ts +0 -382
  602. package/src/fns/sortFns.ts +0 -217
@@ -0,0 +1,366 @@
1
+ import type { CreatedSortFn, SortFnDef } from './rowSortingFeature.types'
2
+ import type { RowData } from '../../types/type-utils'
3
+ import type { TableFeatures } from '../../types/TableFeatures'
4
+ import type { Row } from '../../types/Row'
5
+
6
+ /**
7
+ * Regular expression used to split mixed text and numeric chunks.
8
+ *
9
+ * The alphanumeric sort functions use these chunks for natural sorting of
10
+ * strings like `item2` before `item10`.
11
+ */
12
+ export const reSplitAlphaNumeric = /([0-9]+)/gm
13
+
14
+ /**
15
+ * Builds a `SortFn` from a value-level comparator plus an optional
16
+ * `resolveDataValue` normalizer.
17
+ *
18
+ * The `sort` comparator receives both rows' data values, each already passed
19
+ * through `resolveDataValue` when one is defined. Keeping normalization in the
20
+ * resolver means a variant of an existing sorting function only has to swap
21
+ * the resolver, not re-implement the comparison.
22
+ *
23
+ * The definition is attached to the returned function, so a variant can be
24
+ * created by spreading a built-in sorting function and overriding what
25
+ * differs:
26
+ *
27
+ * ```ts
28
+ * const stripDiacritics = (value: string) =>
29
+ * value.normalize('NFD').replace(/\p{Diacritic}/gu, '')
30
+ *
31
+ * const alphanumericIgnoreDiacritics = constructSortFn({
32
+ * ...sortFn_alphanumeric,
33
+ * resolveDataValue: (value) =>
34
+ * stripDiacritics(sortFn_alphanumeric.resolveDataValue!(value)),
35
+ * })
36
+ * ```
37
+ */
38
+ export function constructSortFn<
39
+ TFeatures extends TableFeatures = any,
40
+ TData extends RowData = any,
41
+ >(def: SortFnDef<TFeatures, TData>): CreatedSortFn<TFeatures, TData> {
42
+ const sortFn: CreatedSortFn<TFeatures, TData> = Object.assign(
43
+ <TRowFeatures extends TableFeatures, TRowData extends RowData>(
44
+ rowA: Row<TRowFeatures, TRowData>,
45
+ rowB: Row<TRowFeatures, TRowData>,
46
+ columnId: string,
47
+ ): number => {
48
+ let dataValueA = rowA.getValue(columnId)
49
+ let dataValueB = rowB.getValue(columnId)
50
+ const resolveDataValue = sortFn.resolveDataValue
51
+ if (resolveDataValue) {
52
+ dataValueA = resolveDataValue(dataValueA)
53
+ dataValueB = resolveDataValue(dataValueB)
54
+ }
55
+ // The def's comparator is typed against the factory's TFeatures/TData;
56
+ // the caller's row generics are erased at this boundary.
57
+ return sortFn.sort(
58
+ dataValueA,
59
+ dataValueB,
60
+ rowA as any,
61
+ rowB as any,
62
+ columnId,
63
+ )
64
+ },
65
+ def,
66
+ )
67
+ return sortFn
68
+ }
69
+
70
+ /**
71
+ * Sorts rows with the built-in alphanumeric strategy.
72
+ *
73
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
74
+ */
75
+ export const sortFn_alphanumeric = constructSortFn({
76
+ resolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),
77
+ sort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB),
78
+ })
79
+
80
+ /**
81
+ * Sorts rows with the built-in alphanumeric case sensitive strategy.
82
+ *
83
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
84
+ */
85
+ export const sortFn_alphanumericCaseSensitive = constructSortFn({
86
+ resolveDataValue: (dataValue) => toString(dataValue),
87
+ sort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB),
88
+ })
89
+
90
+ // The text sort is more basic (less numeric support)
91
+ // but is much faster
92
+ /**
93
+ * Sorts rows with the built-in text strategy.
94
+ *
95
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
96
+ */
97
+ export const sortFn_text = constructSortFn({
98
+ resolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),
99
+ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB),
100
+ })
101
+
102
+ // The text sort is more basic (less numeric support)
103
+ // but is much faster
104
+ /**
105
+ * Sorts rows with the built-in text case sensitive strategy.
106
+ *
107
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
108
+ */
109
+ export const sortFn_textCaseSensitive = constructSortFn({
110
+ resolveDataValue: (dataValue) => toString(dataValue),
111
+ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB),
112
+ })
113
+
114
+ /**
115
+ * Sorts rows with the built-in datetime strategy.
116
+ *
117
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
118
+ */
119
+ export const sortFn_datetime = constructSortFn({
120
+ resolveDataValue: (dataValue) => toDateSortValue(dataValue),
121
+ // Can handle nullish values
122
+ // Use > and < because == (and ===) doesn't work with
123
+ // Date objects (would require calling getTime()).
124
+ sort: (dataValueA, dataValueB) =>
125
+ dataValueA > dataValueB ? 1 : dataValueA < dataValueB ? -1 : 0,
126
+ })
127
+
128
+ /**
129
+ * Sorts rows with the built-in basic strategy.
130
+ *
131
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
132
+ */
133
+ export const sortFn_basic = constructSortFn({
134
+ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB),
135
+ })
136
+
137
+ // Utils
138
+
139
+ function compareBasic(a: any, b: any) {
140
+ return a === b ? 0 : a > b ? 1 : -1
141
+ }
142
+
143
+ function toDateSortValue(value: any) {
144
+ return value instanceof Date ? value.getTime() : value
145
+ }
146
+
147
+ function toString(a: any) {
148
+ if (typeof a === 'number') {
149
+ if (isNaN(a) || a === Infinity || a === -Infinity) {
150
+ return ''
151
+ }
152
+ return String(a)
153
+ }
154
+ if (typeof a === 'string') {
155
+ return a
156
+ }
157
+ return ''
158
+ }
159
+
160
+ // Mixed sorting is slow, but very inclusive of many edge cases.
161
+ // It handles numbers, mixed alphanumeric combinations, and even
162
+ // null, undefined, and Infinity
163
+ function compareAlphanumeric(aStr: string, bStr: string) {
164
+ let ai = 0
165
+ let bi = 0
166
+ const aLen = aStr.length
167
+ const bLen = bStr.length
168
+
169
+ while (ai < aLen && bi < bLen) {
170
+ const aIsNumeric = isDigit(aStr.charCodeAt(ai))
171
+ const bIsNumeric = isDigit(bStr.charCodeAt(bi))
172
+
173
+ const aEnd = findChunkEnd(aStr, ai, aIsNumeric)
174
+ const bEnd = findChunkEnd(bStr, bi, bIsNumeric)
175
+
176
+ // Both are string chunks
177
+ if (!aIsNumeric && !bIsNumeric) {
178
+ const stringComparison = compareStringChunks(
179
+ aStr,
180
+ ai,
181
+ aEnd,
182
+ bStr,
183
+ bi,
184
+ bEnd,
185
+ )
186
+ if (stringComparison) {
187
+ return stringComparison
188
+ }
189
+ ai = aEnd
190
+ bi = bEnd
191
+ continue
192
+ }
193
+
194
+ // One is a string chunk, one is a number chunk — the string sorts first
195
+ if (aIsNumeric !== bIsNumeric) {
196
+ return aIsNumeric ? 1 : -1
197
+ }
198
+
199
+ // Both are numeric chunks
200
+ const numericComparison = compareNumericChunks(
201
+ aStr,
202
+ ai,
203
+ aEnd,
204
+ bStr,
205
+ bi,
206
+ bEnd,
207
+ )
208
+ if (numericComparison) {
209
+ return numericComparison
210
+ }
211
+
212
+ ai = aEnd
213
+ bi = bEnd
214
+ }
215
+
216
+ // One side is exhausted — compare the counts of remaining non-empty chunks
217
+ return countRemainingChunks(aStr, ai) - countRemainingChunks(bStr, bi)
218
+ }
219
+
220
+ function isDigit(charCode: number) {
221
+ return charCode >= 48 && charCode <= 57
222
+ }
223
+
224
+ function findChunkEnd(str: string, start: number, isNumeric: boolean) {
225
+ let end = start + 1
226
+ while (end < str.length && isDigit(str.charCodeAt(end)) === isNumeric) {
227
+ end++
228
+ }
229
+ return end
230
+ }
231
+
232
+ function compareStringChunks(
233
+ aStr: string,
234
+ aStart: number,
235
+ aEnd: number,
236
+ bStr: string,
237
+ bStart: number,
238
+ bEnd: number,
239
+ ) {
240
+ const aLength = aEnd - aStart
241
+ const bLength = bEnd - bStart
242
+ const minLength = aLength < bLength ? aLength : bLength
243
+
244
+ for (let i = 0; i < minLength; i++) {
245
+ const aCode = aStr.charCodeAt(aStart + i)
246
+ const bCode = bStr.charCodeAt(bStart + i)
247
+
248
+ if (aCode > bCode) {
249
+ return 1
250
+ }
251
+ if (bCode > aCode) {
252
+ return -1
253
+ }
254
+ }
255
+
256
+ if (aLength > bLength) {
257
+ return 1
258
+ }
259
+ if (bLength > aLength) {
260
+ return -1
261
+ }
262
+ return 0
263
+ }
264
+
265
+ function compareNumericChunks(
266
+ aStr: string,
267
+ aStart: number,
268
+ aEnd: number,
269
+ bStr: string,
270
+ bStart: number,
271
+ bEnd: number,
272
+ ) {
273
+ let aSignificantStart = aStart
274
+ while (
275
+ aSignificantStart < aEnd &&
276
+ aStr.charCodeAt(aSignificantStart) === 48
277
+ ) {
278
+ aSignificantStart++
279
+ }
280
+
281
+ let bSignificantStart = bStart
282
+ while (
283
+ bSignificantStart < bEnd &&
284
+ bStr.charCodeAt(bSignificantStart) === 48
285
+ ) {
286
+ bSignificantStart++
287
+ }
288
+
289
+ const aSignificantLength = aEnd - aSignificantStart
290
+ const bSignificantLength = bEnd - bSignificantStart
291
+
292
+ if (aSignificantLength === 0 && bSignificantLength === 0) {
293
+ return 0
294
+ }
295
+
296
+ if (aSignificantLength <= 15 && bSignificantLength <= 15) {
297
+ const an = parseSmallInt(aStr, aSignificantStart, aEnd)
298
+ const bn = parseSmallInt(bStr, bSignificantStart, bEnd)
299
+
300
+ if (an > bn) {
301
+ return 1
302
+ }
303
+ if (bn > an) {
304
+ return -1
305
+ }
306
+ return 0
307
+ }
308
+
309
+ // Preserve parseInt precision-collapse behavior for unusually large chunks.
310
+ const an = parseInt(aStr.slice(aStart, aEnd), 10)
311
+ const bn = parseInt(bStr.slice(bStart, bEnd), 10)
312
+
313
+ if (an > bn) {
314
+ return 1
315
+ }
316
+ if (bn > an) {
317
+ return -1
318
+ }
319
+ return 0
320
+ }
321
+
322
+ function parseSmallInt(str: string, start: number, end: number) {
323
+ let result = 0
324
+ for (let i = start; i < end; i++) {
325
+ result = result * 10 + str.charCodeAt(i) - 48
326
+ }
327
+ return result
328
+ }
329
+
330
+ function countRemainingChunks(str: string, start: number) {
331
+ let count = 0
332
+ let index = start
333
+
334
+ while (index < str.length) {
335
+ count++
336
+ index = findChunkEnd(str, index, isDigit(str.charCodeAt(index)))
337
+ }
338
+
339
+ return count
340
+ }
341
+
342
+ // Exports
343
+
344
+ /**
345
+ * The built-in sorting function registry.
346
+ *
347
+ * Registering this full object opts out of tree-shaking: every built-in
348
+ * sorting function ends up in your bundle. Prefer importing the `sortFn_*`
349
+ * functions you actually use and registering just those in the `sortFns`
350
+ * slot, or passing them directly to the `sortFn` column option.
351
+ *
352
+ * @deprecated Import individual `sortFn_*` functions instead for a smaller
353
+ * bundle. This export still works and is not going away in v9, but built-in
354
+ * name resolution (including `sortFn: 'auto'`) only finds functions you
355
+ * register yourself.
356
+ */
357
+ export const sortFns = {
358
+ alphanumeric: sortFn_alphanumeric,
359
+ alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,
360
+ basic: sortFn_basic,
361
+ datetime: sortFn_datetime,
362
+ text: sortFn_text,
363
+ textCaseSensitive: sortFn_textCaseSensitive,
364
+ }
365
+
366
+ export type BuiltInSortFn = keyof typeof sortFns
@@ -1,4 +1,5 @@
1
1
  import { columnFacetingFeature } from './column-faceting/columnFacetingFeature'
2
+ import { rowAggregationFeature } from './row-aggregation/rowAggregationFeature'
2
3
  import { columnFilteringFeature } from './column-filtering/columnFilteringFeature'
3
4
  import { columnGroupingFeature } from './column-grouping/columnGroupingFeature'
4
5
  import { columnOrderingFeature } from './column-ordering/columnOrderingFeature'
@@ -14,6 +15,7 @@ import { rowSelectionFeature } from './row-selection/rowSelectionFeature'
14
15
  import { rowSortingFeature } from './row-sorting/rowSortingFeature'
15
16
 
16
17
  export interface StockFeatures {
18
+ rowAggregationFeature: typeof rowAggregationFeature
17
19
  columnFacetingFeature: typeof columnFacetingFeature
18
20
  columnFilteringFeature: typeof columnFilteringFeature
19
21
  columnGroupingFeature: typeof columnGroupingFeature
@@ -36,6 +38,7 @@ export interface StockFeatures {
36
38
  * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.
37
39
  */
38
40
  export const stockFeatures: StockFeatures = {
41
+ rowAggregationFeature,
39
42
  columnFacetingFeature,
40
43
  columnFilteringFeature,
41
44
  columnGroupingFeature,
@@ -10,10 +10,10 @@ import type {
10
10
  IdentifiedColumnDef,
11
11
  } from '../types/ColumnDef'
12
12
 
13
- export type ColumnHelper<
14
- TFeatures extends TableFeatures,
15
- TData extends RowData,
16
- > = {
13
+ export interface ColumnHelper<
14
+ in out TFeatures extends TableFeatures,
15
+ in out TData extends RowData,
16
+ > {
17
17
  /**
18
18
  * Creates a data column definition with an accessor key or function to extract the cell value.
19
19
  * @example
@@ -0,0 +1,24 @@
1
+ /**
2
+ * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the
3
+ * `features` option without a type assertion.
4
+ *
5
+ * Equivalent to `{} as TMeta`, but reads as type-only at the call site and
6
+ * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives
7
+ * when the meta type has only optional properties (where an auto-fix removing
8
+ * the assertion would silently degrade the inferred meta type to `{}`).
9
+ *
10
+ * The returned value is a phantom — it is ignored and stripped from the
11
+ * table's registered features at runtime; only its type is used.
12
+ * @example
13
+ * ```
14
+ * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'
15
+ * const features = tableFeatures({
16
+ * rowSortingFeature,
17
+ * tableMeta: metaHelper<MyTableMeta>(),
18
+ * columnMeta: metaHelper<MyColumnMeta>(),
19
+ * });
20
+ * ```
21
+ */
22
+ export function metaHelper<TMeta extends object>(): TMeta {
23
+ return {} as TMeta
24
+ }
@@ -1,18 +1,50 @@
1
- import type { TableFeatures } from '../types/TableFeatures'
1
+ import type {
2
+ TableFeatures,
3
+ ValidateFeatureSlots,
4
+ } from '../types/TableFeatures'
2
5
 
3
6
  /**
4
7
  * A helper function to help define the features that are to be imported and applied to a table instance.
5
8
  * Use this utility to make it easier to have the correct type inference for the features that are being imported.
6
9
  * **Note:** It is recommended to use this utility statically outside of a component.
10
+ *
11
+ * Alongside feature modules, this object carries everything else that is
12
+ * statically stitched into the table:
13
+ *
14
+ * - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)
15
+ * - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),
16
+ * whose keys become the valid string values for `sortFn`, `filterFn`,
17
+ * `globalFilterFn`, and `aggregationFn` with full inference
18
+ * - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types
19
+ * instead of using global declaration merging. The values are phantom
20
+ * (ignored and stripped at runtime); only their types are used.
7
21
  * @example
8
22
  * ```
9
- * import { tableFeatures, columnVisibilityFeature, rowPinningFeature } from '@tanstack/react-table'
10
- * const features = tableFeatures({ columnVisibilityFeature, rowPinningFeature });
11
- * const table = useTable({ features, rowModels: {}, columns, data });
23
+ * import {
24
+ * columnFilteringFeature,
25
+ * createFilteredRowModel,
26
+ * createSortedRowModel,
27
+ * filterFn_includesString,
28
+ * rowSortingFeature,
29
+ * sortFn_alphanumeric,
30
+ * sortFn_text,
31
+ * tableFeatures,
32
+ * } from '@tanstack/react-table'
33
+ * const features = tableFeatures({
34
+ * columnFilteringFeature,
35
+ * rowSortingFeature,
36
+ * filteredRowModel: createFilteredRowModel(),
37
+ * sortedRowModel: createSortedRowModel(),
38
+ * filterFns: { includesString: filterFn_includesString, myCustomFilterFn },
39
+ * sortFns: { alphanumeric: sortFn_alphanumeric, text: sortFn_text },
40
+ * tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },
41
+ * columnMeta: {} as { align?: 'left' | 'right' },
42
+ * });
43
+ * const table = useTable({ features, columns, data });
12
44
  * ```
13
45
  */
14
46
  export function tableFeatures<TFeatures extends TableFeatures>(
15
- features: TFeatures,
47
+ features: TFeatures & ValidateFeatureSlots<TFeatures>,
16
48
  ): TFeatures {
17
49
  return features
18
50
  }
package/src/index.ts CHANGED
@@ -22,6 +22,7 @@ export * from './types/type-utils'
22
22
 
23
23
  export * from './core/coreFeatures'
24
24
  export * from './helpers/columnHelper'
25
+ export * from './helpers/metaHelper'
25
26
  export * from './helpers/tableFeatures'
26
27
  export * from './helpers/tableOptions'
27
28
  export * from './utils'
@@ -57,20 +58,17 @@ export * from './core/table/constructTable'
57
58
  export * from './core/table/coreTablesFeature'
58
59
  export * from './core/table/coreTablesFeature.types'
59
60
 
60
- /**
61
- * RowModelFns
62
- */
63
-
64
- export * from './fns/aggregationFns'
65
- export * from './fns/filterFns'
66
- export * from './fns/sortFns'
67
-
68
61
  /**
69
62
  * Features
70
63
  */
71
64
 
72
65
  export * from './features/stockFeatures'
73
66
 
67
+ // rowAggregationFeature
68
+ export * from './features/row-aggregation/rowAggregationFeature'
69
+ export * from './features/row-aggregation/rowAggregationFeature.types'
70
+ export * from './features/row-aggregation/aggregationFns'
71
+
74
72
  // columnFacetingFeature
75
73
  export * from './features/column-faceting/columnFacetingFeature'
76
74
  export * from './features/column-faceting/columnFacetingFeature.types'
@@ -82,6 +80,7 @@ export * from './features/column-faceting/createFacetedUniqueValues'
82
80
  export * from './features/column-filtering/columnFilteringFeature'
83
81
  export * from './features/column-filtering/columnFilteringFeature.types'
84
82
  export * from './features/column-filtering/createFilteredRowModel'
83
+ export * from './features/column-filtering/filterFns'
85
84
 
86
85
  // columnGroupingFeature
87
86
  export * from './features/column-grouping/columnGroupingFeature'
@@ -134,5 +133,6 @@ export * from './features/row-selection/rowSelectionFeature.types'
134
133
  export * from './features/row-sorting/rowSortingFeature'
135
134
  export * from './features/row-sorting/rowSortingFeature.types'
136
135
  export * from './features/row-sorting/createSortedRowModel'
136
+ export * from './features/row-sorting/sortFns'
137
137
 
138
138
  // force
@@ -15,6 +15,7 @@ export * from './core/row-models/coreRowModelsFeature.utils'
15
15
  export * from './core/table/coreTablesFeature.utils'
16
16
 
17
17
  // Features
18
+ export * from './features/row-aggregation/rowAggregationFeature.utils'
18
19
  export * from './features/column-faceting/columnFacetingFeature.utils'
19
20
  export * from './features/column-filtering/columnFilteringFeature.utils'
20
21
  export * from './features/column-grouping/columnGroupingFeature.utils'
@@ -11,7 +11,7 @@ import type { TableReactivityBindings } from './core/reactivity/coreReactivityFe
11
11
  * import { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings'
12
12
  *
13
13
  * const table = constructTable({
14
- * features: tableFeatures({ coreReativityFeature: storeReactivityBindings() }),
14
+ * features: tableFeatures({ coreReactivityFeature: storeReactivityBindings() }),
15
15
  * // ...
16
16
  * })
17
17
  * ```
package/src/types/Cell.ts CHANGED
@@ -1,15 +1,17 @@
1
1
  import type { Cell_ColumnGrouping } from '../features/column-grouping/columnGroupingFeature.types'
2
+ import type { Cell_Aggregation } from '../features/row-aggregation/rowAggregationFeature.types'
2
3
  import type { CellData, RowData } from './type-utils'
3
4
  import type { ExtractFeatureMapTypes, TableFeatures } from './TableFeatures'
4
5
  import type { Cell_Cell } from '../core/cells/coreCellsFeature.types'
5
6
 
6
7
  export interface Cell_Core<
7
- TFeatures extends TableFeatures,
8
- TData extends RowData,
8
+ in out TFeatures extends TableFeatures,
9
+ in out TData extends RowData,
9
10
  TValue extends CellData = CellData,
10
11
  > extends Cell_Cell<TFeatures, TData, TValue> {}
11
12
 
12
13
  export interface Cell_FeatureMap {
14
+ rowAggregationFeature: Cell_Aggregation
13
15
  columnGroupingFeature: Cell_ColumnGrouping
14
16
  }
15
17
 
@@ -1,4 +1,6 @@
1
+ import type { Table_Internal } from './Table'
1
2
  import type { Column_RowSorting } from '../features/row-sorting/rowSortingFeature.types'
3
+ import type { Column_Aggregation } from '../features/row-aggregation/rowAggregationFeature.types'
2
4
  import type { Column_ColumnFaceting } from '../features/column-faceting/columnFacetingFeature.types'
3
5
  import type { Column_ColumnFiltering } from '../features/column-filtering/columnFilteringFeature.types'
4
6
  import type { Column_ColumnGrouping } from '../features/column-grouping/columnGroupingFeature.types'
@@ -14,18 +16,19 @@ import type { ExtractFeatureMapTypes, TableFeatures } from './TableFeatures'
14
16
  import type { Column_Column } from '../core/columns/coreColumnsFeature.types'
15
17
 
16
18
  export interface Column_Core<
17
- TFeatures extends TableFeatures,
18
- TData extends RowData,
19
+ in out TFeatures extends TableFeatures,
20
+ in out TData extends RowData,
19
21
  TValue = unknown,
20
22
  > extends Column_Column<TFeatures, TData, TValue> {}
21
23
 
22
24
  export interface Column_FeatureMap<
23
- TFeatures extends TableFeatures,
24
- TData extends RowData,
25
+ in out TFeatures extends TableFeatures,
26
+ in out TData extends RowData,
25
27
  > {
28
+ rowAggregationFeature: Column_Aggregation<TFeatures, TData>
26
29
  columnFacetingFeature: Column_ColumnFaceting<TFeatures, TData>
27
30
  columnFilteringFeature: Column_ColumnFiltering<TFeatures, TData>
28
- columnGroupingFeature: Column_ColumnGrouping<TFeatures, TData>
31
+ columnGroupingFeature: Column_ColumnGrouping
29
32
  columnOrderingFeature: Column_ColumnOrdering
30
33
  columnPinningFeature: Column_ColumnPinning
31
34
  columnResizingFeature: Column_ColumnResizing
@@ -42,10 +45,11 @@ export type Column<
42
45
  > = Column_Core<TFeatures, TData, TValue> &
43
46
  ExtractFeatureMapTypes<TFeatures, Column_FeatureMap<TFeatures, TData>>
44
47
 
45
- export type Column_Internal<
46
- TFeatures extends TableFeatures,
47
- TData extends RowData,
48
+ export interface Column_Internal<
49
+ in out TFeatures extends TableFeatures,
50
+ in out TData extends RowData,
48
51
  TValue = unknown,
49
- > = Column<TFeatures, TData, TValue> & {
52
+ > extends Omit<Column_Core<TFeatures, TData, TValue>, 'columnDef' | 'table'> {
50
53
  columnDef: ColumnDefBase_All<TFeatures, TData, TValue>
54
+ table: Table_Internal<TFeatures, TData>
51
55
  }