@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,72 @@
1
+ import { tableMemo } from '../../utils'
2
+ import { row_getIsExpanded } from './rowExpandingFeature.utils'
3
+ import type { TableFeatures } from '../../types/TableFeatures'
4
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
5
+ import type { Table, Table_Internal } from '../../types/Table'
6
+ import type { Row } from '../../types/Row'
7
+ import type { RowData } from '../../types/type-utils'
8
+
9
+ export function createExpandedRowModel<
10
+ TFeatures extends TableFeatures,
11
+ TData extends RowData = any,
12
+ >(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
13
+ return (_table) => {
14
+ const table = _table as Table_Internal<TFeatures, TData>
15
+ return tableMemo({
16
+ feature: 'rowExpandingFeature',
17
+ table,
18
+ fnName: 'table.getExpandedRowModel',
19
+ memoDeps: () => [
20
+ table.store.state.expanded,
21
+ table.getPreExpandedRowModel(),
22
+ table.options.paginateExpandedRows,
23
+ ],
24
+ fn: () => _createExpandedRowModel(table),
25
+ })
26
+ }
27
+ }
28
+
29
+ function _createExpandedRowModel<
30
+ TFeatures extends TableFeatures,
31
+ TData extends RowData = any,
32
+ >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
33
+ const rowModel = table.getPreExpandedRowModel()
34
+ const expanded = table.store.state.expanded
35
+
36
+ if (
37
+ !rowModel.rows.length ||
38
+ (expanded !== true && !Object.keys(expanded ?? {}).length)
39
+ ) {
40
+ return rowModel
41
+ }
42
+
43
+ if (!table.options.paginateExpandedRows) {
44
+ // Only expand rows at this point if they are being paginated
45
+ return rowModel
46
+ }
47
+
48
+ return expandRows(rowModel)
49
+ }
50
+
51
+ export function expandRows<
52
+ TFeatures extends TableFeatures,
53
+ TData extends RowData = any,
54
+ >(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {
55
+ const expandedRows: Array<Row<TFeatures, TData>> = []
56
+
57
+ const handleRow = (row: Row<TFeatures, TData>) => {
58
+ expandedRows.push(row)
59
+
60
+ if (row.subRows.length && row_getIsExpanded(row)) {
61
+ row.subRows.forEach(handleRow)
62
+ }
63
+ }
64
+
65
+ rowModel.rows.forEach(handleRow)
66
+
67
+ return {
68
+ rows: expandedRows,
69
+ flatRows: rowModel.flatRows,
70
+ rowsById: rowModel.rowsById,
71
+ }
72
+ }
@@ -0,0 +1,122 @@
1
+ import {
2
+ assignPrototypeAPIs,
3
+ assignTableAPIs,
4
+ makeStateUpdater,
5
+ } from '../../utils'
6
+ import {
7
+ getDefaultExpandedState,
8
+ row_getCanExpand,
9
+ row_getIsAllParentsExpanded,
10
+ row_getIsExpanded,
11
+ row_getToggleExpandedHandler,
12
+ row_toggleExpanded,
13
+ table_autoResetExpanded,
14
+ table_getCanSomeRowsExpand,
15
+ table_getExpandedDepth,
16
+ table_getIsAllRowsExpanded,
17
+ table_getIsSomeRowsExpanded,
18
+ table_getToggleAllRowsExpandedHandler,
19
+ table_resetExpanded,
20
+ table_setExpanded,
21
+ table_toggleAllRowsExpanded,
22
+ } from './rowExpandingFeature.utils'
23
+ import type { RowData } from '../../types/type-utils'
24
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
25
+ // import type {
26
+ // CachedRowModel_Expanded,
27
+ // CreateRowModel_Expanded,
28
+ // Row_RowExpanding,
29
+ // TableOptions_RowExpanding,
30
+ // TableState_RowExpanding,
31
+ // Table_RowExpanding,
32
+ // } from './rowExpandingFeature.types'
33
+
34
+ interface RowExpandingFeatureConstructors<
35
+ TFeatures extends TableFeatures,
36
+ TData extends RowData,
37
+ > {
38
+ // CachedRowModel: CachedRowModel_Expanded<TFeatures, TData>
39
+ // CreateRowModels: CreateRowModel_Expanded<TFeatures, TData>
40
+ // Row: Row_RowExpanding
41
+ // Table: Table_RowExpanding<TFeatures, TData>
42
+ // TableOptions: TableOptions_RowExpanding<TFeatures, TData>
43
+ // TableState: TableState_RowExpanding
44
+ }
45
+
46
+ export function constructRowExpandingFeature<
47
+ TFeatures extends TableFeatures,
48
+ TData extends RowData,
49
+ >(): TableFeature<RowExpandingFeatureConstructors<TFeatures, TData>> {
50
+ return {
51
+ getInitialState: (initialState) => {
52
+ return {
53
+ expanded: getDefaultExpandedState(),
54
+ ...initialState,
55
+ }
56
+ },
57
+
58
+ getDefaultTableOptions: (table) => {
59
+ return {
60
+ onExpandedChange: makeStateUpdater('expanded', table),
61
+ paginateExpandedRows: true,
62
+ }
63
+ },
64
+
65
+ assignRowPrototype: (prototype, table) => {
66
+ assignPrototypeAPIs('rowExpandingFeature', prototype, table, {
67
+ row_toggleExpanded: {
68
+ fn: (row, expanded) => row_toggleExpanded(row, expanded),
69
+ },
70
+ row_getIsExpanded: {
71
+ fn: (row) => row_getIsExpanded(row),
72
+ },
73
+ row_getCanExpand: {
74
+ fn: (row) => row_getCanExpand(row),
75
+ },
76
+ row_getIsAllParentsExpanded: {
77
+ fn: (row) => row_getIsAllParentsExpanded(row),
78
+ },
79
+ row_getToggleExpandedHandler: {
80
+ fn: (row) => row_getToggleExpandedHandler(row),
81
+ },
82
+ })
83
+ },
84
+
85
+ constructTableAPIs: (table) => {
86
+ assignTableAPIs('rowExpandingFeature', table, {
87
+ table_autoResetExpanded: {
88
+ fn: () => table_autoResetExpanded(table),
89
+ },
90
+ table_setExpanded: {
91
+ fn: (updater) => table_setExpanded(table, updater),
92
+ },
93
+ table_toggleAllRowsExpanded: {
94
+ fn: (expanded) => table_toggleAllRowsExpanded(table, expanded),
95
+ },
96
+ table_resetExpanded: {
97
+ fn: (defaultState) => table_resetExpanded(table, defaultState),
98
+ },
99
+ table_getCanSomeRowsExpand: {
100
+ fn: () => table_getCanSomeRowsExpand(table),
101
+ },
102
+ table_getToggleAllRowsExpandedHandler: {
103
+ fn: () => table_getToggleAllRowsExpandedHandler(table),
104
+ },
105
+ table_getIsSomeRowsExpanded: {
106
+ fn: () => table_getIsSomeRowsExpanded(table),
107
+ },
108
+ table_getIsAllRowsExpanded: {
109
+ fn: () => table_getIsAllRowsExpanded(table),
110
+ },
111
+ table_getExpandedDepth: {
112
+ fn: () => table_getExpandedDepth(table),
113
+ },
114
+ })
115
+ },
116
+ }
117
+ }
118
+
119
+ /**
120
+ * The Row Expanding feature adds row expanding state and APIs to the table and row objects.
121
+ */
122
+ export const rowExpandingFeature = constructRowExpandingFeature()
@@ -0,0 +1,141 @@
1
+ import type { Table } from '../../types/Table'
2
+ import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
3
+ import type { TableFeatures } from '../../types/TableFeatures'
4
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
5
+ import type { Row } from '../../types/Row'
6
+
7
+ export type ExpandedStateList = Record<string, boolean>
8
+ export type ExpandedState = true | Record<string, boolean>
9
+
10
+ export interface TableState_RowExpanding {
11
+ expanded: ExpandedState
12
+ }
13
+
14
+ export interface Row_RowExpanding {
15
+ /**
16
+ * Returns whether the row can be expanded.
17
+ */
18
+ getCanExpand: () => boolean
19
+ /**
20
+ * Returns whether all parent rows of the row are expanded.
21
+ */
22
+ getIsAllParentsExpanded: () => boolean
23
+ /**
24
+ * Returns whether the row is expanded.
25
+ */
26
+ getIsExpanded: () => boolean
27
+ /**
28
+ * Returns a function that can be used to toggle the expanded state of the row. This function can be used to bind to an event handler to a button.
29
+ */
30
+ getToggleExpandedHandler: () => () => void
31
+ /**
32
+ * Toggles the expanded state (or sets it if `expanded` is provided) for the row.
33
+ */
34
+ toggleExpanded: (expanded?: boolean) => void
35
+ }
36
+
37
+ export interface TableOptions_RowExpanding<
38
+ TFeatures extends TableFeatures,
39
+ TData extends RowData,
40
+ > {
41
+ /**
42
+ * Enable this setting to automatically reset the expanded state of the table when expanding state changes.
43
+ */
44
+ autoResetExpanded?: boolean
45
+ /**
46
+ * Enable/disable expanding for all rows.
47
+ */
48
+ enableExpanding?: boolean
49
+ /**
50
+ * If provided, allows you to override the default behavior of determining whether a row is currently expanded.
51
+ */
52
+ getIsRowExpanded?: (row: Row<TFeatures, TData>) => boolean
53
+ /**
54
+ * If provided, allows you to override the default behavior of determining whether a row can be expanded.
55
+ */
56
+ getRowCanExpand?: (row: Row<TFeatures, TData>) => boolean
57
+ /**
58
+ * Enables manual row expansion. If this is set to `true`, `getExpandedRowModel` will not be used to expand rows and you would be expected to perform the expansion in your own data model. This is useful if you are doing server-side expansion.
59
+ */
60
+ manualExpanding?: boolean
61
+ /**
62
+ * This function is called when the `expanded` table state changes. If a function is provided, you will be responsible for managing this state on your own. To pass the managed state back to the table, use the `tableOptions.state.expanded` option.
63
+ */
64
+ onExpandedChange?: OnChangeFn<ExpandedState>
65
+ /**
66
+ * If `true` expanded rows will be paginated along with the rest of the table (which means expanded rows may span multiple pages). If `false` expanded rows will not be considered for pagination (which means expanded rows will always render on their parents page. This also means more rows will be rendered than the set page size)
67
+ */
68
+ paginateExpandedRows?: boolean
69
+ }
70
+
71
+ export interface Table_RowExpanding<
72
+ TFeatures extends TableFeatures,
73
+ TData extends RowData,
74
+ > {
75
+ autoResetExpanded: () => void
76
+ /**
77
+ * Returns whether there are any rows that can be expanded.
78
+ */
79
+ getCanSomeRowsExpand: () => boolean
80
+ /**
81
+ * Returns the maximum depth of the expanded rows.
82
+ */
83
+ getExpandedDepth: () => number
84
+ /**
85
+ * Returns whether all rows are currently expanded.
86
+ */
87
+ getIsAllRowsExpanded: () => boolean
88
+ /**
89
+ * Returns whether there are any rows that are currently expanded.
90
+ */
91
+ getIsSomeRowsExpanded: () => boolean
92
+ /**
93
+ * Returns a handler that can be used to toggle the expanded state of all rows. This handler is meant to be used with an `input[type=checkbox]` element.
94
+ */
95
+ getToggleAllRowsExpandedHandler: () => (event: unknown) => void
96
+ /**
97
+ * Resets the expanded state of the table to the initial state.
98
+ */
99
+ resetExpanded: (defaultState?: boolean) => void
100
+ /**
101
+ * Updates the expanded state of the table via an update function or value.
102
+ */
103
+ setExpanded: (updater: Updater<ExpandedState>) => void
104
+ /**
105
+ * Toggles the expanded state for all rows.
106
+ */
107
+ toggleAllRowsExpanded: (expanded?: boolean) => void
108
+ }
109
+
110
+ export interface Table_RowModels_Expanded<
111
+ TFeatures extends TableFeatures,
112
+ TData extends RowData,
113
+ > {
114
+ /**
115
+ * Returns the row model after expansion has been applied.
116
+ */
117
+ getExpandedRowModel: () => RowModel<TFeatures, TData>
118
+ /**
119
+ * Returns the row model before expansion has been applied.
120
+ */
121
+ getPreExpandedRowModel: () => RowModel<TFeatures, TData>
122
+ }
123
+
124
+ export interface CreateRowModel_Expanded<
125
+ TFeatures extends TableFeatures,
126
+ TData extends RowData,
127
+ > {
128
+ /**
129
+ * This function is responsible for returning the expanded row model. If this function is not provided, the table will not expand rows. You can use the default exported `getExpandedRowModel` function to get the expanded row model or implement your own.
130
+ */
131
+ expandedRowModel?: (
132
+ table: Table<TFeatures, TData>,
133
+ ) => () => RowModel<TFeatures, TData>
134
+ }
135
+
136
+ export interface CachedRowModel_Expanded<
137
+ TFeatures extends TableFeatures,
138
+ TData extends RowData,
139
+ > {
140
+ expandedRowModel: () => RowModel<TFeatures, TData>
141
+ }
@@ -0,0 +1,207 @@
1
+ import type { RowData, Updater } from '../../types/type-utils'
2
+ import type { TableFeatures } from '../../types/TableFeatures'
3
+ import type { Table_Internal } from '../../types/Table'
4
+ import type { Row } from '../../types/Row'
5
+ import type {
6
+ ExpandedState,
7
+ ExpandedStateList,
8
+ } from './rowExpandingFeature.types'
9
+
10
+ export function getDefaultExpandedState(): ExpandedState {
11
+ return structuredClone({})
12
+ }
13
+
14
+ export function table_autoResetExpanded<
15
+ TFeatures extends TableFeatures,
16
+ TData extends RowData,
17
+ >(table: Table_Internal<TFeatures, TData>) {
18
+ if (
19
+ table.options.autoResetAll ??
20
+ table.options.autoResetExpanded ??
21
+ !table.options.manualExpanding
22
+ ) {
23
+ queueMicrotask(() => table_resetExpanded(table))
24
+ }
25
+ }
26
+
27
+ export function table_setExpanded<
28
+ TFeatures extends TableFeatures,
29
+ TData extends RowData,
30
+ >(table: Table_Internal<TFeatures, TData>, updater: Updater<ExpandedState>) {
31
+ table.options.onExpandedChange?.(updater)
32
+ }
33
+
34
+ export function table_toggleAllRowsExpanded<
35
+ TFeatures extends TableFeatures,
36
+ TData extends RowData,
37
+ >(table: Table_Internal<TFeatures, TData>, expanded?: boolean) {
38
+ if (expanded ?? !table_getIsAllRowsExpanded(table)) {
39
+ table_setExpanded(table, true)
40
+ } else {
41
+ table_setExpanded(table, {})
42
+ }
43
+ }
44
+
45
+ export function table_resetExpanded<
46
+ TFeatures extends TableFeatures,
47
+ TData extends RowData,
48
+ >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
49
+ table_setExpanded(
50
+ table,
51
+ defaultState ? {} : (table.initialState.expanded ?? {}),
52
+ )
53
+ }
54
+
55
+ export function table_getCanSomeRowsExpand<
56
+ TFeatures extends TableFeatures,
57
+ TData extends RowData,
58
+ >(table: Table_Internal<TFeatures, TData>) {
59
+ return table
60
+ .getPrePaginatedRowModel()
61
+ .flatRows.some((row) => row_getCanExpand(row))
62
+ }
63
+
64
+ export function table_getToggleAllRowsExpandedHandler<
65
+ TFeatures extends TableFeatures,
66
+ TData extends RowData,
67
+ >(table: Table_Internal<TFeatures, TData>) {
68
+ return (e: unknown) => {
69
+ ;(e as any).persist?.()
70
+ table_toggleAllRowsExpanded(table)
71
+ }
72
+ }
73
+
74
+ export function table_getIsSomeRowsExpanded<
75
+ TFeatures extends TableFeatures,
76
+ TData extends RowData,
77
+ >(table: Table_Internal<TFeatures, TData>) {
78
+ const expanded = table.store.state.expanded ?? {}
79
+ return expanded === true || Object.values(expanded).some(Boolean)
80
+ }
81
+
82
+ export function table_getIsAllRowsExpanded<
83
+ TFeatures extends TableFeatures,
84
+ TData extends RowData,
85
+ >(table: Table_Internal<TFeatures, TData>) {
86
+ const expanded = table.store.state.expanded ?? {}
87
+
88
+ // If expanded is true, save some cycles and return true
89
+ if (expanded === true) {
90
+ return true
91
+ }
92
+
93
+ if (!Object.keys(expanded).length) {
94
+ return false
95
+ }
96
+
97
+ // If any row is not expanded, return false
98
+ if (table.getRowModel().flatRows.some((row) => !row_getIsExpanded(row))) {
99
+ return false
100
+ }
101
+
102
+ // They must all be expanded :shrug:
103
+ return true
104
+ }
105
+
106
+ export function table_getExpandedDepth<
107
+ TFeatures extends TableFeatures,
108
+ TData extends RowData,
109
+ >(table: Table_Internal<TFeatures, TData>) {
110
+ let maxDepth = 0
111
+
112
+ const rowIds =
113
+ table.store.state.expanded === true
114
+ ? Object.keys(table.getRowModel().rowsById)
115
+ : Object.keys(table.store.state.expanded ?? {})
116
+
117
+ rowIds.forEach((id) => {
118
+ const splitId = id.split('.')
119
+ maxDepth = Math.max(maxDepth, splitId.length)
120
+ })
121
+
122
+ return maxDepth
123
+ }
124
+
125
+ export function row_toggleExpanded<
126
+ TFeatures extends TableFeatures,
127
+ TData extends RowData,
128
+ >(row: Row<TFeatures, TData>, expanded?: boolean) {
129
+ table_setExpanded(row.table, (old) => {
130
+ const exists = old === true ? true : !!old[row.id]
131
+
132
+ let oldExpanded: ExpandedStateList = {}
133
+
134
+ if (old === true) {
135
+ Object.keys(row.table.getRowModel().rowsById).forEach((rowId) => {
136
+ oldExpanded[rowId] = true
137
+ })
138
+ } else {
139
+ oldExpanded = old
140
+ }
141
+
142
+ expanded = expanded ?? !exists
143
+
144
+ if (!exists && expanded) {
145
+ return {
146
+ ...oldExpanded,
147
+ [row.id]: true,
148
+ }
149
+ }
150
+
151
+ if (exists && !expanded) {
152
+ const { [row.id]: _, ...rest } = oldExpanded
153
+ return rest
154
+ }
155
+
156
+ return old
157
+ })
158
+ }
159
+
160
+ export function row_getIsExpanded<
161
+ TFeatures extends TableFeatures,
162
+ TData extends RowData,
163
+ >(row: Row<TFeatures, TData>) {
164
+ const expanded = row.table.store.state.expanded ?? ({} as ExpandedState)
165
+
166
+ return !!(
167
+ row.table.options.getIsRowExpanded?.(row) ??
168
+ (expanded === true || expanded[row.id])
169
+ )
170
+ }
171
+
172
+ export function row_getCanExpand<
173
+ TFeatures extends TableFeatures,
174
+ TData extends RowData,
175
+ >(row: Row<TFeatures, TData>) {
176
+ return (
177
+ row.table.options.getRowCanExpand?.(row) ??
178
+ ((row.table.options.enableExpanding ?? true) && !!row.subRows.length)
179
+ )
180
+ }
181
+
182
+ export function row_getIsAllParentsExpanded<
183
+ TFeatures extends TableFeatures,
184
+ TData extends RowData,
185
+ >(row: Row<TFeatures, TData>) {
186
+ let isFullyExpanded = true
187
+ let currentRow = row
188
+
189
+ while (isFullyExpanded && currentRow.parentId) {
190
+ currentRow = row.table.getRow(currentRow.parentId, true)
191
+ isFullyExpanded = row_getIsExpanded(row)
192
+ }
193
+
194
+ return isFullyExpanded
195
+ }
196
+
197
+ export function row_getToggleExpandedHandler<
198
+ TFeatures extends TableFeatures,
199
+ TData extends RowData,
200
+ >(row: Row<TFeatures, TData>) {
201
+ const canExpand = row_getCanExpand(row)
202
+
203
+ return () => {
204
+ if (!canExpand) return
205
+ row_toggleExpanded(row)
206
+ }
207
+ }
@@ -0,0 +1,78 @@
1
+ import { tableMemo } from '../../utils'
2
+ import { expandRows } from '../row-expanding/createExpandedRowModel'
3
+ import { getDefaultPaginationState } from './rowPaginationFeature.utils'
4
+ import type { TableFeatures } from '../../types/TableFeatures'
5
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
6
+ import type { Table, Table_Internal } from '../../types/Table'
7
+ import type { Row } from '../../types/Row'
8
+ import type { RowData } from '../../types/type-utils'
9
+
10
+ export function createPaginatedRowModel<
11
+ TFeatures extends TableFeatures,
12
+ TData extends RowData = any,
13
+ >(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
14
+ return (_table) => {
15
+ const table = _table as Table_Internal<TFeatures, TData>
16
+ return tableMemo({
17
+ feature: 'rowPaginationFeature',
18
+ table,
19
+ fnName: 'table.getPaginatedRowModel',
20
+ memoDeps: () => [
21
+ table.getPrePaginatedRowModel(),
22
+ table.store.state.pagination,
23
+ table.options.paginateExpandedRows
24
+ ? table.store.state.expanded
25
+ : undefined,
26
+ ],
27
+ fn: () => _createPaginatedRowModel(table),
28
+ })
29
+ }
30
+ }
31
+
32
+ function _createPaginatedRowModel<
33
+ TFeatures extends TableFeatures,
34
+ TData extends RowData = any,
35
+ >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
36
+ const prePaginatedRowModel = table.getPrePaginatedRowModel()
37
+ const pagination = table.store.state.pagination
38
+
39
+ if (!prePaginatedRowModel.rows.length) {
40
+ return prePaginatedRowModel
41
+ }
42
+
43
+ const { pageSize, pageIndex } = pagination ?? getDefaultPaginationState()
44
+ const { rows, flatRows, rowsById } = prePaginatedRowModel
45
+ const pageStart = pageSize * pageIndex
46
+ const pageEnd = pageStart + pageSize
47
+
48
+ const paginatedRows = rows.slice(pageStart, pageEnd)
49
+
50
+ let paginatedRowModel: RowModel<TFeatures, TData>
51
+
52
+ if (!table.options.paginateExpandedRows) {
53
+ paginatedRowModel = expandRows({
54
+ rows: paginatedRows,
55
+ flatRows,
56
+ rowsById,
57
+ })
58
+ } else {
59
+ paginatedRowModel = {
60
+ rows: paginatedRows,
61
+ flatRows,
62
+ rowsById,
63
+ }
64
+ }
65
+
66
+ paginatedRowModel.flatRows = []
67
+
68
+ const handleRow = (row: Row<TFeatures, TData>) => {
69
+ paginatedRowModel.flatRows.push(row)
70
+ if (row.subRows.length) {
71
+ row.subRows.forEach(handleRow)
72
+ }
73
+ }
74
+
75
+ paginatedRowModel.rows.forEach(handleRow)
76
+
77
+ return paginatedRowModel
78
+ }