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

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 +65 -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 +95 -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,171 @@
1
+ import { tableMemo } from '../../utils'
2
+ import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
3
+ import {
4
+ column_getCanGlobalFilter,
5
+ table_getGlobalFilterFn,
6
+ } from '../global-filtering/globalFilteringFeature.utils'
7
+ import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
8
+ import { filterRows } from './filterRowsUtils'
9
+ import { column_getFilterFn } from './columnFilteringFeature.utils'
10
+ import type { RowData } from '../../types/type-utils'
11
+ import type { TableFeatures } from '../../types/TableFeatures'
12
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
13
+ import type { Table, Table_Internal } from '../../types/Table'
14
+ import type { Row } from '../../types/Row'
15
+ import type {
16
+ FilterFn,
17
+ FilterFns,
18
+ ResolvedColumnFilter,
19
+ Row_ColumnFiltering,
20
+ } from './columnFilteringFeature.types'
21
+
22
+ export function createFilteredRowModel<
23
+ TFeatures extends TableFeatures,
24
+ TData extends RowData = any,
25
+ >(
26
+ filterFns: Record<keyof FilterFns, FilterFn<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.filterFns) table._rowModelFns.filterFns = filterFns
31
+ return tableMemo({
32
+ feature: 'columnFilteringFeature',
33
+ table,
34
+ fnName: 'table.getFilteredRowModel',
35
+ memoDeps: () => [
36
+ table.getPreFilteredRowModel(),
37
+ table.store.state.columnFilters,
38
+ table.store.state.globalFilter,
39
+ ],
40
+ fn: () => _createFilteredRowModel(table),
41
+ onAfterUpdate: () => table_autoResetPageIndex(table),
42
+ })
43
+ }
44
+ }
45
+
46
+ function _createFilteredRowModel<
47
+ TFeatures extends TableFeatures,
48
+ TData extends RowData = any,
49
+ >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
50
+ const rowModel = table.getPreFilteredRowModel()
51
+ const { columnFilters, globalFilter } = table.store.state
52
+
53
+ if (!rowModel.rows.length || (!columnFilters?.length && !globalFilter)) {
54
+ for (const row of rowModel.flatRows as Array<
55
+ Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>
56
+ >) {
57
+ row.columnFilters = {}
58
+ row.columnFiltersMeta = {}
59
+ }
60
+ return rowModel
61
+ }
62
+
63
+ const resolvedColumnFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =
64
+ []
65
+ const resolvedGlobalFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =
66
+ []
67
+
68
+ columnFilters?.forEach((columnFilter) => {
69
+ const column = table_getColumn(table, columnFilter.id)
70
+
71
+ if (!column) {
72
+ return
73
+ }
74
+
75
+ const filterFn = column_getFilterFn(column)!
76
+
77
+ resolvedColumnFilters.push({
78
+ id: columnFilter.id,
79
+ filterFn,
80
+ resolvedValue:
81
+ filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value,
82
+ })
83
+ })
84
+
85
+ const filterableIds = columnFilters?.map((d) => d.id) ?? []
86
+
87
+ const globalFilterFn = table_getGlobalFilterFn(table)
88
+
89
+ const globallyFilterableColumns = table
90
+ .getAllLeafColumns()
91
+ .filter((column) => column_getCanGlobalFilter(column))
92
+
93
+ if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
94
+ filterableIds.push('__global__')
95
+
96
+ globallyFilterableColumns.forEach((column) => {
97
+ resolvedGlobalFilters.push({
98
+ id: column.id,
99
+ filterFn: globalFilterFn,
100
+ resolvedValue:
101
+ globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter,
102
+ })
103
+ })
104
+ }
105
+
106
+ // Flag the pre-filtered row model with each filter state
107
+ for (const row of rowModel.flatRows as Array<
108
+ Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>
109
+ >) {
110
+ row.columnFilters = {}
111
+
112
+ if (resolvedColumnFilters.length) {
113
+ for (const currentColumnFilter of resolvedColumnFilters) {
114
+ const id = currentColumnFilter.id
115
+
116
+ // Tag the row with the column filter state
117
+ row.columnFilters[id] = currentColumnFilter.filterFn(
118
+ row,
119
+ id,
120
+ currentColumnFilter.resolvedValue,
121
+ (filterMeta) => {
122
+ !row.columnFiltersMeta
123
+ ? (row.columnFiltersMeta = {})
124
+ : (row.columnFiltersMeta[id] = filterMeta)
125
+ },
126
+ )
127
+ }
128
+ }
129
+
130
+ if (resolvedGlobalFilters.length) {
131
+ for (const currentGlobalFilter of resolvedGlobalFilters) {
132
+ const id = currentGlobalFilter.id
133
+ // Tag the row with the first truthy global filter state
134
+ if (
135
+ currentGlobalFilter.filterFn(
136
+ row,
137
+ id,
138
+ currentGlobalFilter.resolvedValue,
139
+ (filterMeta) => {
140
+ !row.columnFiltersMeta
141
+ ? (row.columnFiltersMeta = {})
142
+ : (row.columnFiltersMeta[id] = filterMeta)
143
+ },
144
+ )
145
+ ) {
146
+ row.columnFilters.__global__ = true
147
+ break
148
+ }
149
+ }
150
+
151
+ if (row.columnFilters.__global__ !== true) {
152
+ row.columnFilters.__global__ = false
153
+ }
154
+ }
155
+ }
156
+
157
+ const filterRowsImpl = (
158
+ row: Row<TFeatures, TData> & Row_ColumnFiltering<TFeatures, TData>,
159
+ ) => {
160
+ // Horizontally filter rows through each column
161
+ for (const columnId of filterableIds) {
162
+ if (row.columnFilters[columnId] === false) {
163
+ return false
164
+ }
165
+ }
166
+ return true
167
+ }
168
+
169
+ // Filter final rows using all of the active filters
170
+ return filterRows(rowModel.rows, filterRowsImpl as any, table)
171
+ }
@@ -0,0 +1,152 @@
1
+ import { constructRow } from '../../core/rows/constructRow'
2
+ import type { Row_ColumnFiltering } from './columnFilteringFeature.types'
3
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
4
+ import type { Row } from '../../types/Row'
5
+ import type { Table_Internal } from '../../types/Table'
6
+ import type { TableFeatures } from '../../types/TableFeatures'
7
+ import type { RowData } from '../../types/type-utils'
8
+
9
+ export function filterRows<
10
+ TFeatures extends TableFeatures,
11
+ TData extends RowData,
12
+ >(
13
+ rows: Array<Row<TFeatures, TData>>,
14
+ filterRowImpl: (row: Row<TFeatures, TData>) => any,
15
+ table: Table_Internal<TFeatures, TData>,
16
+ ) {
17
+ if (table.options.filterFromLeafRows) {
18
+ return filterRowModelFromLeafs(rows, filterRowImpl, table)
19
+ }
20
+
21
+ return filterRowModelFromRoot(rows, filterRowImpl, table)
22
+ }
23
+
24
+ function filterRowModelFromLeafs<
25
+ TFeatures extends TableFeatures,
26
+ TData extends RowData,
27
+ >(
28
+ rowsToFilter: Array<Row<TFeatures, TData>>,
29
+ filterRow: (
30
+ row: Row<TFeatures, TData>,
31
+ ) => Array<Row<TFeatures, TData>> | undefined,
32
+ table: Table_Internal<TFeatures, TData>,
33
+ ): RowModel<TFeatures, TData> {
34
+ const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []
35
+ const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}
36
+ const maxDepth = table.options.maxLeafRowFilterDepth ?? 100
37
+
38
+ const recurseFilterRows = (
39
+ rowsToFilter: Array<
40
+ Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>
41
+ >,
42
+ depth = 0,
43
+ ) => {
44
+ const filteredRows: Array<Row<TFeatures, TData>> &
45
+ Partial<Row_ColumnFiltering<TFeatures, TData>> = []
46
+
47
+ // Filter from children up first
48
+ for (let row of rowsToFilter) {
49
+ const newRow = constructRow(
50
+ table,
51
+ row.id,
52
+ row.original,
53
+ row.index,
54
+ row.depth,
55
+ undefined,
56
+ row.parentId,
57
+ ) as Row<TFeatures, TData> &
58
+ Partial<Row_ColumnFiltering<TFeatures, TData>>
59
+ newRow.columnFilters = row.columnFilters
60
+
61
+ if (row.subRows.length && depth < maxDepth) {
62
+ newRow.subRows = recurseFilterRows(row.subRows, depth + 1)
63
+ row = newRow
64
+
65
+ if (filterRow(row) && !newRow.subRows.length) {
66
+ filteredRows.push(row)
67
+ newFilteredRowsById[row.id] = row
68
+ newFilteredFlatRows.push(row)
69
+ continue
70
+ }
71
+
72
+ if (filterRow(row) || newRow.subRows.length) {
73
+ filteredRows.push(row)
74
+ newFilteredRowsById[row.id] = row
75
+ newFilteredFlatRows.push(row)
76
+ continue
77
+ }
78
+ } else {
79
+ row = newRow
80
+ if (filterRow(row)) {
81
+ filteredRows.push(row)
82
+ newFilteredRowsById[row.id] = row
83
+ newFilteredFlatRows.push(row)
84
+ }
85
+ }
86
+ }
87
+
88
+ return filteredRows
89
+ }
90
+
91
+ return {
92
+ rows: recurseFilterRows(rowsToFilter),
93
+ flatRows: newFilteredFlatRows,
94
+ rowsById: newFilteredRowsById,
95
+ }
96
+ }
97
+
98
+ function filterRowModelFromRoot<
99
+ TFeatures extends TableFeatures,
100
+ TData extends RowData,
101
+ >(
102
+ rowsToFilter: Array<Row<TFeatures, TData>>,
103
+ filterRow: (row: Row<TFeatures, TData>) => any,
104
+ table: Table_Internal<TFeatures, TData>,
105
+ ): RowModel<TFeatures, TData> {
106
+ const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []
107
+ const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}
108
+ const maxDepth = table.options.maxLeafRowFilterDepth ?? 100
109
+
110
+ // Filters top level and nested rows
111
+ const recurseFilterRows = (
112
+ rowsToFilter: Array<Row<TFeatures, TData>>,
113
+ depth = 0,
114
+ ) => {
115
+ // Filter from parents downward first
116
+
117
+ const filteredRows: Array<Row<TFeatures, TData>> = []
118
+
119
+ // Apply the filter to any subRows
120
+ for (let row of rowsToFilter) {
121
+ const pass = filterRow(row)
122
+
123
+ if (pass) {
124
+ if (row.subRows.length && depth < maxDepth) {
125
+ const newRow = constructRow(
126
+ table,
127
+ row.id,
128
+ row.original,
129
+ row.index,
130
+ row.depth,
131
+ undefined,
132
+ row.parentId,
133
+ )
134
+ newRow.subRows = recurseFilterRows(row.subRows, depth + 1)
135
+ row = newRow
136
+ }
137
+
138
+ filteredRows.push(row)
139
+ newFilteredFlatRows.push(row)
140
+ newFilteredRowsById[row.id] = row
141
+ }
142
+ }
143
+
144
+ return filteredRows
145
+ }
146
+
147
+ return {
148
+ rows: recurseFilterRows(rowsToFilter),
149
+ flatRows: newFilteredFlatRows,
150
+ rowsById: newFilteredRowsById,
151
+ }
152
+ }
@@ -0,0 +1,151 @@
1
+ import {
2
+ assignPrototypeAPIs,
3
+ assignTableAPIs,
4
+ makeStateUpdater,
5
+ } from '../../utils'
6
+ import {
7
+ cell_getIsAggregated,
8
+ cell_getIsGrouped,
9
+ cell_getIsPlaceholder,
10
+ column_getAggregationFn,
11
+ column_getAutoAggregationFn,
12
+ column_getCanGroup,
13
+ column_getGroupedIndex,
14
+ column_getIsGrouped,
15
+ column_getToggleGroupingHandler,
16
+ column_toggleGrouping,
17
+ getDefaultGroupingState,
18
+ row_getGroupingValue,
19
+ row_getIsGrouped,
20
+ table_resetGrouping,
21
+ table_setGrouping,
22
+ } from './columnGroupingFeature.utils'
23
+ import type { RowData } from '../../types/type-utils'
24
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
25
+ // import type {
26
+ // CachedRowModel_Grouped,
27
+ // Cell_ColumnGrouping,
28
+ // ColumnDef_ColumnGrouping,
29
+ // Column_ColumnGrouping,
30
+ // CreateRowModel_Grouped,
31
+ // RowModelFns_ColumnGrouping,
32
+ // Row_ColumnGrouping,
33
+ // TableOptions_ColumnGrouping,
34
+ // TableState_ColumnGrouping,
35
+ // Table_ColumnGrouping,
36
+ // } from './columnGroupingFeature.types'
37
+
38
+ interface ColumnGroupingFeatureConstructors<
39
+ TFeatures extends TableFeatures,
40
+ TData extends RowData,
41
+ > {
42
+ // CachedRowModel: CachedRowModel_Grouped<TFeatures, TData>
43
+ // Cell: Cell_ColumnGrouping
44
+ // Column: Column_ColumnGrouping<TFeatures, TData>
45
+ // ColumnDef: ColumnDef_ColumnGrouping<TFeatures, TData>
46
+ // CreateRowModels: CreateRowModel_Grouped<TFeatures, TData>
47
+ // Row: Row_ColumnGrouping
48
+ // RowModelFns: RowModelFns_ColumnGrouping<TFeatures, TData>
49
+ // Table: Table_ColumnGrouping<TFeatures, TData>
50
+ // TableOptions: TableOptions_ColumnGrouping
51
+ // TableState: TableState_ColumnGrouping
52
+ }
53
+
54
+ export function constructColumnGroupingFeature<
55
+ TFeatures extends TableFeatures,
56
+ TData extends RowData,
57
+ >(): TableFeature<ColumnGroupingFeatureConstructors<TFeatures, TData>> {
58
+ return {
59
+ getInitialState: (initialState) => {
60
+ return {
61
+ grouping: getDefaultGroupingState(),
62
+ ...initialState,
63
+ }
64
+ },
65
+
66
+ getDefaultColumnDef: () => {
67
+ return {
68
+ aggregatedCell: ({ getValue }: any) => getValue()?.toString?.() ?? null,
69
+ aggregationFn: 'auto',
70
+ }
71
+ },
72
+
73
+ getDefaultTableOptions: (table) => {
74
+ return {
75
+ onGroupingChange: makeStateUpdater('grouping', table),
76
+ groupedColumnMode: 'reorder',
77
+ }
78
+ },
79
+
80
+ assignCellPrototype: (prototype, table) => {
81
+ assignPrototypeAPIs('columnGroupingFeature', prototype, table, {
82
+ cell_getIsGrouped: {
83
+ fn: (cell) => cell_getIsGrouped(cell),
84
+ },
85
+ cell_getIsPlaceholder: {
86
+ fn: (cell) => cell_getIsPlaceholder(cell),
87
+ },
88
+ cell_getIsAggregated: {
89
+ fn: (cell) => cell_getIsAggregated(cell),
90
+ },
91
+ })
92
+ },
93
+
94
+ assignColumnPrototype: (prototype, table) => {
95
+ assignPrototypeAPIs('columnGroupingFeature', prototype, table, {
96
+ column_toggleGrouping: {
97
+ fn: (column) => column_toggleGrouping(column),
98
+ },
99
+ column_getCanGroup: {
100
+ fn: (column) => column_getCanGroup(column),
101
+ },
102
+ column_getIsGrouped: {
103
+ fn: (column) => column_getIsGrouped(column),
104
+ },
105
+ column_getGroupedIndex: {
106
+ fn: (column) => column_getGroupedIndex(column),
107
+ },
108
+ column_getToggleGroupingHandler: {
109
+ fn: (column) => column_getToggleGroupingHandler(column),
110
+ },
111
+ column_getAutoAggregationFn: {
112
+ fn: (column) => column_getAutoAggregationFn(column),
113
+ },
114
+ column_getAggregationFn: {
115
+ fn: (column) => column_getAggregationFn(column),
116
+ },
117
+ })
118
+ },
119
+
120
+ assignRowPrototype: (prototype, table) => {
121
+ assignPrototypeAPIs('columnGroupingFeature', prototype, table, {
122
+ row_getIsGrouped: {
123
+ fn: (row) => row_getIsGrouped(row),
124
+ },
125
+ row_getGroupingValue: {
126
+ fn: (row, columnId) => row_getGroupingValue(row, columnId),
127
+ },
128
+ })
129
+ },
130
+
131
+ initRowInstanceData: (row) => {
132
+ ;(row as any)._groupingValuesCache = {}
133
+ },
134
+
135
+ constructTableAPIs: (table) => {
136
+ assignTableAPIs('columnGroupingFeature', table, {
137
+ table_setGrouping: {
138
+ fn: (updater) => table_setGrouping(table, updater),
139
+ },
140
+ table_resetGrouping: {
141
+ fn: (defaultState) => table_resetGrouping(table, defaultState),
142
+ },
143
+ })
144
+ },
145
+ }
146
+ }
147
+
148
+ /**
149
+ * The (Column) Grouping feature adds column grouping state and APIs to the table, row, column, and cell objects.
150
+ */
151
+ export const columnGroupingFeature = constructColumnGroupingFeature()
@@ -0,0 +1,218 @@
1
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
2
+ import type { Table } from '../../types/Table'
3
+ import type { BuiltInAggregationFn } from '../../fns/aggregationFns'
4
+ import type {
5
+ CellData,
6
+ OnChangeFn,
7
+ RowData,
8
+ Updater,
9
+ } from '../../types/type-utils'
10
+ import type { TableFeatures } from '../../types/TableFeatures'
11
+ import type { Row } from '../../types/Row'
12
+ import type { Cell } from '../../types/Cell'
13
+ import type { ColumnDefTemplate } from '../../types/ColumnDef'
14
+
15
+ export type GroupingState = Array<string>
16
+
17
+ export interface TableState_ColumnGrouping {
18
+ grouping: GroupingState
19
+ }
20
+
21
+ export interface RowModelFns_ColumnGrouping<
22
+ TFeatures extends TableFeatures,
23
+ TData extends RowData,
24
+ > {
25
+ aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>
26
+ }
27
+
28
+ export interface AggregationFns {}
29
+
30
+ export type AggregationFn<
31
+ TFeatures extends TableFeatures,
32
+ TData extends RowData,
33
+ > = (
34
+ columnId: string,
35
+ leafRows: Array<Row<TFeatures, TData>>,
36
+ childRows: Array<Row<TFeatures, TData>>,
37
+ ) => any
38
+
39
+ export type CustomAggregationFns<
40
+ TFeatures extends TableFeatures,
41
+ TData extends RowData,
42
+ > = Record<string, AggregationFn<TFeatures, TData>>
43
+
44
+ export type AggregationFnOption<
45
+ TFeatures extends TableFeatures,
46
+ TData extends RowData,
47
+ > =
48
+ | 'auto'
49
+ | keyof AggregationFns
50
+ | BuiltInAggregationFn
51
+ | AggregationFn<TFeatures, TData>
52
+
53
+ export interface ColumnDef_ColumnGrouping<
54
+ TFeatures extends TableFeatures,
55
+ TData extends RowData,
56
+ TValue extends CellData = CellData,
57
+ > {
58
+ /**
59
+ * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
60
+ */
61
+ aggregatedCell?: ColumnDefTemplate<
62
+ ReturnType<Cell<TFeatures, TData, TValue>['getContext']>
63
+ >
64
+ /**
65
+ * The resolved aggregation function for the column.
66
+ */
67
+ aggregationFn?: AggregationFnOption<TFeatures, TData>
68
+ /**
69
+ * Enables/disables grouping for this column.
70
+ */
71
+ enableGrouping?: boolean
72
+ /**
73
+ * Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.
74
+ */
75
+ getGroupingValue?: (row: TData) => any
76
+ }
77
+
78
+ export interface Column_ColumnGrouping<
79
+ TFeatures extends TableFeatures,
80
+ TData extends RowData,
81
+ > {
82
+ /**
83
+ * Returns the aggregation function for the column.
84
+ */
85
+ getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined
86
+ /**
87
+ * Returns the automatically inferred aggregation function for the column.
88
+ */
89
+ getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined
90
+ /**
91
+ * Returns whether or not the column can be grouped.
92
+ */
93
+ getCanGroup: () => boolean
94
+ /**
95
+ * Returns the index of the column in the grouping state.
96
+ */
97
+ getGroupedIndex: () => number
98
+ /**
99
+ * Returns whether or not the column is currently grouped.
100
+ */
101
+ getIsGrouped: () => boolean
102
+ /**
103
+ * Returns a function that toggles the grouping state of the column. This is useful for passing to the `onClick` prop of a button.
104
+ */
105
+ getToggleGroupingHandler: () => () => void
106
+ /**
107
+ * Toggles the grouping state of the column.
108
+ */
109
+ toggleGrouping: () => void
110
+ }
111
+
112
+ export interface Row_ColumnGrouping {
113
+ _groupingValuesCache: Record<string, any>
114
+ /**
115
+ * Returns the grouping value for any row and column (including leaf rows).
116
+ */
117
+ getGroupingValue: (columnId: string) => unknown
118
+ /**
119
+ * Returns whether or not the row is currently grouped.
120
+ */
121
+ getIsGrouped: () => boolean
122
+ /**
123
+ * If this row is grouped, this is the id of the column that this row is grouped by.
124
+ */
125
+ groupingColumnId?: string
126
+ /**
127
+ * If this row is grouped, this is the unique/shared value for the `groupingColumnId` for all of the rows in this group.
128
+ */
129
+ groupingValue?: unknown
130
+ }
131
+
132
+ export interface Cell_ColumnGrouping {
133
+ /**
134
+ * Returns whether or not the cell is currently aggregated.
135
+ */
136
+ getIsAggregated: () => boolean
137
+ /**
138
+ * Returns whether or not the cell is currently grouped.
139
+ */
140
+ getIsGrouped: () => boolean
141
+ /**
142
+ * Returns whether or not the cell is currently a placeholder cell.
143
+ */
144
+ getIsPlaceholder: () => boolean
145
+ }
146
+
147
+ export interface ColumnDefaultOptions {
148
+ enableGrouping: boolean
149
+ onGroupingChange: OnChangeFn<GroupingState>
150
+ }
151
+
152
+ export interface TableOptions_ColumnGrouping {
153
+ /**
154
+ * Enables/disables grouping for the table.
155
+ */
156
+ enableGrouping?: boolean
157
+ /**
158
+ * Grouping columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.
159
+ */
160
+ groupedColumnMode?: false | 'reorder' | 'remove'
161
+ /**
162
+ * Enables manual grouping. If this option is set to `true`, the table will not automatically group rows using `getGroupedRowModel()` and instead will expect you to manually group the rows before passing them to the table. This is useful if you are doing server-side grouping and aggregation.
163
+ */
164
+ manualGrouping?: boolean
165
+ /**
166
+ * If this function is provided, it will be called when the grouping state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the `tableOptions.state.grouping` option.
167
+ */
168
+ onGroupingChange?: OnChangeFn<GroupingState>
169
+ }
170
+
171
+ export type GroupingColumnMode = false | 'reorder' | 'remove'
172
+
173
+ export interface Table_ColumnGrouping<
174
+ TFeatures extends TableFeatures,
175
+ TData extends RowData,
176
+ > {
177
+ /**
178
+ * Resets the **grouping** state to `initialState.grouping`, or `true` can be passed to force a default blank state reset to `[]`.
179
+ */
180
+ resetGrouping: (defaultState?: boolean) => void
181
+ /**
182
+ * Updates the grouping state of the table via an update function or value.
183
+ */
184
+ setGrouping: (updater: Updater<GroupingState>) => void
185
+ }
186
+
187
+ export interface Table_RowModels_Grouped<
188
+ TFeatures extends TableFeatures,
189
+ TData extends RowData,
190
+ > {
191
+ /**
192
+ * Returns the row model for the table after grouping has been applied.
193
+ */
194
+ getGroupedRowModel: () => RowModel<TFeatures, TData>
195
+ /**
196
+ * Returns the row model for the table before any grouping has been applied.
197
+ */
198
+ getPreGroupedRowModel: () => RowModel<TFeatures, TData>
199
+ }
200
+
201
+ export interface CreateRowModel_Grouped<
202
+ TFeatures extends TableFeatures,
203
+ TData extends RowData,
204
+ > {
205
+ /**
206
+ * Returns the row model after grouping has taken place, but no further.
207
+ */
208
+ groupedRowModel?: (
209
+ table: Table<TFeatures, TData>,
210
+ ) => () => RowModel<TFeatures, TData>
211
+ }
212
+
213
+ export interface CachedRowModel_Grouped<
214
+ TFeatures extends TableFeatures,
215
+ TData extends RowData,
216
+ > {
217
+ groupedRowModel: () => RowModel<TFeatures, TData>
218
+ }