@tanstack/table-core 9.0.0-alpha.46 → 9.0.0-alpha.48

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 (339) hide show
  1. package/README.md +10 -0
  2. package/dist/core/cells/constructCell.cjs +4 -3
  3. package/dist/core/cells/constructCell.cjs.map +1 -1
  4. package/dist/core/cells/constructCell.js +4 -3
  5. package/dist/core/cells/constructCell.js.map +1 -1
  6. package/dist/core/cells/coreCellsFeature.utils.cjs +11 -8
  7. package/dist/core/cells/coreCellsFeature.utils.cjs.map +1 -1
  8. package/dist/core/cells/coreCellsFeature.utils.d.cts +11 -8
  9. package/dist/core/cells/coreCellsFeature.utils.d.ts +11 -8
  10. package/dist/core/cells/coreCellsFeature.utils.js +11 -8
  11. package/dist/core/cells/coreCellsFeature.utils.js.map +1 -1
  12. package/dist/core/columns/constructColumn.cjs +6 -4
  13. package/dist/core/columns/constructColumn.cjs.map +1 -1
  14. package/dist/core/columns/constructColumn.js +6 -4
  15. package/dist/core/columns/constructColumn.js.map +1 -1
  16. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -6
  17. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -6
  18. package/dist/core/columns/coreColumnsFeature.utils.cjs +47 -29
  19. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  20. package/dist/core/columns/coreColumnsFeature.utils.d.cts +37 -27
  21. package/dist/core/columns/coreColumnsFeature.utils.d.ts +37 -27
  22. package/dist/core/columns/coreColumnsFeature.utils.js +47 -29
  23. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  24. package/dist/core/headers/buildHeaderGroups.cjs +27 -19
  25. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  26. package/dist/core/headers/buildHeaderGroups.js +27 -19
  27. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  28. package/dist/core/headers/constructHeader.cjs +4 -3
  29. package/dist/core/headers/constructHeader.cjs.map +1 -1
  30. package/dist/core/headers/constructHeader.js +4 -3
  31. package/dist/core/headers/constructHeader.js.map +1 -1
  32. package/dist/core/headers/coreHeadersFeature.cjs +1 -6
  33. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  34. package/dist/core/headers/coreHeadersFeature.js +2 -7
  35. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  36. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -4
  37. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -4
  38. package/dist/core/headers/coreHeadersFeature.utils.cjs +43 -36
  39. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  40. package/dist/core/headers/coreHeadersFeature.utils.d.cts +24 -19
  41. package/dist/core/headers/coreHeadersFeature.utils.d.ts +24 -19
  42. package/dist/core/headers/coreHeadersFeature.utils.js +44 -37
  43. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  44. package/dist/core/reactivity/coreReactivityFeature.types.d.cts +4 -0
  45. package/dist/core/reactivity/coreReactivityFeature.types.d.ts +4 -0
  46. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +48 -36
  47. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  48. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +48 -36
  49. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +48 -36
  50. package/dist/core/row-models/coreRowModelsFeature.utils.js +48 -36
  51. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  52. package/dist/core/rows/constructRow.cjs +8 -6
  53. package/dist/core/rows/constructRow.cjs.map +1 -1
  54. package/dist/core/rows/constructRow.js +8 -6
  55. package/dist/core/rows/constructRow.js.map +1 -1
  56. package/dist/core/rows/coreRowsFeature.types.d.cts +4 -4
  57. package/dist/core/rows/coreRowsFeature.types.d.ts +4 -4
  58. package/dist/core/rows/coreRowsFeature.utils.cjs +43 -32
  59. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  60. package/dist/core/rows/coreRowsFeature.utils.d.cts +34 -28
  61. package/dist/core/rows/coreRowsFeature.utils.d.ts +34 -28
  62. package/dist/core/rows/coreRowsFeature.utils.js +43 -32
  63. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  64. package/dist/core/table/constructTable.cjs +9 -5
  65. package/dist/core/table/constructTable.cjs.map +1 -1
  66. package/dist/core/table/constructTable.js +9 -5
  67. package/dist/core/table/constructTable.js.map +1 -1
  68. package/dist/core/table/coreTablesFeature.types.d.cts +6 -2
  69. package/dist/core/table/coreTablesFeature.types.d.ts +6 -2
  70. package/dist/core/table/coreTablesFeature.utils.cjs +7 -3
  71. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  72. package/dist/core/table/coreTablesFeature.utils.d.cts +2 -2
  73. package/dist/core/table/coreTablesFeature.utils.d.ts +2 -2
  74. package/dist/core/table/coreTablesFeature.utils.js +7 -3
  75. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  76. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +16 -10
  77. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +16 -10
  78. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +26 -18
  79. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  80. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +26 -18
  81. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +26 -18
  82. package/dist/features/column-faceting/columnFacetingFeature.utils.js +26 -18
  83. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  84. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +8 -5
  85. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  86. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  87. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  88. package/dist/features/column-faceting/createFacetedRowModel.cjs +8 -3
  89. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  90. package/dist/features/column-faceting/createFacetedRowModel.js +8 -3
  91. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  92. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +7 -4
  93. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  94. package/dist/features/column-faceting/createFacetedUniqueValues.js +7 -4
  95. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  96. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +21 -11
  97. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +21 -11
  98. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +39 -28
  99. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  100. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +39 -28
  101. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +39 -28
  102. package/dist/features/column-filtering/columnFilteringFeature.utils.js +39 -28
  103. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  104. package/dist/features/column-filtering/createFilteredRowModel.cjs +11 -5
  105. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  106. package/dist/features/column-filtering/createFilteredRowModel.js +11 -5
  107. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  108. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +18 -14
  109. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +18 -14
  110. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +55 -43
  111. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  112. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +55 -43
  113. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +55 -43
  114. package/dist/features/column-grouping/columnGroupingFeature.utils.js +55 -43
  115. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  116. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +14 -5
  117. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +14 -5
  118. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +46 -29
  119. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  120. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +30 -23
  121. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +30 -23
  122. package/dist/features/column-ordering/columnOrderingFeature.utils.js +46 -29
  123. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  124. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +43 -31
  125. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +43 -31
  126. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +152 -115
  127. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  128. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +116 -95
  129. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +116 -95
  130. package/dist/features/column-pinning/columnPinningFeature.utils.js +153 -116
  131. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  132. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +9 -9
  133. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +9 -9
  134. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +28 -19
  135. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  136. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +28 -19
  137. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +28 -19
  138. package/dist/features/column-resizing/columnResizingFeature.utils.js +28 -19
  139. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  140. package/dist/features/column-sizing/columnSizingFeature.cjs +28 -4
  141. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  142. package/dist/features/column-sizing/columnSizingFeature.js +28 -4
  143. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  144. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +19 -12
  145. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +19 -12
  146. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +52 -41
  147. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  148. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +52 -41
  149. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +52 -41
  150. package/dist/features/column-sizing/columnSizingFeature.utils.js +52 -41
  151. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  152. package/dist/features/column-visibility/columnVisibilityFeature.cjs +23 -14
  153. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  154. package/dist/features/column-visibility/columnVisibilityFeature.js +24 -15
  155. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  156. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +19 -12
  157. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +19 -12
  158. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +91 -52
  159. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  160. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +63 -40
  161. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +63 -40
  162. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +91 -53
  163. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  164. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +10 -5
  165. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +10 -5
  166. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +20 -14
  167. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  168. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +20 -14
  169. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +20 -14
  170. package/dist/features/global-filtering/globalFilteringFeature.utils.js +20 -14
  171. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  172. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +16 -15
  173. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +16 -15
  174. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +58 -43
  175. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  176. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +56 -41
  177. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +56 -41
  178. package/dist/features/row-expanding/rowExpandingFeature.utils.js +58 -43
  179. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  180. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +19 -12
  181. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +19 -12
  182. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +49 -32
  183. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  184. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +49 -32
  185. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +49 -32
  186. package/dist/features/row-pagination/rowPaginationFeature.utils.js +49 -32
  187. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  188. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +12 -8
  189. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +12 -8
  190. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +52 -36
  191. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  192. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +39 -29
  193. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +39 -29
  194. package/dist/features/row-pinning/rowPinningFeature.utils.js +52 -36
  195. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  196. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +30 -24
  197. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +30 -24
  198. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +95 -72
  199. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  200. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +89 -69
  201. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +89 -69
  202. package/dist/features/row-selection/rowSelectionFeature.utils.js +95 -72
  203. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  204. package/dist/features/row-sorting/createSortedRowModel.cjs +13 -8
  205. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  206. package/dist/features/row-sorting/createSortedRowModel.js +13 -8
  207. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  208. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +10 -8
  209. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +10 -8
  210. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +63 -46
  211. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  212. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +61 -44
  213. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +61 -44
  214. package/dist/features/row-sorting/rowSortingFeature.utils.js +63 -46
  215. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  216. package/dist/fns/aggregationFns.cjs +47 -16
  217. package/dist/fns/aggregationFns.cjs.map +1 -1
  218. package/dist/fns/aggregationFns.d.cts +33 -9
  219. package/dist/fns/aggregationFns.d.ts +33 -9
  220. package/dist/fns/aggregationFns.js +47 -17
  221. package/dist/fns/aggregationFns.js.map +1 -1
  222. package/dist/fns/filterFns.cjs +48 -17
  223. package/dist/fns/filterFns.cjs.map +1 -1
  224. package/dist/fns/filterFns.d.cts +42 -15
  225. package/dist/fns/filterFns.d.ts +42 -15
  226. package/dist/fns/filterFns.js +48 -17
  227. package/dist/fns/filterFns.js.map +1 -1
  228. package/dist/helpers/columnHelper.cjs +9 -4
  229. package/dist/helpers/columnHelper.cjs.map +1 -1
  230. package/dist/helpers/columnHelper.d.cts +9 -4
  231. package/dist/helpers/columnHelper.d.ts +9 -4
  232. package/dist/helpers/columnHelper.js +9 -4
  233. package/dist/helpers/columnHelper.js.map +1 -1
  234. package/dist/helpers/tableOptions.cjs.map +1 -1
  235. package/dist/helpers/tableOptions.d.cts +12 -9
  236. package/dist/helpers/tableOptions.d.ts +12 -9
  237. package/dist/helpers/tableOptions.js.map +1 -1
  238. package/dist/index.cjs +0 -4
  239. package/dist/index.d.cts +2 -2
  240. package/dist/index.d.ts +2 -2
  241. package/dist/index.js +2 -2
  242. package/dist/static-functions.cjs +1 -0
  243. package/dist/static-functions.d.cts +2 -2
  244. package/dist/static-functions.d.ts +2 -2
  245. package/dist/static-functions.js +2 -2
  246. package/dist/store-reactivity-bindings.cjs +1 -0
  247. package/dist/store-reactivity-bindings.cjs.map +1 -1
  248. package/dist/store-reactivity-bindings.js +1 -0
  249. package/dist/store-reactivity-bindings.js.map +1 -1
  250. package/dist/types/ColumnDef.d.cts +38 -0
  251. package/dist/types/ColumnDef.d.ts +38 -0
  252. package/dist/types/TableOptions.d.cts +15 -0
  253. package/dist/types/TableOptions.d.ts +15 -0
  254. package/dist/types/TableState.d.cts +12 -0
  255. package/dist/types/TableState.d.ts +12 -0
  256. package/dist/utils.cjs +18 -39
  257. package/dist/utils.cjs.map +1 -1
  258. package/dist/utils.d.cts +1 -23
  259. package/dist/utils.d.ts +1 -23
  260. package/dist/utils.js +19 -36
  261. package/dist/utils.js.map +1 -1
  262. package/package.json +5 -3
  263. package/skills/column-definitions/SKILL.md +333 -0
  264. package/skills/column-layout/SKILL.md +328 -0
  265. package/skills/column-layout/references/subsystems.md +220 -0
  266. package/skills/customizing-feature-behavior/SKILL.md +416 -0
  267. package/skills/filtering/SKILL.md +357 -0
  268. package/skills/filtering/references/faceting-and-fuzzy.md +191 -0
  269. package/skills/grouping/SKILL.md +448 -0
  270. package/skills/migrate-v8-to-v9/SKILL.md +495 -0
  271. package/skills/pagination/SKILL.md +385 -0
  272. package/skills/row-expanding/SKILL.md +348 -0
  273. package/skills/row-pinning/SKILL.md +269 -0
  274. package/skills/row-selection/SKILL.md +391 -0
  275. package/skills/setup/SKILL.md +400 -0
  276. package/skills/sorting/SKILL.md +344 -0
  277. package/skills/state-management/SKILL.md +388 -0
  278. package/src/core/cells/constructCell.ts +3 -2
  279. package/src/core/cells/coreCellsFeature.utils.ts +11 -8
  280. package/src/core/columns/constructColumn.ts +5 -3
  281. package/src/core/columns/coreColumnsFeature.types.ts +7 -6
  282. package/src/core/columns/coreColumnsFeature.utils.ts +43 -29
  283. package/src/core/headers/buildHeaderGroups.ts +29 -30
  284. package/src/core/headers/constructHeader.ts +3 -2
  285. package/src/core/headers/coreHeadersFeature.ts +2 -27
  286. package/src/core/headers/coreHeadersFeature.types.ts +6 -4
  287. package/src/core/headers/coreHeadersFeature.utils.ts +52 -61
  288. package/src/core/reactivity/coreReactivityFeature.types.ts +4 -0
  289. package/src/core/row-models/coreRowModelsFeature.utils.ts +48 -36
  290. package/src/core/rows/constructRow.ts +6 -4
  291. package/src/core/rows/coreRowsFeature.types.ts +4 -4
  292. package/src/core/rows/coreRowsFeature.utils.ts +45 -32
  293. package/src/core/table/constructTable.ts +6 -4
  294. package/src/core/table/coreTablesFeature.types.ts +6 -2
  295. package/src/core/table/coreTablesFeature.utils.ts +5 -3
  296. package/src/features/column-faceting/columnFacetingFeature.types.ts +16 -10
  297. package/src/features/column-faceting/columnFacetingFeature.utils.ts +26 -18
  298. package/src/features/column-faceting/createFacetedMinMaxValues.ts +8 -10
  299. package/src/features/column-faceting/createFacetedRowModel.ts +10 -6
  300. package/src/features/column-faceting/createFacetedUniqueValues.ts +4 -3
  301. package/src/features/column-filtering/columnFilteringFeature.types.ts +21 -11
  302. package/src/features/column-filtering/columnFilteringFeature.utils.ts +39 -28
  303. package/src/features/column-filtering/createFilteredRowModel.ts +14 -8
  304. package/src/features/column-grouping/columnGroupingFeature.types.ts +18 -14
  305. package/src/features/column-grouping/columnGroupingFeature.utils.ts +55 -43
  306. package/src/features/column-ordering/columnOrderingFeature.types.ts +14 -5
  307. package/src/features/column-ordering/columnOrderingFeature.utils.ts +44 -29
  308. package/src/features/column-pinning/columnPinningFeature.types.ts +43 -31
  309. package/src/features/column-pinning/columnPinningFeature.utils.ts +164 -128
  310. package/src/features/column-resizing/columnResizingFeature.types.ts +9 -9
  311. package/src/features/column-resizing/columnResizingFeature.utils.ts +28 -19
  312. package/src/features/column-sizing/columnSizingFeature.ts +16 -0
  313. package/src/features/column-sizing/columnSizingFeature.types.ts +19 -12
  314. package/src/features/column-sizing/columnSizingFeature.utils.ts +52 -41
  315. package/src/features/column-visibility/columnVisibilityFeature.ts +8 -0
  316. package/src/features/column-visibility/columnVisibilityFeature.types.ts +22 -12
  317. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +101 -56
  318. package/src/features/global-filtering/globalFilteringFeature.types.ts +10 -5
  319. package/src/features/global-filtering/globalFilteringFeature.utils.ts +20 -14
  320. package/src/features/row-expanding/rowExpandingFeature.types.ts +16 -15
  321. package/src/features/row-expanding/rowExpandingFeature.utils.ts +58 -43
  322. package/src/features/row-pagination/rowPaginationFeature.types.ts +19 -12
  323. package/src/features/row-pagination/rowPaginationFeature.utils.ts +49 -32
  324. package/src/features/row-pinning/rowPinningFeature.types.ts +12 -8
  325. package/src/features/row-pinning/rowPinningFeature.utils.ts +59 -47
  326. package/src/features/row-selection/rowSelectionFeature.types.ts +30 -24
  327. package/src/features/row-selection/rowSelectionFeature.utils.ts +109 -88
  328. package/src/features/row-sorting/createSortedRowModel.ts +16 -13
  329. package/src/features/row-sorting/rowSortingFeature.types.ts +10 -8
  330. package/src/features/row-sorting/rowSortingFeature.utils.ts +63 -46
  331. package/src/fns/aggregationFns.ts +53 -17
  332. package/src/fns/filterFns.ts +48 -17
  333. package/src/helpers/columnHelper.ts +9 -4
  334. package/src/helpers/tableOptions.ts +12 -9
  335. package/src/store-reactivity-bindings.ts +1 -0
  336. package/src/types/ColumnDef.ts +38 -0
  337. package/src/types/TableOptions.ts +15 -0
  338. package/src/types/TableState.ts +12 -0
  339. package/src/utils.ts +19 -46
@@ -2,63 +2,90 @@ import { FilterFn } from "../features/column-filtering/columnFilteringFeature.ty
2
2
 
3
3
  //#region src/fns/filterFns.d.ts
4
4
  /**
5
- * Filter function for checking if a value is exactly equal to a given value. (JS === comparison)
5
+ * Keeps rows whose column value is strictly equal to the filter value.
6
+ *
7
+ * Uses JavaScript `===` comparison and auto-removes empty filter values.
6
8
  */
7
9
  declare const filterFn_equals: FilterFn<any, any>;
8
10
  /**
9
- * Filter function for checking if a value is weakly equal to a given value. (JS == comparison)
11
+ * Keeps rows whose column value is loosely equal to the filter value.
12
+ *
13
+ * Uses JavaScript `==` comparison and auto-removes empty filter values. This is
14
+ * useful for matching string input against numeric row values.
10
15
  */
11
16
  declare const filterFn_weakEquals: FilterFn<any, any>;
12
17
  /**
13
- * Filter function for checking if a string includes a given substring. (Case-sensitive)
18
+ * Keeps rows whose stringified column value includes the filter text.
19
+ *
20
+ * Matching is case-sensitive and empty filter values are auto-removed.
14
21
  */
15
22
  declare const filterFn_includesStringSensitive: FilterFn<any, any>;
16
23
  /**
17
- * Filter function for checking if a string includes a given substring. (Non-case-sensitive)
24
+ * Keeps rows whose stringified column value includes the filter text.
25
+ *
26
+ * Both values are lowercased before comparison, and empty filter values are
27
+ * auto-removed.
18
28
  */
19
29
  declare const filterFn_includesString: FilterFn<any, any>;
20
30
  /**
21
- * Filter function for checking if a string is exactly equal to a given string. (Non-case-sensitive)
31
+ * Keeps rows whose stringified column value equals the filter text.
32
+ *
33
+ * Both values are lowercased before comparison, and empty filter values are
34
+ * auto-removed.
22
35
  */
23
36
  declare const filterFn_equalsString: FilterFn<any, any>;
24
37
  /**
25
- * Filter function for checking if a string is exactly equal to a given string. (Case-sensitive)
38
+ * Keeps rows whose stringified column value exactly equals the filter text.
39
+ *
40
+ * Matching is case-sensitive and empty filter values are auto-removed.
26
41
  */
27
42
  declare const filterFn_equalsStringSensitive: FilterFn<any, any>;
28
43
  /**
29
- * Filter function for checking if a number is greater than a given number.
44
+ * Keeps rows whose value is greater than the filter value.
45
+ *
46
+ * Numeric values are compared numerically when both sides can be coerced to
47
+ * numbers; otherwise normalized strings are compared.
30
48
  */
31
49
  declare const filterFn_greaterThan: FilterFn<any, any>;
32
50
  /**
33
- * Filter function for checking if a number is greater than or equal to a given number.
51
+ * Keeps rows whose value is greater than or equal to the filter value.
52
+ *
53
+ * Delegates to the built-in greater-than and equality comparisons.
34
54
  */
35
55
  declare const filterFn_greaterThanOrEqualTo: FilterFn<any, any>;
36
56
  /**
37
- * Filter function for checking if a number is less than a given number.
57
+ * Keeps rows whose value is less than the filter value.
58
+ *
59
+ * This is implemented as the inverse of greater-than-or-equal comparison.
38
60
  */
39
61
  declare const filterFn_lessThan: FilterFn<any, any>;
40
62
  /**
41
- * Filter function for checking if a number is less than or equal to a given number.
63
+ * Keeps rows whose value is less than or equal to the filter value.
64
+ *
65
+ * This is implemented as the inverse of greater-than comparison.
42
66
  */
43
67
  declare const filterFn_lessThanOrEqualTo: FilterFn<any, any>;
44
68
  /**
45
- * Filter function for checking if a number is within a given range.
69
+ * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.
70
+ *
71
+ * Filter values are normalized so blank endpoints become open-ended and
72
+ * reversed endpoints are swapped.
46
73
  */
47
74
  declare const filterFn_inNumberRange: FilterFn<any, any>;
48
75
  /**
49
- * Filter function for checking if an array has a given value.
76
+ * Keeps rows whose scalar column value equals at least one filter value.
50
77
  */
51
78
  declare const filterFn_arrHas: FilterFn<any, any>;
52
79
  /**
53
- * Filter function for checking if an array includes a given value.
80
+ * Keeps rows whose array or string column value includes at least one filter value.
54
81
  */
55
82
  declare const filterFn_arrIncludes: FilterFn<any, any>;
56
83
  /**
57
- * Filter function for checking if an array includes all of the given values.
84
+ * Keeps rows whose array column value includes every filter value.
58
85
  */
59
86
  declare const filterFn_arrIncludesAll: FilterFn<any, any>;
60
87
  /**
61
- * Filter function for checking if an array includes any of the given values.
88
+ * Keeps rows whose array column value includes at least one filter value.
62
89
  */
63
90
  declare const filterFn_arrIncludesSome: FilterFn<any, any>;
64
91
  /**
@@ -1,20 +1,27 @@
1
1
  //#region src/fns/filterFns.ts
2
2
  /**
3
- * Filter function for checking if a value is exactly equal to a given value. (JS === comparison)
3
+ * Keeps rows whose column value is strictly equal to the filter value.
4
+ *
5
+ * Uses JavaScript `===` comparison and auto-removes empty filter values.
4
6
  */
5
7
  const filterFn_equals = (row, columnId, filterValue) => {
6
8
  return row.getValue(columnId) === filterValue;
7
9
  };
8
10
  filterFn_equals.autoRemove = (val) => testFalsy(val);
9
11
  /**
10
- * Filter function for checking if a value is weakly equal to a given value. (JS == comparison)
12
+ * Keeps rows whose column value is loosely equal to the filter value.
13
+ *
14
+ * Uses JavaScript `==` comparison and auto-removes empty filter values. This is
15
+ * useful for matching string input against numeric row values.
11
16
  */
12
17
  const filterFn_weakEquals = (row, columnId, filterValue) => {
13
18
  return row.getValue(columnId) == filterValue;
14
19
  };
15
20
  filterFn_weakEquals.autoRemove = (val) => testFalsy(val);
16
21
  /**
17
- * Filter function for checking if a string includes a given substring. (Case-sensitive)
22
+ * Keeps rows whose stringified column value includes the filter text.
23
+ *
24
+ * Matching is case-sensitive and empty filter values are auto-removed.
18
25
  */
19
26
  const filterFn_includesStringSensitive = (row, columnId, filterValue) => {
20
27
  var _row$getValue;
@@ -22,7 +29,10 @@ const filterFn_includesStringSensitive = (row, columnId, filterValue) => {
22
29
  };
23
30
  filterFn_includesStringSensitive.autoRemove = (val) => testFalsy(val);
24
31
  /**
25
- * Filter function for checking if a string includes a given substring. (Non-case-sensitive)
32
+ * Keeps rows whose stringified column value includes the filter text.
33
+ *
34
+ * Both values are lowercased before comparison, and empty filter values are
35
+ * auto-removed.
26
36
  */
27
37
  const filterFn_includesString = (row, columnId, filterValue) => {
28
38
  var _row$getValue2;
@@ -30,7 +40,10 @@ const filterFn_includesString = (row, columnId, filterValue) => {
30
40
  };
31
41
  filterFn_includesString.autoRemove = (val) => testFalsy(val);
32
42
  /**
33
- * Filter function for checking if a string is exactly equal to a given string. (Non-case-sensitive)
43
+ * Keeps rows whose stringified column value equals the filter text.
44
+ *
45
+ * Both values are lowercased before comparison, and empty filter values are
46
+ * auto-removed.
34
47
  */
35
48
  const filterFn_equalsString = (row, columnId, filterValue) => {
36
49
  var _row$getValue3;
@@ -38,7 +51,9 @@ const filterFn_equalsString = (row, columnId, filterValue) => {
38
51
  };
39
52
  filterFn_equalsString.autoRemove = (val) => testFalsy(val);
40
53
  /**
41
- * Filter function for checking if a string is exactly equal to a given string. (Case-sensitive)
54
+ * Keeps rows whose stringified column value exactly equals the filter text.
55
+ *
56
+ * Matching is case-sensitive and empty filter values are auto-removed.
42
57
  */
43
58
  const filterFn_equalsStringSensitive = (row, columnId, filterValue) => {
44
59
  var _row$getValue4;
@@ -46,7 +61,10 @@ const filterFn_equalsStringSensitive = (row, columnId, filterValue) => {
46
61
  };
47
62
  filterFn_equalsStringSensitive.autoRemove = (val) => testFalsy(val);
48
63
  /**
49
- * Filter function for checking if a number is greater than a given number.
64
+ * Keeps rows whose value is greater than the filter value.
65
+ *
66
+ * Numeric values are compared numerically when both sides can be coerced to
67
+ * numbers; otherwise normalized strings are compared.
50
68
  */
51
69
  const filterFn_greaterThan = (row, columnId, filterValue) => {
52
70
  const rowValue = row.getValue(columnId);
@@ -57,38 +75,51 @@ const filterFn_greaterThan = (row, columnId, filterValue) => {
57
75
  };
58
76
  filterFn_greaterThan.resolveFilterValue = (val) => testFalsy(val);
59
77
  /**
60
- * Filter function for checking if a number is greater than or equal to a given number.
78
+ * Keeps rows whose value is greater than or equal to the filter value.
79
+ *
80
+ * Delegates to the built-in greater-than and equality comparisons.
61
81
  */
62
82
  const filterFn_greaterThanOrEqualTo = (row, columnId, filterValue) => {
63
83
  return filterFn_greaterThan(row, columnId, filterValue) || filterFn_equals(row, columnId, filterValue);
64
84
  };
65
85
  filterFn_greaterThanOrEqualTo.resolveFilterValue = (val) => testFalsy(val);
66
86
  /**
67
- * Filter function for checking if a number is less than a given number.
87
+ * Keeps rows whose value is less than the filter value.
88
+ *
89
+ * This is implemented as the inverse of greater-than-or-equal comparison.
68
90
  */
69
91
  const filterFn_lessThan = (row, columnId, filterValue) => {
70
92
  return !filterFn_greaterThanOrEqualTo(row, columnId, filterValue);
71
93
  };
72
94
  filterFn_lessThan.resolveFilterValue = (val) => testFalsy(val);
73
95
  /**
74
- * Filter function for checking if a number is less than or equal to a given number.
96
+ * Keeps rows whose value is less than or equal to the filter value.
97
+ *
98
+ * This is implemented as the inverse of greater-than comparison.
75
99
  */
76
100
  const filterFn_lessThanOrEqualTo = (row, columnId, filterValue) => {
77
101
  return !filterFn_greaterThan(row, columnId, filterValue);
78
102
  };
79
103
  filterFn_lessThanOrEqualTo.resolveFilterValue = (val) => testFalsy(val);
80
104
  /**
81
- * Filter function for checking if a number or a string is between two given values.
105
+ * Keeps rows whose value falls between an exclusive min/max pair.
106
+ *
107
+ * Blank range endpoints are treated as open-ended.
82
108
  */
83
109
  const filterFn_between = (row, columnId, filterValues) => (["", void 0].includes(filterValues[0]) || filterFn_greaterThan(row, columnId, filterValues[0])) && (!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1] || ["", void 0].includes(filterValues[1]) || filterFn_lessThan(row, columnId, filterValues[1]));
84
110
  filterFn_between.autoRemove = (val) => !val;
85
111
  /**
86
- * Filter function for checking if a number or a string is between two given values or equal to them.
112
+ * Keeps rows whose value falls between an inclusive min/max pair.
113
+ *
114
+ * Blank range endpoints are treated as open-ended.
87
115
  */
88
116
  const filterFn_betweenInclusive = (row, columnId, filterValues) => (["", void 0].includes(filterValues[0]) || filterFn_greaterThanOrEqualTo(row, columnId, filterValues[0])) && (!isNaN(+filterValues[0]) && !isNaN(+filterValues[1]) && +filterValues[0] > +filterValues[1] || ["", void 0].includes(filterValues[1]) || filterFn_lessThanOrEqualTo(row, columnId, filterValues[1]));
89
117
  filterFn_betweenInclusive.autoRemove = (val) => !val;
90
118
  /**
91
- * Filter function for checking if a number is within a given range.
119
+ * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.
120
+ *
121
+ * Filter values are normalized so blank endpoints become open-ended and
122
+ * reversed endpoints are swapped.
92
123
  */
93
124
  const filterFn_inNumberRange = (row, columnId, filterValue) => {
94
125
  const [min, max] = filterValue;
@@ -110,20 +141,20 @@ filterFn_inNumberRange.resolveFilterValue = (val) => {
110
141
  };
111
142
  filterFn_inNumberRange.autoRemove = (val) => testFalsy(val) || testFalsy(val[0]) && testFalsy(val[1]);
112
143
  /**
113
- * Filter function for checking if an array has a given value.
144
+ * Keeps rows whose scalar column value equals at least one filter value.
114
145
  */
115
146
  const filterFn_arrHas = (row, columnId, filterValue) => {
116
147
  return filterValue.some((val) => row.getValue(columnId) === val);
117
148
  };
118
149
  /**
119
- * Filter function for checking if an array includes a given value.
150
+ * Keeps rows whose array or string column value includes at least one filter value.
120
151
  */
121
152
  const filterFn_arrIncludes = (row, columnId, filterValue) => {
122
153
  return filterValue.some((val) => row.getValue(columnId).includes(val));
123
154
  };
124
155
  filterFn_arrIncludes.autoRemove = (val) => testFalsy(val) || !(val === null || val === void 0 ? void 0 : val.length);
125
156
  /**
126
- * Filter function for checking if an array includes all of the given values.
157
+ * Keeps rows whose array column value includes every filter value.
127
158
  */
128
159
  const filterFn_arrIncludesAll = (row, columnId, filterValue) => {
129
160
  const value = row.getValue(columnId);
@@ -132,7 +163,7 @@ const filterFn_arrIncludesAll = (row, columnId, filterValue) => {
132
163
  };
133
164
  filterFn_arrIncludesAll.autoRemove = (val) => testFalsy(val) || !(val === null || val === void 0 ? void 0 : val.length);
134
165
  /**
135
- * Filter function for checking if an array includes any of the given values.
166
+ * Keeps rows whose array column value includes at least one filter value.
136
167
  */
137
168
  const filterFn_arrIncludesSome = (row, columnId, filterValue) => {
138
169
  const value = row.getValue(columnId);
@@ -1 +1 @@
1
- {"version":3,"file":"filterFns.js","names":[],"sources":["../../src/fns/filterFns.ts"],"sourcesContent":["import type { RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type { Row } from '../types/Row'\nimport type { FilterFn } from '../features/column-filtering/columnFilteringFeature.types'\n\n// Basic filters\n\n/**\n * Filter function for checking if a value is exactly equal to a given value. (JS === comparison)\n */\nexport const filterFn_equals: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: unknown,\n) => {\n return row.getValue(columnId) === filterValue\n}\n\nfilterFn_equals.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a value is weakly equal to a given value. (JS == comparison)\n */\nexport const filterFn_weakEquals: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: unknown,\n) => {\n return row.getValue(columnId) == filterValue\n}\n\nfilterFn_weakEquals.autoRemove = (val: any) => testFalsy(val)\n\n// String filters\n\n/**\n * Filter function for checking if a string includes a given substring. (Case-sensitive)\n */\nexport const filterFn_includesStringSensitive: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return Boolean(\n row.getValue(columnId)?.toString().includes(filterValue.toString()),\n )\n}\n\nfilterFn_includesStringSensitive.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a string includes a given substring. (Non-case-sensitive)\n */\nexport const filterFn_includesString: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return Boolean(\n row\n .getValue(columnId)\n ?.toString()\n .toLowerCase()\n .includes(filterValue.toString().toLowerCase()),\n )\n}\n\nfilterFn_includesString.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a string is exactly equal to a given string. (Non-case-sensitive)\n */\nexport const filterFn_equalsString: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return (\n row.getValue(columnId)?.toString().toLowerCase() ===\n filterValue.toLowerCase()\n )\n}\n\nfilterFn_equalsString.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a string is exactly equal to a given string. (Case-sensitive)\n */\nexport const filterFn_equalsStringSensitive: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return row.getValue(columnId)?.toString() === filterValue\n}\n\nfilterFn_equalsStringSensitive.autoRemove = (val: any) => testFalsy(val)\n\n// Number filters\n\n/**\n * Filter function for checking if a number is greater than a given number.\n */\nexport const filterFn_greaterThan: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n const rowValue = row.getValue(columnId)\n const numericRowValue =\n rowValue === null || rowValue === undefined ? 0 : +rowValue\n const numericFilterValue = +filterValue\n\n if (!isNaN(numericFilterValue) && !isNaN(numericRowValue)) {\n return numericRowValue > numericFilterValue\n }\n\n const stringValue = (rowValue ?? '').toString().toLowerCase().trim()\n const stringFilterValue = filterValue.toString().toLowerCase().trim()\n return stringValue > stringFilterValue\n}\n\nfilterFn_greaterThan.resolveFilterValue = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a number is greater than or equal to a given number.\n */\nexport const filterFn_greaterThanOrEqualTo: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n return (\n filterFn_greaterThan(row as any, columnId, filterValue) ||\n filterFn_equals(row as any, columnId, filterValue)\n )\n}\n\nfilterFn_greaterThanOrEqualTo.resolveFilterValue = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a number is less than a given number.\n */\nexport const filterFn_lessThan: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n return !filterFn_greaterThanOrEqualTo(row as any, columnId, filterValue)\n}\n\nfilterFn_lessThan.resolveFilterValue = (val: any) => testFalsy(val)\n\n/**\n * Filter function for checking if a number is less than or equal to a given number.\n */\nexport const filterFn_lessThanOrEqualTo: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n return !filterFn_greaterThan(row as any, columnId, filterValue)\n}\n\nfilterFn_lessThanOrEqualTo.resolveFilterValue = (val: any) => testFalsy(val)\n\n// Range filters\n\n/**\n * Filter function for checking if a number or a string is between two given values.\n */\nconst filterFn_between: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValues: [number | string, number | string],\n): boolean =>\n ((['', undefined] as Array<any>).includes(filterValues[0]) ||\n filterFn_greaterThan(row as any, columnId, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as Array<any>).includes(filterValues[1]) ||\n filterFn_lessThan(row as any, columnId, filterValues[1]))\n\nfilterFn_between.autoRemove = (val: any) => !val\n\n/**\n * Filter function for checking if a number or a string is between two given values or equal to them.\n */\nconst filterFn_betweenInclusive: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValues: [number | string, number | string],\n): boolean =>\n ((['', undefined] as Array<any>).includes(filterValues[0]) ||\n filterFn_greaterThanOrEqualTo(row as any, columnId, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as Array<any>).includes(filterValues[1]) ||\n filterFn_lessThanOrEqualTo(row as any, columnId, filterValues[1]))\n\nfilterFn_betweenInclusive.autoRemove = (val: any) => !val\n\n/**\n * Filter function for checking if a number is within a given range.\n */\nexport const filterFn_inNumberRange: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: [number, number],\n) => {\n const [min, max] = filterValue\n\n const rowValue: number = row.getValue(columnId)\n return rowValue >= min && rowValue <= max\n}\n\nfilterFn_inNumberRange.resolveFilterValue = (val: [any, any]) => {\n const [unsafeMin, unsafeMax] = val\n\n const parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin\n const parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\nfilterFn_inNumberRange.autoRemove = (val: any) =>\n testFalsy(val) || (testFalsy(val[0]) && testFalsy(val[1]))\n\n// Array filters\n\n/**\n * Filter function for checking if an array has a given value.\n */\nexport const filterFn_arrHas: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n return filterValue.some((val) => row.getValue<unknown>(columnId) === val)\n}\n\n/**\n * Filter function for checking if an array includes a given value.\n */\nexport const filterFn_arrIncludes: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n return filterValue.some((val) =>\n (row.getValue<unknown>(columnId) as Array<unknown> | string).includes(\n val as any,\n ),\n )\n}\n\nfilterFn_arrIncludes.autoRemove = (val: any) => testFalsy(val) || !val?.length\n\n/**\n * Filter function for checking if an array includes all of the given values.\n */\nexport const filterFn_arrIncludesAll: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n const value = row.getValue<Array<unknown>>(columnId)\n if (!Array.isArray(value)) return false\n return !filterValue.some((val) => !value.includes(val))\n}\n\nfilterFn_arrIncludesAll.autoRemove = (val: any) =>\n testFalsy(val) || !val?.length\n\n/**\n * Filter function for checking if an array includes any of the given values.\n */\nexport const filterFn_arrIncludesSome: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n const value = row.getValue<Array<unknown>>(columnId)\n if (!Array.isArray(value)) return false\n return filterValue.some((val) => value.includes(val))\n}\n\nfilterFn_arrIncludesSome.autoRemove = (val: any) =>\n testFalsy(val) || !val?.length\n\n// Export\n\n/**\n * The built-in filter function registry.\n *\n * Pass this object to filtered row model creation or extend it with custom filter functions.\n */\nexport const filterFns = {\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrHas: filterFn_arrHas,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n weakEquals: filterFn_weakEquals,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsy(val: any) {\n return val === undefined || val === null || val === ''\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterFns.js","names":[],"sources":["../../src/fns/filterFns.ts"],"sourcesContent":["import type { RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type { Row } from '../types/Row'\nimport type { FilterFn } from '../features/column-filtering/columnFilteringFeature.types'\n\n// Basic filters\n\n/**\n * Keeps rows whose column value is strictly equal to the filter value.\n *\n * Uses JavaScript `===` comparison and auto-removes empty filter values.\n */\nexport const filterFn_equals: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: unknown,\n) => {\n return row.getValue(columnId) === filterValue\n}\n\nfilterFn_equals.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose column value is loosely equal to the filter value.\n *\n * Uses JavaScript `==` comparison and auto-removes empty filter values. This is\n * useful for matching string input against numeric row values.\n */\nexport const filterFn_weakEquals: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: unknown,\n) => {\n return row.getValue(columnId) == filterValue\n}\n\nfilterFn_weakEquals.autoRemove = (val: any) => testFalsy(val)\n\n// String filters\n\n/**\n * Keeps rows whose stringified column value includes the filter text.\n *\n * Matching is case-sensitive and empty filter values are auto-removed.\n */\nexport const filterFn_includesStringSensitive: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return Boolean(\n row.getValue(columnId)?.toString().includes(filterValue.toString()),\n )\n}\n\nfilterFn_includesStringSensitive.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose stringified column value includes the filter text.\n *\n * Both values are lowercased before comparison, and empty filter values are\n * auto-removed.\n */\nexport const filterFn_includesString: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return Boolean(\n row\n .getValue(columnId)\n ?.toString()\n .toLowerCase()\n .includes(filterValue.toString().toLowerCase()),\n )\n}\n\nfilterFn_includesString.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose stringified column value equals the filter text.\n *\n * Both values are lowercased before comparison, and empty filter values are\n * auto-removed.\n */\nexport const filterFn_equalsString: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return (\n row.getValue(columnId)?.toString().toLowerCase() ===\n filterValue.toLowerCase()\n )\n}\n\nfilterFn_equalsString.autoRemove = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose stringified column value exactly equals the filter text.\n *\n * Matching is case-sensitive and empty filter values are auto-removed.\n */\nexport const filterFn_equalsStringSensitive: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: string,\n) => {\n return row.getValue(columnId)?.toString() === filterValue\n}\n\nfilterFn_equalsStringSensitive.autoRemove = (val: any) => testFalsy(val)\n\n// Number filters\n\n/**\n * Keeps rows whose value is greater than the filter value.\n *\n * Numeric values are compared numerically when both sides can be coerced to\n * numbers; otherwise normalized strings are compared.\n */\nexport const filterFn_greaterThan: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n const rowValue = row.getValue(columnId)\n const numericRowValue =\n rowValue === null || rowValue === undefined ? 0 : +rowValue\n const numericFilterValue = +filterValue\n\n if (!isNaN(numericFilterValue) && !isNaN(numericRowValue)) {\n return numericRowValue > numericFilterValue\n }\n\n const stringValue = (rowValue ?? '').toString().toLowerCase().trim()\n const stringFilterValue = filterValue.toString().toLowerCase().trim()\n return stringValue > stringFilterValue\n}\n\nfilterFn_greaterThan.resolveFilterValue = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose value is greater than or equal to the filter value.\n *\n * Delegates to the built-in greater-than and equality comparisons.\n */\nexport const filterFn_greaterThanOrEqualTo: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n return (\n filterFn_greaterThan(row as any, columnId, filterValue) ||\n filterFn_equals(row as any, columnId, filterValue)\n )\n}\n\nfilterFn_greaterThanOrEqualTo.resolveFilterValue = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose value is less than the filter value.\n *\n * This is implemented as the inverse of greater-than-or-equal comparison.\n */\nexport const filterFn_lessThan: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n return !filterFn_greaterThanOrEqualTo(row as any, columnId, filterValue)\n}\n\nfilterFn_lessThan.resolveFilterValue = (val: any) => testFalsy(val)\n\n/**\n * Keeps rows whose value is less than or equal to the filter value.\n *\n * This is implemented as the inverse of greater-than comparison.\n */\nexport const filterFn_lessThanOrEqualTo: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Date | number | string,\n) => {\n return !filterFn_greaterThan(row as any, columnId, filterValue)\n}\n\nfilterFn_lessThanOrEqualTo.resolveFilterValue = (val: any) => testFalsy(val)\n\n// Range filters\n\n/**\n * Keeps rows whose value falls between an exclusive min/max pair.\n *\n * Blank range endpoints are treated as open-ended.\n */\nconst filterFn_between: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValues: [number | string, number | string],\n): boolean =>\n ((['', undefined] as Array<any>).includes(filterValues[0]) ||\n filterFn_greaterThan(row as any, columnId, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as Array<any>).includes(filterValues[1]) ||\n filterFn_lessThan(row as any, columnId, filterValues[1]))\n\nfilterFn_between.autoRemove = (val: any) => !val\n\n/**\n * Keeps rows whose value falls between an inclusive min/max pair.\n *\n * Blank range endpoints are treated as open-ended.\n */\nconst filterFn_betweenInclusive: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValues: [number | string, number | string],\n): boolean =>\n ((['', undefined] as Array<any>).includes(filterValues[0]) ||\n filterFn_greaterThanOrEqualTo(row as any, columnId, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as Array<any>).includes(filterValues[1]) ||\n filterFn_lessThanOrEqualTo(row as any, columnId, filterValues[1]))\n\nfilterFn_betweenInclusive.autoRemove = (val: any) => !val\n\n/**\n * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.\n *\n * Filter values are normalized so blank endpoints become open-ended and\n * reversed endpoints are swapped.\n */\nexport const filterFn_inNumberRange: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: [number, number],\n) => {\n const [min, max] = filterValue\n\n const rowValue: number = row.getValue(columnId)\n return rowValue >= min && rowValue <= max\n}\n\nfilterFn_inNumberRange.resolveFilterValue = (val: [any, any]) => {\n const [unsafeMin, unsafeMax] = val\n\n const parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin\n const parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\nfilterFn_inNumberRange.autoRemove = (val: any) =>\n testFalsy(val) || (testFalsy(val[0]) && testFalsy(val[1]))\n\n// Array filters\n\n/**\n * Keeps rows whose scalar column value equals at least one filter value.\n */\nexport const filterFn_arrHas: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n return filterValue.some((val) => row.getValue<unknown>(columnId) === val)\n}\n\n/**\n * Keeps rows whose array or string column value includes at least one filter value.\n */\nexport const filterFn_arrIncludes: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n return filterValue.some((val) =>\n (row.getValue<unknown>(columnId) as Array<unknown> | string).includes(\n val as any,\n ),\n )\n}\n\nfilterFn_arrIncludes.autoRemove = (val: any) => testFalsy(val) || !val?.length\n\n/**\n * Keeps rows whose array column value includes every filter value.\n */\nexport const filterFn_arrIncludesAll: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n const value = row.getValue<Array<unknown>>(columnId)\n if (!Array.isArray(value)) return false\n return !filterValue.some((val) => !value.includes(val))\n}\n\nfilterFn_arrIncludesAll.autoRemove = (val: any) =>\n testFalsy(val) || !val?.length\n\n/**\n * Keeps rows whose array column value includes at least one filter value.\n */\nexport const filterFn_arrIncludesSome: FilterFn<any, any> = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n columnId: string,\n filterValue: Array<unknown>,\n) => {\n const value = row.getValue<Array<unknown>>(columnId)\n if (!Array.isArray(value)) return false\n return filterValue.some((val) => value.includes(val))\n}\n\nfilterFn_arrIncludesSome.autoRemove = (val: any) =>\n testFalsy(val) || !val?.length\n\n// Export\n\n/**\n * The built-in filter function registry.\n *\n * Pass this object to filtered row model creation or extend it with custom filter functions.\n */\nexport const filterFns = {\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrHas: filterFn_arrHas,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n weakEquals: filterFn_weakEquals,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsy(val: any) {\n return val === undefined || val === null || val === ''\n}\n"],"mappings":"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"}
@@ -1,16 +1,21 @@
1
1
 
2
2
  //#region src/helpers/columnHelper.ts
3
3
  /**
4
- * A helper utility for creating column definitions with slightly better type inference for each individual column.
5
- * The `TValue` generic is inferred based on the accessor key or function provided.
6
- * **Note:** From a JavaScript perspective, the functions in these helpers do not do anything. They are only used to help TypeScript infer the correct types for the column definitions.
4
+ * Creates helper functions for authoring column definitions with stronger value
5
+ * inference.
6
+ *
7
+ * `accessor` infers `TValue` from an accessor key or accessor function,
8
+ * `display` creates non-data columns, `group` creates parent columns, and
9
+ * `columns` preserves tuple-level value types for arrays. At runtime these
10
+ * helpers only return column definition objects.
11
+ *
7
12
  * @example
8
13
  * ```tsx
9
14
  * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper
10
15
  * const columns = [
11
16
  * helper.display({ id: 'actions', header: 'Actions' }),
12
17
  * helper.accessor('firstName', {}),
13
- * helper.accessor((row) => row.lastName, {}
18
+ * helper.accessor((row) => row.lastName, { id: 'lastName' }),
14
19
  * ]
15
20
  * ```
16
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"columnHelper.cjs","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport type ColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * A helper utility for creating column definitions with slightly better type inference for each individual column.\n * The `TValue` generic is inferred based on the accessor key or function provided.\n * **Note:** From a JavaScript perspective, the functions in these helpers do not do anything. They are only used to help TypeScript infer the correct types for the column definitions.\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, {}\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA6FA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;IACb,GACD;IACE,GAAG;IACH,aAAa;IACd;;EAEP,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;EACpB"}
1
+ {"version":3,"file":"columnHelper.cjs","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport type ColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Creates helper functions for authoring column definitions with stronger value\n * inference.\n *\n * `accessor` infers `TValue` from an accessor key or accessor function,\n * `display` creates non-data columns, `group` creates parent columns, and\n * `columns` preserves tuple-level value types for arrays. At runtime these\n * helpers only return column definition objects.\n *\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, { id: 'lastName' }),\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkGA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;IACb,GACD;IACE,GAAG;IACH,aAAa;IACd;;EAEP,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;EACpB"}
@@ -47,16 +47,21 @@ type ColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = {
47
47
  group: (column: GroupColumnDef<TFeatures, TData, unknown>) => GroupColumnDef<TFeatures, TData, unknown>;
48
48
  };
49
49
  /**
50
- * A helper utility for creating column definitions with slightly better type inference for each individual column.
51
- * The `TValue` generic is inferred based on the accessor key or function provided.
52
- * **Note:** From a JavaScript perspective, the functions in these helpers do not do anything. They are only used to help TypeScript infer the correct types for the column definitions.
50
+ * Creates helper functions for authoring column definitions with stronger value
51
+ * inference.
52
+ *
53
+ * `accessor` infers `TValue` from an accessor key or accessor function,
54
+ * `display` creates non-data columns, `group` creates parent columns, and
55
+ * `columns` preserves tuple-level value types for arrays. At runtime these
56
+ * helpers only return column definition objects.
57
+ *
53
58
  * @example
54
59
  * ```tsx
55
60
  * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper
56
61
  * const columns = [
57
62
  * helper.display({ id: 'actions', header: 'Actions' }),
58
63
  * helper.accessor('firstName', {}),
59
- * helper.accessor((row) => row.lastName, {}
64
+ * helper.accessor((row) => row.lastName, { id: 'lastName' }),
60
65
  * ]
61
66
  * ```
62
67
  */
@@ -47,16 +47,21 @@ type ColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = {
47
47
  group: (column: GroupColumnDef<TFeatures, TData, unknown>) => GroupColumnDef<TFeatures, TData, unknown>;
48
48
  };
49
49
  /**
50
- * A helper utility for creating column definitions with slightly better type inference for each individual column.
51
- * The `TValue` generic is inferred based on the accessor key or function provided.
52
- * **Note:** From a JavaScript perspective, the functions in these helpers do not do anything. They are only used to help TypeScript infer the correct types for the column definitions.
50
+ * Creates helper functions for authoring column definitions with stronger value
51
+ * inference.
52
+ *
53
+ * `accessor` infers `TValue` from an accessor key or accessor function,
54
+ * `display` creates non-data columns, `group` creates parent columns, and
55
+ * `columns` preserves tuple-level value types for arrays. At runtime these
56
+ * helpers only return column definition objects.
57
+ *
53
58
  * @example
54
59
  * ```tsx
55
60
  * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper
56
61
  * const columns = [
57
62
  * helper.display({ id: 'actions', header: 'Actions' }),
58
63
  * helper.accessor('firstName', {}),
59
- * helper.accessor((row) => row.lastName, {}
64
+ * helper.accessor((row) => row.lastName, { id: 'lastName' }),
60
65
  * ]
61
66
  * ```
62
67
  */
@@ -1,15 +1,20 @@
1
1
  //#region src/helpers/columnHelper.ts
2
2
  /**
3
- * A helper utility for creating column definitions with slightly better type inference for each individual column.
4
- * The `TValue` generic is inferred based on the accessor key or function provided.
5
- * **Note:** From a JavaScript perspective, the functions in these helpers do not do anything. They are only used to help TypeScript infer the correct types for the column definitions.
3
+ * Creates helper functions for authoring column definitions with stronger value
4
+ * inference.
5
+ *
6
+ * `accessor` infers `TValue` from an accessor key or accessor function,
7
+ * `display` creates non-data columns, `group` creates parent columns, and
8
+ * `columns` preserves tuple-level value types for arrays. At runtime these
9
+ * helpers only return column definition objects.
10
+ *
6
11
  * @example
7
12
  * ```tsx
8
13
  * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper
9
14
  * const columns = [
10
15
  * helper.display({ id: 'actions', header: 'Actions' }),
11
16
  * helper.accessor('firstName', {}),
12
- * helper.accessor((row) => row.lastName, {}
17
+ * helper.accessor((row) => row.lastName, { id: 'lastName' }),
13
18
  * ]
14
19
  * ```
15
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"columnHelper.js","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport type ColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * A helper utility for creating column definitions with slightly better type inference for each individual column.\n * The `TValue` generic is inferred based on the accessor key or function provided.\n * **Note:** From a JavaScript perspective, the functions in these helpers do not do anything. They are only used to help TypeScript infer the correct types for the column definitions.\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, {}\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA6FA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;IACb,GACD;IACE,GAAG;IACH,aAAa;IACd;;EAEP,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;EACpB"}
1
+ {"version":3,"file":"columnHelper.js","names":[],"sources":["../../src/helpers/columnHelper.ts"],"sourcesContent":["import type { DeepKeys, DeepValue, RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n} from '../types/ColumnDef'\n\nexport type ColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = {\n /**\n * Creates a data column definition with an accessor key or function to extract the cell value.\n * @example\n * ```ts\n * helper.accessor('firstName', { cell: (info) => info.getValue() })\n * helper.accessor((row) => row.lastName, { id: 'lastName' })\n * ```\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TFeatures, TData, TValue>\n : IdentifiedColumnDef<TFeatures, TData, TValue>,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n * Uses variadic tuple types to infer element types before checking constraints, preventing type widening.\n * @example\n * ```ts\n * helper.columns([helper.accessor('firstName', {}), helper.accessor('age', {})])\n * ```\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n /**\n * Creates a display column definition for non-data columns like actions or row selection.\n * @example\n * ```ts\n * helper.display({ id: 'actions', header: 'Actions', cell: () => <button>Edit</button> })\n * ```\n */\n display: (\n column: DisplayColumnDef<TFeatures, TData>,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n /**\n * Creates a group column definition that contains nested child columns.\n * @example\n * ```ts\n * helper.group({\n * id: 'name',\n * header: 'Name',\n * columns: helper.columns([\n * helper.accessor('firstName', {}),\n * helper.accessor('lastName', { id: 'lastName' }),\n * ]),\n * })\n * ```\n */\n group: (\n column: GroupColumnDef<TFeatures, TData, unknown>,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Creates helper functions for authoring column definitions with stronger value\n * inference.\n *\n * `accessor` infers `TValue` from an accessor key or accessor function,\n * `display` creates non-data columns, `group` creates parent columns, and\n * `columns` preserves tuple-level value types for arrays. At runtime these\n * helpers only return column definition objects.\n *\n * @example\n * ```tsx\n * const helper = createColumnHelper<typeof _features, Person>() // _features is the result of `tableFeatures({})` helper\n * const columns = [\n * helper.display({ id: 'actions', header: 'Actions' }),\n * helper.accessor('firstName', {}),\n * helper.accessor((row) => row.lastName, { id: 'lastName' }),\n * ]\n * ```\n */\nexport function createColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): ColumnHelper<TFeatures, TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ): Array<ColumnDef<TFeatures, TData, any>> & [...TColumns] =>\n columns as Array<ColumnDef<TFeatures, TData, any>> & [...TColumns],\n display: (column) => column,\n group: (column) => column,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkGA,SAAgB,qBAGoB;CAClC,OAAO;EACL,WAAW,UAAU,WAAW;GAC9B,OAAO,OAAO,aAAa,aACtB;IACC,GAAG;IACH,YAAY;IACb,GACD;IACE,GAAG;IACH,aAAa;IACd;;EAEP,UACE,YAEA;EACF,UAAU,WAAW;EACrB,QAAQ,WAAW;EACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"tableOptions.cjs","names":[],"sources":["../../src/helpers/tableOptions.ts"],"sourcesContent":["import type { RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type { TableOptions } from '../types/TableOptions'\n\n/**\n * Returns table options while preserving generic inference.\n *\n * This helper is useful when composing reusable table options outside of a framework adapter call.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'columns'> & {\n _features: TFeatures\n },\n): Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'> & {\n _features: TFeatures\n}\n\n/**\n * Returns table options while preserving generic inference when `data` is supplied later.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'data'> & {\n _features: TFeatures\n },\n): Omit<TableOptions<TFeatures, TData>, 'data' | '_features'> & {\n _features: TFeatures\n}\n\n/**\n * Returns table options while preserving generic inference when both `data` and `columns` are supplied later.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'data' | 'columns'> & {\n _features: TFeatures\n },\n): Omit<TableOptions<TFeatures, TData>, 'data' | 'columns' | '_features'> & {\n _features: TFeatures\n}\n\n/**\n * Returns a fully specified table options object without changing its runtime value.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(options: TableOptions<TFeatures, TData>): TableOptions<TFeatures, TData>\n\n/**\n * Returns table options while preserving generic inference when `_features` is supplied by a wrapper.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, '_features'>,\n): Omit<TableOptions<TFeatures, TData>, '_features'>\n\n/**\n * Returns table options while preserving generic inference when `data` and `_features` are supplied by a wrapper.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'data' | '_features'>,\n): Omit<TableOptions<TFeatures, TData>, 'data' | '_features'>\n\n/**\n * Returns table options while preserving generic inference when `columns` and `_features` are supplied by a wrapper.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'>,\n): Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'>\n\n/**\n * Returns table options while preserving generic inference when `data`, `columns`, and `_features` are supplied by a wrapper.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<\n TableOptions<TFeatures, TData>,\n 'data' | 'columns' | '_features'\n >,\n): Omit<TableOptions<TFeatures, TData>, 'data' | 'columns' | '_features'>\n\n/**\n * Runtime implementation for `tableOptions`.\n *\n * The helper returns the same object it receives; all value comes from the\n * overloads preserving table option inference at compile time.\n */\nexport function tableOptions(options: unknown) {\n return options\n}\n\n// test\n\n// const options = tableOptions({\n// _features: {},\n// })\n"],"mappings":";;;;;;;;AAyGA,SAAgB,aAAa,SAAkB;CAC7C,OAAO"}
1
+ {"version":3,"file":"tableOptions.cjs","names":[],"sources":["../../src/helpers/tableOptions.ts"],"sourcesContent":["import type { RowData } from '../types/type-utils'\nimport type { TableFeatures } from '../types/TableFeatures'\nimport type { TableOptions } from '../types/TableOptions'\n\n/**\n * Preserves table option inference when reusable options omit `columns`.\n *\n * This is useful for composing shared options that will receive columns later\n * from a framework adapter or table factory.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'columns'> & {\n _features: TFeatures\n },\n): Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'> & {\n _features: TFeatures\n}\n\n/**\n * Preserves table option inference when reusable options omit `data`.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'data'> & {\n _features: TFeatures\n },\n): Omit<TableOptions<TFeatures, TData>, 'data' | '_features'> & {\n _features: TFeatures\n}\n\n/**\n * Preserves table option inference when reusable options omit both `data` and\n * `columns`.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'data' | 'columns'> & {\n _features: TFeatures\n },\n): Omit<TableOptions<TFeatures, TData>, 'data' | 'columns' | '_features'> & {\n _features: TFeatures\n}\n\n/**\n * Preserves inference for a fully specified table options object.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(options: TableOptions<TFeatures, TData>): TableOptions<TFeatures, TData>\n\n/**\n * Preserves inference when a wrapper supplies `_features`.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, '_features'>,\n): Omit<TableOptions<TFeatures, TData>, '_features'>\n\n/**\n * Preserves inference when a wrapper supplies both `data` and `_features`.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'data' | '_features'>,\n): Omit<TableOptions<TFeatures, TData>, 'data' | '_features'>\n\n/**\n * Preserves inference when a wrapper supplies both `columns` and `_features`.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'>,\n): Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'>\n\n/**\n * Preserves inference when a wrapper supplies `data`, `columns`, and\n * `_features`.\n */\nexport function tableOptions<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n options: Omit<\n TableOptions<TFeatures, TData>,\n 'data' | 'columns' | '_features'\n >,\n): Omit<TableOptions<TFeatures, TData>, 'data' | 'columns' | '_features'>\n\n/**\n * Runtime implementation for `tableOptions`.\n *\n * The helper returns the same object it receives; all value comes from the\n * overloads preserving table option inference at compile time.\n */\nexport function tableOptions(options: unknown) {\n return options\n}\n\n// test\n\n// const options = tableOptions({\n// _features: {},\n// })\n"],"mappings":";;;;;;;;AA4GA,SAAgB,aAAa,SAAkB;CAC7C,OAAO"}
@@ -4,9 +4,10 @@ import { TableFeatures } from "../types/TableFeatures.cjs";
4
4
 
5
5
  //#region src/helpers/tableOptions.d.ts
6
6
  /**
7
- * Returns table options while preserving generic inference.
7
+ * Preserves table option inference when reusable options omit `columns`.
8
8
  *
9
- * This helper is useful when composing reusable table options outside of a framework adapter call.
9
+ * This is useful for composing shared options that will receive columns later
10
+ * from a framework adapter or table factory.
10
11
  */
11
12
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, 'columns'> & {
12
13
  _features: TFeatures;
@@ -14,7 +15,7 @@ declare function tableOptions<TFeatures extends TableFeatures, TData extends Row
14
15
  _features: TFeatures;
15
16
  };
16
17
  /**
17
- * Returns table options while preserving generic inference when `data` is supplied later.
18
+ * Preserves table option inference when reusable options omit `data`.
18
19
  */
19
20
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, 'data'> & {
20
21
  _features: TFeatures;
@@ -22,7 +23,8 @@ declare function tableOptions<TFeatures extends TableFeatures, TData extends Row
22
23
  _features: TFeatures;
23
24
  };
24
25
  /**
25
- * Returns table options while preserving generic inference when both `data` and `columns` are supplied later.
26
+ * Preserves table option inference when reusable options omit both `data` and
27
+ * `columns`.
26
28
  */
27
29
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, 'data' | 'columns'> & {
28
30
  _features: TFeatures;
@@ -30,23 +32,24 @@ declare function tableOptions<TFeatures extends TableFeatures, TData extends Row
30
32
  _features: TFeatures;
31
33
  };
32
34
  /**
33
- * Returns a fully specified table options object without changing its runtime value.
35
+ * Preserves inference for a fully specified table options object.
34
36
  */
35
37
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: TableOptions<TFeatures, TData>): TableOptions<TFeatures, TData>;
36
38
  /**
37
- * Returns table options while preserving generic inference when `_features` is supplied by a wrapper.
39
+ * Preserves inference when a wrapper supplies `_features`.
38
40
  */
39
41
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, '_features'>): Omit<TableOptions<TFeatures, TData>, '_features'>;
40
42
  /**
41
- * Returns table options while preserving generic inference when `data` and `_features` are supplied by a wrapper.
43
+ * Preserves inference when a wrapper supplies both `data` and `_features`.
42
44
  */
43
45
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, 'data' | '_features'>): Omit<TableOptions<TFeatures, TData>, 'data' | '_features'>;
44
46
  /**
45
- * Returns table options while preserving generic inference when `columns` and `_features` are supplied by a wrapper.
47
+ * Preserves inference when a wrapper supplies both `columns` and `_features`.
46
48
  */
47
49
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'>): Omit<TableOptions<TFeatures, TData>, 'columns' | '_features'>;
48
50
  /**
49
- * Returns table options while preserving generic inference when `data`, `columns`, and `_features` are supplied by a wrapper.
51
+ * Preserves inference when a wrapper supplies `data`, `columns`, and
52
+ * `_features`.
50
53
  */
51
54
  declare function tableOptions<TFeatures extends TableFeatures, TData extends RowData = any>(options: Omit<TableOptions<TFeatures, TData>, 'data' | 'columns' | '_features'>): Omit<TableOptions<TFeatures, TData>, 'data' | 'columns' | '_features'>;
52
55
  //#endregion