@tanstack/table-core 9.0.0-alpha.10 → 9.0.0-alpha.12

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 (570) hide show
  1. package/dist/esm/core/cells/constructCell.d.ts +7 -0
  2. package/dist/esm/core/cells/constructCell.js +21 -0
  3. package/dist/esm/core/cells/constructCell.js.map +1 -0
  4. package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
  5. package/dist/esm/core/cells/coreCellsFeature.js +26 -0
  6. package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
  7. package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
  8. package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
  9. package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
  10. package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
  11. package/dist/esm/core/columns/constructColumn.d.ts +6 -0
  12. package/dist/esm/core/columns/constructColumn.js +60 -0
  13. package/dist/esm/core/columns/constructColumn.js.map +1 -0
  14. package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
  15. package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
  16. package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
  17. package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
  18. package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
  19. package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
  20. package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
  21. package/dist/esm/core/coreFeatures.d.ts +15 -0
  22. package/dist/esm/core/coreFeatures.js +18 -0
  23. package/dist/esm/core/coreFeatures.js.map +1 -0
  24. package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
  25. package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
  26. package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
  27. package/dist/esm/core/headers/constructHeader.d.ts +12 -0
  28. package/dist/esm/core/headers/constructHeader.js +28 -0
  29. package/dist/esm/core/headers/constructHeader.js.map +1 -0
  30. package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
  31. package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
  32. package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
  33. package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
  34. package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
  35. package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
  36. package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
  37. package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
  38. package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
  39. package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
  40. package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
  41. package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
  42. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
  43. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
  44. package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
  45. package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
  46. package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
  47. package/dist/esm/core/rows/constructRow.d.ts +5 -0
  48. package/dist/esm/core/rows/constructRow.js +29 -0
  49. package/dist/esm/core/rows/constructRow.js.map +1 -0
  50. package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
  51. package/dist/esm/core/rows/coreRowsFeature.js +52 -0
  52. package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
  53. package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
  54. package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
  55. package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
  56. package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
  57. package/dist/esm/core/table/constructTable.d.ts +9 -0
  58. package/dist/esm/core/table/constructTable.js +62 -0
  59. package/dist/esm/core/table/constructTable.js.map +1 -0
  60. package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
  61. package/dist/esm/core/table/coreTablesFeature.js +22 -0
  62. package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
  63. package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
  64. package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
  65. package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
  66. package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
  67. package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
  68. package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
  69. package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
  70. package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
  71. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
  72. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
  73. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
  74. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
  75. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
  76. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
  77. package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
  78. package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
  79. package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
  80. package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
  81. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
  82. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
  83. package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
  84. package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
  85. package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
  86. package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
  87. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
  88. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
  89. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
  90. package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
  91. package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
  92. package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
  93. package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
  94. package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
  95. package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
  96. package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
  97. package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
  98. package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
  99. package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
  100. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
  101. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
  102. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
  103. package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
  104. package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
  105. package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
  106. package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
  107. package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
  108. package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
  109. package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
  110. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
  111. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
  112. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
  113. package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
  114. package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
  115. package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
  116. package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
  117. package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
  118. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
  119. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
  120. package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
  121. package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
  122. package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
  123. package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
  124. package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
  125. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
  126. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
  127. package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
  128. package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
  129. package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
  130. package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
  131. package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
  132. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
  133. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
  134. package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
  135. package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
  136. package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
  137. package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
  138. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
  139. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
  140. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
  141. package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
  142. package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
  143. package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
  144. package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
  145. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
  146. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
  147. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
  148. package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
  149. package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
  150. package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
  151. package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
  152. package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
  153. package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
  154. package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
  155. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
  156. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
  157. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
  158. package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
  159. package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
  160. package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
  161. package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
  162. package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
  163. package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
  164. package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
  165. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
  166. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
  167. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
  168. package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
  169. package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
  170. package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
  171. package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
  172. package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
  173. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
  174. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
  175. package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
  176. package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
  177. package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
  178. package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
  179. package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
  180. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
  181. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
  182. package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
  183. package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
  184. package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
  185. package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
  186. package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
  187. package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
  188. package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
  189. package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
  190. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
  191. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
  192. package/dist/esm/features/stockFeatures.d.ts +31 -0
  193. package/dist/esm/features/stockFeatures.js +34 -0
  194. package/dist/esm/features/stockFeatures.js.map +1 -0
  195. package/dist/esm/fns/aggregationFns.d.ts +49 -0
  196. package/dist/esm/fns/aggregationFns.js +110 -0
  197. package/dist/esm/fns/aggregationFns.js.map +1 -0
  198. package/dist/esm/fns/filterFns.d.ts +76 -0
  199. package/dist/esm/fns/filterFns.js +134 -0
  200. package/dist/esm/fns/filterFns.js.map +1 -0
  201. package/dist/esm/fns/sortFns.d.ts +17 -0
  202. package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
  203. package/dist/esm/fns/sortFns.js.map +1 -0
  204. package/dist/esm/helpers/columnHelper.d.ts +61 -0
  205. package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
  206. package/dist/esm/helpers/columnHelper.js.map +1 -0
  207. package/dist/esm/helpers/tableFeatures.d.ts +13 -0
  208. package/dist/esm/helpers/tableFeatures.js +7 -0
  209. package/dist/esm/helpers/tableFeatures.js.map +1 -0
  210. package/dist/esm/helpers/tableHelper.d.ts +25 -0
  211. package/dist/esm/helpers/tableHelper.js +13 -0
  212. package/dist/esm/helpers/tableHelper.js.map +1 -0
  213. package/dist/esm/helpers/tableOptions.d.ts +23 -0
  214. package/dist/esm/helpers/tableOptions.js +7 -0
  215. package/dist/esm/helpers/tableOptions.js.map +1 -0
  216. package/dist/esm/index.d.ts +109 -33
  217. package/dist/esm/index.js +397 -66
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/types/Cell.d.ts +13 -0
  220. package/dist/esm/types/Column.d.ts +26 -0
  221. package/dist/esm/types/ColumnDef.d.ts +64 -0
  222. package/dist/esm/types/Header.d.ts +14 -0
  223. package/dist/esm/types/HeaderGroup.d.ts +12 -0
  224. package/dist/esm/types/Row.d.ts +19 -0
  225. package/dist/esm/types/RowModel.d.ts +23 -0
  226. package/dist/esm/types/RowModelFns.d.ts +15 -0
  227. package/dist/esm/types/Table.d.ts +53 -0
  228. package/dist/esm/types/TableFeatures.d.ts +77 -0
  229. package/dist/esm/types/TableOptions.d.ts +39 -0
  230. package/dist/esm/types/TableState.d.ts +23 -0
  231. package/dist/esm/types/type-utils.d.ts +22 -0
  232. package/dist/esm/utils.d.ts +66 -33
  233. package/dist/esm/utils.js +183 -50
  234. package/dist/esm/utils.js.map +1 -1
  235. package/package.json +21 -12
  236. package/src/core/cells/constructCell.ts +49 -0
  237. package/src/core/cells/coreCellsFeature.ts +44 -0
  238. package/src/core/cells/coreCellsFeature.types.ts +68 -0
  239. package/src/core/cells/coreCellsFeature.utils.ts +35 -0
  240. package/src/core/columns/constructColumn.ts +111 -0
  241. package/src/core/columns/coreColumnsFeature.ts +90 -0
  242. package/src/core/columns/coreColumnsFeature.types.ts +103 -0
  243. package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
  244. package/src/core/coreFeatures.ts +24 -0
  245. package/src/core/headers/buildHeaderGroups.ts +177 -0
  246. package/src/core/headers/constructHeader.ts +61 -0
  247. package/src/core/headers/coreHeadersFeature.ts +98 -0
  248. package/src/core/headers/coreHeadersFeature.types.ts +123 -0
  249. package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
  250. package/src/core/row-models/coreRowModelsFeature.ts +78 -0
  251. package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
  252. package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
  253. package/src/core/row-models/createCoreRowModel.ts +88 -0
  254. package/src/core/rows/constructRow.ts +59 -0
  255. package/src/core/rows/coreRowsFeature.ts +84 -0
  256. package/src/core/rows/coreRowsFeature.types.ts +111 -0
  257. package/src/core/rows/coreRowsFeature.utils.ts +152 -0
  258. package/src/core/table/constructTable.ts +89 -0
  259. package/src/core/table/coreTablesFeature.ts +36 -0
  260. package/src/core/table/coreTablesFeature.types.ts +123 -0
  261. package/src/core/table/coreTablesFeature.utils.ts +40 -0
  262. package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
  263. package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
  264. package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
  265. package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
  266. package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
  267. package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
  268. package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
  269. package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
  270. package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
  271. package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
  272. package/src/features/column-filtering/filterRowsUtils.ts +152 -0
  273. package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
  274. package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
  275. package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
  276. package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
  277. package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
  278. package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
  279. package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
  280. package/src/features/column-pinning/columnPinningFeature.ts +324 -0
  281. package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
  282. package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
  283. package/src/features/column-resizing/columnResizingFeature.ts +92 -0
  284. package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
  285. package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
  286. package/src/features/column-sizing/columnSizingFeature.ts +146 -0
  287. package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
  288. package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
  289. package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
  290. package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
  291. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
  292. package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
  293. package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
  294. package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
  295. package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
  296. package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
  297. package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
  298. package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
  299. package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
  300. package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
  301. package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
  302. package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
  303. package/src/features/row-pinning/rowPinningFeature.ts +121 -0
  304. package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
  305. package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
  306. package/src/features/row-selection/rowSelectionFeature.ts +164 -0
  307. package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
  308. package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
  309. package/src/features/row-sorting/createSortedRowModel.ts +147 -0
  310. package/src/features/row-sorting/rowSortingFeature.ts +136 -0
  311. package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
  312. package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
  313. package/src/features/stockFeatures.ts +48 -0
  314. package/src/fns/aggregationFns.ts +220 -0
  315. package/src/fns/filterFns.ts +379 -0
  316. package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
  317. package/src/helpers/columnHelper.ts +117 -0
  318. package/src/helpers/tableFeatures.ts +24 -0
  319. package/src/helpers/tableHelper.ts +61 -0
  320. package/src/helpers/tableOptions.ts +82 -0
  321. package/src/index.ts +156 -42
  322. package/src/types/Cell.ts +41 -0
  323. package/src/types/Column.ts +86 -0
  324. package/src/types/ColumnDef.ts +217 -0
  325. package/src/types/Header.ts +45 -0
  326. package/src/types/HeaderGroup.ts +24 -0
  327. package/src/types/Row.ts +55 -0
  328. package/src/types/RowModel.ts +137 -0
  329. package/src/types/RowModelFns.ts +51 -0
  330. package/src/types/Table.ts +125 -0
  331. package/src/types/TableFeatures.ts +150 -0
  332. package/src/types/TableOptions.ts +125 -0
  333. package/src/types/TableState.ts +88 -0
  334. package/src/types/type-utils.ts +84 -0
  335. package/src/utils.ts +344 -164
  336. package/dist/cjs/aggregationFns.cjs +0 -94
  337. package/dist/cjs/aggregationFns.cjs.map +0 -1
  338. package/dist/cjs/aggregationFns.d.cts +0 -14
  339. package/dist/cjs/columnHelper.cjs +0 -19
  340. package/dist/cjs/columnHelper.cjs.map +0 -1
  341. package/dist/cjs/columnHelper.d.cts +0 -9
  342. package/dist/cjs/core/cell.cjs +0 -38
  343. package/dist/cjs/core/cell.cjs.map +0 -1
  344. package/dist/cjs/core/cell.d.cts +0 -50
  345. package/dist/cjs/core/column.cjs +0 -81
  346. package/dist/cjs/core/column.cjs.map +0 -1
  347. package/dist/cjs/core/column.d.cts +0 -56
  348. package/dist/cjs/core/headers.cjs +0 -310
  349. package/dist/cjs/core/headers.cjs.map +0 -1
  350. package/dist/cjs/core/headers.d.cts +0 -195
  351. package/dist/cjs/core/row.cjs +0 -92
  352. package/dist/cjs/core/row.cjs.map +0 -1
  353. package/dist/cjs/core/row.d.cts +0 -92
  354. package/dist/cjs/core/table.cjs +0 -232
  355. package/dist/cjs/core/table.cjs.map +0 -1
  356. package/dist/cjs/core/table.d.cts +0 -229
  357. package/dist/cjs/features/ColumnFaceting.cjs +0 -29
  358. package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
  359. package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
  360. package/dist/cjs/features/ColumnFiltering.cjs +0 -137
  361. package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
  362. package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
  363. package/dist/cjs/features/ColumnGrouping.cjs +0 -133
  364. package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
  365. package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
  366. package/dist/cjs/features/ColumnOrdering.cjs +0 -76
  367. package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
  368. package/dist/cjs/features/ColumnPinning.cjs +0 -145
  369. package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
  370. package/dist/cjs/features/ColumnPinning.d.cts +0 -127
  371. package/dist/cjs/features/ColumnSizing.cjs +0 -307
  372. package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
  373. package/dist/cjs/features/ColumnSizing.d.cts +0 -194
  374. package/dist/cjs/features/ColumnVisibility.cjs +0 -144
  375. package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
  376. package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
  377. package/dist/cjs/features/GlobalFaceting.cjs +0 -29
  378. package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
  379. package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
  380. package/dist/cjs/features/GlobalFiltering.cjs +0 -50
  381. package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
  382. package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
  383. package/dist/cjs/features/RowExpanding.cjs +0 -152
  384. package/dist/cjs/features/RowExpanding.cjs.map +0 -1
  385. package/dist/cjs/features/RowExpanding.d.cts +0 -155
  386. package/dist/cjs/features/RowPagination.cjs +0 -161
  387. package/dist/cjs/features/RowPagination.cjs.map +0 -1
  388. package/dist/cjs/features/RowPagination.d.cts +0 -166
  389. package/dist/cjs/features/RowPinning.cjs +0 -132
  390. package/dist/cjs/features/RowPinning.cjs.map +0 -1
  391. package/dist/cjs/features/RowPinning.d.cts +0 -99
  392. package/dist/cjs/features/RowSelection.cjs +0 -296
  393. package/dist/cjs/features/RowSelection.cjs.map +0 -1
  394. package/dist/cjs/features/RowSelection.d.cts +0 -177
  395. package/dist/cjs/features/RowSorting.cjs +0 -200
  396. package/dist/cjs/features/RowSorting.cjs.map +0 -1
  397. package/dist/cjs/features/RowSorting.d.cts +0 -238
  398. package/dist/cjs/filterFns.cjs +0 -88
  399. package/dist/cjs/filterFns.cjs.map +0 -1
  400. package/dist/cjs/filterFns.d.cts +0 -14
  401. package/dist/cjs/index.cjs +0 -88
  402. package/dist/cjs/index.cjs.map +0 -1
  403. package/dist/cjs/index.d.cts +0 -34
  404. package/dist/cjs/sortingFns.cjs +0 -91
  405. package/dist/cjs/sortingFns.cjs.map +0 -1
  406. package/dist/cjs/sortingFns.d.cts +0 -12
  407. package/dist/cjs/types.d.cts +0 -120
  408. package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
  409. package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
  410. package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
  411. package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
  412. package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
  413. package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
  414. package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
  415. package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
  416. package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
  417. package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -35
  418. package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
  419. package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
  420. package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
  421. package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
  422. package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
  423. package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -37
  424. package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
  425. package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
  426. package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
  427. package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
  428. package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
  429. package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
  430. package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
  431. package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
  432. package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
  433. package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
  434. package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
  435. package/dist/cjs/utils/getSortedRowModel.cjs +0 -88
  436. package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
  437. package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
  438. package/dist/cjs/utils.cjs +0 -98
  439. package/dist/cjs/utils.cjs.map +0 -1
  440. package/dist/cjs/utils.d.cts +0 -39
  441. package/dist/esm/aggregationFns.d.ts +0 -14
  442. package/dist/esm/aggregationFns.js +0 -94
  443. package/dist/esm/aggregationFns.js.map +0 -1
  444. package/dist/esm/columnHelper.d.ts +0 -9
  445. package/dist/esm/columnHelper.js.map +0 -1
  446. package/dist/esm/core/cell.d.ts +0 -50
  447. package/dist/esm/core/cell.js +0 -38
  448. package/dist/esm/core/cell.js.map +0 -1
  449. package/dist/esm/core/column.d.ts +0 -56
  450. package/dist/esm/core/column.js +0 -81
  451. package/dist/esm/core/column.js.map +0 -1
  452. package/dist/esm/core/headers.d.ts +0 -195
  453. package/dist/esm/core/headers.js +0 -310
  454. package/dist/esm/core/headers.js.map +0 -1
  455. package/dist/esm/core/row.d.ts +0 -92
  456. package/dist/esm/core/row.js +0 -92
  457. package/dist/esm/core/row.js.map +0 -1
  458. package/dist/esm/core/table.d.ts +0 -229
  459. package/dist/esm/core/table.js +0 -232
  460. package/dist/esm/core/table.js.map +0 -1
  461. package/dist/esm/features/ColumnFaceting.d.ts +0 -35
  462. package/dist/esm/features/ColumnFaceting.js +0 -29
  463. package/dist/esm/features/ColumnFaceting.js.map +0 -1
  464. package/dist/esm/features/ColumnFiltering.d.ts +0 -195
  465. package/dist/esm/features/ColumnFiltering.js +0 -137
  466. package/dist/esm/features/ColumnFiltering.js.map +0 -1
  467. package/dist/esm/features/ColumnGrouping.d.ts +0 -202
  468. package/dist/esm/features/ColumnGrouping.js +0 -133
  469. package/dist/esm/features/ColumnGrouping.js.map +0 -1
  470. package/dist/esm/features/ColumnOrdering.d.ts +0 -54
  471. package/dist/esm/features/ColumnOrdering.js +0 -76
  472. package/dist/esm/features/ColumnOrdering.js.map +0 -1
  473. package/dist/esm/features/ColumnPinning.d.ts +0 -127
  474. package/dist/esm/features/ColumnPinning.js +0 -145
  475. package/dist/esm/features/ColumnPinning.js.map +0 -1
  476. package/dist/esm/features/ColumnSizing.d.ts +0 -194
  477. package/dist/esm/features/ColumnSizing.js +0 -307
  478. package/dist/esm/features/ColumnSizing.js.map +0 -1
  479. package/dist/esm/features/ColumnVisibility.d.ts +0 -130
  480. package/dist/esm/features/ColumnVisibility.js +0 -144
  481. package/dist/esm/features/ColumnVisibility.js.map +0 -1
  482. package/dist/esm/features/GlobalFaceting.d.ts +0 -27
  483. package/dist/esm/features/GlobalFaceting.js +0 -29
  484. package/dist/esm/features/GlobalFaceting.js.map +0 -1
  485. package/dist/esm/features/GlobalFiltering.d.ts +0 -80
  486. package/dist/esm/features/GlobalFiltering.js +0 -50
  487. package/dist/esm/features/GlobalFiltering.js.map +0 -1
  488. package/dist/esm/features/RowExpanding.d.ts +0 -155
  489. package/dist/esm/features/RowExpanding.js +0 -152
  490. package/dist/esm/features/RowExpanding.js.map +0 -1
  491. package/dist/esm/features/RowPagination.d.ts +0 -166
  492. package/dist/esm/features/RowPagination.js +0 -161
  493. package/dist/esm/features/RowPagination.js.map +0 -1
  494. package/dist/esm/features/RowPinning.d.ts +0 -99
  495. package/dist/esm/features/RowPinning.js +0 -132
  496. package/dist/esm/features/RowPinning.js.map +0 -1
  497. package/dist/esm/features/RowSelection.d.ts +0 -177
  498. package/dist/esm/features/RowSelection.js +0 -296
  499. package/dist/esm/features/RowSelection.js.map +0 -1
  500. package/dist/esm/features/RowSorting.d.ts +0 -238
  501. package/dist/esm/features/RowSorting.js +0 -200
  502. package/dist/esm/features/RowSorting.js.map +0 -1
  503. package/dist/esm/filterFns.d.ts +0 -14
  504. package/dist/esm/filterFns.js +0 -88
  505. package/dist/esm/filterFns.js.map +0 -1
  506. package/dist/esm/sortingFns.d.ts +0 -12
  507. package/dist/esm/sortingFns.js.map +0 -1
  508. package/dist/esm/types.d.ts +0 -120
  509. package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
  510. package/dist/esm/utils/filterRowsUtils.js.map +0 -1
  511. package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
  512. package/dist/esm/utils/getCoreRowModel.js +0 -54
  513. package/dist/esm/utils/getCoreRowModel.js.map +0 -1
  514. package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
  515. package/dist/esm/utils/getExpandedRowModel.js +0 -41
  516. package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
  517. package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
  518. package/dist/esm/utils/getFacetedMinMaxValues.js +0 -35
  519. package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
  520. package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
  521. package/dist/esm/utils/getFacetedRowModel.js +0 -35
  522. package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
  523. package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
  524. package/dist/esm/utils/getFacetedUniqueValues.js +0 -37
  525. package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
  526. package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
  527. package/dist/esm/utils/getFilteredRowModel.js +0 -116
  528. package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
  529. package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
  530. package/dist/esm/utils/getGroupedRowModel.js +0 -118
  531. package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
  532. package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
  533. package/dist/esm/utils/getPaginationRowModel.js +0 -49
  534. package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
  535. package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
  536. package/dist/esm/utils/getSortedRowModel.js +0 -88
  537. package/dist/esm/utils/getSortedRowModel.js.map +0 -1
  538. package/src/aggregationFns.ts +0 -123
  539. package/src/columnHelper.ts +0 -91
  540. package/src/core/cell.ts +0 -91
  541. package/src/core/column.ts +0 -165
  542. package/src/core/headers.ts +0 -639
  543. package/src/core/row.ts +0 -201
  544. package/src/core/table.ts +0 -563
  545. package/src/features/ColumnFaceting.ts +0 -84
  546. package/src/features/ColumnFiltering.ts +0 -429
  547. package/src/features/ColumnGrouping.ts +0 -422
  548. package/src/features/ColumnOrdering.ts +0 -161
  549. package/src/features/ColumnPinning.ts +0 -336
  550. package/src/features/ColumnSizing.ts +0 -579
  551. package/src/features/ColumnVisibility.ts +0 -317
  552. package/src/features/GlobalFaceting.ts +0 -66
  553. package/src/features/GlobalFiltering.ts +0 -162
  554. package/src/features/RowExpanding.ts +0 -355
  555. package/src/features/RowPagination.ts +0 -396
  556. package/src/features/RowPinning.ts +0 -277
  557. package/src/features/RowSelection.ts +0 -668
  558. package/src/features/RowSorting.ts +0 -542
  559. package/src/filterFns.ts +0 -150
  560. package/src/types.ts +0 -361
  561. package/src/utils/filterRowsUtils.ts +0 -130
  562. package/src/utils/getCoreRowModel.ts +0 -82
  563. package/src/utils/getExpandedRowModel.ts +0 -51
  564. package/src/utils/getFacetedMinMaxValues.ts +0 -42
  565. package/src/utils/getFacetedRowModel.ts +0 -44
  566. package/src/utils/getFacetedUniqueValues.ts +0 -42
  567. package/src/utils/getFilteredRowModel.ts +0 -151
  568. package/src/utils/getGroupedRowModel.ts +0 -181
  569. package/src/utils/getPaginationRowModel.ts +0 -60
  570. package/src/utils/getSortedRowModel.ts +0 -121
@@ -0,0 +1,192 @@
1
+ import { isFunction } from '../../utils'
2
+ import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
3
+ import type { Column_Internal } from '../../types/Column'
4
+ import type { CellData, RowData, Updater } from '../../types/type-utils'
5
+ import type { TableFeatures } from '../../types/TableFeatures'
6
+ import type { Table_Internal } from '../../types/Table'
7
+ import type { Row } from '../../types/Row'
8
+ import type { Cell } from '../../types/Cell'
9
+ import type {
10
+ AggregationFn,
11
+ GroupingState,
12
+ Row_ColumnGrouping,
13
+ } from './columnGroupingFeature.types'
14
+
15
+ export function getDefaultGroupingState(): GroupingState {
16
+ return structuredClone([])
17
+ }
18
+
19
+ export function column_toggleGrouping<
20
+ TFeatures extends TableFeatures,
21
+ TData extends RowData,
22
+ TValue extends CellData = CellData,
23
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
24
+ table_setGrouping(column.table, (old) => {
25
+ // Find any existing grouping for this column
26
+ if (old.includes(column.id)) {
27
+ return old.filter((d) => d !== column.id)
28
+ }
29
+
30
+ return [...old, column.id]
31
+ })
32
+ }
33
+
34
+ export function column_getCanGroup<
35
+ TFeatures extends TableFeatures,
36
+ TData extends RowData,
37
+ TValue extends CellData = CellData,
38
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
39
+ return (
40
+ (column.columnDef.enableGrouping ?? true) &&
41
+ (column.table.options.enableGrouping ?? true) &&
42
+ (!!column.accessorFn || !!column.columnDef.getGroupingValue)
43
+ )
44
+ }
45
+
46
+ export function column_getIsGrouped<
47
+ TFeatures extends TableFeatures,
48
+ TData extends RowData,
49
+ TValue extends CellData = CellData,
50
+ >(column: Column_Internal<TFeatures, TData, TValue>): boolean {
51
+ return !!column.table.store.state.grouping?.includes(column.id)
52
+ }
53
+
54
+ export function column_getGroupedIndex<
55
+ TFeatures extends TableFeatures,
56
+ TData extends RowData,
57
+ TValue extends CellData = CellData,
58
+ >(column: Column_Internal<TFeatures, TData, TValue>): number {
59
+ return column.table.store.state.grouping?.indexOf(column.id) ?? -1
60
+ }
61
+
62
+ export function column_getToggleGroupingHandler<
63
+ TFeatures extends TableFeatures,
64
+ TData extends RowData,
65
+ TValue extends CellData = CellData,
66
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
67
+ const canGroup = column_getCanGroup(column)
68
+
69
+ return () => {
70
+ if (!canGroup) return
71
+ column_toggleGrouping(column)
72
+ }
73
+ }
74
+
75
+ export function column_getAutoAggregationFn<
76
+ TFeatures extends TableFeatures,
77
+ TData extends RowData,
78
+ TValue extends CellData = CellData,
79
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
80
+ const aggregationFns = column.table._rowModelFns.aggregationFns as
81
+ | Record<string, AggregationFn<TFeatures, TData>>
82
+ | undefined
83
+
84
+ const firstRow = column.table.getCoreRowModel().flatRows[0]
85
+
86
+ const value = firstRow?.getValue(column.id)
87
+
88
+ if (typeof value === 'number') {
89
+ return aggregationFns?.sum
90
+ }
91
+
92
+ if (Object.prototype.toString.call(value) === '[object Date]') {
93
+ return aggregationFns?.extent
94
+ }
95
+ }
96
+
97
+ export function column_getAggregationFn<
98
+ TFeatures extends TableFeatures,
99
+ TData extends RowData,
100
+ TValue extends CellData = CellData,
101
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
102
+ const aggregationFns = column.table._rowModelFns.aggregationFns as
103
+ | Record<string, AggregationFn<TFeatures, TData>>
104
+ | undefined
105
+
106
+ return isFunction(column.columnDef.aggregationFn)
107
+ ? column.columnDef.aggregationFn
108
+ : column.columnDef.aggregationFn === 'auto'
109
+ ? column_getAutoAggregationFn(column)
110
+ : aggregationFns?.[column.columnDef.aggregationFn as string]
111
+ }
112
+
113
+ export function table_setGrouping<
114
+ TFeatures extends TableFeatures,
115
+ TData extends RowData,
116
+ >(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {
117
+ table.options.onGroupingChange?.(updater)
118
+ }
119
+
120
+ export function table_resetGrouping<
121
+ TFeatures extends TableFeatures,
122
+ TData extends RowData,
123
+ >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
124
+ table_setGrouping(
125
+ table,
126
+ defaultState ? [] : (table.initialState.grouping ?? []),
127
+ )
128
+ }
129
+
130
+ export function row_getIsGrouped<
131
+ TFeatures extends TableFeatures,
132
+ TData extends RowData,
133
+ >(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {
134
+ return !!row.groupingColumnId
135
+ }
136
+
137
+ export function row_getGroupingValue<
138
+ TFeatures extends TableFeatures,
139
+ TData extends RowData,
140
+ >(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {
141
+ if (row._groupingValuesCache?.hasOwnProperty(columnId)) {
142
+ return row._groupingValuesCache[columnId]
143
+ }
144
+
145
+ const column = table_getColumn(row.table, columnId) as Column_Internal<
146
+ TFeatures,
147
+ TData
148
+ >
149
+
150
+ if (!column.columnDef.getGroupingValue) {
151
+ return row.getValue(columnId)
152
+ }
153
+
154
+ if (row._groupingValuesCache) {
155
+ row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(
156
+ row.original,
157
+ )
158
+ }
159
+
160
+ return row._groupingValuesCache?.[columnId]
161
+ }
162
+
163
+ export function cell_getIsGrouped<
164
+ TFeatures extends TableFeatures,
165
+ TData extends RowData,
166
+ TValue extends CellData = CellData,
167
+ >(cell: Cell<TFeatures, TData, TValue>) {
168
+ const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>
169
+ return (
170
+ column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId
171
+ )
172
+ }
173
+
174
+ export function cell_getIsPlaceholder<
175
+ TFeatures extends TableFeatures,
176
+ TData extends RowData,
177
+ TValue extends CellData = CellData,
178
+ >(cell: Cell<TFeatures, TData, TValue>) {
179
+ return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)
180
+ }
181
+
182
+ export function cell_getIsAggregated<
183
+ TFeatures extends TableFeatures,
184
+ TData extends RowData,
185
+ TValue extends CellData = CellData,
186
+ >(cell: Cell<TFeatures, TData, TValue>) {
187
+ return (
188
+ !cell_getIsGrouped(cell) &&
189
+ !cell_getIsPlaceholder(cell) &&
190
+ !!cell.row.subRows.length
191
+ )
192
+ }
@@ -0,0 +1,215 @@
1
+ import { flattenBy, tableMemo } from '../../utils'
2
+ import { constructRow } from '../../core/rows/constructRow'
3
+ import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
4
+ import { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'
5
+ import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
6
+ import {
7
+ column_getAggregationFn,
8
+ row_getGroupingValue,
9
+ } from './columnGroupingFeature.utils'
10
+ import type { Column } from '../../types/Column'
11
+ import type {
12
+ AggregationFn,
13
+ AggregationFns,
14
+ Row_ColumnGrouping,
15
+ } from './columnGroupingFeature.types'
16
+ import type { TableFeatures } from '../../types/TableFeatures'
17
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
18
+ import type { Table, Table_Internal } from '../../types/Table'
19
+ import type { Row } from '../../types/Row'
20
+ import type { RowData } from '../../types/type-utils'
21
+
22
+ export function createGroupedRowModel<
23
+ TFeatures extends TableFeatures,
24
+ TData extends RowData = any,
25
+ >(
26
+ aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>,
27
+ ): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
28
+ return (_table) => {
29
+ const table = _table as Table_Internal<TFeatures, TData>
30
+ if (!table._rowModelFns.aggregationFns)
31
+ table._rowModelFns.aggregationFns = aggregationFns
32
+ return tableMemo({
33
+ feature: 'columnGroupingFeature',
34
+ table,
35
+ fnName: 'table.getGroupedRowModel',
36
+ memoDeps: () => [
37
+ table.store.state.grouping,
38
+ table.getPreGroupedRowModel(),
39
+ ],
40
+ fn: () => _createGroupedRowModel(table),
41
+ onAfterUpdate: () => {
42
+ table_autoResetExpanded(table)
43
+ table_autoResetPageIndex(table)
44
+ },
45
+ })
46
+ }
47
+ }
48
+
49
+ function _createGroupedRowModel<
50
+ TFeatures extends TableFeatures,
51
+ TData extends RowData = any,
52
+ >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
53
+ const rowModel = table.getPreGroupedRowModel()
54
+ const grouping = table.store.state.grouping
55
+
56
+ if (!rowModel.rows.length || !grouping?.length) {
57
+ rowModel.rows.forEach((row) => {
58
+ row.depth = 0
59
+ row.parentId = undefined
60
+ })
61
+ return rowModel
62
+ }
63
+
64
+ // Filter the grouping list down to columns that exist
65
+ const existingGrouping = grouping.filter((columnId) =>
66
+ table_getColumn(table, columnId),
67
+ )
68
+
69
+ const groupedFlatRows: Array<Row<TFeatures, TData>> &
70
+ Partial<Row_ColumnGrouping> = []
71
+ const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}
72
+
73
+ // Recursively group the data
74
+ const groupUpRecursively = (
75
+ rows: Array<Row<TFeatures, TData>>,
76
+ depth = 0,
77
+ parentId?: string,
78
+ ) => {
79
+ // Grouping depth has been been met
80
+ // Stop grouping and simply rewrite thd depth and row relationships
81
+ if (depth >= existingGrouping.length) {
82
+ return rows.map((row) => {
83
+ row.depth = depth
84
+
85
+ groupedFlatRows.push(row)
86
+ groupedRowsById[row.id] = row
87
+
88
+ if (row.subRows.length) {
89
+ row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)
90
+ }
91
+
92
+ return row
93
+ })
94
+ }
95
+
96
+ const columnId = existingGrouping[depth] as string
97
+
98
+ // Group the rows together for this level
99
+ const rowGroupsMap = groupBy(rows, columnId)
100
+
101
+ // Perform aggregations for each group
102
+ const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(
103
+ ([groupingValue, groupedRows], index) => {
104
+ let id = `${columnId}:${groupingValue}`
105
+ id = parentId ? `${parentId}>${id}` : id
106
+
107
+ // First, Recurse to group sub rows before aggregation
108
+ const subRows = groupUpRecursively(groupedRows, depth + 1, id)
109
+
110
+ subRows.forEach((subRow) => {
111
+ subRow.parentId = id
112
+ })
113
+
114
+ // Flatten the leaf rows of the rows in this group
115
+ const leafRows = depth
116
+ ? flattenBy(groupedRows, (row) => row.subRows)
117
+ : groupedRows
118
+
119
+ const row = constructRow(
120
+ table,
121
+ id,
122
+ leafRows[0]!.original,
123
+ index,
124
+ depth,
125
+ undefined,
126
+ parentId,
127
+ ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>
128
+
129
+ Object.assign(row, {
130
+ groupingColumnId: columnId,
131
+ groupingValue,
132
+ subRows,
133
+ leafRows,
134
+ getValue: (colId: string) => {
135
+ // Don't aggregate columns that are in the grouping
136
+ if (existingGrouping.includes(colId)) {
137
+ if (row._valuesCache.hasOwnProperty(colId)) {
138
+ return row._valuesCache[colId]
139
+ }
140
+
141
+ if (groupedRows[0]) {
142
+ row._valuesCache[colId] =
143
+ groupedRows[0].getValue(colId) ?? undefined
144
+ }
145
+
146
+ return row._valuesCache[colId]
147
+ }
148
+
149
+ if (row._groupingValuesCache?.hasOwnProperty(colId)) {
150
+ return row._groupingValuesCache[colId]
151
+ }
152
+
153
+ // Aggregate the values
154
+ const column = table.getColumn(colId)
155
+ const aggregateFn = column_getAggregationFn(
156
+ column as Column<TFeatures, TData, unknown>,
157
+ )
158
+
159
+ if (!row._groupingValuesCache) row._groupingValuesCache = {}
160
+
161
+ if (aggregateFn) {
162
+ row._groupingValuesCache[colId] = aggregateFn(
163
+ colId,
164
+ leafRows,
165
+ groupedRows,
166
+ )
167
+
168
+ return row._groupingValuesCache[colId]
169
+ }
170
+ },
171
+ })
172
+
173
+ subRows.forEach((subRow) => {
174
+ groupedFlatRows.push(subRow)
175
+ groupedRowsById[subRow.id] = subRow
176
+ })
177
+
178
+ return row
179
+ },
180
+ )
181
+
182
+ return aggregatedGroupedRows
183
+ }
184
+
185
+ const groupedRows = groupUpRecursively(rowModel.rows, 0)
186
+
187
+ groupedRows.forEach((subRow) => {
188
+ groupedFlatRows.push(subRow)
189
+ groupedRowsById[subRow.id] = subRow
190
+ })
191
+
192
+ return {
193
+ rows: groupedRows,
194
+ flatRows: groupedFlatRows,
195
+ rowsById: groupedRowsById,
196
+ }
197
+ }
198
+
199
+ function groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(
200
+ rows: Array<Row<TFeatures, TData>>,
201
+ columnId: string,
202
+ ) {
203
+ const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()
204
+
205
+ return rows.reduce((map, row) => {
206
+ const resKey = `${row_getGroupingValue(row, columnId)}`
207
+ const previous = map.get(resKey)
208
+ if (!previous) {
209
+ map.set(resKey, [row])
210
+ } else {
211
+ previous.push(row)
212
+ }
213
+ return map
214
+ }, groupMap)
215
+ }
@@ -0,0 +1,96 @@
1
+ import {
2
+ assignPrototypeAPIs,
3
+ assignTableAPIs,
4
+ makeStateUpdater,
5
+ } from '../../utils'
6
+ import {
7
+ column_getIndex,
8
+ column_getIsFirstColumn,
9
+ column_getIsLastColumn,
10
+ getDefaultColumnOrderState,
11
+ table_getOrderColumnsFn,
12
+ table_resetColumnOrder,
13
+ table_setColumnOrder,
14
+ } from './columnOrderingFeature.utils'
15
+ import type { RowData } from '../../types/type-utils'
16
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
17
+ // import type {
18
+ // Column_ColumnOrdering,
19
+ // TableOptions_ColumnOrdering,
20
+ // TableState_ColumnOrdering,
21
+ // Table_ColumnOrdering,
22
+ // } from './columnOrderingFeature.types'
23
+
24
+ interface ColumnOrderingFeatureConstructors<
25
+ TFeatures extends TableFeatures,
26
+ TData extends RowData,
27
+ > {
28
+ // Column: Column_ColumnOrdering
29
+ // Table: Table_ColumnOrdering<TFeatures, TData>
30
+ // TableOptions: TableOptions_ColumnOrdering
31
+ // TableState: TableState_ColumnOrdering
32
+ }
33
+
34
+ export function constructColumnOrderingFeature<
35
+ TFeatures extends TableFeatures,
36
+ TData extends RowData,
37
+ >(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>> {
38
+ return {
39
+ getInitialState: (initialState) => {
40
+ return {
41
+ columnOrder: getDefaultColumnOrderState(),
42
+ ...initialState,
43
+ }
44
+ },
45
+
46
+ getDefaultTableOptions: (table) => {
47
+ return {
48
+ onColumnOrderChange: makeStateUpdater('columnOrder', table),
49
+ }
50
+ },
51
+
52
+ assignColumnPrototype: (prototype, table) => {
53
+ assignPrototypeAPIs('columnOrderingFeature', prototype, table, {
54
+ column_getIndex: {
55
+ fn: (column, position) => column_getIndex(column, position),
56
+ memoDeps: (column, position) => [
57
+ position,
58
+ column.table.store.state.columnOrder,
59
+ column.table.store.state.columnPinning,
60
+ column.table.store.state.grouping,
61
+ ],
62
+ },
63
+ column_getIsFirstColumn: {
64
+ fn: (column, position) => column_getIsFirstColumn(column, position),
65
+ },
66
+ column_getIsLastColumn: {
67
+ fn: (column, position) => column_getIsLastColumn(column, position),
68
+ },
69
+ })
70
+ },
71
+
72
+ constructTableAPIs: (table) => {
73
+ assignTableAPIs('columnOrderingFeature', table, {
74
+ table_setColumnOrder: {
75
+ fn: (updater) => table_setColumnOrder(table, updater),
76
+ },
77
+ table_resetColumnOrder: {
78
+ fn: (defaultState) => table_resetColumnOrder(table, defaultState),
79
+ },
80
+ table_getOrderColumnsFn: {
81
+ fn: () => table_getOrderColumnsFn(table),
82
+ memoDeps: () => [
83
+ table.store.state.columnOrder,
84
+ table.store.state.grouping,
85
+ table.options.groupedColumnMode,
86
+ ],
87
+ },
88
+ })
89
+ },
90
+ }
91
+ }
92
+
93
+ /**
94
+ * The Column Ordering feature adds column ordering state and APIs to the table and column objects.
95
+ */
96
+ export const columnOrderingFeature = constructColumnOrderingFeature()
@@ -0,0 +1,49 @@
1
+ import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
2
+ import type { TableFeatures } from '../../types/TableFeatures'
3
+ import type { ColumnPinningPosition } from '../column-pinning/columnPinningFeature.types'
4
+
5
+ export type ColumnOrderState = Array<string>
6
+
7
+ export interface TableState_ColumnOrdering {
8
+ columnOrder: ColumnOrderState
9
+ }
10
+
11
+ export interface TableOptions_ColumnOrdering {
12
+ /**
13
+ * If provided, this function will be called with an `updaterFn` when `state.columnOrder` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
14
+ */
15
+ onColumnOrderChange?: OnChangeFn<ColumnOrderState>
16
+ }
17
+
18
+ export interface Column_ColumnOrdering {
19
+ /**
20
+ * Returns the index of the column in the order of the visible columns. Optionally pass a `position` parameter to get the index of the column in a sub-section of the table
21
+ */
22
+ getIndex: (position?: ColumnPinningPosition | 'center') => number
23
+ /**
24
+ * Returns `true` if the column is the first column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the first in a sub-section of the table.
25
+ */
26
+ getIsFirstColumn: (position?: ColumnPinningPosition | 'center') => boolean
27
+ /**
28
+ * Returns `true` if the column is the last column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the last in a sub-section of the table.
29
+ */
30
+ getIsLastColumn: (position?: ColumnPinningPosition | 'center') => boolean
31
+ }
32
+
33
+ export interface ColumnOrderDefaultOptions {
34
+ onColumnOrderChange: OnChangeFn<ColumnOrderState>
35
+ }
36
+
37
+ export interface Table_ColumnOrdering<
38
+ TFeatures extends TableFeatures,
39
+ TData extends RowData,
40
+ > {
41
+ /**
42
+ * Resets the **columnOrder** state to `initialState.columnOrder`, or `true` can be passed to force a default blank state reset to `[]`.
43
+ */
44
+ resetColumnOrder: (defaultState?: boolean) => void
45
+ /**
46
+ * Sets or updates the `state.columnOrder` state.
47
+ */
48
+ setColumnOrder: (updater: Updater<ColumnOrderState>) => void
49
+ }
@@ -0,0 +1,133 @@
1
+ import { table_getPinnedVisibleLeafColumns } from '../column-pinning/columnPinningFeature.utils'
2
+ import type { GroupingState } from '../column-grouping/columnGroupingFeature.types'
3
+ import type { CellData, RowData, Updater } from '../../types/type-utils'
4
+ import type { TableFeatures } from '../../types/TableFeatures'
5
+ import type { Table_Internal } from '../../types/Table'
6
+ import type { Column_Internal } from '../../types/Column'
7
+ import type { ColumnPinningPosition } from '../column-pinning/columnPinningFeature.types'
8
+ import type { ColumnOrderState } from './columnOrderingFeature.types'
9
+
10
+ export function getDefaultColumnOrderState(): ColumnOrderState {
11
+ return structuredClone([])
12
+ }
13
+
14
+ export function column_getIndex<
15
+ TFeatures extends TableFeatures,
16
+ TData extends RowData,
17
+ TValue extends CellData = CellData,
18
+ >(
19
+ column: Column_Internal<TFeatures, TData, TValue>,
20
+ position?: ColumnPinningPosition | 'center',
21
+ ) {
22
+ const columns = table_getPinnedVisibleLeafColumns(column.table, position)
23
+ return columns.findIndex((d) => d.id === column.id)
24
+ }
25
+
26
+ export function column_getIsFirstColumn<
27
+ TFeatures extends TableFeatures,
28
+ TData extends RowData,
29
+ TValue extends CellData = CellData,
30
+ >(
31
+ column: Column_Internal<TFeatures, TData, TValue>,
32
+ position?: ColumnPinningPosition | 'center',
33
+ ) {
34
+ const columns = table_getPinnedVisibleLeafColumns(column.table, position)
35
+ return columns[0]?.id === column.id
36
+ }
37
+
38
+ export function column_getIsLastColumn<
39
+ TFeatures extends TableFeatures,
40
+ TData extends RowData,
41
+ TValue extends CellData = CellData,
42
+ >(
43
+ column: Column_Internal<TFeatures, TData, TValue>,
44
+ position?: ColumnPinningPosition | 'center',
45
+ ) {
46
+ const columns = table_getPinnedVisibleLeafColumns(column.table, position)
47
+ return columns[columns.length - 1]?.id === column.id
48
+ }
49
+
50
+ export function table_setColumnOrder<
51
+ TFeatures extends TableFeatures,
52
+ TData extends RowData,
53
+ >(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnOrderState>) {
54
+ table.options.onColumnOrderChange?.(updater)
55
+ }
56
+
57
+ export function table_resetColumnOrder<
58
+ TFeatures extends TableFeatures,
59
+ TData extends RowData,
60
+ >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
61
+ table_setColumnOrder(
62
+ table,
63
+ defaultState ? [] : (table.initialState.columnOrder ?? []),
64
+ )
65
+ }
66
+
67
+ export function table_getOrderColumnsFn<
68
+ TFeatures extends TableFeatures,
69
+ TData extends RowData,
70
+ >(table: Table_Internal<TFeatures, TData>) {
71
+ const { columnOrder = [] } = table.store.state
72
+
73
+ return (columns: Array<Column_Internal<TFeatures, TData, unknown>>) => {
74
+ // Sort grouped columns to the start of the column list
75
+ // before the headers are built
76
+ let orderedColumns: Array<Column_Internal<TFeatures, TData, unknown>> = []
77
+
78
+ // If there is no order, return the normal columns
79
+ if (!columnOrder.length) {
80
+ orderedColumns = columns
81
+ } else {
82
+ const columnOrderCopy = [...columnOrder]
83
+
84
+ // If there is an order, make a copy of the columns
85
+ const columnsCopy = [...columns]
86
+
87
+ // And make a new ordered array of the columns
88
+
89
+ // Loop over the columns and place them in order into the new array
90
+ while (columnsCopy.length && columnOrderCopy.length) {
91
+ const targetColumnId = columnOrderCopy.shift()
92
+ const foundIndex = columnsCopy.findIndex((d) => d.id === targetColumnId)
93
+ if (foundIndex > -1) {
94
+ orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)
95
+ }
96
+ }
97
+
98
+ // If there are any columns left, add them to the end
99
+ orderedColumns = [...orderedColumns, ...columnsCopy]
100
+ }
101
+
102
+ return orderColumns(table, orderedColumns)
103
+ }
104
+ }
105
+
106
+ export function orderColumns<
107
+ TFeatures extends TableFeatures,
108
+ TData extends RowData,
109
+ >(
110
+ table: Table_Internal<TFeatures, TData>,
111
+ leafColumns: Array<Column_Internal<TFeatures, TData, unknown>>,
112
+ ) {
113
+ const grouping = table.store.state.grouping ?? ([] as GroupingState)
114
+ const { groupedColumnMode } = table.options
115
+
116
+ if (!grouping.length || !groupedColumnMode) {
117
+ return leafColumns
118
+ }
119
+
120
+ const nonGroupingColumns = leafColumns.filter(
121
+ (col) => !grouping.includes(col.id),
122
+ )
123
+
124
+ if (groupedColumnMode === 'remove') {
125
+ return nonGroupingColumns
126
+ }
127
+
128
+ const groupingColumns = grouping
129
+ .map((g) => leafColumns.find((col) => col.id === g)!)
130
+ .filter(Boolean)
131
+
132
+ return [...groupingColumns, ...nonGroupingColumns]
133
+ }