@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
@@ -1,4 +1,4 @@
1
- import { tableMemo } from '../../utils'
1
+ import { copyInstancePropertiesWithoutMemos, tableMemo } from '../../utils'
2
2
  import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
3
3
  import { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'
4
4
  import type { Column_Internal } from '../../types/Column'
@@ -6,23 +6,27 @@ import type { TableFeatures } from '../../types/TableFeatures'
6
6
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
7
7
  import type { Table, Table_Internal } from '../../types/Table'
8
8
  import type { Row } from '../../types/Row'
9
- import type { SortFn, SortFns } from './rowSortingFeature.types'
9
+ import type { SortFn } from './rowSortingFeature.types'
10
10
  import type { RowData } from '../../types/type-utils'
11
11
 
12
12
  /**
13
13
  * Creates a memoized sorted row model factory.
14
14
  *
15
15
  * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
16
+ *
17
+ * Register the sorting functions you use with the `sortFns` slot on the
18
+ * `features` option:
19
+ * `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.
20
+ * Importing individual `sortFn_*` functions keeps unused built-ins out of
21
+ * your bundle; sorting functions passed directly to the `sortFn` column
22
+ * option need no registration at all.
16
23
  */
17
24
  export function createSortedRowModel<
18
25
  TFeatures extends TableFeatures,
19
26
  TData extends RowData,
20
- >(
21
- sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,
22
- ): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
27
+ >(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
23
28
  return (_table) => {
24
29
  const table = _table as unknown as Table_Internal<TFeatures, TData>
25
- if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns
26
30
  return tableMemo({
27
31
  feature: 'rowSortingFeature',
28
32
  table,
@@ -51,106 +55,134 @@ function _createSortedRowModel<
51
55
  const sortedFlatRows: Array<Row<TFeatures, TData>> = []
52
56
 
53
57
  // Filter out sortings that correspond to non existing columns
54
- const availableSorting = sorting.filter((sort) =>
55
- column_getCanSort(
56
- table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,
57
- ),
58
- )
59
-
60
- const columnInfoById: Record<
61
- string,
62
- {
63
- sortUndefined?: false | -1 | 1 | 'first' | 'last'
64
- invertSorting?: boolean
65
- sortFn: SortFn<TFeatures, TData>
66
- }
67
- > = {}
58
+ const availableSorting = sorting.filter((sort) => {
59
+ const column = table.getColumn(sort.id)
60
+ return column ? column_getCanSort(column) : false
61
+ })
62
+
63
+ if (!availableSorting.length) {
64
+ return preSortedRowModel
65
+ }
68
66
 
69
- availableSorting.forEach((sortEntry) => {
67
+ const resolvedSorting: Array<{
68
+ id: string
69
+ desc?: boolean
70
+ sortUndefined?: false | -1 | 1 | 'first' | 'last'
71
+ invertSorting?: boolean
72
+ sortFn: SortFn<TFeatures, TData>
73
+ }> = []
74
+
75
+ for (let i = 0; i < availableSorting.length; i++) {
76
+ const sortEntry = availableSorting[i]!
70
77
  const column: Column_Internal<TFeatures, TData> | undefined =
71
78
  table.getColumn(sortEntry.id)
72
- if (!column) return
79
+ if (!column) {
80
+ continue
81
+ }
73
82
 
74
- columnInfoById[sortEntry.id] = {
83
+ resolvedSorting.push({
84
+ id: sortEntry.id,
85
+ desc: sortEntry.desc,
75
86
  sortUndefined: column.columnDef.sortUndefined,
76
87
  invertSorting: column.columnDef.invertSorting,
77
88
  sortFn: column_getSortFn(column),
78
- }
79
- })
89
+ })
90
+ }
80
91
 
81
- const sortData = (rows: Array<Row<TFeatures, TData>>) => {
82
- const sortedData = rows.slice()
92
+ const compareRows = (
93
+ rowA: Row<TFeatures, TData>,
94
+ rowB: Row<TFeatures, TData>,
95
+ ) => {
96
+ for (let i = 0; i < resolvedSorting.length; i++) {
97
+ const sortEntry = resolvedSorting[i]!
98
+ const sortUndefined = sortEntry.sortUndefined
99
+ const isDesc = sortEntry.desc
100
+
101
+ let sortInt = 0
102
+
103
+ // All sorting ints should always return in ascending order
104
+ if (sortUndefined) {
105
+ const aValue = rowA.getValue(sortEntry.id)
106
+ const bValue = rowB.getValue(sortEntry.id)
83
107
 
84
- sortedData.sort((rowA, rowB) => {
85
- for (let i = 0; i < availableSorting.length; i++) {
86
- const sortEntry = availableSorting[i]!
87
- const columnInfo = columnInfoById[sortEntry.id]!
88
- const sortUndefined = columnInfo.sortUndefined
89
- const isDesc = sortEntry.desc
90
-
91
- let sortInt = 0
92
-
93
- // All sorting ints should always return in ascending order
94
- if (sortUndefined) {
95
- const aValue = rowA.getValue(sortEntry.id)
96
- const bValue = rowB.getValue(sortEntry.id)
97
-
98
- const aUndefined = aValue === undefined
99
- const bUndefined = bValue === undefined
100
-
101
- if (aUndefined || bUndefined) {
102
- if (sortUndefined === 'first') return aUndefined ? -1 : 1
103
- if (sortUndefined === 'last') return aUndefined ? 1 : -1
104
- sortInt =
105
- aUndefined && bUndefined
106
- ? 0
107
- : aUndefined
108
- ? sortUndefined
109
- : -sortUndefined
110
- }
108
+ const aUndefined = aValue === undefined
109
+ const bUndefined = bValue === undefined
110
+
111
+ if (aUndefined && bUndefined) {
112
+ continue
111
113
  }
112
114
 
113
- if (sortInt === 0) {
114
- sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)
115
+ if (aUndefined || bUndefined) {
116
+ if (sortUndefined === 'first') return aUndefined ? -1 : 1
117
+ if (sortUndefined === 'last') return aUndefined ? 1 : -1
118
+ sortInt = aUndefined ? sortUndefined : -sortUndefined
115
119
  }
120
+ }
116
121
 
117
- // If sorting is non-zero, take care of desc and inversion
118
- if (sortInt !== 0) {
119
- if (isDesc) {
120
- sortInt *= -1
121
- }
122
+ if (sortInt === 0) {
123
+ sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id)
124
+ }
122
125
 
123
- if (columnInfo.invertSorting) {
124
- sortInt *= -1
125
- }
126
+ // If sorting is non-zero, take care of desc and inversion
127
+ if (sortInt !== 0) {
128
+ if (isDesc) {
129
+ sortInt *= -1
130
+ }
126
131
 
127
- return sortInt
132
+ if (sortEntry.invertSorting) {
133
+ sortInt *= -1
128
134
  }
135
+
136
+ return sortInt
129
137
  }
130
- return rowA.index - rowB.index
131
- })
138
+ }
139
+
140
+ return rowA.index - rowB.index
141
+ }
142
+
143
+ const sortData = (
144
+ rows: Array<Row<TFeatures, TData>>,
145
+ ): {
146
+ rows: Array<Row<TFeatures, TData>>
147
+ changed: boolean
148
+ } => {
149
+ const sortedData = rows.slice()
150
+
151
+ sortedData.sort(compareRows)
152
+ let changed = false
132
153
 
133
154
  // If there are sub-rows, sort them. Clone only rows that need mutation
134
155
  // (i.e. have subRows) so we don't corrupt the source row model.
135
156
  for (let i = 0; i < sortedData.length; i++) {
136
157
  const row = sortedData[i]!
158
+ if (row !== rows[i]) {
159
+ changed = true
160
+ }
161
+
137
162
  if (row.subRows.length) {
138
- // Preserve prototype chain so methods like getValue() remain accessible
139
- const cloned = Object.create(Object.getPrototypeOf(row))
140
- Object.assign(cloned, row)
141
- cloned.subRows = sortData(row.subRows)
142
- sortedData[i] = cloned
143
- sortedFlatRows.push(cloned)
163
+ const sortedSubRows = sortData(row.subRows)
164
+
165
+ if (sortedSubRows.changed) {
166
+ // Preserve prototype chain so methods like getValue() remain accessible
167
+ const cloned = Object.create(Object.getPrototypeOf(row))
168
+ copyInstancePropertiesWithoutMemos(cloned, row)
169
+ cloned.subRows = sortedSubRows.rows
170
+ sortedData[i] = cloned
171
+ sortedFlatRows.push(cloned)
172
+ changed = true
173
+ } else {
174
+ sortedFlatRows.push(row)
175
+ }
144
176
  } else {
145
177
  sortedFlatRows.push(row)
146
178
  }
147
179
  }
148
180
 
149
- return sortedData
181
+ return { rows: sortedData, changed }
150
182
  }
151
183
 
152
184
  return {
153
- rows: sortData(preSortedRowModel.rows),
185
+ rows: sortData(preSortedRowModel.rows).rows,
154
186
  flatRows: sortedFlatRows,
155
187
  rowsById: preSortedRowModel.rowsById,
156
188
  }
@@ -1,8 +1,12 @@
1
1
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
2
- import type { Table } from '../../types/Table'
3
- import type { BuiltInSortFn } from '../../fns/sortFns'
4
- import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
5
- import type { TableFeatures } from '../../types/TableFeatures'
2
+ import type { BuiltInSortFn } from './sortFns'
3
+ import type {
4
+ OnChangeFn,
5
+ RowData,
6
+ TransformDataValueFn,
7
+ Updater,
8
+ } from '../../types/type-utils'
9
+ import type { IsAny, TableFeatures } from '../../types/TableFeatures'
6
10
  import type { Row } from '../../types/Row'
7
11
 
8
12
  export type SortDirection = 'asc' | 'desc'
@@ -19,23 +23,70 @@ export interface TableState_RowSorting {
19
23
  }
20
24
 
21
25
  export interface RowModelFns_RowSorting<
22
- TFeatures extends TableFeatures,
23
- TData extends RowData,
26
+ in out TFeatures extends TableFeatures,
27
+ in out TData extends RowData,
24
28
  > {
25
- sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>
29
+ sortFns: Record<string, SortFn<TFeatures, TData>>
26
30
  }
27
31
 
28
32
  export interface SortFns {}
29
33
 
30
34
  export interface SortFn<
31
- TFeatures extends TableFeatures,
32
- TData extends RowData,
35
+ in out TFeatures extends TableFeatures,
36
+ in out TData extends RowData,
33
37
  > {
34
38
  (
35
39
  rowA: Row<TFeatures, TData>,
36
40
  rowB: Row<TFeatures, TData>,
37
41
  columnId: string,
38
42
  ): number
43
+ /**
44
+ * Normalizes each row's value before the two sides are compared. Only
45
+ * honored by sorting functions built with `constructSortFn` (including all
46
+ * built-in sorting functions).
47
+ */
48
+ resolveDataValue?: TransformDataValueFn
49
+ }
50
+
51
+ /**
52
+ * The definition object accepted by `constructSortFn`.
53
+ *
54
+ * `sort` is a value-level comparator: it receives both rows' (resolved) data
55
+ * values instead of the whole rows, so normalization concerns stay in
56
+ * `resolveDataValue`.
57
+ */
58
+ export interface SortFnDef<
59
+ in out TFeatures extends TableFeatures,
60
+ in out TData extends RowData,
61
+ > {
62
+ sort: (
63
+ dataValueA: any,
64
+ dataValueB: any,
65
+ rowA: Row<TFeatures, TData>,
66
+ rowB: Row<TFeatures, TData>,
67
+ columnId: string,
68
+ ) => number
69
+ resolveDataValue?: TransformDataValueFn
70
+ }
71
+
72
+ /**
73
+ * The shape returned by `constructSortFn`: a `SortFn` with its definition
74
+ * attached, so variants can be built by spreading it into another
75
+ * `constructSortFn` call.
76
+ *
77
+ * The call signature is generic so a created sorting function can be used
78
+ * with any table's rows, regardless of the feature set it was defined
79
+ * against.
80
+ */
81
+ export interface CreatedSortFn<
82
+ in out TFeatures extends TableFeatures,
83
+ in out TData extends RowData,
84
+ > extends SortFnDef<TFeatures, TData> {
85
+ <TRowFeatures extends TableFeatures, TRowData extends RowData>(
86
+ rowA: Row<TRowFeatures, TRowData>,
87
+ rowB: Row<TRowFeatures, TRowData>,
88
+ columnId: string,
89
+ ): number
39
90
  }
40
91
 
41
92
  export type CustomSortFns<
@@ -43,14 +94,30 @@ export type CustomSortFns<
43
94
  TData extends RowData,
44
95
  > = Record<string, SortFn<TFeatures, TData>>
45
96
 
97
+ /**
98
+ * Resolves the valid string names for `columnDef.sortFn` for a feature set.
99
+ *
100
+ * When the features object declares a `sortFns` registry
101
+ * (`tableFeatures({ ..., sortFns })`), its keys are the only valid names; a
102
+ * name is only assignable if a sorting function is actually registered for it.
103
+ * Otherwise this falls back to the global declaration-merged `SortFns`
104
+ * interface.
105
+ */
106
+ export type ExtractSortFnKeys<TFeatures extends TableFeatures> =
107
+ IsAny<TFeatures> extends true
108
+ ? keyof SortFns | BuiltInSortFn
109
+ : TFeatures extends { sortFns: infer TSortFns extends object }
110
+ ? Extract<keyof TSortFns, string>
111
+ : keyof SortFns
112
+
46
113
  export type SortFnOption<
47
114
  TFeatures extends TableFeatures,
48
115
  TData extends RowData,
49
- > = 'auto' | keyof SortFns | BuiltInSortFn | SortFn<TFeatures, TData>
116
+ > = 'auto' | ExtractSortFnKeys<TFeatures> | SortFn<TFeatures, TData>
50
117
 
51
118
  export interface ColumnDef_RowSorting<
52
- TFeatures extends TableFeatures,
53
- TData extends RowData,
119
+ in out TFeatures extends TableFeatures,
120
+ in out TData extends RowData,
54
121
  > {
55
122
  /**
56
123
  * Enables/Disables multi-sorting for this column.
@@ -87,8 +154,8 @@ export interface ColumnDef_RowSorting<
87
154
  }
88
155
 
89
156
  export interface Column_RowSorting<
90
- TFeatures extends TableFeatures,
91
- TData extends RowData,
157
+ in out TFeatures extends TableFeatures,
158
+ in out TData extends RowData,
92
159
  > {
93
160
  /**
94
161
  * Removes this column from the table's sorting state
@@ -184,8 +251,8 @@ export interface TableOptions_RowSorting {
184
251
  }
185
252
 
186
253
  export interface Table_RowSorting<
187
- TFeatures extends TableFeatures,
188
- TData extends RowData,
254
+ in out _TFeatures extends TableFeatures,
255
+ in out _TData extends RowData,
189
256
  > {
190
257
  /**
191
258
  * Resets `sorting` to `initialState.sorting`.
@@ -200,8 +267,8 @@ export interface Table_RowSorting<
200
267
  }
201
268
 
202
269
  export interface Table_RowModels_Sorted<
203
- TFeatures extends TableFeatures,
204
- TData extends RowData,
270
+ in out TFeatures extends TableFeatures,
271
+ in out TData extends RowData,
205
272
  > {
206
273
  /**
207
274
  * Reads the row model immediately before sorting.
@@ -213,23 +280,9 @@ export interface Table_RowModels_Sorted<
213
280
  getSortedRowModel: () => RowModel<TFeatures, TData>
214
281
  }
215
282
 
216
- export interface CreateRowModel_Sorted<
217
- TFeatures extends TableFeatures,
218
- TData extends RowData,
219
- > {
220
- /**
221
- * Factory used to retrieve the sorted row model. If using server-side
222
- * sorting, this is not required. To use client-side sorting, pass the
223
- * exported `createSortedRowModel()` or implement your own factory.
224
- */
225
- sortedRowModel?: (
226
- table: Table<TFeatures, TData>,
227
- ) => () => RowModel<TFeatures, TData>
228
- }
229
-
230
283
  export interface CachedRowModel_Sorted<
231
- TFeatures extends TableFeatures,
232
- TData extends RowData,
284
+ in out TFeatures extends TableFeatures,
285
+ in out TData extends RowData,
233
286
  > {
234
287
  sortedRowModel: () => RowModel<TFeatures, TData>
235
288
  }
@@ -1,5 +1,5 @@
1
- import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'
2
1
  import { cloneState, isFunction } from '../../utils'
2
+ import { reSplitAlphaNumeric, sortFn_basic } from './sortFns'
3
3
  import type { CellData, RowData, Updater } from '../../types/type-utils'
4
4
  import type { TableFeatures } from '../../types/TableFeatures'
5
5
  import type { Table_Internal } from '../../types/Table'
@@ -89,33 +89,55 @@ export function column_getAutoSortFn<
89
89
  const sortFns: Record<string, SortFn<TFeatures, TData>> | undefined =
90
90
  column.table._rowModelFns.sortFns
91
91
 
92
- let sortFn: SortFn<TFeatures, TData> | undefined
93
-
94
92
  const firstRows = column.table.getFilteredRowModel().flatRows.slice(0, 10)
95
93
 
94
+ let sortFnName: string | undefined
96
95
  let isString = false
97
96
 
98
97
  for (let i = 0; i < firstRows.length; i++) {
99
98
  const value = firstRows[i]!.getValue(column.id)
100
99
 
101
100
  if (Object.prototype.toString.call(value) === '[object Date]') {
102
- sortFn = sortFns?.datetime
101
+ sortFnName = 'datetime'
102
+ break
103
103
  }
104
104
 
105
105
  if (typeof value === 'string') {
106
106
  isString = true
107
107
 
108
108
  if (value.split(reSplitAlphaNumeric).length > 1) {
109
- sortFn = sortFns?.alphanumeric
109
+ sortFnName = 'alphanumeric'
110
+ break
110
111
  }
111
112
  }
112
113
  }
113
114
 
114
- if (isString) {
115
- sortFn = sortFns?.text
115
+ if (!sortFnName && isString) {
116
+ sortFnName = 'text'
116
117
  }
117
118
 
118
- return sortFn ?? sortFn_basic
119
+ if (sortFnName) {
120
+ let sortFn = sortFns?.[sortFnName]
121
+
122
+ if (!sortFn) {
123
+ if (process.env.NODE_ENV === 'development') {
124
+ console.warn(
125
+ `sortFn '${sortFnName}' (auto) for column '${column.id}' is not registered`,
126
+ )
127
+ }
128
+
129
+ // String columns degrade to a registered text sort before basic
130
+ if (sortFnName === 'alphanumeric') {
131
+ sortFn = sortFns?.text
132
+ }
133
+ }
134
+
135
+ if (sortFn) {
136
+ return sortFn
137
+ }
138
+ }
139
+
140
+ return sortFn_basic
119
141
  }
120
142
 
121
143
  /**
@@ -165,11 +187,23 @@ export function column_getSortFn<
165
187
  const sortFns: Record<string, SortFn<TFeatures, TData>> | undefined =
166
188
  column.table._rowModelFns.sortFns
167
189
 
168
- return isFunction(column.columnDef.sortFn)
169
- ? column.columnDef.sortFn
170
- : column.columnDef.sortFn === 'auto'
171
- ? column_getAutoSortFn(column)
172
- : (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)
190
+ if (isFunction(column.columnDef.sortFn)) {
191
+ return column.columnDef.sortFn
192
+ }
193
+
194
+ if (column.columnDef.sortFn === 'auto') {
195
+ return column_getAutoSortFn(column)
196
+ }
197
+
198
+ const sortFn = sortFns?.[column.columnDef.sortFn as string]
199
+
200
+ if (process.env.NODE_ENV === 'development' && !sortFn) {
201
+ console.warn(
202
+ `sortFn '${String(column.columnDef.sortFn)}' for column '${column.id}' is not registered`,
203
+ )
204
+ }
205
+
206
+ return sortFn ?? sortFn_basic
173
207
  }
174
208
 
175
209
  /**
@@ -193,23 +227,15 @@ export function column_toggleSorting<
193
227
  desc?: boolean,
194
228
  multi?: boolean,
195
229
  ) {
196
- // if (column.columns.length) {
197
- // column.columns.forEach((c, i) => {
198
- // if (c.id) {
199
- // table.toggleColumnSorting(c.id, undefined, multi || !!i)
200
- // }
201
- // })
202
- // return
203
- // }
204
-
205
230
  // this needs to be outside of table.setSorting to be in sync with rerender
206
231
  const nextSortingOrder = column_getNextSortingOrder(column)
207
232
  const hasManualValue = typeof desc !== 'undefined'
208
233
 
209
234
  table_setSorting(column.table, (old) => {
210
235
  // Find any existing sorting for this column
211
- const existingSorting = old.find((d) => d.id === column.id)
212
236
  const existingIndex = old.findIndex((d) => d.id === column.id)
237
+ const existingSorting =
238
+ existingIndex === -1 ? undefined : old[existingIndex]
213
239
 
214
240
  let newSorting: SortingState = []
215
241