@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,464 @@
1
+ import type { RowData, Updater } from '../../types/type-utils'
2
+ import type { TableFeatures } from '../../types/TableFeatures'
3
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
4
+ import type { Table_Internal } from '../../types/Table'
5
+ import type { Row } from '../../types/Row'
6
+ import type { RowSelectionState } from './rowSelectionFeature.types'
7
+
8
+ // State APIs
9
+
10
+ export function getDefaultRowSelectionState(): RowSelectionState {
11
+ return structuredClone({})
12
+ }
13
+
14
+ export function table_setRowSelection<
15
+ TFeatures extends TableFeatures,
16
+ TData extends RowData,
17
+ >(
18
+ table: Table_Internal<TFeatures, TData>,
19
+ updater: Updater<RowSelectionState>,
20
+ ) {
21
+ table.options.onRowSelectionChange?.(updater)
22
+ }
23
+
24
+ export function table_resetRowSelection<
25
+ TFeatures extends TableFeatures,
26
+ TData extends RowData,
27
+ >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
28
+ table_setRowSelection(
29
+ table,
30
+ defaultState ? {} : (table.initialState.rowSelection ?? {}),
31
+ )
32
+ }
33
+
34
+ // Table APIs
35
+
36
+ export function table_toggleAllRowsSelected<
37
+ TFeatures extends TableFeatures,
38
+ TData extends RowData,
39
+ >(table: Table_Internal<TFeatures, TData>, value?: boolean) {
40
+ table_setRowSelection(table, (old) => {
41
+ value =
42
+ typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)
43
+
44
+ const rowSelection = { ...old }
45
+
46
+ const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows
47
+
48
+ // We don't use `mutateRowIsSelected` here for performance reasons.
49
+ // All of the rows are flat already, so it wouldn't be worth it
50
+ if (value) {
51
+ preGroupedFlatRows.forEach((row) => {
52
+ if (!row_getCanSelect(row)) {
53
+ return
54
+ }
55
+ rowSelection[row.id] = true
56
+ })
57
+ } else {
58
+ preGroupedFlatRows.forEach((row) => {
59
+ delete rowSelection[row.id]
60
+ })
61
+ }
62
+
63
+ return rowSelection
64
+ })
65
+ }
66
+
67
+ export function table_toggleAllPageRowsSelected<
68
+ TFeatures extends TableFeatures,
69
+ TData extends RowData,
70
+ >(table: Table_Internal<TFeatures, TData>, value?: boolean) {
71
+ table_setRowSelection(table, (old) => {
72
+ const resolvedValue =
73
+ typeof value !== 'undefined'
74
+ ? value
75
+ : !table_getIsAllPageRowsSelected(table)
76
+
77
+ const rowSelection: RowSelectionState = { ...old }
78
+
79
+ table.getRowModel().rows.forEach((row) => {
80
+ mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)
81
+ })
82
+
83
+ return rowSelection
84
+ })
85
+ }
86
+
87
+ export function table_getPreSelectedRowModel<
88
+ TFeatures extends TableFeatures,
89
+ TData extends RowData,
90
+ >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
91
+ return table.getCoreRowModel()
92
+ }
93
+
94
+ export function table_getSelectedRowModel<
95
+ TFeatures extends TableFeatures,
96
+ TData extends RowData,
97
+ >(table: Table_Internal<TFeatures, TData>) {
98
+ const rowModel = table.getCoreRowModel()
99
+
100
+ if (!Object.keys(table.store.state.rowSelection ?? {}).length) {
101
+ return {
102
+ rows: [],
103
+ flatRows: [],
104
+ rowsById: {},
105
+ }
106
+ }
107
+
108
+ return selectRowsFn(rowModel)
109
+ }
110
+
111
+ export function table_getFilteredSelectedRowModel<
112
+ TFeatures extends TableFeatures,
113
+ TData extends RowData,
114
+ >(table: Table_Internal<TFeatures, TData>) {
115
+ const rowModel = table.getCoreRowModel()
116
+
117
+ if (!Object.keys(table.store.state.rowSelection ?? {}).length) {
118
+ return {
119
+ rows: [],
120
+ flatRows: [],
121
+ rowsById: {},
122
+ }
123
+ }
124
+
125
+ return selectRowsFn(rowModel)
126
+ }
127
+
128
+ export function table_getGroupedSelectedRowModel<
129
+ TFeatures extends TableFeatures,
130
+ TData extends RowData,
131
+ >(table: Table_Internal<TFeatures, TData>) {
132
+ const rowModel = table.getCoreRowModel()
133
+
134
+ if (!Object.keys(table.store.state.rowSelection ?? {}).length) {
135
+ return {
136
+ rows: [],
137
+ flatRows: [],
138
+ rowsById: {},
139
+ }
140
+ }
141
+
142
+ return selectRowsFn(rowModel)
143
+ }
144
+
145
+ export function table_getIsAllRowsSelected<
146
+ TFeatures extends TableFeatures,
147
+ TData extends RowData,
148
+ >(table: Table_Internal<TFeatures, TData>) {
149
+ const preGroupedFlatRows = table.getFilteredRowModel().flatRows
150
+ const rowSelection =
151
+ table.store.state.rowSelection ?? ({} as RowSelectionState)
152
+
153
+ let isAllRowsSelected = Boolean(
154
+ preGroupedFlatRows.length && Object.keys(rowSelection).length,
155
+ )
156
+
157
+ if (isAllRowsSelected) {
158
+ if (
159
+ preGroupedFlatRows.some(
160
+ (row) => row_getCanSelect(row) && !rowSelection[row.id],
161
+ )
162
+ ) {
163
+ isAllRowsSelected = false
164
+ }
165
+ }
166
+
167
+ return isAllRowsSelected
168
+ }
169
+
170
+ export function table_getIsAllPageRowsSelected<
171
+ TFeatures extends TableFeatures,
172
+ TData extends RowData,
173
+ >(table: Table_Internal<TFeatures, TData>) {
174
+ const paginationFlatRows = table
175
+ .getPaginatedRowModel()
176
+ .flatRows.filter((row) => row_getCanSelect(row))
177
+ const rowSelection =
178
+ table.store.state.rowSelection ?? ({} as RowSelectionState)
179
+
180
+ let isAllPageRowsSelected = !!paginationFlatRows.length
181
+
182
+ if (
183
+ isAllPageRowsSelected &&
184
+ paginationFlatRows.some((row) => !rowSelection[row.id])
185
+ ) {
186
+ isAllPageRowsSelected = false
187
+ }
188
+
189
+ return isAllPageRowsSelected
190
+ }
191
+
192
+ export function table_getIsSomeRowsSelected<
193
+ TFeatures extends TableFeatures,
194
+ TData extends RowData,
195
+ >(table: Table_Internal<TFeatures, TData>) {
196
+ const totalSelected = Object.keys(table.store.state.rowSelection ?? {}).length
197
+ return (
198
+ totalSelected > 0 &&
199
+ totalSelected < table.getFilteredRowModel().flatRows.length
200
+ )
201
+ }
202
+
203
+ export function table_getIsSomePageRowsSelected<
204
+ TFeatures extends TableFeatures,
205
+ TData extends RowData,
206
+ >(table: Table_Internal<TFeatures, TData>) {
207
+ const paginationFlatRows = table.getPaginatedRowModel().flatRows
208
+ return table_getIsAllPageRowsSelected(table)
209
+ ? false
210
+ : paginationFlatRows
211
+ .filter((row) => row_getCanSelect(row))
212
+ .some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))
213
+ }
214
+
215
+ export function table_getToggleAllRowsSelectedHandler<
216
+ TFeatures extends TableFeatures,
217
+ TData extends RowData,
218
+ >(table: Table_Internal<TFeatures, TData>) {
219
+ return (e: unknown) => {
220
+ table_toggleAllRowsSelected(
221
+ table,
222
+ ((e as MouseEvent).target as HTMLInputElement).checked,
223
+ )
224
+ }
225
+ }
226
+
227
+ export function table_getToggleAllPageRowsSelectedHandler<
228
+ TFeatures extends TableFeatures,
229
+ TData extends RowData,
230
+ >(table: Table_Internal<TFeatures, TData>) {
231
+ return (e: unknown) => {
232
+ table_toggleAllPageRowsSelected(
233
+ table,
234
+ ((e as MouseEvent).target as HTMLInputElement).checked,
235
+ )
236
+ }
237
+ }
238
+
239
+ // Row APIs
240
+
241
+ export function row_toggleSelected<
242
+ TFeatures extends TableFeatures,
243
+ TData extends RowData,
244
+ >(
245
+ row: Row<TFeatures, TData>,
246
+ value?: boolean,
247
+ opts?: {
248
+ selectChildren?: boolean
249
+ },
250
+ ) {
251
+ const isSelected = row_getIsSelected(row)
252
+
253
+ table_setRowSelection(row.table, (old) => {
254
+ value = typeof value !== 'undefined' ? value : !isSelected
255
+
256
+ if (row_getCanSelect(row) && isSelected === value) {
257
+ return old
258
+ }
259
+
260
+ const selectedRowIds = { ...old }
261
+
262
+ mutateRowIsSelected(
263
+ selectedRowIds,
264
+ row.id,
265
+ value,
266
+ opts?.selectChildren ?? true,
267
+ row.table,
268
+ )
269
+
270
+ return selectedRowIds
271
+ })
272
+ }
273
+
274
+ export function row_getIsSelected<
275
+ TFeatures extends TableFeatures,
276
+ TData extends RowData,
277
+ >(row: Row<TFeatures, TData>) {
278
+ return isRowSelected(row)
279
+ }
280
+
281
+ export function row_getIsSomeSelected<
282
+ TFeatures extends TableFeatures,
283
+ TData extends RowData,
284
+ >(row: Row<TFeatures, TData>) {
285
+ return isSubRowSelected(row) === 'some'
286
+ }
287
+
288
+ export function row_getIsAllSubRowsSelected<
289
+ TFeatures extends TableFeatures,
290
+ TData extends RowData,
291
+ >(row: Row<TFeatures, TData>) {
292
+ return isSubRowSelected(row) === 'all'
293
+ }
294
+
295
+ export function row_getCanSelect<
296
+ TFeatures extends TableFeatures,
297
+ TData extends RowData,
298
+ >(row: Row<TFeatures, TData>) {
299
+ const options = row.table.options
300
+ if (typeof options.enableRowSelection === 'function') {
301
+ return options.enableRowSelection(row)
302
+ }
303
+
304
+ return options.enableRowSelection ?? true
305
+ }
306
+
307
+ export function row_getCanSelectSubRows<
308
+ TFeatures extends TableFeatures,
309
+ TData extends RowData,
310
+ >(row: Row<TFeatures, TData>) {
311
+ const options = row.table.options
312
+ if (typeof options.enableSubRowSelection === 'function') {
313
+ return options.enableSubRowSelection(row)
314
+ }
315
+
316
+ return options.enableSubRowSelection ?? true
317
+ }
318
+
319
+ export function row_getCanMultiSelect<
320
+ TFeatures extends TableFeatures,
321
+ TData extends RowData,
322
+ >(row: Row<TFeatures, TData>) {
323
+ const options = row.table.options
324
+ if (typeof options.enableMultiRowSelection === 'function') {
325
+ return options.enableMultiRowSelection(row)
326
+ }
327
+
328
+ return options.enableMultiRowSelection ?? true
329
+ }
330
+
331
+ export function row_getToggleSelectedHandler<
332
+ TFeatures extends TableFeatures,
333
+ TData extends RowData,
334
+ >(row: Row<TFeatures, TData>) {
335
+ const canSelect = row_getCanSelect(row)
336
+
337
+ return (e: unknown) => {
338
+ if (!canSelect) return
339
+ row_toggleSelected(
340
+ row,
341
+ ((e as MouseEvent).target as HTMLInputElement).checked,
342
+ )
343
+ }
344
+ }
345
+
346
+ const mutateRowIsSelected = <
347
+ TFeatures extends TableFeatures,
348
+ TData extends RowData,
349
+ >(
350
+ selectedRowIds: Record<string, boolean>,
351
+ rowId: string,
352
+ value: boolean,
353
+ includeChildren: boolean,
354
+ table: Table_Internal<TFeatures, TData>,
355
+ ) => {
356
+ const row = table.getRow(rowId, true)
357
+
358
+ if (value) {
359
+ if (!row_getCanMultiSelect(row)) {
360
+ Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])
361
+ }
362
+ if (row_getCanSelect(row)) {
363
+ selectedRowIds[rowId] = true
364
+ }
365
+ } else {
366
+ delete selectedRowIds[rowId]
367
+ }
368
+
369
+ if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {
370
+ row.subRows.forEach((r) =>
371
+ mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),
372
+ )
373
+ }
374
+ }
375
+
376
+ export function selectRowsFn<
377
+ TFeatures extends TableFeatures,
378
+ TData extends RowData,
379
+ >(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {
380
+ const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []
381
+ const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}
382
+
383
+ // Filters top level and nested rows
384
+ const recurseRows = (
385
+ rows: Array<Row<TFeatures, TData>>,
386
+ depth = 0,
387
+ ): Array<Row<TFeatures, TData>> => {
388
+ return rows
389
+ .map((row) => {
390
+ const isSelected = isRowSelected(row)
391
+
392
+ if (isSelected) {
393
+ newSelectedFlatRows.push(row)
394
+ newSelectedRowsById[row.id] = row
395
+ }
396
+
397
+ if (row.subRows.length) {
398
+ row = {
399
+ ...row,
400
+ subRows: recurseRows(row.subRows, depth + 1),
401
+ }
402
+ }
403
+
404
+ if (isSelected) {
405
+ return row
406
+ }
407
+ })
408
+ .filter((x) => !!x)
409
+ }
410
+
411
+ return {
412
+ rows: recurseRows(rowModel.rows),
413
+ flatRows: newSelectedFlatRows,
414
+ rowsById: newSelectedRowsById,
415
+ }
416
+ }
417
+
418
+ export function isRowSelected<
419
+ TFeatures extends TableFeatures,
420
+ TData extends RowData,
421
+ >(row: Row<TFeatures, TData>): boolean {
422
+ return (row.table.store.state.rowSelection ?? {})[row.id] ?? false
423
+ }
424
+
425
+ export function isSubRowSelected<
426
+ TFeatures extends TableFeatures,
427
+ TData extends RowData,
428
+ >(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {
429
+ if (!row.subRows.length) return false
430
+
431
+ let allChildrenSelected = true
432
+ let someSelected = false
433
+
434
+ row.subRows.forEach((subRow) => {
435
+ // Bail out early if we know both of these
436
+ if (someSelected && !allChildrenSelected) {
437
+ return
438
+ }
439
+
440
+ if (row_getCanSelect(subRow)) {
441
+ if (isRowSelected(subRow)) {
442
+ someSelected = true
443
+ } else {
444
+ allChildrenSelected = false
445
+ }
446
+ }
447
+
448
+ // Check row selection of nested subrows
449
+ if (subRow.subRows.length) {
450
+ const subRowChildrenSelected = isSubRowSelected(subRow)
451
+ if (subRowChildrenSelected === 'all') {
452
+ someSelected = true
453
+ } else if (subRowChildrenSelected === 'some') {
454
+ someSelected = true
455
+ allChildrenSelected = false
456
+ } else {
457
+ allChildrenSelected = false
458
+ }
459
+ }
460
+ })
461
+
462
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
463
+ return allChildrenSelected ? 'all' : someSelected ? 'some' : false
464
+ }
@@ -0,0 +1,147 @@
1
+ import { tableMemo } from '../../utils'
2
+ import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
3
+ import { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'
4
+ import type { Column_Internal } from '../../types/Column'
5
+ import type { TableFeatures } from '../../types/TableFeatures'
6
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
7
+ import type { Table, Table_Internal } from '../../types/Table'
8
+ import type { Row } from '../../types/Row'
9
+ import type { SortFn, SortFns } from './rowSortingFeature.types'
10
+ import type { RowData } from '../../types/type-utils'
11
+
12
+ export function createSortedRowModel<
13
+ TFeatures extends TableFeatures,
14
+ TData extends RowData,
15
+ >(
16
+ sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,
17
+ ): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
18
+ return (_table) => {
19
+ const table = _table as Table_Internal<TFeatures, TData>
20
+ if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns
21
+ return tableMemo({
22
+ feature: 'rowSortingFeature',
23
+ table,
24
+ fnName: 'table.getSortedRowModel',
25
+ memoDeps: () => [table.store.state.sorting, table.getPreSortedRowModel()],
26
+ fn: () => _createSortedRowModel(table),
27
+ onAfterUpdate: () => table_autoResetPageIndex(table),
28
+ })
29
+ }
30
+ }
31
+
32
+ function _createSortedRowModel<
33
+ TFeatures extends TableFeatures,
34
+ TData extends RowData = any,
35
+ >(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
36
+ const preSortedRowModel = table.getPreSortedRowModel()
37
+ const sorting = table.store.state.sorting
38
+
39
+ if (!preSortedRowModel.rows.length || !sorting?.length) {
40
+ return preSortedRowModel
41
+ }
42
+
43
+ const sortedFlatRows: Array<Row<TFeatures, TData>> = []
44
+
45
+ // Filter out sortings that correspond to non existing columns
46
+ const availableSorting = sorting.filter((sort) =>
47
+ column_getCanSort(
48
+ table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,
49
+ ),
50
+ )
51
+
52
+ const columnInfoById: Record<
53
+ string,
54
+ {
55
+ sortUndefined?: false | -1 | 1 | 'first' | 'last'
56
+ invertSorting?: boolean
57
+ sortFn: SortFn<TFeatures, TData>
58
+ }
59
+ > = {}
60
+
61
+ availableSorting.forEach((sortEntry) => {
62
+ const column = table.getColumn(sortEntry.id) as
63
+ | Column_Internal<TFeatures, TData>
64
+ | undefined
65
+ if (!column) return
66
+
67
+ columnInfoById[sortEntry.id] = {
68
+ sortUndefined: column.columnDef.sortUndefined,
69
+ invertSorting: column.columnDef.invertSorting,
70
+ sortFn: column_getSortFn(column),
71
+ }
72
+ })
73
+
74
+ const sortData = (rows: Array<Row<TFeatures, TData>>) => {
75
+ // This will also perform a stable sorting using the row index
76
+ // if needed.
77
+ // Preserve prototype chain so methods like getValue() remain accessible
78
+ const sortedData = rows.map((row) => {
79
+ const cloned = Object.create(Object.getPrototypeOf(row))
80
+ return Object.assign(cloned, row)
81
+ })
82
+
83
+ sortedData.sort((rowA, rowB) => {
84
+ for (const sortEntry of availableSorting) {
85
+ const columnInfo = columnInfoById[sortEntry.id]!
86
+ const sortUndefined = columnInfo.sortUndefined
87
+ const isDesc = sortEntry.desc
88
+
89
+ let sortInt = 0
90
+
91
+ // All sorting ints should always return in ascending order
92
+ if (sortUndefined) {
93
+ const aValue = rowA.getValue(sortEntry.id)
94
+ const bValue = rowB.getValue(sortEntry.id)
95
+
96
+ const aUndefined = aValue === undefined
97
+ const bUndefined = bValue === undefined
98
+
99
+ if (aUndefined || bUndefined) {
100
+ if (sortUndefined === 'first') return aUndefined ? -1 : 1
101
+ if (sortUndefined === 'last') return aUndefined ? 1 : -1
102
+ sortInt =
103
+ aUndefined && bUndefined
104
+ ? 0
105
+ : aUndefined
106
+ ? sortUndefined
107
+ : -sortUndefined
108
+ }
109
+ }
110
+
111
+ if (sortInt === 0) {
112
+ sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)
113
+ }
114
+
115
+ // If sorting is non-zero, take care of desc and inversion
116
+ if (sortInt !== 0) {
117
+ if (isDesc) {
118
+ sortInt *= -1
119
+ }
120
+
121
+ if (columnInfo.invertSorting) {
122
+ sortInt *= -1
123
+ }
124
+
125
+ return sortInt
126
+ }
127
+ }
128
+ return rowA.index - rowB.index
129
+ })
130
+
131
+ // If there are sub-rows, sort them
132
+ sortedData.forEach((row) => {
133
+ sortedFlatRows.push(row)
134
+ if (row.subRows.length) {
135
+ row.subRows = sortData(row.subRows)
136
+ }
137
+ })
138
+
139
+ return sortedData
140
+ }
141
+
142
+ return {
143
+ rows: sortData(preSortedRowModel.rows),
144
+ flatRows: sortedFlatRows,
145
+ rowsById: preSortedRowModel.rowsById,
146
+ }
147
+ }