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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/dist/core/cells/constructCell.d.cts +3 -3
  2. package/dist/core/cells/constructCell.d.ts +3 -3
  3. package/dist/core/cells/coreCellsFeature.cjs +11 -20
  4. package/dist/core/cells/coreCellsFeature.cjs.map +1 -1
  5. package/dist/core/cells/coreCellsFeature.d.cts +4 -12
  6. package/dist/core/cells/coreCellsFeature.d.ts +4 -12
  7. package/dist/core/cells/coreCellsFeature.js +12 -20
  8. package/dist/core/cells/coreCellsFeature.js.map +1 -1
  9. package/dist/core/cells/coreCellsFeature.types.d.cts +6 -6
  10. package/dist/core/cells/coreCellsFeature.types.d.ts +6 -6
  11. package/dist/core/cells/coreCellsFeature.utils.d.cts +3 -3
  12. package/dist/core/cells/coreCellsFeature.utils.d.ts +3 -3
  13. package/dist/core/columns/constructColumn.cjs +5 -0
  14. package/dist/core/columns/constructColumn.cjs.map +1 -1
  15. package/dist/core/columns/constructColumn.d.cts +3 -3
  16. package/dist/core/columns/constructColumn.d.ts +3 -3
  17. package/dist/core/columns/constructColumn.js +5 -0
  18. package/dist/core/columns/constructColumn.js.map +1 -1
  19. package/dist/core/columns/coreColumnsFeature.cjs +59 -68
  20. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  21. package/dist/core/columns/coreColumnsFeature.d.cts +4 -12
  22. package/dist/core/columns/coreColumnsFeature.d.ts +4 -12
  23. package/dist/core/columns/coreColumnsFeature.js +60 -68
  24. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  25. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
  26. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
  27. package/dist/core/columns/coreColumnsFeature.utils.cjs +2 -2
  28. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  29. package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
  30. package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
  31. package/dist/core/columns/coreColumnsFeature.utils.js +3 -3
  32. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  33. package/dist/core/coreFeatures.cjs.map +1 -1
  34. package/dist/core/coreFeatures.d.cts +1 -1
  35. package/dist/core/coreFeatures.d.ts +1 -1
  36. package/dist/core/coreFeatures.js.map +1 -1
  37. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  38. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  39. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  40. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  41. package/dist/core/headers/constructHeader.d.cts +2 -2
  42. package/dist/core/headers/constructHeader.d.ts +2 -2
  43. package/dist/core/headers/coreHeadersFeature.cjs +44 -53
  44. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  45. package/dist/core/headers/coreHeadersFeature.d.cts +4 -12
  46. package/dist/core/headers/coreHeadersFeature.d.ts +4 -12
  47. package/dist/core/headers/coreHeadersFeature.js +45 -53
  48. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  49. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  50. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  51. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  52. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  53. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  54. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  55. package/dist/core/row-models/coreRowModelsFeature.cjs +17 -26
  56. package/dist/core/row-models/coreRowModelsFeature.cjs.map +1 -1
  57. package/dist/core/row-models/coreRowModelsFeature.d.cts +4 -12
  58. package/dist/core/row-models/coreRowModelsFeature.d.ts +4 -12
  59. package/dist/core/row-models/coreRowModelsFeature.js +18 -26
  60. package/dist/core/row-models/coreRowModelsFeature.js.map +1 -1
  61. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +6 -16
  62. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +6 -16
  63. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +13 -13
  64. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  65. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +14 -14
  66. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +14 -14
  67. package/dist/core/row-models/coreRowModelsFeature.utils.js +13 -13
  68. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  69. package/dist/core/row-models/createCoreRowModel.cjs +2 -3
  70. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  71. package/dist/core/row-models/createCoreRowModel.d.cts +1 -1
  72. package/dist/core/row-models/createCoreRowModel.d.ts +1 -1
  73. package/dist/core/row-models/createCoreRowModel.js +3 -4
  74. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  75. package/dist/core/rows/constructRow.cjs +3 -2
  76. package/dist/core/rows/constructRow.cjs.map +1 -1
  77. package/dist/core/rows/constructRow.d.cts +2 -2
  78. package/dist/core/rows/constructRow.d.ts +2 -2
  79. package/dist/core/rows/constructRow.js +4 -2
  80. package/dist/core/rows/constructRow.js.map +1 -1
  81. package/dist/core/rows/coreRowsFeature.cjs +27 -36
  82. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  83. package/dist/core/rows/coreRowsFeature.d.cts +4 -12
  84. package/dist/core/rows/coreRowsFeature.d.ts +4 -12
  85. package/dist/core/rows/coreRowsFeature.js +28 -36
  86. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  87. package/dist/core/rows/coreRowsFeature.types.d.cts +6 -6
  88. package/dist/core/rows/coreRowsFeature.types.d.ts +6 -6
  89. package/dist/core/rows/coreRowsFeature.utils.cjs +3 -3
  90. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  91. package/dist/core/rows/coreRowsFeature.utils.d.cts +3 -3
  92. package/dist/core/rows/coreRowsFeature.utils.d.ts +3 -3
  93. package/dist/core/rows/coreRowsFeature.utils.js +4 -4
  94. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  95. package/dist/core/table/constructTable.cjs +21 -6
  96. package/dist/core/table/constructTable.cjs.map +1 -1
  97. package/dist/core/table/constructTable.d.cts +1 -1
  98. package/dist/core/table/constructTable.d.ts +1 -1
  99. package/dist/core/table/constructTable.js +21 -6
  100. package/dist/core/table/constructTable.js.map +1 -1
  101. package/dist/core/table/coreTablesFeature.cjs +7 -16
  102. package/dist/core/table/coreTablesFeature.cjs.map +1 -1
  103. package/dist/core/table/coreTablesFeature.d.cts +4 -12
  104. package/dist/core/table/coreTablesFeature.d.ts +4 -12
  105. package/dist/core/table/coreTablesFeature.js +8 -16
  106. package/dist/core/table/coreTablesFeature.js.map +1 -1
  107. package/dist/core/table/coreTablesFeature.types.d.cts +28 -16
  108. package/dist/core/table/coreTablesFeature.types.d.ts +28 -16
  109. package/dist/core/table/coreTablesFeature.utils.cjs +33 -12
  110. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  111. package/dist/core/table/coreTablesFeature.utils.d.cts +8 -6
  112. package/dist/core/table/coreTablesFeature.utils.d.ts +8 -6
  113. package/dist/core/table/coreTablesFeature.utils.js +33 -12
  114. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  115. package/dist/features/column-faceting/columnFacetingFeature.cjs +49 -61
  116. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  117. package/dist/features/column-faceting/columnFacetingFeature.d.cts +4 -15
  118. package/dist/features/column-faceting/columnFacetingFeature.d.ts +4 -15
  119. package/dist/features/column-faceting/columnFacetingFeature.js +50 -61
  120. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  121. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +8 -29
  122. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +8 -29
  123. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +12 -12
  124. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  125. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +8 -8
  126. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +8 -8
  127. package/dist/features/column-faceting/columnFacetingFeature.utils.js +12 -12
  128. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  129. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  130. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  131. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  132. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  133. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  134. package/dist/features/column-faceting/createFacetedRowModel.d.cts +1 -1
  135. package/dist/features/column-faceting/createFacetedRowModel.d.ts +1 -1
  136. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  137. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  138. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  139. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  140. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  141. package/dist/features/column-filtering/columnFilteringFeature.cjs +40 -53
  142. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  143. package/dist/features/column-filtering/columnFilteringFeature.d.cts +4 -16
  144. package/dist/features/column-filtering/columnFilteringFeature.d.ts +4 -16
  145. package/dist/features/column-filtering/columnFilteringFeature.js +42 -54
  146. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  147. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +40 -26
  148. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +40 -26
  149. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +1 -1
  150. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  151. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +12 -12
  152. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +12 -12
  153. package/dist/features/column-filtering/columnFilteringFeature.utils.js +1 -1
  154. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  155. package/dist/features/column-filtering/createFilteredRowModel.cjs +12 -7
  156. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  157. package/dist/features/column-filtering/createFilteredRowModel.d.cts +5 -3
  158. package/dist/features/column-filtering/createFilteredRowModel.d.ts +5 -3
  159. package/dist/features/column-filtering/createFilteredRowModel.js +13 -8
  160. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  161. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  162. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  163. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  164. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  165. package/dist/features/column-grouping/columnGroupingFeature.cjs +57 -69
  166. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  167. package/dist/features/column-grouping/columnGroupingFeature.d.cts +4 -15
  168. package/dist/features/column-grouping/columnGroupingFeature.d.ts +4 -15
  169. package/dist/features/column-grouping/columnGroupingFeature.js +59 -70
  170. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  171. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +23 -19
  172. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +23 -19
  173. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +3 -3
  174. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  175. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +11 -11
  176. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +11 -11
  177. package/dist/features/column-grouping/columnGroupingFeature.utils.js +4 -4
  178. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  179. package/dist/features/column-grouping/createGroupedRowModel.cjs +9 -7
  180. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  181. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -3
  182. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -3
  183. package/dist/features/column-grouping/createGroupedRowModel.js +10 -8
  184. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  185. package/dist/features/column-ordering/columnOrderingFeature.cjs +47 -59
  186. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  187. package/dist/features/column-ordering/columnOrderingFeature.d.cts +4 -15
  188. package/dist/features/column-ordering/columnOrderingFeature.d.ts +4 -15
  189. package/dist/features/column-ordering/columnOrderingFeature.js +48 -59
  190. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  191. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +1 -1
  192. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +1 -1
  193. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +9 -9
  194. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +9 -9
  195. package/dist/features/column-pinning/columnPinningFeature.cjs +209 -221
  196. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  197. package/dist/features/column-pinning/columnPinningFeature.d.cts +4 -15
  198. package/dist/features/column-pinning/columnPinningFeature.d.ts +4 -15
  199. package/dist/features/column-pinning/columnPinningFeature.js +210 -221
  200. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  201. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +2 -2
  202. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +2 -2
  203. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  204. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +31 -30
  205. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +31 -30
  206. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  207. package/dist/features/column-resizing/columnResizingFeature.cjs +31 -43
  208. package/dist/features/column-resizing/columnResizingFeature.cjs.map +1 -1
  209. package/dist/features/column-resizing/columnResizingFeature.d.cts +4 -15
  210. package/dist/features/column-resizing/columnResizingFeature.d.ts +4 -15
  211. package/dist/features/column-resizing/columnResizingFeature.js +32 -43
  212. package/dist/features/column-resizing/columnResizingFeature.js.map +1 -1
  213. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  214. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  215. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +2 -5
  216. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  217. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  218. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  219. package/dist/features/column-resizing/columnResizingFeature.utils.js +3 -6
  220. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  221. package/dist/features/column-sizing/columnSizingFeature.cjs +112 -125
  222. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  223. package/dist/features/column-sizing/columnSizingFeature.d.cts +4 -16
  224. package/dist/features/column-sizing/columnSizingFeature.d.ts +4 -16
  225. package/dist/features/column-sizing/columnSizingFeature.js +113 -125
  226. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  227. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +11 -4
  228. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  229. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +12 -12
  230. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +12 -12
  231. package/dist/features/column-sizing/columnSizingFeature.utils.js +12 -5
  232. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  233. package/dist/features/column-visibility/columnVisibilityFeature.cjs +83 -95
  234. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  235. package/dist/features/column-visibility/columnVisibilityFeature.d.cts +4 -15
  236. package/dist/features/column-visibility/columnVisibilityFeature.d.ts +4 -15
  237. package/dist/features/column-visibility/columnVisibilityFeature.js +84 -95
  238. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  239. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +2 -2
  240. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +2 -2
  241. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +12 -9
  242. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  243. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +14 -14
  244. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +14 -14
  245. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +13 -10
  246. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  247. package/dist/features/global-filtering/globalFilteringFeature.cjs +31 -43
  248. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  249. package/dist/features/global-filtering/globalFilteringFeature.d.cts +4 -15
  250. package/dist/features/global-filtering/globalFilteringFeature.d.ts +4 -15
  251. package/dist/features/global-filtering/globalFilteringFeature.js +32 -43
  252. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  253. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  254. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  255. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  256. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +10 -8
  257. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -8
  258. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  259. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  260. package/dist/features/row-expanding/createExpandedRowModel.d.cts +1 -1
  261. package/dist/features/row-expanding/createExpandedRowModel.d.ts +1 -1
  262. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  263. package/dist/features/row-expanding/rowExpandingFeature.cjs +37 -49
  264. package/dist/features/row-expanding/rowExpandingFeature.cjs.map +1 -1
  265. package/dist/features/row-expanding/rowExpandingFeature.d.cts +4 -15
  266. package/dist/features/row-expanding/rowExpandingFeature.d.ts +4 -15
  267. package/dist/features/row-expanding/rowExpandingFeature.js +38 -49
  268. package/dist/features/row-expanding/rowExpandingFeature.js.map +1 -1
  269. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +5 -14
  270. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +5 -14
  271. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +21 -12
  272. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  273. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  274. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  275. package/dist/features/row-expanding/rowExpandingFeature.utils.js +22 -13
  276. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  277. package/dist/features/row-pagination/createPaginatedRowModel.cjs +1 -1
  278. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  279. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +1 -1
  280. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +1 -1
  281. package/dist/features/row-pagination/createPaginatedRowModel.js +1 -1
  282. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  283. package/dist/features/row-pagination/rowPaginationFeature.cjs +35 -47
  284. package/dist/features/row-pagination/rowPaginationFeature.cjs.map +1 -1
  285. package/dist/features/row-pagination/rowPaginationFeature.d.cts +4 -15
  286. package/dist/features/row-pagination/rowPaginationFeature.d.ts +4 -15
  287. package/dist/features/row-pagination/rowPaginationFeature.js +36 -47
  288. package/dist/features/row-pagination/rowPaginationFeature.js.map +1 -1
  289. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +4 -13
  290. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +4 -13
  291. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  292. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  293. package/dist/features/row-pinning/rowPinningFeature.cjs +55 -67
  294. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  295. package/dist/features/row-pinning/rowPinningFeature.d.cts +4 -15
  296. package/dist/features/row-pinning/rowPinningFeature.d.ts +4 -15
  297. package/dist/features/row-pinning/rowPinningFeature.js +56 -67
  298. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  299. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  300. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  301. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +2 -2
  302. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  303. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  304. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  305. package/dist/features/row-pinning/rowPinningFeature.utils.js +2 -2
  306. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  307. package/dist/features/row-selection/rowSelectionFeature.cjs +108 -77
  308. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  309. package/dist/features/row-selection/rowSelectionFeature.d.cts +4 -15
  310. package/dist/features/row-selection/rowSelectionFeature.d.ts +4 -15
  311. package/dist/features/row-selection/rowSelectionFeature.js +110 -78
  312. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  313. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +13 -5
  314. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +13 -5
  315. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +76 -60
  316. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  317. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +48 -23
  318. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +48 -23
  319. package/dist/features/row-selection/rowSelectionFeature.utils.js +77 -62
  320. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  321. package/dist/features/row-sorting/createSortedRowModel.cjs +5 -3
  322. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  323. package/dist/features/row-sorting/createSortedRowModel.d.cts +5 -3
  324. package/dist/features/row-sorting/createSortedRowModel.d.ts +5 -3
  325. package/dist/features/row-sorting/createSortedRowModel.js +6 -4
  326. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  327. package/dist/features/row-sorting/rowSortingFeature.cjs +45 -57
  328. package/dist/features/row-sorting/rowSortingFeature.cjs.map +1 -1
  329. package/dist/features/row-sorting/rowSortingFeature.d.cts +4 -15
  330. package/dist/features/row-sorting/rowSortingFeature.d.ts +4 -15
  331. package/dist/features/row-sorting/rowSortingFeature.js +46 -57
  332. package/dist/features/row-sorting/rowSortingFeature.js.map +1 -1
  333. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +24 -21
  334. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +24 -21
  335. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +8 -5
  336. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  337. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  338. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  339. package/dist/features/row-sorting/rowSortingFeature.utils.js +8 -5
  340. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  341. package/dist/fns/aggregationFns.cjs +18 -18
  342. package/dist/fns/aggregationFns.cjs.map +1 -1
  343. package/dist/fns/aggregationFns.d.cts +21 -19
  344. package/dist/fns/aggregationFns.d.ts +21 -19
  345. package/dist/fns/aggregationFns.js +18 -18
  346. package/dist/fns/aggregationFns.js.map +1 -1
  347. package/dist/fns/filterFns.cjs +51 -65
  348. package/dist/fns/filterFns.cjs.map +1 -1
  349. package/dist/fns/filterFns.d.cts +82 -28
  350. package/dist/fns/filterFns.d.ts +82 -28
  351. package/dist/fns/filterFns.js +51 -65
  352. package/dist/fns/filterFns.js.map +1 -1
  353. package/dist/fns/sortFns.cjs +18 -6
  354. package/dist/fns/sortFns.cjs.map +1 -1
  355. package/dist/fns/sortFns.d.cts +15 -13
  356. package/dist/fns/sortFns.d.ts +15 -13
  357. package/dist/fns/sortFns.js +18 -6
  358. package/dist/fns/sortFns.js.map +1 -1
  359. package/dist/helpers/columnHelper.cjs.map +1 -1
  360. package/dist/helpers/columnHelper.d.cts +2 -2
  361. package/dist/helpers/columnHelper.d.ts +2 -2
  362. package/dist/helpers/columnHelper.js.map +1 -1
  363. package/dist/helpers/metaHelper.cjs +30 -0
  364. package/dist/helpers/metaHelper.cjs.map +1 -0
  365. package/dist/helpers/metaHelper.d.cts +26 -0
  366. package/dist/helpers/metaHelper.d.ts +26 -0
  367. package/dist/helpers/metaHelper.js +29 -0
  368. package/dist/helpers/metaHelper.js.map +1 -0
  369. package/dist/helpers/tableFeatures.cjs +31 -3
  370. package/dist/helpers/tableFeatures.cjs.map +1 -1
  371. package/dist/helpers/tableFeatures.d.cts +33 -5
  372. package/dist/helpers/tableFeatures.d.ts +33 -5
  373. package/dist/helpers/tableFeatures.js +31 -3
  374. package/dist/helpers/tableFeatures.js.map +1 -1
  375. package/dist/index.cjs +4 -20
  376. package/dist/index.d.cts +50 -49
  377. package/dist/index.d.ts +50 -49
  378. package/dist/index.js +23 -22
  379. package/dist/static-functions.cjs +1 -0
  380. package/dist/static-functions.d.cts +2 -2
  381. package/dist/static-functions.d.ts +2 -2
  382. package/dist/static-functions.js +2 -2
  383. package/dist/store-reactivity-bindings.cjs +1 -1
  384. package/dist/store-reactivity-bindings.cjs.map +1 -1
  385. package/dist/store-reactivity-bindings.d.cts +1 -1
  386. package/dist/store-reactivity-bindings.d.ts +1 -1
  387. package/dist/store-reactivity-bindings.js +1 -1
  388. package/dist/store-reactivity-bindings.js.map +1 -1
  389. package/dist/types/Cell.d.cts +4 -9
  390. package/dist/types/Cell.d.ts +4 -9
  391. package/dist/types/Column.d.cts +11 -18
  392. package/dist/types/Column.d.ts +11 -18
  393. package/dist/types/ColumnDef.d.cts +23 -14
  394. package/dist/types/ColumnDef.d.ts +23 -14
  395. package/dist/types/Header.d.cts +5 -10
  396. package/dist/types/Header.d.ts +5 -10
  397. package/dist/types/HeaderGroup.d.cts +4 -9
  398. package/dist/types/HeaderGroup.d.ts +4 -9
  399. package/dist/types/Row.d.cts +7 -12
  400. package/dist/types/Row.d.ts +7 -12
  401. package/dist/types/RowModel.d.cts +12 -28
  402. package/dist/types/RowModel.d.ts +12 -28
  403. package/dist/types/RowModelFns.d.cts +6 -11
  404. package/dist/types/RowModelFns.d.ts +6 -11
  405. package/dist/types/Table.d.cts +26 -36
  406. package/dist/types/Table.d.ts +26 -36
  407. package/dist/types/TableFeatures.d.cts +328 -54
  408. package/dist/types/TableFeatures.d.ts +328 -54
  409. package/dist/types/TableOptions.d.cts +22 -17
  410. package/dist/types/TableOptions.d.ts +22 -17
  411. package/dist/types/TableState.d.cts +11 -16
  412. package/dist/types/TableState.d.ts +11 -16
  413. package/dist/utils.cjs +24 -2
  414. package/dist/utils.cjs.map +1 -1
  415. package/dist/utils.d.cts +23 -7
  416. package/dist/utils.d.ts +23 -7
  417. package/dist/utils.js +23 -3
  418. package/dist/utils.js.map +1 -1
  419. package/package.json +2 -2
  420. package/skills/column-definitions/SKILL.md +3 -6
  421. package/skills/column-layout/SKILL.md +0 -2
  422. package/skills/customizing-feature-behavior/SKILL.md +63 -56
  423. package/skills/filtering/SKILL.md +60 -42
  424. package/skills/filtering/references/faceting-and-fuzzy.md +59 -32
  425. package/skills/grouping/SKILL.md +49 -54
  426. package/skills/migrate-v8-to-v9/SKILL.md +30 -33
  427. package/skills/pagination/SKILL.md +22 -20
  428. package/skills/row-expanding/SKILL.md +33 -25
  429. package/skills/row-pinning/SKILL.md +11 -7
  430. package/skills/row-selection/SKILL.md +0 -3
  431. package/skills/setup/SKILL.md +55 -65
  432. package/skills/sorting/SKILL.md +21 -21
  433. package/skills/state-management/SKILL.md +40 -25
  434. package/src/core/cells/coreCellsFeature.ts +17 -39
  435. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  436. package/src/core/columns/constructColumn.ts +6 -0
  437. package/src/core/columns/coreColumnsFeature.ts +56 -83
  438. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  439. package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
  440. package/src/core/coreFeatures.ts +1 -1
  441. package/src/core/headers/buildHeaderGroups.ts +4 -2
  442. package/src/core/headers/coreHeadersFeature.ts +42 -64
  443. package/src/core/headers/coreHeadersFeature.types.ts +12 -12
  444. package/src/core/headers/coreHeadersFeature.utils.ts +1 -1
  445. package/src/core/row-models/coreRowModelsFeature.ts +43 -64
  446. package/src/core/row-models/coreRowModelsFeature.types.ts +7 -24
  447. package/src/core/row-models/coreRowModelsFeature.utils.ts +7 -7
  448. package/src/core/row-models/createCoreRowModel.ts +7 -6
  449. package/src/core/rows/constructRow.ts +3 -2
  450. package/src/core/rows/coreRowsFeature.ts +45 -72
  451. package/src/core/rows/coreRowsFeature.types.ts +8 -8
  452. package/src/core/rows/coreRowsFeature.utils.ts +4 -4
  453. package/src/core/table/constructTable.ts +50 -13
  454. package/src/core/table/coreTablesFeature.ts +13 -35
  455. package/src/core/table/coreTablesFeature.types.ts +40 -17
  456. package/src/core/table/coreTablesFeature.utils.ts +52 -18
  457. package/src/features/column-faceting/columnFacetingFeature.ts +71 -102
  458. package/src/features/column-faceting/columnFacetingFeature.types.ts +11 -44
  459. package/src/features/column-faceting/columnFacetingFeature.utils.ts +6 -6
  460. package/src/features/column-faceting/createFacetedMinMaxValues.ts +1 -1
  461. package/src/features/column-faceting/createFacetedRowModel.ts +1 -1
  462. package/src/features/column-faceting/createFacetedUniqueValues.ts +1 -1
  463. package/src/features/column-filtering/columnFilteringFeature.ts +61 -103
  464. package/src/features/column-filtering/columnFilteringFeature.types.ts +55 -39
  465. package/src/features/column-filtering/columnFilteringFeature.utils.ts +2 -2
  466. package/src/features/column-filtering/createFilteredRowModel.ts +18 -17
  467. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  468. package/src/features/column-grouping/columnGroupingFeature.ts +83 -126
  469. package/src/features/column-grouping/columnGroupingFeature.types.ts +32 -31
  470. package/src/features/column-grouping/columnGroupingFeature.utils.ts +2 -2
  471. package/src/features/column-grouping/createGroupedRowModel.ts +17 -16
  472. package/src/features/column-ordering/columnOrderingFeature.ts +52 -84
  473. package/src/features/column-ordering/columnOrderingFeature.types.ts +2 -2
  474. package/src/features/column-pinning/columnPinningFeature.ts +268 -304
  475. package/src/features/column-pinning/columnPinningFeature.types.ts +4 -4
  476. package/src/features/column-pinning/columnPinningFeature.utils.ts +11 -19
  477. package/src/features/column-resizing/columnResizingFeature.ts +44 -78
  478. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  479. package/src/features/column-resizing/columnResizingFeature.utils.ts +5 -6
  480. package/src/features/column-sizing/columnSizingFeature.ts +115 -152
  481. package/src/features/column-sizing/columnSizingFeature.utils.ts +27 -5
  482. package/src/features/column-visibility/columnVisibilityFeature.ts +92 -129
  483. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  484. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +31 -15
  485. package/src/features/global-filtering/globalFilteringFeature.ts +45 -79
  486. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  487. package/src/features/global-filtering/globalFilteringFeature.utils.ts +5 -3
  488. package/src/features/row-expanding/createExpandedRowModel.ts +1 -1
  489. package/src/features/row-expanding/rowExpandingFeature.ts +65 -101
  490. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -22
  491. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  492. package/src/features/row-pagination/createPaginatedRowModel.ts +2 -2
  493. package/src/features/row-pagination/rowPaginationFeature.ts +69 -103
  494. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -20
  495. package/src/features/row-pinning/rowPinningFeature.ts +72 -104
  496. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  497. package/src/features/row-selection/rowSelectionFeature.ts +125 -135
  498. package/src/features/row-selection/rowSelectionFeature.types.ts +17 -7
  499. package/src/features/row-selection/rowSelectionFeature.utils.ts +144 -66
  500. package/src/features/row-sorting/createSortedRowModel.ts +12 -15
  501. package/src/features/row-sorting/rowSortingFeature.ts +73 -114
  502. package/src/features/row-sorting/rowSortingFeature.types.ts +33 -32
  503. package/src/features/row-sorting/rowSortingFeature.utils.ts +8 -6
  504. package/src/fns/aggregationFns.ts +26 -42
  505. package/src/fns/filterFns.ts +237 -264
  506. package/src/fns/sortFns.ts +51 -29
  507. package/src/helpers/columnHelper.ts +4 -4
  508. package/src/helpers/metaHelper.ts +24 -0
  509. package/src/helpers/tableFeatures.ts +36 -5
  510. package/src/index.ts +1 -0
  511. package/src/store-reactivity-bindings.ts +1 -1
  512. package/src/types/Cell.ts +5 -21
  513. package/src/types/Column.ts +12 -26
  514. package/src/types/ColumnDef.ts +28 -18
  515. package/src/types/Header.ts +4 -20
  516. package/src/types/HeaderGroup.ts +7 -18
  517. package/src/types/Row.ts +6 -21
  518. package/src/types/RowModel.ts +15 -88
  519. package/src/types/RowModelFns.ts +9 -24
  520. package/src/types/Table.ts +54 -44
  521. package/src/types/TableFeatures.ts +402 -123
  522. package/src/types/TableOptions.ts +59 -21
  523. package/src/types/TableState.ts +5 -17
  524. package/src/utils.ts +40 -8
@@ -1,7 +1,6 @@
1
1
  import type { RowData } from '../types/type-utils'
2
2
  import type { TableFeatures } from '../types/TableFeatures'
3
3
  import type { Row } from '../types/Row'
4
- import type { SortFn } from '../features/row-sorting/rowSortingFeature.types'
5
4
 
6
5
  /**
7
6
  * Regular expression used to split mixed text and numeric chunks.
@@ -16,12 +15,12 @@ export const reSplitAlphaNumeric = /([0-9]+)/gm
16
15
  *
17
16
  * This comparator returns ascending-order results; descending order is applied by the sorting row model.
18
17
  */
19
- export const sortFn_alphanumeric: SortFn<any, any> = <
18
+ export const sortFn_alphanumeric = <
20
19
  TFeatures extends TableFeatures,
21
20
  TData extends RowData,
22
21
  >(
23
- rowA: Row<any, any>,
24
- rowB: Row<any, any>,
22
+ rowA: Row<TFeatures, TData>,
23
+ rowB: Row<TFeatures, TData>,
25
24
  columnId: string,
26
25
  ) => {
27
26
  return compareAlphanumeric(
@@ -35,12 +34,12 @@ export const sortFn_alphanumeric: SortFn<any, any> = <
35
34
  *
36
35
  * This comparator returns ascending-order results; descending order is applied by the sorting row model.
37
36
  */
38
- export const sortFn_alphanumericCaseSensitive: SortFn<any, any> = <
37
+ export const sortFn_alphanumericCaseSensitive = <
39
38
  TFeatures extends TableFeatures,
40
39
  TData extends RowData,
41
40
  >(
42
- rowA: Row<any, any>,
43
- rowB: Row<any, any>,
41
+ rowA: Row<TFeatures, TData>,
42
+ rowB: Row<TFeatures, TData>,
44
43
  columnId: string,
45
44
  ) => {
46
45
  return compareAlphanumeric(
@@ -56,12 +55,12 @@ export const sortFn_alphanumericCaseSensitive: SortFn<any, any> = <
56
55
  *
57
56
  * This comparator returns ascending-order results; descending order is applied by the sorting row model.
58
57
  */
59
- export const sortFn_text: SortFn<any, any> = <
58
+ export const sortFn_text = <
60
59
  TFeatures extends TableFeatures,
61
60
  TData extends RowData,
62
61
  >(
63
- rowA: Row<any, any>,
64
- rowB: Row<any, any>,
62
+ rowA: Row<TFeatures, TData>,
63
+ rowB: Row<TFeatures, TData>,
65
64
  columnId: string,
66
65
  ) => {
67
66
  return compareBasic(
@@ -77,12 +76,12 @@ export const sortFn_text: SortFn<any, any> = <
77
76
  *
78
77
  * This comparator returns ascending-order results; descending order is applied by the sorting row model.
79
78
  */
80
- export const sortFn_textCaseSensitive: SortFn<any, any> = <
79
+ export const sortFn_textCaseSensitive = <
81
80
  TFeatures extends TableFeatures,
82
81
  TData extends RowData,
83
82
  >(
84
- rowA: Row<any, any>,
85
- rowB: Row<any, any>,
83
+ rowA: Row<TFeatures, TData>,
84
+ rowB: Row<TFeatures, TData>,
86
85
  columnId: string,
87
86
  ) => {
88
87
  return compareBasic(
@@ -96,12 +95,12 @@ export const sortFn_textCaseSensitive: SortFn<any, any> = <
96
95
  *
97
96
  * This comparator returns ascending-order results; descending order is applied by the sorting row model.
98
97
  */
99
- export const sortFn_datetime: SortFn<any, any> = <
98
+ export const sortFn_datetime = <
100
99
  TFeatures extends TableFeatures,
101
100
  TData extends RowData,
102
101
  >(
103
- rowA: Row<any, any>,
104
- rowB: Row<any, any>,
102
+ rowA: Row<TFeatures, TData>,
103
+ rowB: Row<TFeatures, TData>,
105
104
  columnId: string,
106
105
  ) => {
107
106
  const a: number | string = rowA.getValue(columnId)
@@ -118,12 +117,12 @@ export const sortFn_datetime: SortFn<any, any> = <
118
117
  *
119
118
  * This comparator returns ascending-order results; descending order is applied by the sorting row model.
120
119
  */
121
- export const sortFn_basic: SortFn<any, any> = <
120
+ export const sortFn_basic = <
122
121
  TFeatures extends TableFeatures,
123
122
  TData extends RowData,
124
123
  >(
125
- rowA: Row<any, any>,
126
- rowB: Row<any, any>,
124
+ rowA: Row<TFeatures, TData>,
125
+ rowB: Row<TFeatures, TData>,
127
126
  columnId: string,
128
127
  ) => {
129
128
  return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))
@@ -152,10 +151,8 @@ function toString(a: any) {
152
151
  // It handles numbers, mixed alphanumeric combinations, and even
153
152
  // null, undefined, and Infinity
154
153
  function compareAlphanumeric(aStr: string, bStr: string) {
155
- // Split on number groups, but keep the delimiter
156
- // Then remove falsey split values
157
- const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)
158
- const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)
154
+ const a = aStr.split(reSplitAlphaNumeric)
155
+ const b = bStr.split(reSplitAlphaNumeric)
159
156
 
160
157
  let ai = 0
161
158
  let bi = 0
@@ -163,16 +160,29 @@ function compareAlphanumeric(aStr: string, bStr: string) {
163
160
  const bLen = b.length
164
161
 
165
162
  while (ai < aLen && bi < bLen) {
163
+ // Skip the empty boundary chunks that .filter(Boolean) used to remove
164
+ if (!a[ai]) {
165
+ ai++
166
+ continue
167
+ }
168
+ if (!b[bi]) {
169
+ bi++
170
+ continue
171
+ }
172
+
166
173
  const aa = a[ai++]!
167
174
  const bb = b[bi++]!
168
175
 
176
+ // Chunks are either all-digit (parseInt always succeeds) or digit-free
177
+ // (parseInt is always NaN), so NaN-ness fully classifies each chunk
169
178
  const an = parseInt(aa, 10)
170
179
  const bn = parseInt(bb, 10)
171
180
 
172
- const combo = [an, bn].sort()
181
+ const aIsNaN = isNaN(an)
182
+ const bIsNaN = isNaN(bn)
173
183
 
174
184
  // Both are string
175
- if (isNaN(combo[0]!)) {
185
+ if (aIsNaN && bIsNaN) {
176
186
  if (aa > bb) {
177
187
  return 1
178
188
  }
@@ -182,9 +192,9 @@ function compareAlphanumeric(aStr: string, bStr: string) {
182
192
  continue
183
193
  }
184
194
 
185
- // One is a string, one is a number
186
- if (isNaN(combo[1]!)) {
187
- return isNaN(an) ? -1 : 1
195
+ // One is a string, one is a number — the string chunk sorts first
196
+ if (aIsNaN || bIsNaN) {
197
+ return aIsNaN ? -1 : 1
188
198
  }
189
199
 
190
200
  // Both are numbers
@@ -196,7 +206,19 @@ function compareAlphanumeric(aStr: string, bStr: string) {
196
206
  }
197
207
  }
198
208
 
199
- return aLen - ai - (bLen - bi)
209
+ // One side is exhausted compare the counts of remaining non-empty chunks
210
+ let remaining = 0
211
+ for (; ai < aLen; ai++) {
212
+ if (a[ai]) {
213
+ remaining++
214
+ }
215
+ }
216
+ for (; bi < bLen; bi++) {
217
+ if (b[bi]) {
218
+ remaining--
219
+ }
220
+ }
221
+ return remaining
200
222
  }
201
223
 
202
224
  // Exports
@@ -10,10 +10,10 @@ import type {
10
10
  IdentifiedColumnDef,
11
11
  } from '../types/ColumnDef'
12
12
 
13
- export type ColumnHelper<
14
- TFeatures extends TableFeatures,
15
- TData extends RowData,
16
- > = {
13
+ export interface ColumnHelper<
14
+ in out TFeatures extends TableFeatures,
15
+ in out TData extends RowData,
16
+ > {
17
17
  /**
18
18
  * Creates a data column definition with an accessor key or function to extract the cell value.
19
19
  * @example
@@ -0,0 +1,24 @@
1
+ /**
2
+ * A helper for declaring the `tableMeta`/`columnMeta` type-only slots in the
3
+ * `features` option without a type assertion.
4
+ *
5
+ * Equivalent to `{} as TMeta`, but reads as type-only at the call site and
6
+ * avoids `@typescript-eslint/no-unnecessary-type-assertion` false positives
7
+ * when the meta type has only optional properties (where an auto-fix removing
8
+ * the assertion would silently degrade the inferred meta type to `{}`).
9
+ *
10
+ * The returned value is a phantom — it is ignored and stripped from the
11
+ * table's registered features at runtime; only its type is used.
12
+ * @example
13
+ * ```
14
+ * import { metaHelper, tableFeatures, rowSortingFeature } from '@tanstack/react-table'
15
+ * const features = tableFeatures({
16
+ * rowSortingFeature,
17
+ * tableMeta: metaHelper<MyTableMeta>(),
18
+ * columnMeta: metaHelper<MyColumnMeta>(),
19
+ * });
20
+ * ```
21
+ */
22
+ export function metaHelper<TMeta extends object>(): TMeta {
23
+ return {} as TMeta
24
+ }
@@ -1,18 +1,49 @@
1
- import type { TableFeatures } from '../types/TableFeatures'
1
+ import type {
2
+ TableFeatures,
3
+ ValidateFeatureSlots,
4
+ } from '../types/TableFeatures'
2
5
 
3
6
  /**
4
7
  * A helper function to help define the features that are to be imported and applied to a table instance.
5
8
  * Use this utility to make it easier to have the correct type inference for the features that are being imported.
6
9
  * **Note:** It is recommended to use this utility statically outside of a component.
10
+ *
11
+ * Alongside feature modules, this object carries everything else that is
12
+ * statically stitched into the table:
13
+ *
14
+ * - Row model factories (`sortedRowModel`, `filteredRowModel`, etc.)
15
+ * - Row model function registries (`sortFns`, `filterFns`, `aggregationFns`),
16
+ * whose keys become the valid string values for `sortFn`, `filterFn`,
17
+ * `globalFilterFn`, and `aggregationFn` with full inference
18
+ * - Type-only `tableMeta`/`columnMeta` slots for declaring per-table meta types
19
+ * instead of using global declaration merging. The values are phantom
20
+ * (ignored and stripped at runtime); only their types are used.
7
21
  * @example
8
22
  * ```
9
- * import { tableFeatures, columnVisibilityFeature, rowPinningFeature } from '@tanstack/react-table'
10
- * const features = tableFeatures({ columnVisibilityFeature, rowPinningFeature });
11
- * const table = useTable({ features, rowModels: {}, columns, data });
23
+ * import {
24
+ * columnFilteringFeature,
25
+ * createFilteredRowModel,
26
+ * createSortedRowModel,
27
+ * filterFns,
28
+ * rowSortingFeature,
29
+ * sortFns,
30
+ * tableFeatures,
31
+ * } from '@tanstack/react-table'
32
+ * const features = tableFeatures({
33
+ * columnFilteringFeature,
34
+ * rowSortingFeature,
35
+ * filteredRowModel: createFilteredRowModel(),
36
+ * sortedRowModel: createSortedRowModel(),
37
+ * filterFns: { ...filterFns, myCustomFilterFn },
38
+ * sortFns,
39
+ * tableMeta: {} as { updateData: (rowIndex: number, columnId: string, value: unknown) => void },
40
+ * columnMeta: {} as { align?: 'left' | 'right' },
41
+ * });
42
+ * const table = useTable({ features, columns, data });
12
43
  * ```
13
44
  */
14
45
  export function tableFeatures<TFeatures extends TableFeatures>(
15
- features: TFeatures,
46
+ features: TFeatures & ValidateFeatureSlots<TFeatures>,
16
47
  ): TFeatures {
17
48
  return features
18
49
  }
package/src/index.ts CHANGED
@@ -22,6 +22,7 @@ export * from './types/type-utils'
22
22
 
23
23
  export * from './core/coreFeatures'
24
24
  export * from './helpers/columnHelper'
25
+ export * from './helpers/metaHelper'
25
26
  export * from './helpers/tableFeatures'
26
27
  export * from './helpers/tableOptions'
27
28
  export * from './utils'
@@ -11,7 +11,7 @@ import type { TableReactivityBindings } from './core/reactivity/coreReactivityFe
11
11
  * import { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings'
12
12
  *
13
13
  * const table = constructTable({
14
- * features: tableFeatures({ coreReativityFeature: storeReactivityBindings() }),
14
+ * features: tableFeatures({ coreReactivityFeature: storeReactivityBindings() }),
15
15
  * // ...
16
16
  * })
17
17
  * ```
package/src/types/Cell.ts CHANGED
@@ -1,25 +1,11 @@
1
1
  import type { Cell_ColumnGrouping } from '../features/column-grouping/columnGroupingFeature.types'
2
2
  import type { CellData, RowData } from './type-utils'
3
- import type {
4
- ExtractFeatureMapTypes,
5
- ExtractFeatureTypes,
6
- TableFeatures,
7
- } from './TableFeatures'
3
+ import type { ExtractFeatureMapTypes, TableFeatures } from './TableFeatures'
8
4
  import type { Cell_Cell } from '../core/cells/coreCellsFeature.types'
9
5
 
10
- /**
11
- * Use this interface as a target for declaration merging to add your own plugin properties.
12
- * Note: This will affect the types of all tables in your project.
13
- */
14
- export interface Cell_Plugins<
15
- TFeatures extends TableFeatures,
16
- TData extends RowData,
17
- TValue extends CellData = CellData,
18
- > {}
19
-
20
6
  export interface Cell_Core<
21
- TFeatures extends TableFeatures,
22
- TData extends RowData,
7
+ in out TFeatures extends TableFeatures,
8
+ in out TData extends RowData,
23
9
  TValue extends CellData = CellData,
24
10
  > extends Cell_Cell<TFeatures, TData, TValue> {}
25
11
 
@@ -31,7 +17,5 @@ export type Cell<
31
17
  TFeatures extends TableFeatures,
32
18
  TData extends RowData,
33
19
  TValue extends CellData = CellData,
34
- > = Cell_Cell<TFeatures, TData, TValue> &
35
- ExtractFeatureMapTypes<TFeatures, Cell_FeatureMap> &
36
- ExtractFeatureTypes<'Cell', TFeatures> &
37
- Cell_Plugins<TFeatures, TData, TValue>
20
+ > = Cell_Core<TFeatures, TData, TValue> &
21
+ ExtractFeatureMapTypes<TFeatures, Cell_FeatureMap>
@@ -1,3 +1,4 @@
1
+ import type { Table_Internal } from './Table'
1
2
  import type { Column_RowSorting } from '../features/row-sorting/rowSortingFeature.types'
2
3
  import type { Column_ColumnFaceting } from '../features/column-faceting/columnFacetingFeature.types'
3
4
  import type { Column_ColumnFiltering } from '../features/column-filtering/columnFilteringFeature.types'
@@ -10,32 +11,18 @@ import type { Column_ColumnSizing } from '../features/column-sizing/columnSizing
10
11
  import type { Column_ColumnVisibility } from '../features/column-visibility/columnVisibilityFeature.types'
11
12
  import type { ColumnDefBase_All } from './ColumnDef'
12
13
  import type { RowData } from './type-utils'
13
- import type {
14
- ExtractFeatureMapTypes,
15
- ExtractFeatureTypes,
16
- TableFeatures,
17
- } from './TableFeatures'
14
+ import type { ExtractFeatureMapTypes, TableFeatures } from './TableFeatures'
18
15
  import type { Column_Column } from '../core/columns/coreColumnsFeature.types'
19
16
 
20
- /**
21
- * Use this interface as a target for declaration merging to add your own plugin properties.
22
- * Note: This will affect the types of all tables in your project.
23
- */
24
- export interface Column_Plugins<
25
- TFeatures extends TableFeatures,
26
- TData extends RowData,
27
- TValue = unknown,
28
- > {}
29
-
30
17
  export interface Column_Core<
31
- TFeatures extends TableFeatures,
32
- TData extends RowData,
18
+ in out TFeatures extends TableFeatures,
19
+ in out TData extends RowData,
33
20
  TValue = unknown,
34
21
  > extends Column_Column<TFeatures, TData, TValue> {}
35
22
 
36
23
  export interface Column_FeatureMap<
37
- TFeatures extends TableFeatures,
38
- TData extends RowData,
24
+ in out TFeatures extends TableFeatures,
25
+ in out TData extends RowData,
39
26
  > {
40
27
  columnFacetingFeature: Column_ColumnFaceting<TFeatures, TData>
41
28
  columnFilteringFeature: Column_ColumnFiltering<TFeatures, TData>
@@ -54,14 +41,13 @@ export type Column<
54
41
  TData extends RowData,
55
42
  TValue = unknown,
56
43
  > = Column_Core<TFeatures, TData, TValue> &
57
- ExtractFeatureMapTypes<TFeatures, Column_FeatureMap<TFeatures, TData>> &
58
- ExtractFeatureTypes<'Column', TFeatures> &
59
- Column_Plugins<TFeatures, TData, TValue>
44
+ ExtractFeatureMapTypes<TFeatures, Column_FeatureMap<TFeatures, TData>>
60
45
 
61
- export type Column_Internal<
62
- TFeatures extends TableFeatures,
63
- TData extends RowData,
46
+ export interface Column_Internal<
47
+ in out TFeatures extends TableFeatures,
48
+ in out TData extends RowData,
64
49
  TValue = unknown,
65
- > = Column<TFeatures, TData, TValue> & {
50
+ > extends Omit<Column_Core<TFeatures, TData, TValue>, 'columnDef' | 'table'> {
66
51
  columnDef: ColumnDefBase_All<TFeatures, TData, TValue>
52
+ table: Table_Internal<TFeatures, TData>
67
53
  }
@@ -1,7 +1,7 @@
1
1
  import type { CellData, RowData, UnionToIntersection } from './type-utils'
2
2
  import type {
3
3
  ExtractFeatureMapTypes,
4
- ExtractFeatureTypes,
4
+ IsAny,
5
5
  TableFeatures,
6
6
  } from './TableFeatures'
7
7
  import type { CellContext } from '../core/cells/coreCellsFeature.types'
@@ -15,21 +15,30 @@ import type { ColumnDef_ColumnVisibility } from '../features/column-visibility/c
15
15
  import type { ColumnDef_GlobalFiltering } from '../features/global-filtering/globalFilteringFeature.types'
16
16
  import type { ColumnDef_RowSorting } from '../features/row-sorting/rowSortingFeature.types'
17
17
 
18
- /**
19
- * Use this interface as a target for declaration merging to add your own plugin properties.
20
- * Note: This will affect the types of all tables in your project.
21
- */
22
- export interface ColumnDef_Plugins<
23
- TFeatures extends TableFeatures,
24
- TData extends RowData,
18
+ export interface ColumnMeta<
19
+ in out TFeatures extends TableFeatures,
20
+ in out TData extends RowData,
25
21
  TValue extends CellData = CellData,
26
22
  > {}
27
23
 
28
- export interface ColumnMeta<
24
+ /**
25
+ * Resolves the type of `columnDef.meta` for a feature set.
26
+ *
27
+ * When the features object declares a `columnMeta` type-only slot
28
+ * (`tableFeatures({ ..., columnMeta: {} as MyColumnMeta })`), that type wins.
29
+ * Otherwise this falls back to the global declaration-merged `ColumnMeta`
30
+ * interface.
31
+ */
32
+ export type ExtractColumnMeta<
29
33
  TFeatures extends TableFeatures,
30
34
  TData extends RowData,
31
35
  TValue extends CellData = CellData,
32
- > {}
36
+ > =
37
+ IsAny<TFeatures> extends true
38
+ ? ColumnMeta<TFeatures, TData, TValue>
39
+ : TFeatures extends { columnMeta: infer TMeta extends object }
40
+ ? TMeta
41
+ : ColumnMeta<TFeatures, TData, TValue>
33
42
 
34
43
  /**
35
44
  * Reads a cell value from an original row object.
@@ -70,8 +79,8 @@ export interface StringHeaderIdentifier {
70
79
  }
71
80
 
72
81
  export interface IdIdentifier<
73
- TFeatures extends TableFeatures,
74
- TData extends RowData,
82
+ in out TFeatures extends TableFeatures,
83
+ in out TData extends RowData,
75
84
  TValue extends CellData = CellData,
76
85
  > {
77
86
  /**
@@ -110,13 +119,16 @@ interface ColumnDefBase_Core<
110
119
  cell?: ColumnDefTemplate<CellContext<TFeatures, TData, TValue>>
111
120
  /**
112
121
  * User-defined metadata available on the resolved column definition.
122
+ *
123
+ * Declare its type per-table via the `columnMeta` type-only slot on the
124
+ * `features` option, or globally via declaration merging on `ColumnMeta`.
113
125
  */
114
- meta?: ColumnMeta<TFeatures, TData, TValue>
126
+ meta?: ExtractColumnMeta<TFeatures, TData, TValue>
115
127
  }
116
128
 
117
129
  export interface ColumnDef_FeatureMap<
118
- TFeatures extends TableFeatures,
119
- TData extends RowData,
130
+ in out TFeatures extends TableFeatures,
131
+ in out TData extends RowData,
120
132
  TValue extends CellData,
121
133
  > {
122
134
  columnVisibilityFeature: ColumnDef_ColumnVisibility
@@ -137,9 +149,7 @@ export type ColumnDefBase<
137
149
  ExtractFeatureMapTypes<
138
150
  TFeatures,
139
151
  ColumnDef_FeatureMap<TFeatures, TData, TValue>
140
- > &
141
- ExtractFeatureTypes<'ColumnDef', TFeatures> &
142
- ColumnDef_Plugins<TFeatures, TData, TValue>
152
+ >
143
153
 
144
154
  export type ColumnDefBase_All<
145
155
  TFeatures extends TableFeatures,
@@ -1,26 +1,12 @@
1
1
  import type { Header_ColumnSizing } from '../features/column-sizing/columnSizingFeature.types'
2
2
  import type { CellData, RowData } from './type-utils'
3
- import type {
4
- ExtractFeatureMapTypes,
5
- ExtractFeatureTypes,
6
- TableFeatures,
7
- } from './TableFeatures'
3
+ import type { ExtractFeatureMapTypes, TableFeatures } from './TableFeatures'
8
4
  import type { Header_Header } from '../core/headers/coreHeadersFeature.types'
9
5
  import type { Header_ColumnResizing } from '../features/column-resizing/columnResizingFeature.types'
10
6
 
11
- /**
12
- * Use this interface as a target for declaration merging to add your own plugin properties.
13
- * Note: This will affect the types of all tables in your project.
14
- */
15
- export interface Header_Plugins<
16
- TFeatures extends TableFeatures,
17
- TData extends RowData,
18
- TValue extends CellData = CellData,
19
- > {}
20
-
21
7
  export interface Header_Core<
22
- TFeatures extends TableFeatures,
23
- TData extends RowData,
8
+ in out TFeatures extends TableFeatures,
9
+ in out TData extends RowData,
24
10
  TValue extends CellData = CellData,
25
11
  > extends Header_Header<TFeatures, TData, TValue> {}
26
12
 
@@ -34,6 +20,4 @@ export type Header<
34
20
  TData extends RowData,
35
21
  TValue extends CellData = CellData,
36
22
  > = Header_Core<TFeatures, TData, TValue> &
37
- ExtractFeatureMapTypes<TFeatures, Header_FeatureMap> &
38
- ExtractFeatureTypes<'Header', TFeatures> &
39
- Header_Plugins<TFeatures, TData, TValue>
23
+ ExtractFeatureMapTypes<TFeatures, Header_FeatureMap>
@@ -1,24 +1,13 @@
1
1
  import type { HeaderGroup_Header } from '../core/headers/coreHeadersFeature.types'
2
- import type { ExtractFeatureTypes, TableFeatures } from './TableFeatures'
2
+ import type { TableFeatures } from './TableFeatures'
3
3
  import type { RowData } from './type-utils'
4
4
 
5
- /**
6
- * Use this interface as a target for declaration merging to add your own plugin properties.
7
- * Note: This will affect the types of all tables in your project.
8
- */
9
- export interface HeaderGroup_Plugins<
10
- TFeatures extends TableFeatures,
11
- TData extends RowData,
12
- > {}
13
-
14
5
  export interface HeaderGroup_Core<
15
- TFeatures extends TableFeatures,
16
- TData extends RowData,
6
+ in out TFeatures extends TableFeatures,
7
+ in out TData extends RowData,
17
8
  > extends HeaderGroup_Header<TFeatures, TData> {}
18
9
 
19
- export type HeaderGroup<
20
- TFeatures extends TableFeatures,
21
- TData extends RowData,
22
- > = HeaderGroup_Core<TFeatures, TData> &
23
- ExtractFeatureTypes<'HeaderGroup', TFeatures> &
24
- HeaderGroup_Plugins<TFeatures, TData>
10
+ export interface HeaderGroup<
11
+ in out TFeatures extends TableFeatures,
12
+ in out TData extends RowData,
13
+ > extends HeaderGroup_Core<TFeatures, TData> {}
package/src/types/Row.ts CHANGED
@@ -6,30 +6,17 @@ import type { RowData } from './type-utils'
6
6
  import type { Row_RowExpanding } from '../features/row-expanding/rowExpandingFeature.types'
7
7
  import type { Row_RowPinning } from '../features/row-pinning/rowPinningFeature.types'
8
8
  import type { Row_RowSelection } from '../features/row-selection/rowSelectionFeature.types'
9
- import type {
10
- ExtractFeatureMapTypes,
11
- ExtractFeatureTypes,
12
- TableFeatures,
13
- } from './TableFeatures'
9
+ import type { ExtractFeatureMapTypes, TableFeatures } from './TableFeatures'
14
10
  import type { Row_Row } from '../core/rows/coreRowsFeature.types'
15
11
 
16
- /**
17
- * Use this interface as a target for declaration merging to add your own plugin properties.
18
- * Note: This will affect the types of all tables in your project.
19
- */
20
- export interface Row_Plugins<
21
- TFeatures extends TableFeatures,
22
- TData extends RowData,
23
- > {}
24
-
25
12
  export interface Row_Core<
26
- TFeatures extends TableFeatures,
27
- TData extends RowData,
13
+ in out TFeatures extends TableFeatures,
14
+ in out TData extends RowData,
28
15
  > extends Row_Row<TFeatures, TData> {}
29
16
 
30
17
  export interface Row_FeatureMap<
31
- TFeatures extends TableFeatures,
32
- TData extends RowData,
18
+ in out TFeatures extends TableFeatures,
19
+ in out TData extends RowData,
33
20
  > {
34
21
  columnFilteringFeature: Row_ColumnFiltering<TFeatures, TData>
35
22
  columnGroupingFeature: Row_ColumnGrouping
@@ -44,6 +31,4 @@ export type Row<
44
31
  TFeatures extends TableFeatures,
45
32
  TData extends RowData,
46
33
  > = Row_Core<TFeatures, TData> &
47
- ExtractFeatureMapTypes<TFeatures, Row_FeatureMap<TFeatures, TData>> &
48
- ExtractFeatureTypes<'Row', TFeatures> &
49
- Row_Plugins<TFeatures, TData>
34
+ ExtractFeatureMapTypes<TFeatures, Row_FeatureMap<TFeatures, TData>>