@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,217 @@
1
+ //#region src/features/row-sorting/sortFns.ts
2
+ /**
3
+ * Regular expression used to split mixed text and numeric chunks.
4
+ *
5
+ * The alphanumeric sort functions use these chunks for natural sorting of
6
+ * strings like `item2` before `item10`.
7
+ */
8
+ const reSplitAlphaNumeric = /([0-9]+)/gm;
9
+ /**
10
+ * Builds a `SortFn` from a value-level comparator plus an optional
11
+ * `resolveDataValue` normalizer.
12
+ *
13
+ * The `sort` comparator receives both rows' data values, each already passed
14
+ * through `resolveDataValue` when one is defined. Keeping normalization in the
15
+ * resolver means a variant of an existing sorting function only has to swap
16
+ * the resolver, not re-implement the comparison.
17
+ *
18
+ * The definition is attached to the returned function, so a variant can be
19
+ * created by spreading a built-in sorting function and overriding what
20
+ * differs:
21
+ *
22
+ * ```ts
23
+ * const stripDiacritics = (value: string) =>
24
+ * value.normalize('NFD').replace(/\p{Diacritic}/gu, '')
25
+ *
26
+ * const alphanumericIgnoreDiacritics = constructSortFn({
27
+ * ...sortFn_alphanumeric,
28
+ * resolveDataValue: (value) =>
29
+ * stripDiacritics(sortFn_alphanumeric.resolveDataValue!(value)),
30
+ * })
31
+ * ```
32
+ */
33
+ function constructSortFn(def) {
34
+ const sortFn = Object.assign((rowA, rowB, columnId) => {
35
+ let dataValueA = rowA.getValue(columnId);
36
+ let dataValueB = rowB.getValue(columnId);
37
+ const resolveDataValue = sortFn.resolveDataValue;
38
+ if (resolveDataValue) {
39
+ dataValueA = resolveDataValue(dataValueA);
40
+ dataValueB = resolveDataValue(dataValueB);
41
+ }
42
+ return sortFn.sort(dataValueA, dataValueB, rowA, rowB, columnId);
43
+ }, def);
44
+ return sortFn;
45
+ }
46
+ /**
47
+ * Sorts rows with the built-in alphanumeric strategy.
48
+ *
49
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
50
+ */
51
+ const sortFn_alphanumeric = constructSortFn({
52
+ resolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),
53
+ sort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)
54
+ });
55
+ /**
56
+ * Sorts rows with the built-in alphanumeric case sensitive strategy.
57
+ *
58
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
59
+ */
60
+ const sortFn_alphanumericCaseSensitive = constructSortFn({
61
+ resolveDataValue: (dataValue) => toString(dataValue),
62
+ sort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB)
63
+ });
64
+ /**
65
+ * Sorts rows with the built-in text strategy.
66
+ *
67
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
68
+ */
69
+ const sortFn_text = constructSortFn({
70
+ resolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),
71
+ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)
72
+ });
73
+ /**
74
+ * Sorts rows with the built-in text case sensitive strategy.
75
+ *
76
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
77
+ */
78
+ const sortFn_textCaseSensitive = constructSortFn({
79
+ resolveDataValue: (dataValue) => toString(dataValue),
80
+ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB)
81
+ });
82
+ /**
83
+ * Sorts rows with the built-in datetime strategy.
84
+ *
85
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
86
+ */
87
+ const sortFn_datetime = constructSortFn({
88
+ resolveDataValue: (dataValue) => toDateSortValue(dataValue),
89
+ sort: (dataValueA, dataValueB) => dataValueA > dataValueB ? 1 : dataValueA < dataValueB ? -1 : 0
90
+ });
91
+ /**
92
+ * Sorts rows with the built-in basic strategy.
93
+ *
94
+ * This comparator returns ascending-order results; descending order is applied by the sorting row model.
95
+ */
96
+ const sortFn_basic = constructSortFn({ sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB) });
97
+ function compareBasic(a, b) {
98
+ return a === b ? 0 : a > b ? 1 : -1;
99
+ }
100
+ function toDateSortValue(value) {
101
+ return value instanceof Date ? value.getTime() : value;
102
+ }
103
+ function toString(a) {
104
+ if (typeof a === "number") {
105
+ if (isNaN(a) || a === Infinity || a === -Infinity) return "";
106
+ return String(a);
107
+ }
108
+ if (typeof a === "string") return a;
109
+ return "";
110
+ }
111
+ function compareAlphanumeric(aStr, bStr) {
112
+ let ai = 0;
113
+ let bi = 0;
114
+ const aLen = aStr.length;
115
+ const bLen = bStr.length;
116
+ while (ai < aLen && bi < bLen) {
117
+ const aIsNumeric = isDigit(aStr.charCodeAt(ai));
118
+ const bIsNumeric = isDigit(bStr.charCodeAt(bi));
119
+ const aEnd = findChunkEnd(aStr, ai, aIsNumeric);
120
+ const bEnd = findChunkEnd(bStr, bi, bIsNumeric);
121
+ if (!aIsNumeric && !bIsNumeric) {
122
+ const stringComparison = compareStringChunks(aStr, ai, aEnd, bStr, bi, bEnd);
123
+ if (stringComparison) return stringComparison;
124
+ ai = aEnd;
125
+ bi = bEnd;
126
+ continue;
127
+ }
128
+ if (aIsNumeric !== bIsNumeric) return aIsNumeric ? 1 : -1;
129
+ const numericComparison = compareNumericChunks(aStr, ai, aEnd, bStr, bi, bEnd);
130
+ if (numericComparison) return numericComparison;
131
+ ai = aEnd;
132
+ bi = bEnd;
133
+ }
134
+ return countRemainingChunks(aStr, ai) - countRemainingChunks(bStr, bi);
135
+ }
136
+ function isDigit(charCode) {
137
+ return charCode >= 48 && charCode <= 57;
138
+ }
139
+ function findChunkEnd(str, start, isNumeric) {
140
+ let end = start + 1;
141
+ while (end < str.length && isDigit(str.charCodeAt(end)) === isNumeric) end++;
142
+ return end;
143
+ }
144
+ function compareStringChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {
145
+ const aLength = aEnd - aStart;
146
+ const bLength = bEnd - bStart;
147
+ const minLength = aLength < bLength ? aLength : bLength;
148
+ for (let i = 0; i < minLength; i++) {
149
+ const aCode = aStr.charCodeAt(aStart + i);
150
+ const bCode = bStr.charCodeAt(bStart + i);
151
+ if (aCode > bCode) return 1;
152
+ if (bCode > aCode) return -1;
153
+ }
154
+ if (aLength > bLength) return 1;
155
+ if (bLength > aLength) return -1;
156
+ return 0;
157
+ }
158
+ function compareNumericChunks(aStr, aStart, aEnd, bStr, bStart, bEnd) {
159
+ let aSignificantStart = aStart;
160
+ while (aSignificantStart < aEnd && aStr.charCodeAt(aSignificantStart) === 48) aSignificantStart++;
161
+ let bSignificantStart = bStart;
162
+ while (bSignificantStart < bEnd && bStr.charCodeAt(bSignificantStart) === 48) bSignificantStart++;
163
+ const aSignificantLength = aEnd - aSignificantStart;
164
+ const bSignificantLength = bEnd - bSignificantStart;
165
+ if (aSignificantLength === 0 && bSignificantLength === 0) return 0;
166
+ if (aSignificantLength <= 15 && bSignificantLength <= 15) {
167
+ const an = parseSmallInt(aStr, aSignificantStart, aEnd);
168
+ const bn = parseSmallInt(bStr, bSignificantStart, bEnd);
169
+ if (an > bn) return 1;
170
+ if (bn > an) return -1;
171
+ return 0;
172
+ }
173
+ const an = parseInt(aStr.slice(aStart, aEnd), 10);
174
+ const bn = parseInt(bStr.slice(bStart, bEnd), 10);
175
+ if (an > bn) return 1;
176
+ if (bn > an) return -1;
177
+ return 0;
178
+ }
179
+ function parseSmallInt(str, start, end) {
180
+ let result = 0;
181
+ for (let i = start; i < end; i++) result = result * 10 + str.charCodeAt(i) - 48;
182
+ return result;
183
+ }
184
+ function countRemainingChunks(str, start) {
185
+ let count = 0;
186
+ let index = start;
187
+ while (index < str.length) {
188
+ count++;
189
+ index = findChunkEnd(str, index, isDigit(str.charCodeAt(index)));
190
+ }
191
+ return count;
192
+ }
193
+ /**
194
+ * The built-in sorting function registry.
195
+ *
196
+ * Registering this full object opts out of tree-shaking: every built-in
197
+ * sorting function ends up in your bundle. Prefer importing the `sortFn_*`
198
+ * functions you actually use and registering just those in the `sortFns`
199
+ * slot, or passing them directly to the `sortFn` column option.
200
+ *
201
+ * @deprecated Import individual `sortFn_*` functions instead for a smaller
202
+ * bundle. This export still works and is not going away in v9, but built-in
203
+ * name resolution (including `sortFn: 'auto'`) only finds functions you
204
+ * register yourself.
205
+ */
206
+ const sortFns = {
207
+ alphanumeric: sortFn_alphanumeric,
208
+ alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,
209
+ basic: sortFn_basic,
210
+ datetime: sortFn_datetime,
211
+ text: sortFn_text,
212
+ textCaseSensitive: sortFn_textCaseSensitive
213
+ };
214
+
215
+ //#endregion
216
+ export { constructSortFn, reSplitAlphaNumeric, sortFn_alphanumeric, sortFn_alphanumericCaseSensitive, sortFn_basic, sortFn_datetime, sortFn_text, sortFn_textCaseSensitive, sortFns };
217
+ //# sourceMappingURL=sortFns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortFns.js","names":[],"sources":["../../../src/features/row-sorting/sortFns.ts"],"sourcesContent":["import type { CreatedSortFn, SortFnDef } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Row } from '../../types/Row'\n\n/**\n * Regular expression used to split mixed text and numeric chunks.\n *\n * The alphanumeric sort functions use these chunks for natural sorting of\n * strings like `item2` before `item10`.\n */\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\n/**\n * Builds a `SortFn` from a value-level comparator plus an optional\n * `resolveDataValue` normalizer.\n *\n * The `sort` comparator receives both rows' data values, each already passed\n * through `resolveDataValue` when one is defined. Keeping normalization in the\n * resolver means a variant of an existing sorting function only has to swap\n * the resolver, not re-implement the comparison.\n *\n * The definition is attached to the returned function, so a variant can be\n * created by spreading a built-in sorting function and overriding what\n * differs:\n *\n * ```ts\n * const stripDiacritics = (value: string) =>\n * value.normalize('NFD').replace(/\\p{Diacritic}/gu, '')\n *\n * const alphanumericIgnoreDiacritics = constructSortFn({\n * ...sortFn_alphanumeric,\n * resolveDataValue: (value) =>\n * stripDiacritics(sortFn_alphanumeric.resolveDataValue!(value)),\n * })\n * ```\n */\nexport function constructSortFn<\n TFeatures extends TableFeatures = any,\n TData extends RowData = any,\n>(def: SortFnDef<TFeatures, TData>): CreatedSortFn<TFeatures, TData> {\n const sortFn: CreatedSortFn<TFeatures, TData> = Object.assign(\n <TRowFeatures extends TableFeatures, TRowData extends RowData>(\n rowA: Row<TRowFeatures, TRowData>,\n rowB: Row<TRowFeatures, TRowData>,\n columnId: string,\n ): number => {\n let dataValueA = rowA.getValue(columnId)\n let dataValueB = rowB.getValue(columnId)\n const resolveDataValue = sortFn.resolveDataValue\n if (resolveDataValue) {\n dataValueA = resolveDataValue(dataValueA)\n dataValueB = resolveDataValue(dataValueB)\n }\n // The def's comparator is typed against the factory's TFeatures/TData;\n // the caller's row generics are erased at this boundary.\n return sortFn.sort(\n dataValueA,\n dataValueB,\n rowA as any,\n rowB as any,\n columnId,\n )\n },\n def,\n )\n return sortFn\n}\n\n/**\n * Sorts rows with the built-in alphanumeric strategy.\n *\n * This comparator returns ascending-order results; descending order is applied by the sorting row model.\n */\nexport const sortFn_alphanumeric = constructSortFn({\n resolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n sort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB),\n})\n\n/**\n * Sorts rows with the built-in alphanumeric case sensitive strategy.\n *\n * This comparator returns ascending-order results; descending order is applied by the sorting row model.\n */\nexport const sortFn_alphanumericCaseSensitive = constructSortFn({\n resolveDataValue: (dataValue) => toString(dataValue),\n sort: (dataValueA, dataValueB) => compareAlphanumeric(dataValueA, dataValueB),\n})\n\n// The text sort is more basic (less numeric support)\n// but is much faster\n/**\n * Sorts rows with the built-in text strategy.\n *\n * This comparator returns ascending-order results; descending order is applied by the sorting row model.\n */\nexport const sortFn_text = constructSortFn({\n resolveDataValue: (dataValue) => toString(dataValue).toLowerCase(),\n sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB),\n})\n\n// The text sort is more basic (less numeric support)\n// but is much faster\n/**\n * Sorts rows with the built-in text case sensitive strategy.\n *\n * This comparator returns ascending-order results; descending order is applied by the sorting row model.\n */\nexport const sortFn_textCaseSensitive = constructSortFn({\n resolveDataValue: (dataValue) => toString(dataValue),\n sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB),\n})\n\n/**\n * Sorts rows with the built-in datetime strategy.\n *\n * This comparator returns ascending-order results; descending order is applied by the sorting row model.\n */\nexport const sortFn_datetime = constructSortFn({\n resolveDataValue: (dataValue) => toDateSortValue(dataValue),\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n sort: (dataValueA, dataValueB) =>\n dataValueA > dataValueB ? 1 : dataValueA < dataValueB ? -1 : 0,\n})\n\n/**\n * Sorts rows with the built-in basic strategy.\n *\n * This comparator returns ascending-order results; descending order is applied by the sorting row model.\n */\nexport const sortFn_basic = constructSortFn({\n sort: (dataValueA, dataValueB) => compareBasic(dataValueA, dataValueB),\n})\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toDateSortValue(value: any) {\n return value instanceof Date ? value.getTime() : value\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n let ai = 0\n let bi = 0\n const aLen = aStr.length\n const bLen = bStr.length\n\n while (ai < aLen && bi < bLen) {\n const aIsNumeric = isDigit(aStr.charCodeAt(ai))\n const bIsNumeric = isDigit(bStr.charCodeAt(bi))\n\n const aEnd = findChunkEnd(aStr, ai, aIsNumeric)\n const bEnd = findChunkEnd(bStr, bi, bIsNumeric)\n\n // Both are string chunks\n if (!aIsNumeric && !bIsNumeric) {\n const stringComparison = compareStringChunks(\n aStr,\n ai,\n aEnd,\n bStr,\n bi,\n bEnd,\n )\n if (stringComparison) {\n return stringComparison\n }\n ai = aEnd\n bi = bEnd\n continue\n }\n\n // One is a string chunk, one is a number chunk — the string sorts first\n if (aIsNumeric !== bIsNumeric) {\n return aIsNumeric ? 1 : -1\n }\n\n // Both are numeric chunks\n const numericComparison = compareNumericChunks(\n aStr,\n ai,\n aEnd,\n bStr,\n bi,\n bEnd,\n )\n if (numericComparison) {\n return numericComparison\n }\n\n ai = aEnd\n bi = bEnd\n }\n\n // One side is exhausted — compare the counts of remaining non-empty chunks\n return countRemainingChunks(aStr, ai) - countRemainingChunks(bStr, bi)\n}\n\nfunction isDigit(charCode: number) {\n return charCode >= 48 && charCode <= 57\n}\n\nfunction findChunkEnd(str: string, start: number, isNumeric: boolean) {\n let end = start + 1\n while (end < str.length && isDigit(str.charCodeAt(end)) === isNumeric) {\n end++\n }\n return end\n}\n\nfunction compareStringChunks(\n aStr: string,\n aStart: number,\n aEnd: number,\n bStr: string,\n bStart: number,\n bEnd: number,\n) {\n const aLength = aEnd - aStart\n const bLength = bEnd - bStart\n const minLength = aLength < bLength ? aLength : bLength\n\n for (let i = 0; i < minLength; i++) {\n const aCode = aStr.charCodeAt(aStart + i)\n const bCode = bStr.charCodeAt(bStart + i)\n\n if (aCode > bCode) {\n return 1\n }\n if (bCode > aCode) {\n return -1\n }\n }\n\n if (aLength > bLength) {\n return 1\n }\n if (bLength > aLength) {\n return -1\n }\n return 0\n}\n\nfunction compareNumericChunks(\n aStr: string,\n aStart: number,\n aEnd: number,\n bStr: string,\n bStart: number,\n bEnd: number,\n) {\n let aSignificantStart = aStart\n while (\n aSignificantStart < aEnd &&\n aStr.charCodeAt(aSignificantStart) === 48\n ) {\n aSignificantStart++\n }\n\n let bSignificantStart = bStart\n while (\n bSignificantStart < bEnd &&\n bStr.charCodeAt(bSignificantStart) === 48\n ) {\n bSignificantStart++\n }\n\n const aSignificantLength = aEnd - aSignificantStart\n const bSignificantLength = bEnd - bSignificantStart\n\n if (aSignificantLength === 0 && bSignificantLength === 0) {\n return 0\n }\n\n if (aSignificantLength <= 15 && bSignificantLength <= 15) {\n const an = parseSmallInt(aStr, aSignificantStart, aEnd)\n const bn = parseSmallInt(bStr, bSignificantStart, bEnd)\n\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n return 0\n }\n\n // Preserve parseInt precision-collapse behavior for unusually large chunks.\n const an = parseInt(aStr.slice(aStart, aEnd), 10)\n const bn = parseInt(bStr.slice(bStart, bEnd), 10)\n\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n return 0\n}\n\nfunction parseSmallInt(str: string, start: number, end: number) {\n let result = 0\n for (let i = start; i < end; i++) {\n result = result * 10 + str.charCodeAt(i) - 48\n }\n return result\n}\n\nfunction countRemainingChunks(str: string, start: number) {\n let count = 0\n let index = start\n\n while (index < str.length) {\n count++\n index = findChunkEnd(str, index, isDigit(str.charCodeAt(index)))\n }\n\n return count\n}\n\n// Exports\n\n/**\n * The built-in sorting function registry.\n *\n * Registering this full object opts out of tree-shaking: every built-in\n * sorting function ends up in your bundle. Prefer importing the `sortFn_*`\n * functions you actually use and registering just those in the `sortFns`\n * slot, or passing them directly to the `sortFn` column option.\n *\n * @deprecated Import individual `sortFn_*` functions instead for a smaller\n * bundle. This export still works and is not going away in v9, but built-in\n * name resolution (including `sortFn: 'auto'`) only finds functions you\n * register yourself.\n */\nexport const sortFns = {\n alphanumeric: sortFn_alphanumeric,\n alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,\n basic: sortFn_basic,\n datetime: sortFn_datetime,\n text: sortFn_text,\n textCaseSensitive: sortFn_textCaseSensitive,\n}\n\nexport type BuiltInSortFn = keyof typeof sortFns\n"],"mappings":";;;;;;;AAWA,MAAa,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;AA0BnC,SAAgB,gBAGd,KAAmE;CACnE,MAAM,SAA0C,OAAO,QAEnD,MACA,MACA,aACW;EACX,IAAI,aAAa,KAAK,SAAS,QAAQ;EACvC,IAAI,aAAa,KAAK,SAAS,QAAQ;EACvC,MAAM,mBAAmB,OAAO;EAChC,IAAI,kBAAkB;GACpB,aAAa,iBAAiB,UAAU;GACxC,aAAa,iBAAiB,UAAU;EAC1C;EAGA,OAAO,OAAO,KACZ,YACA,YACA,MACA,MACA,QACF;CACF,GACA,GACF;CACA,OAAO;AACT;;;;;;AAOA,MAAa,sBAAsB,gBAAgB;CACjD,mBAAmB,cAAc,SAAS,SAAS,CAAC,CAAC,YAAY;CACjE,OAAO,YAAY,eAAe,oBAAoB,YAAY,UAAU;AAC9E,CAAC;;;;;;AAOD,MAAa,mCAAmC,gBAAgB;CAC9D,mBAAmB,cAAc,SAAS,SAAS;CACnD,OAAO,YAAY,eAAe,oBAAoB,YAAY,UAAU;AAC9E,CAAC;;;;;;AASD,MAAa,cAAc,gBAAgB;CACzC,mBAAmB,cAAc,SAAS,SAAS,CAAC,CAAC,YAAY;CACjE,OAAO,YAAY,eAAe,aAAa,YAAY,UAAU;AACvE,CAAC;;;;;;AASD,MAAa,2BAA2B,gBAAgB;CACtD,mBAAmB,cAAc,SAAS,SAAS;CACnD,OAAO,YAAY,eAAe,aAAa,YAAY,UAAU;AACvE,CAAC;;;;;;AAOD,MAAa,kBAAkB,gBAAgB;CAC7C,mBAAmB,cAAc,gBAAgB,SAAS;CAI1D,OAAO,YAAY,eACjB,aAAa,aAAa,IAAI,aAAa,aAAa,KAAK;AACjE,CAAC;;;;;;AAOD,MAAa,eAAe,gBAAgB,EAC1C,OAAO,YAAY,eAAe,aAAa,YAAY,UAAU,EACvE,CAAC;AAID,SAAS,aAAa,GAAQ,GAAQ;CACpC,OAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI;AACnC;AAEA,SAAS,gBAAgB,OAAY;CACnC,OAAO,iBAAiB,OAAO,MAAM,QAAQ,IAAI;AACnD;AAEA,SAAS,SAAS,GAAQ;CACxB,IAAI,OAAO,MAAM,UAAU;EACzB,IAAI,MAAM,CAAC,KAAK,MAAM,YAAY,MAAM,WACtC,OAAO;EAET,OAAO,OAAO,CAAC;CACjB;CACA,IAAI,OAAO,MAAM,UACf,OAAO;CAET,OAAO;AACT;AAKA,SAAS,oBAAoB,MAAc,MAAc;CACvD,IAAI,KAAK;CACT,IAAI,KAAK;CACT,MAAM,OAAO,KAAK;CAClB,MAAM,OAAO,KAAK;CAElB,OAAO,KAAK,QAAQ,KAAK,MAAM;EAC7B,MAAM,aAAa,QAAQ,KAAK,WAAW,EAAE,CAAC;EAC9C,MAAM,aAAa,QAAQ,KAAK,WAAW,EAAE,CAAC;EAE9C,MAAM,OAAO,aAAa,MAAM,IAAI,UAAU;EAC9C,MAAM,OAAO,aAAa,MAAM,IAAI,UAAU;EAG9C,IAAI,CAAC,cAAc,CAAC,YAAY;GAC9B,MAAM,mBAAmB,oBACvB,MACA,IACA,MACA,MACA,IACA,IACF;GACA,IAAI,kBACF,OAAO;GAET,KAAK;GACL,KAAK;GACL;EACF;EAGA,IAAI,eAAe,YACjB,OAAO,aAAa,IAAI;EAI1B,MAAM,oBAAoB,qBACxB,MACA,IACA,MACA,MACA,IACA,IACF;EACA,IAAI,mBACF,OAAO;EAGT,KAAK;EACL,KAAK;CACP;CAGA,OAAO,qBAAqB,MAAM,EAAE,IAAI,qBAAqB,MAAM,EAAE;AACvE;AAEA,SAAS,QAAQ,UAAkB;CACjC,OAAO,YAAY,MAAM,YAAY;AACvC;AAEA,SAAS,aAAa,KAAa,OAAe,WAAoB;CACpE,IAAI,MAAM,QAAQ;CAClB,OAAO,MAAM,IAAI,UAAU,QAAQ,IAAI,WAAW,GAAG,CAAC,MAAM,WAC1D;CAEF,OAAO;AACT;AAEA,SAAS,oBACP,MACA,QACA,MACA,MACA,QACA,MACA;CACA,MAAM,UAAU,OAAO;CACvB,MAAM,UAAU,OAAO;CACvB,MAAM,YAAY,UAAU,UAAU,UAAU;CAEhD,KAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK;EAClC,MAAM,QAAQ,KAAK,WAAW,SAAS,CAAC;EACxC,MAAM,QAAQ,KAAK,WAAW,SAAS,CAAC;EAExC,IAAI,QAAQ,OACV,OAAO;EAET,IAAI,QAAQ,OACV,OAAO;CAEX;CAEA,IAAI,UAAU,SACZ,OAAO;CAET,IAAI,UAAU,SACZ,OAAO;CAET,OAAO;AACT;AAEA,SAAS,qBACP,MACA,QACA,MACA,MACA,QACA,MACA;CACA,IAAI,oBAAoB;CACxB,OACE,oBAAoB,QACpB,KAAK,WAAW,iBAAiB,MAAM,IAEvC;CAGF,IAAI,oBAAoB;CACxB,OACE,oBAAoB,QACpB,KAAK,WAAW,iBAAiB,MAAM,IAEvC;CAGF,MAAM,qBAAqB,OAAO;CAClC,MAAM,qBAAqB,OAAO;CAElC,IAAI,uBAAuB,KAAK,uBAAuB,GACrD,OAAO;CAGT,IAAI,sBAAsB,MAAM,sBAAsB,IAAI;EACxD,MAAM,KAAK,cAAc,MAAM,mBAAmB,IAAI;EACtD,MAAM,KAAK,cAAc,MAAM,mBAAmB,IAAI;EAEtD,IAAI,KAAK,IACP,OAAO;EAET,IAAI,KAAK,IACP,OAAO;EAET,OAAO;CACT;CAGA,MAAM,KAAK,SAAS,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE;CAChD,MAAM,KAAK,SAAS,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE;CAEhD,IAAI,KAAK,IACP,OAAO;CAET,IAAI,KAAK,IACP,OAAO;CAET,OAAO;AACT;AAEA,SAAS,cAAc,KAAa,OAAe,KAAa;CAC9D,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,KAC3B,SAAS,SAAS,KAAK,IAAI,WAAW,CAAC,IAAI;CAE7C,OAAO;AACT;AAEA,SAAS,qBAAqB,KAAa,OAAe;CACxD,IAAI,QAAQ;CACZ,IAAI,QAAQ;CAEZ,OAAO,QAAQ,IAAI,QAAQ;EACzB;EACA,QAAQ,aAAa,KAAK,OAAO,QAAQ,IAAI,WAAW,KAAK,CAAC,CAAC;CACjE;CAEA,OAAO;AACT;;;;;;;;;;;;;;AAiBA,MAAa,UAAU;CACrB,cAAc;CACd,2BAA2B;CAC3B,OAAO;CACP,UAAU;CACV,MAAM;CACN,mBAAmB;AACrB"}
@@ -1,4 +1,5 @@
1
1
  const require_columnFacetingFeature = require('./column-faceting/columnFacetingFeature.cjs');
2
+ const require_rowAggregationFeature = require('./row-aggregation/rowAggregationFeature.cjs');
2
3
  const require_columnFilteringFeature = require('./column-filtering/columnFilteringFeature.cjs');
3
4
  const require_columnGroupingFeature = require('./column-grouping/columnGroupingFeature.cjs');
4
5
  const require_columnOrderingFeature = require('./column-ordering/columnOrderingFeature.cjs');
@@ -20,6 +21,7 @@ const require_rowSortingFeature = require('./row-sorting/rowSortingFeature.cjs')
20
21
  * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.
21
22
  */
22
23
  const stockFeatures = {
24
+ rowAggregationFeature: require_rowAggregationFeature.rowAggregationFeature,
23
25
  columnFacetingFeature: require_columnFacetingFeature.columnFacetingFeature,
24
26
  columnFilteringFeature: require_columnFilteringFeature.columnFilteringFeature,
25
27
  columnGroupingFeature: require_columnGroupingFeature.columnGroupingFeature,
@@ -1 +1 @@
1
- {"version":3,"file":"stockFeatures.cjs","names":[],"sources":["../../src/features/stockFeatures.ts"],"sourcesContent":["import { columnFacetingFeature } from './column-faceting/columnFacetingFeature'\nimport { columnFilteringFeature } from './column-filtering/columnFilteringFeature'\nimport { columnGroupingFeature } from './column-grouping/columnGroupingFeature'\nimport { columnOrderingFeature } from './column-ordering/columnOrderingFeature'\nimport { columnPinningFeature } from './column-pinning/columnPinningFeature'\nimport { columnResizingFeature } from './column-resizing/columnResizingFeature'\nimport { columnSizingFeature } from './column-sizing/columnSizingFeature'\nimport { columnVisibilityFeature } from './column-visibility/columnVisibilityFeature'\nimport { globalFilteringFeature } from './global-filtering/globalFilteringFeature'\nimport { rowExpandingFeature } from './row-expanding/rowExpandingFeature'\nimport { rowPaginationFeature } from './row-pagination/rowPaginationFeature'\nimport { rowPinningFeature } from './row-pinning/rowPinningFeature'\nimport { rowSelectionFeature } from './row-selection/rowSelectionFeature'\nimport { rowSortingFeature } from './row-sorting/rowSortingFeature'\n\nexport interface StockFeatures {\n columnFacetingFeature: typeof columnFacetingFeature\n columnFilteringFeature: typeof columnFilteringFeature\n columnGroupingFeature: typeof columnGroupingFeature\n columnOrderingFeature: typeof columnOrderingFeature\n columnPinningFeature: typeof columnPinningFeature\n columnResizingFeature: typeof columnResizingFeature\n columnSizingFeature: typeof columnSizingFeature\n columnVisibilityFeature: typeof columnVisibilityFeature\n globalFilteringFeature: typeof globalFilteringFeature\n rowExpandingFeature: typeof rowExpandingFeature\n rowPaginationFeature: typeof rowPaginationFeature\n rowPinningFeature: typeof rowPinningFeature\n rowSelectionFeature: typeof rowSelectionFeature\n rowSortingFeature: typeof rowSortingFeature\n}\n\n/**\n * The complete set of stock optional table features.\n *\n * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.\n */\nexport const stockFeatures: StockFeatures = {\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n} as const\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqCA,MAAa,gBAA+B;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
1
+ {"version":3,"file":"stockFeatures.cjs","names":[],"sources":["../../src/features/stockFeatures.ts"],"sourcesContent":["import { columnFacetingFeature } from './column-faceting/columnFacetingFeature'\nimport { rowAggregationFeature } from './row-aggregation/rowAggregationFeature'\nimport { columnFilteringFeature } from './column-filtering/columnFilteringFeature'\nimport { columnGroupingFeature } from './column-grouping/columnGroupingFeature'\nimport { columnOrderingFeature } from './column-ordering/columnOrderingFeature'\nimport { columnPinningFeature } from './column-pinning/columnPinningFeature'\nimport { columnResizingFeature } from './column-resizing/columnResizingFeature'\nimport { columnSizingFeature } from './column-sizing/columnSizingFeature'\nimport { columnVisibilityFeature } from './column-visibility/columnVisibilityFeature'\nimport { globalFilteringFeature } from './global-filtering/globalFilteringFeature'\nimport { rowExpandingFeature } from './row-expanding/rowExpandingFeature'\nimport { rowPaginationFeature } from './row-pagination/rowPaginationFeature'\nimport { rowPinningFeature } from './row-pinning/rowPinningFeature'\nimport { rowSelectionFeature } from './row-selection/rowSelectionFeature'\nimport { rowSortingFeature } from './row-sorting/rowSortingFeature'\n\nexport interface StockFeatures {\n rowAggregationFeature: typeof rowAggregationFeature\n columnFacetingFeature: typeof columnFacetingFeature\n columnFilteringFeature: typeof columnFilteringFeature\n columnGroupingFeature: typeof columnGroupingFeature\n columnOrderingFeature: typeof columnOrderingFeature\n columnPinningFeature: typeof columnPinningFeature\n columnResizingFeature: typeof columnResizingFeature\n columnSizingFeature: typeof columnSizingFeature\n columnVisibilityFeature: typeof columnVisibilityFeature\n globalFilteringFeature: typeof globalFilteringFeature\n rowExpandingFeature: typeof rowExpandingFeature\n rowPaginationFeature: typeof rowPaginationFeature\n rowPinningFeature: typeof rowPinningFeature\n rowSelectionFeature: typeof rowSelectionFeature\n rowSortingFeature: typeof rowSortingFeature\n}\n\n/**\n * The complete set of stock optional table features.\n *\n * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.\n */\nexport const stockFeatures: StockFeatures = {\n rowAggregationFeature,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n} as const\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAa,gBAA+B;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -1,4 +1,5 @@
1
1
  import { columnFacetingFeature } from "./column-faceting/columnFacetingFeature.cjs";
2
+ import { rowAggregationFeature } from "./row-aggregation/rowAggregationFeature.cjs";
2
3
  import { columnFilteringFeature } from "./column-filtering/columnFilteringFeature.cjs";
3
4
  import { columnGroupingFeature } from "./column-grouping/columnGroupingFeature.cjs";
4
5
  import { columnOrderingFeature } from "./column-ordering/columnOrderingFeature.cjs";
@@ -15,6 +16,7 @@ import { rowSortingFeature } from "./row-sorting/rowSortingFeature.cjs";
15
16
 
16
17
  //#region src/features/stockFeatures.d.ts
17
18
  interface StockFeatures {
19
+ rowAggregationFeature: typeof rowAggregationFeature;
18
20
  columnFacetingFeature: typeof columnFacetingFeature;
19
21
  columnFilteringFeature: typeof columnFilteringFeature;
20
22
  columnGroupingFeature: typeof columnGroupingFeature;
@@ -1,4 +1,5 @@
1
1
  import { columnFacetingFeature } from "./column-faceting/columnFacetingFeature.js";
2
+ import { rowAggregationFeature } from "./row-aggregation/rowAggregationFeature.js";
2
3
  import { columnFilteringFeature } from "./column-filtering/columnFilteringFeature.js";
3
4
  import { columnGroupingFeature } from "./column-grouping/columnGroupingFeature.js";
4
5
  import { columnOrderingFeature } from "./column-ordering/columnOrderingFeature.js";
@@ -15,6 +16,7 @@ import { rowSortingFeature } from "./row-sorting/rowSortingFeature.js";
15
16
 
16
17
  //#region src/features/stockFeatures.d.ts
17
18
  interface StockFeatures {
19
+ rowAggregationFeature: typeof rowAggregationFeature;
18
20
  columnFacetingFeature: typeof columnFacetingFeature;
19
21
  columnFilteringFeature: typeof columnFilteringFeature;
20
22
  columnGroupingFeature: typeof columnGroupingFeature;
@@ -1,4 +1,5 @@
1
1
  import { columnFacetingFeature } from "./column-faceting/columnFacetingFeature.js";
2
+ import { rowAggregationFeature } from "./row-aggregation/rowAggregationFeature.js";
2
3
  import { columnFilteringFeature } from "./column-filtering/columnFilteringFeature.js";
3
4
  import { columnGroupingFeature } from "./column-grouping/columnGroupingFeature.js";
4
5
  import { columnOrderingFeature } from "./column-ordering/columnOrderingFeature.js";
@@ -20,6 +21,7 @@ import { rowSortingFeature } from "./row-sorting/rowSortingFeature.js";
20
21
  * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.
21
22
  */
22
23
  const stockFeatures = {
24
+ rowAggregationFeature,
23
25
  columnFacetingFeature,
24
26
  columnFilteringFeature,
25
27
  columnGroupingFeature,
@@ -1 +1 @@
1
- {"version":3,"file":"stockFeatures.js","names":[],"sources":["../../src/features/stockFeatures.ts"],"sourcesContent":["import { columnFacetingFeature } from './column-faceting/columnFacetingFeature'\nimport { columnFilteringFeature } from './column-filtering/columnFilteringFeature'\nimport { columnGroupingFeature } from './column-grouping/columnGroupingFeature'\nimport { columnOrderingFeature } from './column-ordering/columnOrderingFeature'\nimport { columnPinningFeature } from './column-pinning/columnPinningFeature'\nimport { columnResizingFeature } from './column-resizing/columnResizingFeature'\nimport { columnSizingFeature } from './column-sizing/columnSizingFeature'\nimport { columnVisibilityFeature } from './column-visibility/columnVisibilityFeature'\nimport { globalFilteringFeature } from './global-filtering/globalFilteringFeature'\nimport { rowExpandingFeature } from './row-expanding/rowExpandingFeature'\nimport { rowPaginationFeature } from './row-pagination/rowPaginationFeature'\nimport { rowPinningFeature } from './row-pinning/rowPinningFeature'\nimport { rowSelectionFeature } from './row-selection/rowSelectionFeature'\nimport { rowSortingFeature } from './row-sorting/rowSortingFeature'\n\nexport interface StockFeatures {\n columnFacetingFeature: typeof columnFacetingFeature\n columnFilteringFeature: typeof columnFilteringFeature\n columnGroupingFeature: typeof columnGroupingFeature\n columnOrderingFeature: typeof columnOrderingFeature\n columnPinningFeature: typeof columnPinningFeature\n columnResizingFeature: typeof columnResizingFeature\n columnSizingFeature: typeof columnSizingFeature\n columnVisibilityFeature: typeof columnVisibilityFeature\n globalFilteringFeature: typeof globalFilteringFeature\n rowExpandingFeature: typeof rowExpandingFeature\n rowPaginationFeature: typeof rowPaginationFeature\n rowPinningFeature: typeof rowPinningFeature\n rowSelectionFeature: typeof rowSelectionFeature\n rowSortingFeature: typeof rowSortingFeature\n}\n\n/**\n * The complete set of stock optional table features.\n *\n * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.\n */\nexport const stockFeatures: StockFeatures = {\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n} as const\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqCA,MAAa,gBAA+B;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
1
+ {"version":3,"file":"stockFeatures.js","names":[],"sources":["../../src/features/stockFeatures.ts"],"sourcesContent":["import { columnFacetingFeature } from './column-faceting/columnFacetingFeature'\nimport { rowAggregationFeature } from './row-aggregation/rowAggregationFeature'\nimport { columnFilteringFeature } from './column-filtering/columnFilteringFeature'\nimport { columnGroupingFeature } from './column-grouping/columnGroupingFeature'\nimport { columnOrderingFeature } from './column-ordering/columnOrderingFeature'\nimport { columnPinningFeature } from './column-pinning/columnPinningFeature'\nimport { columnResizingFeature } from './column-resizing/columnResizingFeature'\nimport { columnSizingFeature } from './column-sizing/columnSizingFeature'\nimport { columnVisibilityFeature } from './column-visibility/columnVisibilityFeature'\nimport { globalFilteringFeature } from './global-filtering/globalFilteringFeature'\nimport { rowExpandingFeature } from './row-expanding/rowExpandingFeature'\nimport { rowPaginationFeature } from './row-pagination/rowPaginationFeature'\nimport { rowPinningFeature } from './row-pinning/rowPinningFeature'\nimport { rowSelectionFeature } from './row-selection/rowSelectionFeature'\nimport { rowSortingFeature } from './row-sorting/rowSortingFeature'\n\nexport interface StockFeatures {\n rowAggregationFeature: typeof rowAggregationFeature\n columnFacetingFeature: typeof columnFacetingFeature\n columnFilteringFeature: typeof columnFilteringFeature\n columnGroupingFeature: typeof columnGroupingFeature\n columnOrderingFeature: typeof columnOrderingFeature\n columnPinningFeature: typeof columnPinningFeature\n columnResizingFeature: typeof columnResizingFeature\n columnSizingFeature: typeof columnSizingFeature\n columnVisibilityFeature: typeof columnVisibilityFeature\n globalFilteringFeature: typeof globalFilteringFeature\n rowExpandingFeature: typeof rowExpandingFeature\n rowPaginationFeature: typeof rowPaginationFeature\n rowPinningFeature: typeof rowPinningFeature\n rowSelectionFeature: typeof rowSelectionFeature\n rowSortingFeature: typeof rowSortingFeature\n}\n\n/**\n * The complete set of stock optional table features.\n *\n * Use individual feature exports for tree-shaking, or this aggregate when a table should include every built-in feature.\n */\nexport const stockFeatures: StockFeatures = {\n rowAggregationFeature,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n} as const\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAa,gBAA+B;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -1,7 +1,7 @@
1
1
  import { CellData, RowData } from "./types/type-utils.cjs";
2
2
  import { Header } from "./types/Header.cjs";
3
- import { TableFeatures } from "./types/TableFeatures.cjs";
4
3
  import { Cell } from "./types/Cell.cjs";
4
+ import { TableFeatures } from "./types/TableFeatures.cjs";
5
5
 
6
6
  //#region src/flex-render.d.ts
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { CellData, RowData } from "./types/type-utils.js";
2
2
  import { Header } from "./types/Header.js";
3
- import { TableFeatures } from "./types/TableFeatures.js";
4
3
  import { Cell } from "./types/Cell.js";
4
+ import { TableFeatures } from "./types/TableFeatures.js";
5
5
 
6
6
  //#region src/flex-render.d.ts
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"columnHelper.cjs","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport type ColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Creates helper functions for authoring column definitions with stronger value\n * inference.\n *\n * `accessor` infers `TValue` from an accessor key or accessor function,\n * `display` creates non-data columns, `group` creates parent columns, and\n * `columns` preserves tuple-level value types for arrays. At runtime these\n * helpers only return column definition objects.\n *\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof features, Person>() // features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, { id: 'lastName' }),\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkGA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;GACd,IACA;IACE,GAAG;IACH,aAAa;GACf;EACN;EACA,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;CACrB;AACF"}
1
+ {"version":3,"file":"columnHelper.cjs","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport interface ColumnHelper<\n in out TFeatures extends TableFeatures,\n in out TData extends RowData,\n> {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Creates helper functions for authoring column definitions with stronger value\n * inference.\n *\n * `accessor` infers `TValue` from an accessor key or accessor function,\n * `display` creates non-data columns, `group` creates parent columns, and\n * `columns` preserves tuple-level value types for arrays. At runtime these\n * helpers only return column definition objects.\n *\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof features, Person>() // features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, { id: 'lastName' }),\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkGA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;GACd,IACA;IACE,GAAG;IACH,aAAa;GACf;EACN;EACA,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;CACrB;AACF"}
@@ -3,7 +3,7 @@ import { AccessorFn, AccessorFnColumnDef, AccessorKeyColumnDef, ColumnDef, Displ
3
3
  import { TableFeatures } from "../types/TableFeatures.cjs";
4
4
 
5
5
  //#region src/helpers/columnHelper.d.ts
6
- type ColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = {
6
+ interface ColumnHelper<in out TFeatures extends TableFeatures, in out TData extends RowData> {
7
7
  /**
8
8
  * Creates a data column definition with an accessor key or function to extract the cell value.
9
9
  * @example
@@ -45,7 +45,7 @@ type ColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = {
45
45
  * ```
46
46
  */
47
47
  group: (column: GroupColumnDef<TFeatures, TData, unknown>) => GroupColumnDef<TFeatures, TData, unknown>;
48
- };
48
+ }
49
49
  /**
50
50
  * Creates helper functions for authoring column definitions with stronger value
51
51
  * inference.
@@ -3,7 +3,7 @@ import { AccessorFn, AccessorFnColumnDef, AccessorKeyColumnDef, ColumnDef, Displ
3
3
  import { TableFeatures } from "../types/TableFeatures.js";
4
4
 
5
5
  //#region src/helpers/columnHelper.d.ts
6
- type ColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = {
6
+ interface ColumnHelper<in out TFeatures extends TableFeatures, in out TData extends RowData> {
7
7
  /**
8
8
  * Creates a data column definition with an accessor key or function to extract the cell value.
9
9
  * @example
@@ -45,7 +45,7 @@ type ColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = {
45
45
  * ```
46
46
  */
47
47
  group: (column: GroupColumnDef<TFeatures, TData, unknown>) => GroupColumnDef<TFeatures, TData, unknown>;
48
- };
48
+ }
49
49
  /**
50
50
  * Creates helper functions for authoring column definitions with stronger value
51
51
  * inference.
@@ -1 +1 @@
1
- {"version":3,"file":"columnHelper.js","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport type ColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Creates helper functions for authoring column definitions with stronger value\n * inference.\n *\n * `accessor` infers `TValue` from an accessor key or accessor function,\n * `display` creates non-data columns, `group` creates parent columns, and\n * `columns` preserves tuple-level value types for arrays. At runtime these\n * helpers only return column definition objects.\n *\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof features, Person>() // features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, { id: 'lastName' }),\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkGA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;GACd,IACA;IACE,GAAG;IACH,aAAa;GACf;EACN;EACA,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;CACrB;AACF"}
1
+ {"version":3,"file":"columnHelper.js","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport interface ColumnHelper<\n in out TFeatures extends TableFeatures,\n in out TData extends RowData,\n> {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Creates helper functions for authoring column definitions with stronger value\n * inference.\n *\n * `accessor` infers `TValue` from an accessor key or accessor function,\n * `display` creates non-data columns, `group` creates parent columns, and\n * `columns` preserves tuple-level value types for arrays. At runtime these\n * helpers only return column definition objects.\n *\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof features, Person>() // features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, { id: 'lastName' }),\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkGA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;GACd,IACA;IACE,GAAG;IACH,aAAa;GACf;EACN;EACA,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;CACrB;AACF"}
@@ -0,0 +1,30 @@
1
+
2
+ //#region src/helpers/metaHelper.ts
3
+ /**
4
+ * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the
5
+ * `features` option without a type assertion.
6
+ *
7
+ * Equivalent to `{} as TMeta`, but reads as type-only at the call site and
8
+ * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives
9
+ * when the meta type has only optional properties (where an auto-fix removing
10
+ * the assertion would silently degrade the inferred meta type to `{}`).
11
+ *
12
+ * The returned value is a phantom — it is ignored and stripped from the
13
+ * table's registered features at runtime; only its type is used.
14
+ * @example
15
+ * ```
16
+ * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'
17
+ * const features = tableFeatures({
18
+ * rowSortingFeature,
19
+ * tableMeta: metaHelper<MyTableMeta>(),
20
+ * columnMeta: metaHelper<MyColumnMeta>(),
21
+ * });
22
+ * ```
23
+ */
24
+ function metaHelper() {
25
+ return {};
26
+ }
27
+
28
+ //#endregion
29
+ exports.metaHelper = metaHelper;
30
+ //# sourceMappingURL=metaHelper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaHelper.cjs","names":[],"sources":["../../src/helpers/metaHelper.ts"],"sourcesContent":["/**\n * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the\n * `features` option without a type assertion.\n *\n * Equivalent to `{} as TMeta`, but reads as type-only at the call site and\n * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives\n * when the meta type has only optional properties (where an auto-fix removing\n * the assertion would silently degrade the inferred meta type to `{}`).\n *\n * The returned value is a phantom — it is ignored and stripped from the\n * table's registered features at runtime; only its type is used.\n * @example\n * ```\n * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'\n * const features = tableFeatures({\n * rowSortingFeature,\n * tableMeta: metaHelper<MyTableMeta>(),\n * columnMeta: metaHelper<MyColumnMeta>(),\n * });\n * ```\n */\nexport function metaHelper<TMeta extends object>(): TMeta {\n return {} as TMeta\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,aAA0C;CACxD,OAAO,CAAC;AACV"}
@@ -0,0 +1,26 @@
1
+ //#region src/helpers/metaHelper.d.ts
2
+ /**
3
+ * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the
4
+ * `features` option without a type assertion.
5
+ *
6
+ * Equivalent to `{} as TMeta`, but reads as type-only at the call site and
7
+ * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives
8
+ * when the meta type has only optional properties (where an auto-fix removing
9
+ * the assertion would silently degrade the inferred meta type to `{}`).
10
+ *
11
+ * The returned value is a phantom — it is ignored and stripped from the
12
+ * table's registered features at runtime; only its type is used.
13
+ * @example
14
+ * ```
15
+ * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'
16
+ * const features = tableFeatures({
17
+ * rowSortingFeature,
18
+ * tableMeta: metaHelper<MyTableMeta>(),
19
+ * columnMeta: metaHelper<MyColumnMeta>(),
20
+ * });
21
+ * ```
22
+ */
23
+ declare function metaHelper<TMeta extends object>(): TMeta;
24
+ //#endregion
25
+ export { metaHelper };
26
+ //# sourceMappingURL=metaHelper.d.cts.map
@@ -0,0 +1,26 @@
1
+ //#region src/helpers/metaHelper.d.ts
2
+ /**
3
+ * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the
4
+ * `features` option without a type assertion.
5
+ *
6
+ * Equivalent to `{} as TMeta`, but reads as type-only at the call site and
7
+ * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives
8
+ * when the meta type has only optional properties (where an auto-fix removing
9
+ * the assertion would silently degrade the inferred meta type to `{}`).
10
+ *
11
+ * The returned value is a phantom — it is ignored and stripped from the
12
+ * table's registered features at runtime; only its type is used.
13
+ * @example
14
+ * ```
15
+ * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'
16
+ * const features = tableFeatures({
17
+ * rowSortingFeature,
18
+ * tableMeta: metaHelper<MyTableMeta>(),
19
+ * columnMeta: metaHelper<MyColumnMeta>(),
20
+ * });
21
+ * ```
22
+ */
23
+ declare function metaHelper<TMeta extends object>(): TMeta;
24
+ //#endregion
25
+ export { metaHelper };
26
+ //# sourceMappingURL=metaHelper.d.ts.map
@@ -0,0 +1,29 @@
1
+ //#region src/helpers/metaHelper.ts
2
+ /**
3
+ * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the
4
+ * `features` option without a type assertion.
5
+ *
6
+ * Equivalent to `{} as TMeta`, but reads as type-only at the call site and
7
+ * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives
8
+ * when the meta type has only optional properties (where an auto-fix removing
9
+ * the assertion would silently degrade the inferred meta type to `{}`).
10
+ *
11
+ * The returned value is a phantom — it is ignored and stripped from the
12
+ * table's registered features at runtime; only its type is used.
13
+ * @example
14
+ * ```
15
+ * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'
16
+ * const features = tableFeatures({
17
+ * rowSortingFeature,
18
+ * tableMeta: metaHelper<MyTableMeta>(),
19
+ * columnMeta: metaHelper<MyColumnMeta>(),
20
+ * });
21
+ * ```
22
+ */
23
+ function metaHelper() {
24
+ return {};
25
+ }
26
+
27
+ //#endregion
28
+ export { metaHelper };
29
+ //# sourceMappingURL=metaHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaHelper.js","names":[],"sources":["../../src/helpers/metaHelper.ts"],"sourcesContent":["/**\n * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the\n * `features` option without a type assertion.\n *\n * Equivalent to `{} as TMeta`, but reads as type-only at the call site and\n * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives\n * when the meta type has only optional properties (where an auto-fix removing\n * the assertion would silently degrade the inferred meta type to `{}`).\n *\n * The returned value is a phantom — it is ignored and stripped from the\n * table's registered features at runtime; only its type is used.\n * @example\n * ```\n * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'\n * const features = tableFeatures({\n * rowSortingFeature,\n * tableMeta: metaHelper<MyTableMeta>(),\n * columnMeta: metaHelper<MyColumnMeta>(),\n * });\n * ```\n */\nexport function metaHelper<TMeta extends object>(): TMeta {\n return {} as TMeta\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,aAA0C;CACxD,OAAO,CAAC;AACV"}
@@ -4,11 +4,40 @@
4
4
  * A helper function to help define the features that are to be imported and applied to a table instance.
5
5
  * Use this utility to make it easier to have the correct type inference for the features that are being imported.
6
6
  * **Note:** It is recommended to use this utility statically outside of a component.
7
+ *
8
+ * Alongside feature modules, this object carries everything else that is
9
+ * statically stitched into the table:
10
+ *
11
+ * - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)
12
+ * - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),
13
+ * whose keys become the valid string values for `sortFn`, `filterFn`,
14
+ * `globalFilterFn`, and `aggregationFn` with full inference
15
+ * - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types
16
+ * instead of using global declaration merging. The values are phantom
17
+ * (ignored and stripped at runtime); only their types are used.
7
18
  * @example
8
19
  * ```
9
- * import { tableFeatures, columnVisibilityFeature, rowPinningFeature } from '@tanstack/react-table'
10
- * const features = tableFeatures({ columnVisibilityFeature, rowPinningFeature });
11
- * const table = useTable({ features, rowModels: {}, columns, data });
20
+ * import {
21
+ * columnFilteringFeature,
22
+ * createFilteredRowModel,
23
+ * createSortedRowModel,
24
+ * filterFn_includesString,
25
+ * rowSortingFeature,
26
+ * sortFn_alphanumeric,
27
+ * sortFn_text,
28
+ * tableFeatures,
29
+ * } from '@tanstack/react-table'
30
+ * const features = tableFeatures({
31
+ * columnFilteringFeature,
32
+ * rowSortingFeature,
33
+ * filteredRowModel: createFilteredRowModel(),
34
+ * sortedRowModel: createSortedRowModel(),
35
+ * filterFns: { includesString: filterFn_includesString, myCustomFilterFn },
36
+ * sortFns: { alphanumeric: sortFn_alphanumeric, text: sortFn_text },
37
+ * tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },
38
+ * columnMeta: {} as { align?: 'left' | 'right' },
39
+ * });
40
+ * const table = useTable({ features, columns, data });
12
41
  * ```
13
42
  */
14
43
  function tableFeatures(features) {
@@ -1 +1 @@
1
- {"version":3,"file":"tableFeatures.cjs","names":[],"sources":["../../src/helpers/tableFeatures.ts"],"sourcesContent":["import type { TableFeatures } from '../types/TableFeatures'\n\n/**\n * A helper function to help define the features that are to be imported and applied to a table instance.\n * Use this utility to make it easier to have the correct type inference for the features that are being imported.\n * **Note:** It is recommended to use this utility statically outside of a component.\n * @example\n * ```\n * import { tableFeatures, columnVisibilityFeature, rowPinningFeature } from '@tanstack/react-table'\n * const features = tableFeatures({ columnVisibilityFeature, rowPinningFeature });\n * const table = useTable({ features, rowModels: {}, columns, data });\n * ```\n */\nexport function tableFeatures<TFeatures extends TableFeatures>(\n features: TFeatures,\n): TFeatures {\n return features\n}\n\n// test\n\n// const features = tableFeatures({\n// rowPinningFeature: {},\n// });\n"],"mappings":";;;;;;;;;;;;;AAaA,SAAgB,cACd,UACW;CACX,OAAO;AACT"}
1
+ {"version":3,"file":"tableFeatures.cjs","names":[],"sources":["../../src/helpers/tableFeatures.ts"],"sourcesContent":["import type {\n TableFeatures,\n ValidateFeatureSlots,\n} from '../types/TableFeatures'\n\n/**\n * A helper function to help define the features that are to be imported and applied to a table instance.\n * Use this utility to make it easier to have the correct type inference for the features that are being imported.\n * **Note:** It is recommended to use this utility statically outside of a component.\n *\n * Alongside feature modules, this object carries everything else that is\n * statically stitched into the table:\n *\n * - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)\n * - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),\n * whose keys become the valid string values for `sortFn`, `filterFn`,\n * `globalFilterFn`, and `aggregationFn` with full inference\n * - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types\n * instead of using global declaration merging. The values are phantom\n * (ignored and stripped at runtime); only their types are used.\n * @example\n * ```\n * import {\n * columnFilteringFeature,\n * createFilteredRowModel,\n * createSortedRowModel,\n * filterFn_includesString,\n * rowSortingFeature,\n * sortFn_alphanumeric,\n * sortFn_text,\n * tableFeatures,\n * } from '@tanstack/react-table'\n * const features = tableFeatures({\n * columnFilteringFeature,\n * rowSortingFeature,\n * filteredRowModel: createFilteredRowModel(),\n * sortedRowModel: createSortedRowModel(),\n * filterFns: { includesString: filterFn_includesString, myCustomFilterFn },\n * sortFns: { alphanumeric: sortFn_alphanumeric, text: sortFn_text },\n * tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },\n * columnMeta: {} as { align?: 'left' | 'right' },\n * });\n * const table = useTable({ features, columns, data });\n * ```\n */\nexport function tableFeatures<TFeatures extends TableFeatures>(\n features: TFeatures & ValidateFeatureSlots<TFeatures>,\n): TFeatures {\n return features\n}\n\n// test\n\n// const features = tableFeatures({\n// rowPinningFeature: {},\n// });\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,SAAgB,cACd,UACW;CACX,OAAO;AACT"}