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

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 +28 -21
  172. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +28 -21
  173. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +4 -4
  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 +5 -5
  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 +42 -34
  470. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -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,162 +1,441 @@
1
1
  import type { CoreFeatures } from '../core/coreFeatures'
2
2
  import type { CellData, RowData, UnionToIntersection } from './type-utils'
3
+ import type { Column } from './Column'
3
4
  import type { ColumnDefBase_All } from './ColumnDef'
4
5
  import type { Row } from './Row'
5
6
  import type { Table_Internal } from './Table'
6
7
  import type { TableOptions_All } from './TableOptions'
7
8
  import type { TableState_All } from './TableState'
8
9
  import type { StockFeatures } from '../features/stockFeatures'
10
+ import type { RowModel } from '../core/row-models/coreRowModelsFeature.types'
11
+ import type { FilterFn } from '../features/column-filtering/columnFilteringFeature.types'
12
+ import type { SortFn } from '../features/row-sorting/rowSortingFeature.types'
13
+ import type { AggregationFn } from '../features/column-grouping/columnGroupingFeature.types'
9
14
 
10
- export type ExtractFeatureTypes<
11
- TKey extends keyof FeatureConstructors,
12
- TFeatures extends TableFeatures,
13
- > = UnionToIntersection<
14
- {
15
- [K in keyof TFeatures]: K extends 'coreReativityFeature'
16
- ? never
17
- : TFeatures[K] extends TableFeature<infer FeatureConstructorOptions>
18
- ? TKey extends keyof FeatureConstructorOptions
19
- ? FeatureConstructorOptions[TKey]
20
- : never
21
- : any
22
- }[keyof TFeatures]
23
- >
15
+ /**
16
+ * Detects whether a type is `any`.
17
+ *
18
+ * Several feature-map helpers need a separate `any` path so broad generic
19
+ * usage still exposes all known feature APIs instead of narrowing to no keys.
20
+ */
21
+ export type IsAny<T> = 0 extends 1 & T ? true : false
24
22
 
25
- type IsAny<T> = 0 extends 1 & T ? true : false
23
+ /**
24
+ * Converts a union to an intersection, returning `{}` for `never`.
25
+ *
26
+ * This keeps empty feature-map lookups usable as an intersection member.
27
+ */
28
+ type UnionToIntersectionOrEmpty<T> = [T] extends [never]
29
+ ? {}
30
+ : UnionToIntersection<T> & {}
26
31
 
32
+ /**
33
+ * Extracts the API/types contributed by the features present in `TFeatures`.
34
+ *
35
+ * `TFeatureMap` maps feature keys to the types they contribute. When
36
+ * `TFeatures` is `any`, all feature-map entries are included to preserve the
37
+ * permissive behavior expected by broad table types. Otherwise, only entries
38
+ * whose keys are present in `TFeatures` are intersected together.
39
+ */
27
40
  export type ExtractFeatureMapTypes<
28
41
  TFeatures extends TableFeatures,
29
42
  TFeatureMap extends object,
30
43
  > =
31
44
  IsAny<TFeatures> extends true
32
45
  ? UnionToIntersection<TFeatureMap[keyof TFeatureMap]>
33
- : UnionToIntersection<
46
+ : UnionToIntersectionOrEmpty<
34
47
  TFeatureMap[Extract<keyof TFeatures, keyof TFeatureMap>]
35
48
  >
36
49
 
37
- export interface FeatureConstructors {
38
- CachedRowModel?: any
39
- Cell?: any
40
- Column?: any
41
- ColumnDef?: any
42
- CreateRowModels?: any
43
- Header?: any
44
- HeaderGroup?: any
45
- Row?: any
46
- RowModelFns?: any
47
- Table?: any
48
- TableOptions?: any
49
- TableState?: any
50
- }
51
-
50
+ /**
51
+ * Declaration-merge target for custom table features.
52
+ *
53
+ * Add custom feature keys here so `TableFeatures` can accept them in the
54
+ * `features` option and use the same feature-map extraction system as built-in
55
+ * features.
56
+ */
52
57
  export interface Plugins {}
53
58
 
54
- export interface TableFeatures
55
- extends Partial<CoreFeatures>, Partial<StockFeatures>, Partial<Plugins> {}
56
-
57
- export type ConstructTableAPIs<TConstructors extends FeatureConstructors> = <
58
- TFeatures extends TableFeatures,
59
- TData extends RowData,
60
- >(
61
- table: Table_Internal<TFeatures, TData> &
62
- Partial<TConstructors['Table']> & {
63
- options: Partial<TConstructors['TableOptions']>
64
- },
65
- ) => void
66
-
67
- export type GetDefaultColumnDef<TConstructors extends FeatureConstructors> = <
68
- TFeatures extends TableFeatures,
69
- TData extends RowData,
70
- TValue extends CellData = CellData,
71
- >() => ColumnDefBase_All<TFeatures, TData, TValue> &
72
- Partial<TConstructors['ColumnDef']>
73
-
74
- export type GetDefaultTableOptions<TConstructors extends FeatureConstructors> =
75
- <TFeatures extends TableFeatures, TData extends RowData>(
76
- table: Table_Internal<TFeatures, TData> & Partial<TConstructors['Table']>,
77
- ) => Partial<TableOptions_All<TFeatures, TData>> &
78
- Partial<TConstructors['TableOptions']>
79
-
80
- export type GetInitialState<TConstructors extends FeatureConstructors> = (
81
- initialState: Partial<TableState_All> & Partial<TConstructors['TableState']>,
82
- ) => TableState_All & Partial<TConstructors['TableState']>
83
-
84
- export type GetDefaultStateSelector<TConstructors extends FeatureConstructors> =
85
- (
86
- state: TableState_All,
87
- ) => Partial<TableState_All> & Partial<TConstructors['TableState']>
59
+ /**
60
+ * Keys of the `features` option that are not table features themselves.
61
+ *
62
+ * These slots carry per-table types (`tableMeta`, `columnMeta`), row model
63
+ * factories, and row model function registries. They are stripped from the
64
+ * table's registered `_features` at runtime and excluded from feature-derived
65
+ * options such as the generated `debug*` keys.
66
+ */
67
+ export type NonFeatureKeys =
68
+ | 'aggregationFns'
69
+ | 'columnMeta'
70
+ | 'coreRowModel'
71
+ | 'expandedRowModel'
72
+ | 'facetedMinMaxValues'
73
+ | 'facetedRowModel'
74
+ | 'facetedUniqueValues'
75
+ | 'filterFns'
76
+ | 'filterMeta'
77
+ | 'filteredRowModel'
78
+ | 'groupedRowModel'
79
+ | 'paginatedRowModel'
80
+ | 'sortFns'
81
+ | 'sortedRowModel'
82
+ | 'tableMeta'
88
83
 
89
- export type AssignCellPrototype<TConstructors extends FeatureConstructors> = <
90
- TFeatures extends TableFeatures,
91
- TData extends RowData,
92
- >(
93
- prototype: Record<string, any>,
94
- table: Table_Internal<TFeatures, TData>,
95
- ) => void
96
-
97
- export type AssignColumnPrototype<TConstructors extends FeatureConstructors> = <
98
- TFeatures extends TableFeatures,
99
- TData extends RowData,
100
- >(
101
- prototype: Record<string, any>,
102
- table: Table_Internal<TFeatures, TData>,
103
- ) => void
104
-
105
- export type AssignHeaderPrototype<TConstructors extends FeatureConstructors> = <
106
- TFeatures extends TableFeatures,
107
- TData extends RowData,
108
- >(
109
- prototype: Record<string, any>,
110
- table: Table_Internal<TFeatures, TData>,
111
- ) => void
84
+ /**
85
+ * Maps each row model and fn registry slot to the feature(s) that must be
86
+ * registered alongside it in the same features object.
87
+ *
88
+ * Custom features can declaration-merge their own slot prerequisites into this
89
+ * interface to get the same validation from `tableFeatures()`.
90
+ */
91
+ export interface FeatureSlotPrereqs {
92
+ /**
93
+ * Named aggregation functions are only meaningful when grouping is enabled.
94
+ */
95
+ aggregationFns: 'columnGroupingFeature'
96
+ /**
97
+ * Column resizing builds on the column sizing state and APIs.
98
+ */
99
+ columnResizingFeature: 'columnSizingFeature'
100
+ /**
101
+ * Expanded row-model factories require row expanding APIs and state.
102
+ */
103
+ expandedRowModel: 'rowExpandingFeature'
104
+ /**
105
+ * Faceted min/max factories require column faceting APIs.
106
+ */
107
+ facetedMinMaxValues: 'columnFacetingFeature'
108
+ /**
109
+ * Faceted row-model factories require column faceting APIs.
110
+ */
111
+ facetedRowModel: 'columnFacetingFeature'
112
+ /**
113
+ * Faceted unique-value factories require column faceting APIs.
114
+ */
115
+ facetedUniqueValues: 'columnFacetingFeature'
116
+ /**
117
+ * Filtered row-model factories require column filtering APIs and state.
118
+ */
119
+ filteredRowModel: 'columnFilteringFeature'
120
+ /**
121
+ * Named filter functions are only meaningful when column filtering is enabled.
122
+ */
123
+ filterFns: 'columnFilteringFeature'
124
+ /**
125
+ * Filter metadata types are only read and written by filtering features.
126
+ */
127
+ filterMeta: 'columnFilteringFeature'
128
+ /**
129
+ * Global filtering builds on column filtering state and filter functions.
130
+ */
131
+ globalFilteringFeature: 'columnFilteringFeature'
132
+ /**
133
+ * Grouped row-model factories require column grouping APIs and state.
134
+ */
135
+ groupedRowModel: 'columnGroupingFeature'
136
+ /**
137
+ * Paginated row-model factories require row pagination APIs and state.
138
+ */
139
+ paginatedRowModel: 'rowPaginationFeature'
140
+ /**
141
+ * Sorted row-model factories require row sorting APIs and state.
142
+ */
143
+ sortedRowModel: 'rowSortingFeature'
144
+ /**
145
+ * Named sorting functions are only meaningful when row sorting is enabled.
146
+ */
147
+ sortFns: 'rowSortingFeature'
148
+ }
112
149
 
113
- export type AssignRowPrototype<TConstructors extends FeatureConstructors> = <
114
- TFeatures extends TableFeatures,
115
- TData extends RowData,
116
- >(
117
- prototype: Record<string, any>,
118
- table: Table_Internal<TFeatures, TData>,
119
- ) => void
150
+ /**
151
+ * Validates that every row model and fn registry slot in a features object is
152
+ * accompanied by its prerequisite feature.
153
+ *
154
+ * Slots whose prerequisite is missing have their type replaced with a literal
155
+ * error message, so the offending property fails to type-check with a message
156
+ * naming the feature that needs to be added.
157
+ */
158
+ export type ValidateFeatureSlots<TFeatures extends TableFeatures> =
159
+ IsAny<TFeatures> extends true
160
+ ? {}
161
+ : {
162
+ [K in keyof TFeatures as K extends keyof FeatureSlotPrereqs
163
+ ? K
164
+ : never]: K extends keyof FeatureSlotPrereqs
165
+ ? [Extract<FeatureSlotPrereqs[K], keyof TFeatures>] extends [never]
166
+ ? `Error: '${K & string}' requires '${FeatureSlotPrereqs[K] &
167
+ string}' to be included in this table's features.`
168
+ : TFeatures[K]
169
+ : never
170
+ }
120
171
 
121
- export type InitRowInstanceData<TConstructors extends FeatureConstructors> = <
122
- TFeatures extends TableFeatures,
123
- TData extends RowData,
124
- >(
125
- row: Row<TFeatures, TData> & Partial<TConstructors['Row']>,
126
- ) => void
172
+ /**
173
+ * Complete feature registry for a table.
174
+ *
175
+ * This type combines core features, stock features, declaration-merged custom
176
+ * plugins, row-model factory slots, function registries, and type-only meta
177
+ * slots. The concrete `features` object passed to `tableFeatures()` determines
178
+ * which feature APIs are included throughout table, row, column, cell, header,
179
+ * options, and state types.
180
+ */
181
+ export interface TableFeatures
182
+ extends Partial<CoreFeatures>, Partial<StockFeatures>, Partial<Plugins> {
183
+ /**
184
+ * Registry of aggregation functions available to this table by name.
185
+ *
186
+ * Keys registered here become the valid string values for `aggregationFn` on
187
+ * column definitions, with full inference. Spread the exported
188
+ * `aggregationFns` to register the built-in aggregation functions:
189
+ * `aggregationFns: { ...aggregationFns, myCustomAggregationFn }`.
190
+ */
191
+ aggregationFns?: Record<string, AggregationFn<any, any>>
192
+ /**
193
+ * Type-only slot for declaring the type of `columnDef.meta` for all columns
194
+ * of this table.
195
+ *
196
+ * Pass a phantom value: `columnMeta: {} as MyColumnMeta`. The value itself is
197
+ * ignored and stripped from the table's registered features at runtime — only
198
+ * its type is used, inferred wherever `TFeatures` flows.
199
+ *
200
+ * When omitted, the global declaration-merged `ColumnMeta` interface applies.
201
+ */
202
+ columnMeta?: object
203
+ /**
204
+ * Factory for the table's core (unmodified) row model. Defaults to the
205
+ * built-in `createCoreRowModel()` when omitted.
206
+ */
207
+ coreRowModel?: (table: any) => () => RowModel<any, any>
208
+ /**
209
+ * Factory for the client-side expanded row model. Pass the exported
210
+ * `createExpandedRowModel()` or implement your own. Not needed for
211
+ * server-side expansion.
212
+ */
213
+ expandedRowModel?: (table: any) => () => RowModel<any, any>
214
+ /**
215
+ * Factory for per-column faceted min/max values. Pass the exported
216
+ * `createFacetedMinMaxValues()` or implement your own. Not needed for
217
+ * server-side faceting.
218
+ */
219
+ facetedMinMaxValues?: (
220
+ table: any,
221
+ columnId: string,
222
+ ) => () => [number, number] | undefined
223
+ /**
224
+ * Factory for the per-column faceted row model. Pass the exported
225
+ * `createFacetedRowModel()` or implement your own. Not needed for
226
+ * server-side faceting.
227
+ */
228
+ facetedRowModel?: (table: any, columnId: string) => () => RowModel<any, any>
229
+ /**
230
+ * Factory for per-column faceted unique values. Pass the exported
231
+ * `createFacetedUniqueValues()` or implement your own. Not needed for
232
+ * server-side faceting.
233
+ */
234
+ facetedUniqueValues?: (table: any, columnId: string) => () => Map<any, number>
235
+ /**
236
+ * Factory for the client-side filtered row model. Pass the exported
237
+ * `createFilteredRowModel()` or implement your own. Not needed for
238
+ * server-side filtering.
239
+ */
240
+ filteredRowModel?: (table: any) => () => RowModel<any, any>
241
+ /**
242
+ * Registry of filter functions available to this table by name.
243
+ *
244
+ * Keys registered here become the valid string values for `filterFn` on
245
+ * column definitions and the `globalFilterFn` option, with full inference.
246
+ * Spread the exported `filterFns` to register the built-in filter functions:
247
+ * `filterFns: { ...filterFns, myCustomFilterFn }`.
248
+ */
249
+ filterFns?: Record<string, FilterFn<any, any>>
250
+ /**
251
+ * Type-only slot for declaring the type of the filter meta that filter
252
+ * functions attach to rows via `addMeta` and that is read back from
253
+ * `row.columnFiltersMeta`.
254
+ *
255
+ * Pass a phantom value: `filterMeta: {} as MyFilterMeta` (or
256
+ * `metaHelper<MyFilterMeta>()`). The value itself is ignored and stripped
257
+ * from the table's registered features at runtime; only its type is used.
258
+ *
259
+ * When omitted, the global declaration-merged `FilterMeta` interface applies.
260
+ */
261
+ filterMeta?: object
262
+ /**
263
+ * Factory for the client-side grouped row model. Pass the exported
264
+ * `createGroupedRowModel()` or implement your own. Not needed for
265
+ * server-side grouping.
266
+ */
267
+ groupedRowModel?: (table: any) => () => RowModel<any, any>
268
+ /**
269
+ * Factory for the client-side paginated row model. Pass the exported
270
+ * `createPaginatedRowModel()` or implement your own. Not needed for
271
+ * server-side pagination.
272
+ */
273
+ paginatedRowModel?: (table: any) => () => RowModel<any, any>
274
+ /**
275
+ * Factory for the client-side sorted row model. Pass the exported
276
+ * `createSortedRowModel()` or implement your own. Not needed for
277
+ * server-side sorting.
278
+ */
279
+ sortedRowModel?: (table: any) => () => RowModel<any, any>
280
+ /**
281
+ * Registry of sorting functions available to this table by name.
282
+ *
283
+ * Keys registered here become the valid string values for `sortFn` on column
284
+ * definitions, with full inference. Spread the exported `sortFns` to register
285
+ * the built-in sorting functions: `sortFns: { ...sortFns, myCustomSortFn }`.
286
+ */
287
+ sortFns?: Record<string, SortFn<any, any>>
288
+ /**
289
+ * Type-only slot for declaring the type of this table's `options.meta`.
290
+ *
291
+ * Pass a phantom value: `tableMeta: {} as MyTableMeta`. The value itself is
292
+ * ignored and stripped from the table's registered features at runtime — only
293
+ * its type is used, inferred wherever `TFeatures` flows.
294
+ *
295
+ * When omitted, the global declaration-merged `TableMeta` interface applies.
296
+ */
297
+ tableMeta?: object
298
+ }
127
299
 
128
- export interface TableFeature<TConstructors extends FeatureConstructors> {
300
+ /**
301
+ * Lifecycle hooks and defaults contributed by a table feature.
302
+ *
303
+ * Feature objects are registered in the table's `features` option. They can
304
+ * contribute default state/options, default column definitions, table APIs,
305
+ * shared prototype APIs for rows/columns/headers/cells, and per-instance row
306
+ * or column data.
307
+ */
308
+ export interface TableFeature {
309
+ /**
310
+ * Adds feature methods to the shared cell prototype for a table.
311
+ *
312
+ * This runs lazily the first time a cell is constructed for a table. Methods
313
+ * assigned here are shared by every cell instance created by that table, so
314
+ * this hook should be used for APIs and memoized methods rather than
315
+ * per-cell mutable data.
316
+ */
317
+ assignCellPrototype?: <
318
+ TFeatures extends TableFeatures,
319
+ TData extends RowData,
320
+ >(
321
+ prototype: Record<string, any>,
322
+ table: Table_Internal<TFeatures, TData>,
323
+ ) => void
324
+ /**
325
+ * Adds feature methods to the shared column prototype for a table.
326
+ *
327
+ * This runs lazily the first time a column is constructed for a table.
328
+ * Methods assigned here are shared by every column instance created by that
329
+ * table, so this hook should be used for APIs and memoized methods rather
330
+ * than per-column mutable data.
331
+ */
332
+ assignColumnPrototype?: <
333
+ TFeatures extends TableFeatures,
334
+ TData extends RowData,
335
+ >(
336
+ prototype: Record<string, any>,
337
+ table: Table_Internal<TFeatures, TData>,
338
+ ) => void
339
+ /**
340
+ * Adds feature methods to the shared header prototype for a table.
341
+ *
342
+ * This runs lazily the first time a header is constructed for a table.
343
+ * Methods assigned here are shared by every header instance created by that
344
+ * table, so this hook should be used for APIs and memoized methods rather
345
+ * than per-header mutable data.
346
+ */
347
+ assignHeaderPrototype?: <
348
+ TFeatures extends TableFeatures,
349
+ TData extends RowData,
350
+ >(
351
+ prototype: Record<string, any>,
352
+ table: Table_Internal<TFeatures, TData>,
353
+ ) => void
354
+ /**
355
+ * Adds feature methods to the shared row prototype for a table.
356
+ *
357
+ * This runs lazily the first time a row is constructed for a table. Methods
358
+ * assigned here are shared by every row instance created by that table, so
359
+ * this hook should be used for APIs and memoized methods rather than per-row
360
+ * mutable data.
361
+ */
362
+ assignRowPrototype?: <TFeatures extends TableFeatures, TData extends RowData>(
363
+ prototype: Record<string, any>,
364
+ table: Table_Internal<TFeatures, TData>,
365
+ ) => void
129
366
  /**
130
- * Assigns Cell APIs to the cell prototype for memory-efficient method sharing.
131
- * This is called once per table to build a shared prototype for all cells.
367
+ * Adds feature APIs directly to the table instance.
368
+ *
369
+ * The table is a singleton, unlike rows, columns, headers, and cells, so
370
+ * table APIs are assigned directly instead of through a shared prototype.
371
+ * This runs while the table is being constructed, after options and initial
372
+ * state have been resolved.
132
373
  */
133
- assignCellPrototype?: AssignCellPrototype<TConstructors>
374
+ constructTableAPIs?: <TFeatures extends TableFeatures, TData extends RowData>(
375
+ table: Table_Internal<TFeatures, TData>,
376
+ ) => void
134
377
  /**
135
- * Assigns Column APIs to the column prototype for memory-efficient method sharing.
136
- * This is called once per table to build a shared prototype for all columns.
378
+ * Returns default column definition options contributed by this feature.
379
+ *
380
+ * These defaults are merged into the table's default column definition before
381
+ * `options.defaultColumn` and before each user-supplied column definition is
382
+ * resolved, so users can override values supplied here.
137
383
  */
138
- assignColumnPrototype?: AssignColumnPrototype<TConstructors>
384
+ getDefaultColumnDef?: <
385
+ TFeatures extends TableFeatures,
386
+ TData extends RowData,
387
+ TValue extends CellData = CellData,
388
+ >() => ColumnDefBase_All<TFeatures, TData, TValue>
139
389
  /**
140
- * Assigns Header APIs to the header prototype for memory-efficient method sharing.
141
- * This is called once per table to build a shared prototype for all headers.
390
+ * Returns default table options contributed by this feature.
391
+ *
392
+ * This runs while table options are being resolved. Use it for option
393
+ * defaults such as feature enablement flags and default state-updater
394
+ * callbacks. User-supplied table options take precedence over values returned
395
+ * here.
142
396
  */
143
- assignHeaderPrototype?: AssignHeaderPrototype<TConstructors>
397
+ getDefaultTableOptions?: <
398
+ TFeatures extends TableFeatures,
399
+ TData extends RowData,
400
+ >(
401
+ table: Table_Internal<TFeatures, TData>,
402
+ ) => Partial<TableOptions_All<TFeatures, TData>>
144
403
  /**
145
- * Assigns Row APIs to the row prototype for memory-efficient method sharing.
146
- * This is called once per table to build a shared prototype for all rows.
404
+ * Returns this feature's initial table state.
405
+ *
406
+ * The incoming `initialState` contains state accumulated from earlier
407
+ * features and user-provided initial state. Return a complete state object
408
+ * for this feature, preserving `initialState` so user-provided values can
409
+ * override feature defaults.
147
410
  */
148
- assignRowPrototype?: AssignRowPrototype<TConstructors>
411
+ getInitialState?: (initialState: Partial<TableState_All>) => TableState_All
149
412
  /**
150
- * Assigns Table APIs to the table instance.
151
- * Unlike row/cell/column/header, the table is a singleton so methods are assigned directly.
413
+ * Initializes instance-specific data on each column.
414
+ *
415
+ * This runs for every constructed column after core column fields such as
416
+ * `id`, `depth`, `parent`, `columnDef`, and `columns` have been assigned.
417
+ * Use this for per-column mutable data, caches, or annotations. Shared
418
+ * methods should be assigned via `assignColumnPrototype` instead.
152
419
  */
153
- constructTableAPIs?: ConstructTableAPIs<TConstructors>
154
- getDefaultColumnDef?: GetDefaultColumnDef<TConstructors>
155
- getDefaultTableOptions?: GetDefaultTableOptions<TConstructors>
156
- getInitialState?: GetInitialState<TConstructors>
420
+ initColumnInstanceData?: <
421
+ TFeatures extends TableFeatures,
422
+ TData extends RowData,
423
+ TValue extends CellData = CellData,
424
+ >(
425
+ column: Column<TFeatures, TData, TValue>,
426
+ ) => void
157
427
  /**
158
- * Initializes instance-specific data on each row (e.g., caches).
159
- * Methods should be assigned via assignRowPrototype instead.
428
+ * Initializes instance-specific data on each row.
429
+ *
430
+ * This runs for every constructed row after core row fields such as `id`,
431
+ * `index`, `depth`, `original`, `parentId`, and `subRows` have been assigned.
432
+ * Use this for per-row mutable data, caches, or annotations. Shared methods
433
+ * should be assigned via `assignRowPrototype` instead.
160
434
  */
161
- initRowInstanceData?: InitRowInstanceData<TConstructors>
435
+ initRowInstanceData?: <
436
+ TFeatures extends TableFeatures,
437
+ TData extends RowData,
438
+ >(
439
+ row: Row<TFeatures, TData>,
440
+ ) => void
162
441
  }