@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,88 @@
1
+ import { constructRow } from '../rows/constructRow'
2
+ import { tableMemo } from '../../utils'
3
+ import { table_autoResetPageIndex } from '../../features/row-pagination/rowPaginationFeature.utils'
4
+ import type { Table, Table_Internal } from '../../types/Table'
5
+ import type { RowModel } from './coreRowModelsFeature.types'
6
+ import type { TableFeatures } from '../../types/TableFeatures'
7
+ import type { Row } from '../../types/Row'
8
+ import type { RowData } from '../../types/type-utils'
9
+
10
+ export function createCoreRowModel<
11
+ TFeatures extends TableFeatures,
12
+ TData extends RowData,
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: 'coreRowModelsFeature',
18
+ table,
19
+ fnName: 'table.getCoreRowModel',
20
+ memoDeps: () => [table.options.data],
21
+ fn: () => _createCoreRowModel(table, table.options.data),
22
+ onAfterUpdate: () => table_autoResetPageIndex(table),
23
+ })
24
+ }
25
+ }
26
+
27
+ function _createCoreRowModel<
28
+ TFeatures extends TableFeatures,
29
+ TData extends RowData,
30
+ >(
31
+ table: Table_Internal<TFeatures, TData>,
32
+ data: Array<TData>,
33
+ ): {
34
+ rows: Array<Row<TFeatures, TData>>
35
+ flatRows: Array<Row<TFeatures, TData>>
36
+ rowsById: Record<string, Row<TFeatures, TData>>
37
+ } {
38
+ const rowModel: RowModel<TFeatures, TData> = {
39
+ rows: [],
40
+ flatRows: [],
41
+ rowsById: {},
42
+ }
43
+
44
+ const accessRows = (
45
+ originalRows: Array<TData>,
46
+ depth = 0,
47
+ parentRow?: Row<TFeatures, TData>,
48
+ ): Array<Row<TFeatures, TData>> => {
49
+ const rows = [] as Array<Row<TFeatures, TData>>
50
+
51
+ for (let i = 0; i < originalRows.length; i++) {
52
+ const originalRow = originalRows[i]!
53
+ // Make the row
54
+ const row = constructRow(
55
+ table,
56
+ table.getRowId(originalRow, i, parentRow),
57
+ originalRow,
58
+ i,
59
+ depth,
60
+ undefined,
61
+ parentRow?.id,
62
+ )
63
+
64
+ // Keep track of every row in a flat array
65
+ rowModel.flatRows.push(row)
66
+ // Also keep track of every row by its ID
67
+ rowModel.rowsById[row.id] = row
68
+ // Push table row into parent
69
+ rows.push(row)
70
+
71
+ // Get the original subrows
72
+ if (table.options.getSubRows) {
73
+ row.originalSubRows = table.options.getSubRows(originalRow, i)
74
+
75
+ // Then recursively access them
76
+ if (row.originalSubRows?.length) {
77
+ row.subRows = accessRows(row.originalSubRows, depth + 1, row)
78
+ }
79
+ }
80
+ }
81
+
82
+ return rows
83
+ }
84
+
85
+ rowModel.rows = accessRows(data)
86
+
87
+ return rowModel
88
+ }
@@ -0,0 +1,59 @@
1
+ import type { Table_Internal } from '../../types/Table'
2
+ import type { RowData } from '../../types/type-utils'
3
+ import type { TableFeatures } from '../../types/TableFeatures'
4
+ import type { Row } from '../../types/Row'
5
+ import type { Row_CoreProperties } from './coreRowsFeature.types'
6
+
7
+ /**
8
+ * Creates or retrieves the row prototype for a table.
9
+ * The prototype is cached on the table and shared by all row instances.
10
+ */
11
+ function getRowPrototype<
12
+ TFeatures extends TableFeatures,
13
+ TData extends RowData,
14
+ >(table: Table_Internal<TFeatures, TData>): object {
15
+ if (!table._rowPrototype) {
16
+ table._rowPrototype = { table }
17
+ for (const feature of Object.values(table._features)) {
18
+ feature.assignRowPrototype?.(table._rowPrototype, table)
19
+ }
20
+ }
21
+ return table._rowPrototype
22
+ }
23
+
24
+ export const constructRow = <
25
+ TFeatures extends TableFeatures,
26
+ TData extends RowData,
27
+ >(
28
+ table: Table_Internal<TFeatures, TData>,
29
+ id: string,
30
+ original: TData,
31
+ rowIndex: number,
32
+ depth: number,
33
+ subRows?: Array<Row<TFeatures, TData>>,
34
+ parentId?: string,
35
+ ): Row<TFeatures, TData> => {
36
+ // Create row with shared prototype for memory efficiency
37
+ const rowPrototype = getRowPrototype(table)
38
+ const row = Object.create(rowPrototype) as Row_CoreProperties<
39
+ TFeatures,
40
+ TData
41
+ >
42
+
43
+ // Only assign instance-specific properties
44
+ row._uniqueValuesCache = {}
45
+ row._valuesCache = {}
46
+ row.depth = depth
47
+ row.id = id
48
+ row.index = rowIndex
49
+ row.original = original
50
+ row.parentId = parentId
51
+ row.subRows = subRows ?? []
52
+
53
+ // Initialize instance-specific data (e.g., caches) for features that need it
54
+ for (const feature of Object.values(table._features)) {
55
+ feature.initRowInstanceData?.(row as Row<TFeatures, TData>)
56
+ }
57
+
58
+ return row as Row<TFeatures, TData>
59
+ }
@@ -0,0 +1,84 @@
1
+ import { assignPrototypeAPIs, assignTableAPIs } from '../../utils'
2
+ import {
3
+ row_getAllCells,
4
+ row_getAllCellsByColumnId,
5
+ row_getLeafRows,
6
+ row_getParentRow,
7
+ row_getParentRows,
8
+ row_getUniqueValues,
9
+ row_getValue,
10
+ row_renderValue,
11
+ table_getRow,
12
+ table_getRowId,
13
+ } from './coreRowsFeature.utils'
14
+ import type { RowData } from '../../types/type-utils'
15
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
16
+ // import type {
17
+ // Row_Row,
18
+ // TableOptions_Rows,
19
+ // Table_Rows,
20
+ // } from './coreRowsFeature.types'
21
+
22
+ interface CoreRowsFeatureConstructors<
23
+ TFeatures extends TableFeatures,
24
+ TData extends RowData,
25
+ > {
26
+ // Row: Row_Row<TFeatures, TData>
27
+ // TableOptions: TableOptions_Rows<TFeatures, TData>
28
+ // Table: Table_Rows<TFeatures, TData>
29
+ }
30
+
31
+ export function constructCoreRowsFeature<
32
+ TFeatures extends TableFeatures,
33
+ TData extends RowData,
34
+ >(): TableFeature<CoreRowsFeatureConstructors<TFeatures, TData>> {
35
+ return {
36
+ assignRowPrototype: (prototype, table) => {
37
+ assignPrototypeAPIs('coreRowsFeature', prototype, table, {
38
+ row_getAllCellsByColumnId: {
39
+ fn: (row) => row_getAllCellsByColumnId(row),
40
+ memoDeps: (row) => [row.getAllCells()],
41
+ },
42
+ row_getAllCells: {
43
+ fn: (row) => row_getAllCells(row),
44
+ memoDeps: (row) => [row.table.getAllLeafColumns()],
45
+ },
46
+ row_getLeafRows: {
47
+ fn: (row) => row_getLeafRows(row),
48
+ },
49
+ row_getParentRow: {
50
+ fn: (row) => row_getParentRow(row),
51
+ },
52
+ row_getParentRows: {
53
+ fn: (row) => row_getParentRows(row),
54
+ },
55
+ row_getUniqueValues: {
56
+ fn: (row, columnId) => row_getUniqueValues(row, columnId),
57
+ },
58
+ row_getValue: {
59
+ fn: (row, columnId) => row_getValue(row, columnId),
60
+ },
61
+ row_renderValue: {
62
+ fn: (row, columnId) => row_renderValue(row, columnId),
63
+ },
64
+ })
65
+ },
66
+ constructTableAPIs: (table) => {
67
+ assignTableAPIs('coreRowsFeature', table, {
68
+ table_getRowId: {
69
+ fn: (originalRow, index, parent) =>
70
+ table_getRowId(originalRow, table, index, parent),
71
+ },
72
+ table_getRow: {
73
+ fn: (id: string, searchAll?: boolean) =>
74
+ table_getRow(table, id, searchAll),
75
+ },
76
+ })
77
+ },
78
+ }
79
+ }
80
+
81
+ /**
82
+ * The Core Rows feature provides the core row functionality.
83
+ */
84
+ export const coreRowsFeature = constructCoreRowsFeature()
@@ -0,0 +1,111 @@
1
+ import type { Table_Internal } from '../../types/Table'
2
+ import type { RowData } from '../../types/type-utils'
3
+ import type { TableFeatures } from '../../types/TableFeatures'
4
+ import type { Row } from '../../types/Row'
5
+ import type { Cell } from '../../types/Cell'
6
+
7
+ export interface Row_CoreProperties<
8
+ TFeatures extends TableFeatures,
9
+ TData extends RowData,
10
+ > {
11
+ _uniqueValuesCache: Record<string, unknown>
12
+ _valuesCache: Record<string, unknown>
13
+ /**
14
+ * The depth of the row (if nested or grouped) relative to the root row array.
15
+ */
16
+ depth: number
17
+ /**
18
+ * The resolved unique identifier for the row resolved via the `options.getRowId` option. Defaults to the row's index (or relative index if it is a subRow).
19
+ */
20
+ id: string
21
+ /**
22
+ * The index of the row within its parent array (or the root data array).
23
+ */
24
+ index: number
25
+ /**
26
+ * The original row object provided to the table. If the row is a grouped row, the original row object will be the first original in the group.
27
+ */
28
+ original: TData
29
+ /**
30
+ * An array of the original subRows as returned by the `options.getSubRows` option.
31
+ */
32
+ originalSubRows?: Array<TData>
33
+ /**
34
+ * If nested, this row's parent row id.
35
+ */
36
+ parentId?: string
37
+ /**
38
+ * An array of subRows for the row as returned and created by the `options.getSubRows` option.
39
+ */
40
+ subRows: Array<Row<TFeatures, TData>>
41
+ /**
42
+ * Reference to the parent table instance.
43
+ */
44
+ table: Table_Internal<TFeatures, TData>
45
+ }
46
+
47
+ export interface Row_Row<
48
+ TFeatures extends TableFeatures,
49
+ TData extends RowData,
50
+ > extends Row_CoreProperties<TFeatures, TData> {
51
+ getAllCellsByColumnId: () => Record<string, Cell<TFeatures, TData, unknown>>
52
+ /**
53
+ * Returns all of the cells for the row.
54
+ */
55
+ getAllCells: () => Array<Cell<TFeatures, TData, unknown>>
56
+ /**
57
+ * Returns the leaf rows for the row, not including any parent rows.
58
+ */
59
+ getLeafRows: () => Array<Row<TFeatures, TData>>
60
+ /**
61
+ * Returns the parent row for the row, if it exists.
62
+ */
63
+ getParentRow: () => Row<TFeatures, TData> | undefined
64
+ /**
65
+ * Returns the parent rows for the row, all the way up to a root row.
66
+ */
67
+ getParentRows: () => Array<Row<TFeatures, TData>>
68
+ /**
69
+ * Returns a unique array of values from the row for a given columnId.
70
+ */
71
+ getUniqueValues: <TValue>(columnId: string) => Array<TValue>
72
+ /**
73
+ * Returns the value from the row for a given columnId.
74
+ */
75
+ getValue: <TValue>(columnId: string) => TValue
76
+ /**
77
+ * Renders the value for the row in a given columnId the same as `getValue`, but will return the `renderFallbackValue` if no value is found.
78
+ */
79
+ renderValue: <TValue>(columnId: string) => TValue
80
+ }
81
+
82
+ export interface TableOptions_Rows<
83
+ TFeatures extends TableFeatures,
84
+ TData extends RowData,
85
+ > {
86
+ /**
87
+ * This optional function is used to derive a unique ID for any given row. If not provided the rows index is used (nested rows join together with `.` using their grandparents' index eg. `index.index.index`). If you need to identify individual rows that are originating from any server-side operations, it's suggested you use this function to return an ID that makes sense regardless of network IO/ambiguity eg. a userId, taskId, database ID field, etc.
88
+ * @example getRowId: row => row.userId
89
+ */
90
+ getRowId?: (
91
+ originalRow: TData,
92
+ index: number,
93
+ parent?: Row<TFeatures, TData>,
94
+ ) => string
95
+ /**
96
+ * This optional function is used to access the sub rows for any given row. If you are using nested rows, you will need to use this function to return the sub rows object (or undefined) from the row.
97
+ * @example getSubRows: row => row.subRows
98
+ */
99
+ getSubRows?: (originalRow: TData, index: number) => undefined | Array<TData>
100
+ }
101
+
102
+ export interface Table_Rows<
103
+ TFeatures extends TableFeatures,
104
+ TData extends RowData,
105
+ > {
106
+ getRowId: (_: TData, index: number, parent?: Row<TFeatures, TData>) => string
107
+ /**
108
+ * Returns the row with the given ID.
109
+ */
110
+ getRow: (id: string, searchAll?: boolean) => Row<TFeatures, TData>
111
+ }
@@ -0,0 +1,152 @@
1
+ import { flattenBy } from '../../utils'
2
+ import { constructCell } from '../cells/constructCell'
3
+ import type { Table_Internal } from '../../types/Table'
4
+ import type { RowData } from '../../types/type-utils'
5
+ import type { TableFeatures } from '../../types/TableFeatures'
6
+ import type { Row } from '../../types/Row'
7
+ import type { Cell } from '../../types/Cell'
8
+
9
+ export function row_getValue<
10
+ TFeatures extends TableFeatures,
11
+ TData extends RowData,
12
+ >(row: Row<TFeatures, TData>, columnId: string) {
13
+ if (row._valuesCache.hasOwnProperty(columnId)) {
14
+ return row._valuesCache[columnId]
15
+ }
16
+
17
+ const column = row.table.getColumn(columnId)
18
+
19
+ if (!column?.accessorFn) {
20
+ return undefined
21
+ }
22
+
23
+ row._valuesCache[columnId] = column.accessorFn(row.original, row.index)
24
+
25
+ return row._valuesCache[columnId]
26
+ }
27
+
28
+ export function row_getUniqueValues<
29
+ TFeatures extends TableFeatures,
30
+ TData extends RowData,
31
+ >(row: Row<TFeatures, TData>, columnId: string) {
32
+ if (row._uniqueValuesCache.hasOwnProperty(columnId)) {
33
+ return row._uniqueValuesCache[columnId]
34
+ }
35
+
36
+ const column = row.table.getColumn(columnId)
37
+
38
+ if (!column?.accessorFn) {
39
+ return undefined
40
+ }
41
+
42
+ if (!column.columnDef.getUniqueValues) {
43
+ row._uniqueValuesCache[columnId] = [row.getValue(columnId)]
44
+ return row._uniqueValuesCache[columnId]
45
+ }
46
+
47
+ row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(
48
+ row.original,
49
+ row.index,
50
+ )
51
+
52
+ return row._uniqueValuesCache[columnId]
53
+ }
54
+
55
+ export function row_renderValue<
56
+ TFeatures extends TableFeatures,
57
+ TData extends RowData,
58
+ >(row: Row<TFeatures, TData>, columnId: string) {
59
+ return row.getValue(columnId) ?? row.table.options.renderFallbackValue
60
+ }
61
+
62
+ export function row_getLeafRows<
63
+ TFeatures extends TableFeatures,
64
+ TData extends RowData,
65
+ >(row: Row<TFeatures, TData>): Array<Row<TFeatures, TData>> {
66
+ return flattenBy(row.subRows, (d) => d.subRows)
67
+ }
68
+
69
+ export function row_getParentRow<
70
+ TFeatures extends TableFeatures,
71
+ TData extends RowData,
72
+ >(row: Row<TFeatures, TData>) {
73
+ return row.parentId ? row.table.getRow(row.parentId, true) : undefined
74
+ }
75
+
76
+ export function row_getParentRows<
77
+ TFeatures extends TableFeatures,
78
+ TData extends RowData,
79
+ >(row: Row<TFeatures, TData>) {
80
+ const parentRows: Array<Row<TFeatures, TData>> = []
81
+ let currentRow = row
82
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
83
+ while (true) {
84
+ const parentRow = currentRow.getParentRow()
85
+ if (!parentRow) break
86
+ parentRows.push(parentRow)
87
+ currentRow = parentRow
88
+ }
89
+ return parentRows.reverse()
90
+ }
91
+
92
+ export function row_getAllCells<
93
+ TFeatures extends TableFeatures,
94
+ TData extends RowData,
95
+ >(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>> {
96
+ return row.table.getAllLeafColumns().map((column) => {
97
+ return constructCell(column, row, row.table)
98
+ })
99
+ }
100
+
101
+ export function row_getAllCellsByColumnId<
102
+ TFeatures extends TableFeatures,
103
+ TData extends RowData,
104
+ >(row: Row<TFeatures, TData>) {
105
+ return row.getAllCells().reduce(
106
+ (acc, cell) => {
107
+ acc[cell.column.id] = cell
108
+ return acc
109
+ },
110
+ {} as Record<string, Cell<TFeatures, TData, unknown>>,
111
+ )
112
+ }
113
+
114
+ export function table_getRowId<
115
+ TFeatures extends TableFeatures,
116
+ TData extends RowData,
117
+ >(
118
+ originalRow: TData,
119
+ table: Table_Internal<TFeatures, TData>,
120
+ index: number,
121
+ parent?: Row<TFeatures, TData>,
122
+ ) {
123
+ return (
124
+ table.options.getRowId?.(originalRow, index, parent) ??
125
+ `${parent ? [parent.id, index].join('.') : index}`
126
+ )
127
+ }
128
+
129
+ export function table_getRow<
130
+ TFeatures extends TableFeatures,
131
+ TData extends RowData,
132
+ >(
133
+ table: Table_Internal<TFeatures, TData>,
134
+ rowId: string,
135
+ searchAll?: boolean,
136
+ ): Row<TFeatures, TData> {
137
+ // TODO - simplify this across different row models
138
+ let row = (searchAll ? table.getPrePaginatedRowModel() : table.getRowModel())
139
+ .rowsById[rowId]
140
+
141
+ if (!row) {
142
+ row = table.getCoreRowModel().rowsById[rowId]
143
+ if (!row) {
144
+ if (process.env.NODE_ENV === 'development') {
145
+ throw new Error(`getRow could not find row with ID: ${rowId}`)
146
+ }
147
+ throw new Error()
148
+ }
149
+ }
150
+
151
+ return row
152
+ }
@@ -0,0 +1,89 @@
1
+ import { createStore } from '@tanstack/store'
2
+ import { coreFeatures } from '../coreFeatures'
3
+ import type { Store } from '@tanstack/store'
4
+ import type { RowData } from '../../types/type-utils'
5
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
6
+ import type { Table, Table_Internal } from '../../types/Table'
7
+ import type { TableOptions } from '../../types/TableOptions'
8
+ import type { TableState } from '../../types/TableState'
9
+
10
+ export function getInitialTableState<TFeatures extends TableFeatures>(
11
+ features: TFeatures,
12
+ initialState: Partial<TableState<TFeatures>> | undefined = {},
13
+ ): TableState<TFeatures> {
14
+ Object.values(features).forEach((feature) => {
15
+ initialState =
16
+ feature.getInitialState?.(initialState as TableState<TFeatures>) ??
17
+ initialState
18
+ })
19
+ return structuredClone(initialState) as TableState<TFeatures>
20
+ }
21
+
22
+ export function createTableStore<TFeatures extends TableFeatures>(
23
+ features: TFeatures,
24
+ initialState: Partial<TableState<TFeatures>> | undefined = {},
25
+ ): Store<TableState<TFeatures>> {
26
+ return createStore(getInitialTableState(features, initialState))
27
+ }
28
+
29
+ export function constructTable<
30
+ TFeatures extends TableFeatures,
31
+ TData extends RowData,
32
+ >(tableOptions: TableOptions<TFeatures, TData>): Table<TFeatures, TData> {
33
+ const table = {
34
+ _features: { ...coreFeatures, ...tableOptions._features },
35
+ _rowModels: {},
36
+ _rowModelFns: {},
37
+ } as Table_Internal<TFeatures, TData>
38
+
39
+ const featuresList: Array<TableFeature<{}>> = Object.values(table._features)
40
+
41
+ const defaultOptions = featuresList.reduce((obj, feature) => {
42
+ return Object.assign(obj, feature.getDefaultTableOptions?.(table))
43
+ }, {}) as TableOptions<TFeatures, TData>
44
+
45
+ table.options = {
46
+ ...defaultOptions,
47
+ ...tableOptions,
48
+ }
49
+
50
+ table.initialState = getInitialTableState(
51
+ table._features,
52
+ table.options.initialState,
53
+ )
54
+
55
+ table.baseStore = table.options.store ?? createStore(table.initialState)
56
+
57
+ table.store = createStore(() => {
58
+ const state = table.baseStore.state
59
+ return {
60
+ ...state,
61
+ ...(table.options.state ?? {}),
62
+ }
63
+ })
64
+
65
+ if (
66
+ process.env.NODE_ENV === 'development' &&
67
+ (tableOptions.debugAll || tableOptions.debugTable)
68
+ ) {
69
+ const features = Object.keys(table._features)
70
+ const rowModels = Object.keys(table.options._rowModels || {})
71
+ const states = Object.keys(table.initialState)
72
+
73
+ console.log(
74
+ `Constructing Table Instance
75
+
76
+ Features: ${features.join('\n ')}
77
+
78
+ Row Models: ${rowModels.length ? rowModels.join('\n ') : '(none)'}
79
+
80
+ States: ${states.join('\n ')}`,
81
+ )
82
+ }
83
+
84
+ for (const feature of featuresList) {
85
+ feature.constructTableAPIs?.(table)
86
+ }
87
+
88
+ return table
89
+ }
@@ -0,0 +1,36 @@
1
+ import { assignTableAPIs } from '../../utils'
2
+ import { table_reset, table_setOptions } from './coreTablesFeature.utils'
3
+ import type { RowData } from '../../types/type-utils'
4
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
5
+ // import type { TableOptions_Table, Table_Table } from './coreTablesFeature.types'
6
+
7
+ interface CoreTablesFeatureConstructors<
8
+ TFeatures extends TableFeatures,
9
+ TData extends RowData,
10
+ > {
11
+ // Table: Table_Table<TFeatures, TData>
12
+ // TableOptions: TableOptions_Table<TFeatures, TData>
13
+ }
14
+
15
+ export function constructCoreTablesFeature<
16
+ TFeatures extends TableFeatures,
17
+ TData extends RowData,
18
+ >(): TableFeature<CoreTablesFeatureConstructors<TFeatures, TData>> {
19
+ return {
20
+ constructTableAPIs: (table) => {
21
+ assignTableAPIs('coreTablesFeature', table, {
22
+ table_reset: {
23
+ fn: () => table_reset(table),
24
+ },
25
+ table_setOptions: {
26
+ fn: (updater) => table_setOptions(table, updater),
27
+ },
28
+ })
29
+ },
30
+ }
31
+ }
32
+
33
+ /**
34
+ * The Core Tables feature provides the core table functionality for handling state and options.
35
+ */
36
+ export const coreTablesFeature = constructCoreTablesFeature()