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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/esm/core/cells/constructCell.d.ts +7 -0
  2. package/dist/esm/core/cells/constructCell.js +21 -0
  3. package/dist/esm/core/cells/constructCell.js.map +1 -0
  4. package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
  5. package/dist/esm/core/cells/coreCellsFeature.js +26 -0
  6. package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
  7. package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
  8. package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
  9. package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
  10. package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
  11. package/dist/esm/core/columns/constructColumn.d.ts +6 -0
  12. package/dist/esm/core/columns/constructColumn.js +60 -0
  13. package/dist/esm/core/columns/constructColumn.js.map +1 -0
  14. package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
  15. package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
  16. package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
  17. package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
  18. package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
  19. package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
  20. package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
  21. package/dist/esm/core/coreFeatures.d.ts +15 -0
  22. package/dist/esm/core/coreFeatures.js +18 -0
  23. package/dist/esm/core/coreFeatures.js.map +1 -0
  24. package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
  25. package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
  26. package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
  27. package/dist/esm/core/headers/constructHeader.d.ts +12 -0
  28. package/dist/esm/core/headers/constructHeader.js +28 -0
  29. package/dist/esm/core/headers/constructHeader.js.map +1 -0
  30. package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
  31. package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
  32. package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
  33. package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
  34. package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
  35. package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
  36. package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
  37. package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
  38. package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
  39. package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
  40. package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
  41. package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
  42. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
  43. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
  44. package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
  45. package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
  46. package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
  47. package/dist/esm/core/rows/constructRow.d.ts +5 -0
  48. package/dist/esm/core/rows/constructRow.js +29 -0
  49. package/dist/esm/core/rows/constructRow.js.map +1 -0
  50. package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
  51. package/dist/esm/core/rows/coreRowsFeature.js +52 -0
  52. package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
  53. package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
  54. package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
  55. package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
  56. package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
  57. package/dist/esm/core/table/constructTable.d.ts +9 -0
  58. package/dist/esm/core/table/constructTable.js +65 -0
  59. package/dist/esm/core/table/constructTable.js.map +1 -0
  60. package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
  61. package/dist/esm/core/table/coreTablesFeature.js +22 -0
  62. package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
  63. package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
  64. package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
  65. package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
  66. package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
  67. package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
  68. package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
  69. package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
  70. package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
  71. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
  72. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
  73. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
  74. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
  75. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
  76. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
  77. package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
  78. package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
  79. package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
  80. package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
  81. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
  82. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
  83. package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
  84. package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
  85. package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
  86. package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
  87. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
  88. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
  89. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
  90. package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
  91. package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
  92. package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
  93. package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
  94. package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
  95. package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
  96. package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
  97. package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
  98. package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
  99. package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
  100. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
  101. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
  102. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
  103. package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
  104. package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
  105. package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
  106. package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
  107. package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
  108. package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
  109. package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
  110. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
  111. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
  112. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
  113. package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
  114. package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
  115. package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
  116. package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
  117. package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
  118. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
  119. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
  120. package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
  121. package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
  122. package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
  123. package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
  124. package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
  125. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
  126. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
  127. package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
  128. package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
  129. package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
  130. package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
  131. package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
  132. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
  133. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
  134. package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
  135. package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
  136. package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
  137. package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
  138. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
  139. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
  140. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
  141. package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
  142. package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
  143. package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
  144. package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
  145. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
  146. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
  147. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
  148. package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
  149. package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
  150. package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
  151. package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
  152. package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
  153. package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
  154. package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
  155. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
  156. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
  157. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
  158. package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
  159. package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
  160. package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
  161. package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
  162. package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
  163. package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
  164. package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
  165. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
  166. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
  167. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
  168. package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
  169. package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
  170. package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
  171. package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
  172. package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
  173. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
  174. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
  175. package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
  176. package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
  177. package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
  178. package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
  179. package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
  180. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
  181. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
  182. package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
  183. package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
  184. package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
  185. package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
  186. package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
  187. package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
  188. package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
  189. package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
  190. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
  191. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
  192. package/dist/esm/features/stockFeatures.d.ts +31 -0
  193. package/dist/esm/features/stockFeatures.js +34 -0
  194. package/dist/esm/features/stockFeatures.js.map +1 -0
  195. package/dist/esm/fns/aggregationFns.d.ts +49 -0
  196. package/dist/esm/fns/aggregationFns.js +110 -0
  197. package/dist/esm/fns/aggregationFns.js.map +1 -0
  198. package/dist/esm/fns/filterFns.d.ts +76 -0
  199. package/dist/esm/fns/filterFns.js +134 -0
  200. package/dist/esm/fns/filterFns.js.map +1 -0
  201. package/dist/esm/fns/sortFns.d.ts +17 -0
  202. package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
  203. package/dist/esm/fns/sortFns.js.map +1 -0
  204. package/dist/esm/helpers/columnHelper.d.ts +61 -0
  205. package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
  206. package/dist/esm/helpers/columnHelper.js.map +1 -0
  207. package/dist/esm/helpers/tableFeatures.d.ts +13 -0
  208. package/dist/esm/helpers/tableFeatures.js +7 -0
  209. package/dist/esm/helpers/tableFeatures.js.map +1 -0
  210. package/dist/esm/helpers/tableHelper.d.ts +25 -0
  211. package/dist/esm/helpers/tableHelper.js +13 -0
  212. package/dist/esm/helpers/tableHelper.js.map +1 -0
  213. package/dist/esm/helpers/tableOptions.d.ts +23 -0
  214. package/dist/esm/helpers/tableOptions.js +7 -0
  215. package/dist/esm/helpers/tableOptions.js.map +1 -0
  216. package/dist/esm/index.d.ts +109 -33
  217. package/dist/esm/index.js +397 -65
  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 -52
  234. package/dist/esm/utils.js.map +1 -1
  235. package/package.json +21 -12
  236. package/src/core/cells/constructCell.ts +49 -0
  237. package/src/core/cells/coreCellsFeature.ts +44 -0
  238. package/src/core/cells/coreCellsFeature.types.ts +68 -0
  239. package/src/core/cells/coreCellsFeature.utils.ts +35 -0
  240. package/src/core/columns/constructColumn.ts +111 -0
  241. package/src/core/columns/coreColumnsFeature.ts +90 -0
  242. package/src/core/columns/coreColumnsFeature.types.ts +103 -0
  243. package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
  244. package/src/core/coreFeatures.ts +24 -0
  245. package/src/core/headers/buildHeaderGroups.ts +177 -0
  246. package/src/core/headers/constructHeader.ts +61 -0
  247. package/src/core/headers/coreHeadersFeature.ts +98 -0
  248. package/src/core/headers/coreHeadersFeature.types.ts +123 -0
  249. package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
  250. package/src/core/row-models/coreRowModelsFeature.ts +78 -0
  251. package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
  252. package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
  253. package/src/core/row-models/createCoreRowModel.ts +88 -0
  254. package/src/core/rows/constructRow.ts +59 -0
  255. package/src/core/rows/coreRowsFeature.ts +84 -0
  256. package/src/core/rows/coreRowsFeature.types.ts +111 -0
  257. package/src/core/rows/coreRowsFeature.utils.ts +152 -0
  258. package/src/core/table/constructTable.ts +95 -0
  259. package/src/core/table/coreTablesFeature.ts +36 -0
  260. package/src/core/table/coreTablesFeature.types.ts +123 -0
  261. package/src/core/table/coreTablesFeature.utils.ts +40 -0
  262. package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
  263. package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
  264. package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
  265. package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
  266. package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
  267. package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
  268. package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
  269. package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
  270. package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
  271. package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
  272. package/src/features/column-filtering/filterRowsUtils.ts +152 -0
  273. package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
  274. package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
  275. package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
  276. package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
  277. package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
  278. package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
  279. package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
  280. package/src/features/column-pinning/columnPinningFeature.ts +324 -0
  281. package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
  282. package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
  283. package/src/features/column-resizing/columnResizingFeature.ts +92 -0
  284. package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
  285. package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
  286. package/src/features/column-sizing/columnSizingFeature.ts +146 -0
  287. package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
  288. package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
  289. package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
  290. package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
  291. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
  292. package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
  293. package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
  294. package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
  295. package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
  296. package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
  297. package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
  298. package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
  299. package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
  300. package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
  301. package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
  302. package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
  303. package/src/features/row-pinning/rowPinningFeature.ts +121 -0
  304. package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
  305. package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
  306. package/src/features/row-selection/rowSelectionFeature.ts +164 -0
  307. package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
  308. package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
  309. package/src/features/row-sorting/createSortedRowModel.ts +147 -0
  310. package/src/features/row-sorting/rowSortingFeature.ts +136 -0
  311. package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
  312. package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
  313. package/src/features/stockFeatures.ts +48 -0
  314. package/src/fns/aggregationFns.ts +220 -0
  315. package/src/fns/filterFns.ts +379 -0
  316. package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
  317. package/src/helpers/columnHelper.ts +117 -0
  318. package/src/helpers/tableFeatures.ts +24 -0
  319. package/src/helpers/tableHelper.ts +61 -0
  320. package/src/helpers/tableOptions.ts +82 -0
  321. package/src/index.ts +156 -42
  322. package/src/types/Cell.ts +41 -0
  323. package/src/types/Column.ts +86 -0
  324. package/src/types/ColumnDef.ts +217 -0
  325. package/src/types/Header.ts +45 -0
  326. package/src/types/HeaderGroup.ts +24 -0
  327. package/src/types/Row.ts +55 -0
  328. package/src/types/RowModel.ts +137 -0
  329. package/src/types/RowModelFns.ts +51 -0
  330. package/src/types/Table.ts +125 -0
  331. package/src/types/TableFeatures.ts +150 -0
  332. package/src/types/TableOptions.ts +125 -0
  333. package/src/types/TableState.ts +88 -0
  334. package/src/types/type-utils.ts +84 -0
  335. package/src/utils.ts +344 -163
  336. package/dist/cjs/aggregationFns.cjs +0 -98
  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 -93
  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 -228
  355. package/dist/cjs/core/table.cjs.map +0 -1
  356. package/dist/cjs/core/table.d.cts +0 -221
  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 -134
  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 -308
  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 -154
  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 -162
  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 -133
  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 -298
  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 -201
  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 -87
  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 -36
  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 -38
  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 -91
  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 -100
  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 -98
  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 -93
  457. package/dist/esm/core/row.js.map +0 -1
  458. package/dist/esm/core/table.d.ts +0 -221
  459. package/dist/esm/core/table.js +0 -228
  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 -134
  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 -308
  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 -154
  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 -162
  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 -133
  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 -298
  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 -201
  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 -36
  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 -38
  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 -91
  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 -527
  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 -273
  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,111 @@
1
+ import {} from '../../utils'
2
+ import type { Table_Internal } from '../../types/Table'
3
+ import type { CellData, RowData } from '../../types/type-utils'
4
+ import type { TableFeatures } from '../../types/TableFeatures'
5
+ import type {
6
+ AccessorFn,
7
+ ColumnDef,
8
+ ColumnDefResolved,
9
+ } from '../../types/ColumnDef'
10
+ import type { Column } from '../../types/Column'
11
+ import type { Column_CoreProperties } from './coreColumnsFeature.types'
12
+
13
+ /**
14
+ * Creates or retrieves the column prototype for a table.
15
+ * The prototype is cached on the table and shared by all column instances.
16
+ */
17
+ function getColumnPrototype<
18
+ TFeatures extends TableFeatures,
19
+ TData extends RowData,
20
+ >(table: Table_Internal<TFeatures, TData>): object {
21
+ if (!table._columnPrototype) {
22
+ table._columnPrototype = { table }
23
+ for (const feature of Object.values(table._features)) {
24
+ feature.assignColumnPrototype?.(table._columnPrototype, table)
25
+ }
26
+ }
27
+ return table._columnPrototype
28
+ }
29
+
30
+ export function constructColumn<
31
+ TFeatures extends TableFeatures,
32
+ TData extends RowData,
33
+ TValue extends CellData = CellData,
34
+ >(
35
+ table: Table_Internal<TFeatures, TData>,
36
+ columnDef: ColumnDef<TFeatures, TData, TValue>,
37
+ depth: number,
38
+ parent?: Column<TFeatures, TData, TValue>,
39
+ ): Column<TFeatures, TData, TValue> {
40
+ const defaultColumn = table.getDefaultColumnDef()
41
+
42
+ const resolvedColumnDef = {
43
+ ...defaultColumn,
44
+ ...columnDef,
45
+ } as ColumnDefResolved<{}, TData, TValue>
46
+
47
+ const accessorKey = resolvedColumnDef.accessorKey
48
+
49
+ const id =
50
+ resolvedColumnDef.id ??
51
+ (accessorKey ? accessorKey.replaceAll('.', '_') : undefined) ??
52
+ (typeof resolvedColumnDef.header === 'string'
53
+ ? resolvedColumnDef.header
54
+ : undefined)
55
+
56
+ let accessorFn: AccessorFn<TData, TValue> | undefined
57
+
58
+ if (resolvedColumnDef.accessorFn) {
59
+ accessorFn = resolvedColumnDef.accessorFn
60
+ } else if (accessorKey) {
61
+ // Support deep accessor keys
62
+ if (accessorKey.includes('.')) {
63
+ accessorFn = (originalRow: TData) => {
64
+ let result = originalRow as Record<string, any> | undefined
65
+
66
+ for (const key of accessorKey.split('.')) {
67
+ result = result?.[key]
68
+ if (process.env.NODE_ENV === 'development' && result === undefined) {
69
+ console.warn(
70
+ `"${key}" in deeply nested key "${accessorKey}" returned undefined.`,
71
+ )
72
+ }
73
+ }
74
+
75
+ return result as TValue
76
+ }
77
+ } else {
78
+ accessorFn = (originalRow: TData) =>
79
+ (originalRow as any)[resolvedColumnDef.accessorKey]
80
+ }
81
+ }
82
+
83
+ if (!id) {
84
+ if (process.env.NODE_ENV === 'development') {
85
+ throw new Error(
86
+ resolvedColumnDef.accessorFn
87
+ ? `coreColumnsFeature require an id when using an accessorFn`
88
+ : `coreColumnsFeature require an id when using a non-string header`,
89
+ )
90
+ }
91
+ throw new Error()
92
+ }
93
+
94
+ // Create column with shared prototype for memory efficiency
95
+ const columnPrototype = getColumnPrototype(table)
96
+ const column = Object.create(columnPrototype) as Column_CoreProperties<
97
+ TFeatures,
98
+ TData,
99
+ TValue
100
+ >
101
+
102
+ // Only assign instance-specific properties
103
+ column.accessorFn = accessorFn
104
+ column.columnDef = resolvedColumnDef as ColumnDef<TFeatures, TData, TValue>
105
+ column.columns = []
106
+ column.depth = depth
107
+ column.id = `${String(id)}`
108
+ column.parent = parent
109
+
110
+ return column as Column<TFeatures, TData, TValue>
111
+ }
@@ -0,0 +1,90 @@
1
+ import { assignPrototypeAPIs, assignTableAPIs } from '../../utils'
2
+ import {
3
+ column_getFlatColumns,
4
+ column_getLeafColumns,
5
+ table_getAllColumns,
6
+ table_getAllFlatColumns,
7
+ table_getAllFlatColumnsById,
8
+ table_getAllLeafColumns,
9
+ table_getColumn,
10
+ table_getDefaultColumnDef,
11
+ } from './coreColumnsFeature.utils'
12
+ import type { RowData } from '../../types/type-utils'
13
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
14
+ // import type {
15
+ // Column_Column,
16
+ // TableOptions_Columns,
17
+ // Table_Columns,
18
+ // } from './coreColumnsFeature.types'
19
+
20
+ interface CoreColumnsFeatureConstructors<
21
+ TFeatures extends TableFeatures,
22
+ TData extends RowData,
23
+ > {
24
+ // Column: Column_Column<TFeatures, TData>
25
+ // Table: Table_Columns<TFeatures, TData>
26
+ // TableOptions: TableOptions_Columns<TFeatures, TData>
27
+ }
28
+
29
+ export function constructCoreColumnsFeature<
30
+ TFeatures extends TableFeatures,
31
+ TData extends RowData,
32
+ >(): TableFeature<CoreColumnsFeatureConstructors<TFeatures, TData>> {
33
+ return {
34
+ assignColumnPrototype: (prototype, table) => {
35
+ assignPrototypeAPIs('coreColumnsFeature', prototype, table, {
36
+ column_getFlatColumns: {
37
+ fn: (column) => column_getFlatColumns(column),
38
+ memoDeps: (column) => [column.table.options.columns],
39
+ },
40
+ column_getLeafColumns: {
41
+ fn: (column) => column_getLeafColumns(column),
42
+ memoDeps: (column) => [
43
+ column.table.store.state.columnOrder,
44
+ column.table.store.state.grouping,
45
+ column.table.options.columns,
46
+ column.table.options.groupedColumnMode,
47
+ ],
48
+ },
49
+ })
50
+ },
51
+
52
+ constructTableAPIs: (table) => {
53
+ assignTableAPIs('coreColumnsFeature', table, {
54
+ table_getDefaultColumnDef: {
55
+ fn: () => table_getDefaultColumnDef(table),
56
+ memoDeps: () => [table.options.defaultColumn],
57
+ },
58
+ table_getAllColumns: {
59
+ fn: () => table_getAllColumns(table),
60
+ memoDeps: () => [table.options.columns],
61
+ },
62
+ table_getAllFlatColumns: {
63
+ fn: () => table_getAllFlatColumns(table),
64
+ memoDeps: () => [table.options.columns],
65
+ },
66
+ table_getAllFlatColumnsById: {
67
+ fn: () => table_getAllFlatColumnsById(table),
68
+ memoDeps: () => [table.options.columns],
69
+ },
70
+ table_getAllLeafColumns: {
71
+ fn: () => table_getAllLeafColumns(table),
72
+ memoDeps: () => [
73
+ table.store.state.columnOrder,
74
+ table.store.state.grouping,
75
+ table.options.columns,
76
+ table.options.groupedColumnMode,
77
+ ],
78
+ },
79
+ table_getColumn: {
80
+ fn: (columnId) => table_getColumn(table, columnId),
81
+ },
82
+ })
83
+ },
84
+ }
85
+ }
86
+
87
+ /**
88
+ * The Core Columns feature provides the core column functionality.
89
+ */
90
+ export const coreColumnsFeature = constructCoreColumnsFeature()
@@ -0,0 +1,103 @@
1
+ import type { Table_Internal } from '../../types/Table'
2
+ import type { CellData, RowData } from '../../types/type-utils'
3
+ import type { TableFeatures } from '../../types/TableFeatures'
4
+ import type { AccessorFn, ColumnDef } from '../../types/ColumnDef'
5
+ import type { Column } from '../../types/Column'
6
+
7
+ export interface Column_CoreProperties<
8
+ TFeatures extends TableFeatures,
9
+ TData extends RowData,
10
+ TValue extends CellData = CellData,
11
+ > {
12
+ /**
13
+ * The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.
14
+ */
15
+ accessorFn?: AccessorFn<TData, TValue>
16
+ /**
17
+ * The original column def used to create the column.
18
+ */
19
+ columnDef: ColumnDef<TFeatures, TData, TValue>
20
+ /**
21
+ * The child column (if the column is a group column). Will be an empty array if the column is not a group column.
22
+ */
23
+ columns: Array<Column<TFeatures, TData, TValue>>
24
+ /**
25
+ * The depth of the column (if grouped) relative to the root column def array.
26
+ */
27
+ depth: number
28
+ /**
29
+ * The resolved unique identifier for the column resolved in this priority:
30
+ - A manual `id` property from the column def
31
+ - The accessor key from the column def
32
+ - The header string from the column def
33
+ */
34
+ id: string
35
+ /**
36
+ * The parent column for this column. Will be undefined if this is a root column.
37
+ */
38
+ parent?: Column<TFeatures, TData, TValue>
39
+ /**
40
+ * Reference to the parent table instance.
41
+ */
42
+ table: Table_Internal<TFeatures, TData>
43
+ }
44
+
45
+ export interface Column_Column<
46
+ TFeatures extends TableFeatures,
47
+ TData extends RowData,
48
+ TValue extends CellData = CellData,
49
+ > extends Column_CoreProperties<TFeatures, TData, TValue> {
50
+ /**
51
+ * Returns the flattened array of this column and all child/grand-child columns for this column.
52
+ */
53
+ getFlatColumns: () => Array<Column<TFeatures, TData, TValue>>
54
+ /**
55
+ * Returns an array of all leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column.
56
+ */
57
+ getLeafColumns: () => Array<Column<TFeatures, TData, TValue>>
58
+ }
59
+
60
+ export interface TableOptions_Columns<
61
+ TFeatures extends TableFeatures,
62
+ TData extends RowData,
63
+ TValue extends CellData = CellData,
64
+ > {
65
+ /**
66
+ * The array of column defs to use for the table.
67
+ */
68
+ columns: Array<ColumnDef<TFeatures, TData, TValue>>
69
+ /**
70
+ * Default column options to use for all column defs supplied to the table.
71
+ */
72
+ defaultColumn?: Partial<ColumnDef<TFeatures, TData, TValue>>
73
+ }
74
+
75
+ export interface Table_Columns<
76
+ TFeatures extends TableFeatures,
77
+ TData extends RowData,
78
+ > {
79
+ /**
80
+ * Returns a map of all flat columns by their ID.
81
+ */
82
+ getAllFlatColumnsById: () => Record<string, Column<TFeatures, TData, unknown>>
83
+ /**
84
+ * Returns the default column options to use for all column defs supplied to the table.
85
+ */
86
+ getDefaultColumnDef: () => Partial<ColumnDef<TFeatures, TData, unknown>>
87
+ /**
88
+ * Returns all columns in the table in their normalized and nested hierarchy.
89
+ */
90
+ getAllColumns: () => Array<Column<TFeatures, TData, unknown>>
91
+ /**
92
+ * Returns all columns in the table flattened to a single level.
93
+ */
94
+ getAllFlatColumns: () => Array<Column<TFeatures, TData, unknown>>
95
+ /**
96
+ * Returns all leaf-node columns in the table flattened to a single level. This does not include parent columns.
97
+ */
98
+ getAllLeafColumns: () => Array<Column<TFeatures, TData, unknown>>
99
+ /**
100
+ * Returns a single column by its ID.
101
+ */
102
+ getColumn: (columnId: string) => Column<TFeatures, TData, unknown> | undefined
103
+ }
@@ -0,0 +1,160 @@
1
+ import { callMemoOrStaticFn } from '../../utils'
2
+ import { table_getOrderColumnsFn } from '../../features/column-ordering/columnOrderingFeature.utils'
3
+ import { constructColumn } from './constructColumn'
4
+ import type { Table_Internal } from '../../types/Table'
5
+ import type { CellData, RowData } from '../../types/type-utils'
6
+ import type { TableFeatures } from '../../types/TableFeatures'
7
+ import type {
8
+ ColumnDef,
9
+ ColumnDefResolved,
10
+ GroupColumnDef,
11
+ } from '../../types/ColumnDef'
12
+ import type { Column } from '../../types/Column'
13
+
14
+ export function column_getFlatColumns<
15
+ TFeatures extends TableFeatures,
16
+ TData extends RowData,
17
+ TValue extends CellData = CellData,
18
+ >(
19
+ column: Column<TFeatures, TData, TValue>,
20
+ ): Array<Column<TFeatures, TData, TValue>> {
21
+ return [column, ...column.columns.flatMap((col) => col.getFlatColumns())]
22
+ }
23
+
24
+ export function column_getLeafColumns<
25
+ TFeatures extends TableFeatures,
26
+ TData extends RowData,
27
+ TValue extends CellData = CellData,
28
+ >(
29
+ column: Column<TFeatures, TData, TValue>,
30
+ ): Array<Column<TFeatures, TData, TValue>> {
31
+ if (column.columns.length) {
32
+ const leafColumns = column.columns.flatMap(
33
+ (col) => col.getLeafColumns(), // recursive
34
+ )
35
+
36
+ return callMemoOrStaticFn(
37
+ column.table,
38
+ 'getOrderColumns',
39
+ table_getOrderColumnsFn,
40
+ )(leafColumns as any) as any
41
+ }
42
+
43
+ return [column]
44
+ }
45
+
46
+ export function table_getDefaultColumnDef<
47
+ TFeatures extends TableFeatures,
48
+ TData extends RowData,
49
+ >(
50
+ table: Table_Internal<TFeatures, TData>,
51
+ ): Partial<ColumnDef<TFeatures, TData, unknown>> {
52
+ return {
53
+ header: (props) => {
54
+ const resolvedColumnDef = props.header.column
55
+ .columnDef as ColumnDefResolved<{}, TData>
56
+
57
+ if (resolvedColumnDef.accessorKey) {
58
+ return resolvedColumnDef.accessorKey
59
+ }
60
+
61
+ if (resolvedColumnDef.accessorFn) {
62
+ return resolvedColumnDef.id
63
+ }
64
+
65
+ return null
66
+ },
67
+ cell: (props) => props.renderValue<any>()?.toString?.() ?? null,
68
+ ...Object.values(table._features).reduce((obj, feature) => {
69
+ return Object.assign(obj, feature.getDefaultColumnDef?.())
70
+ }, {}),
71
+ ...table.options.defaultColumn,
72
+ } as Partial<ColumnDef<TFeatures, TData, unknown>>
73
+ }
74
+
75
+ export function table_getAllColumns<
76
+ TFeatures extends TableFeatures,
77
+ TData extends RowData,
78
+ >(
79
+ table: Table_Internal<TFeatures, TData>,
80
+ ): Array<Column<TFeatures, TData, unknown>> {
81
+ const recurseColumns = (
82
+ colDefs: Array<ColumnDef<TFeatures, TData, unknown>>,
83
+ parent?: Column<TFeatures, TData, unknown>,
84
+ depth = 0,
85
+ ): Array<Column<TFeatures, TData, unknown>> => {
86
+ return colDefs.map((columnDef) => {
87
+ const column = constructColumn(table, columnDef, depth, parent)
88
+
89
+ const groupingColumnDef = columnDef as GroupColumnDef<
90
+ TFeatures,
91
+ TData,
92
+ unknown
93
+ >
94
+
95
+ column.columns = groupingColumnDef.columns
96
+ ? recurseColumns(groupingColumnDef.columns, column, depth + 1)
97
+ : []
98
+
99
+ return column
100
+ })
101
+ }
102
+
103
+ return recurseColumns(table.options.columns as any)
104
+ }
105
+
106
+ export function table_getAllFlatColumns<
107
+ TFeatures extends TableFeatures,
108
+ TData extends RowData,
109
+ >(
110
+ table: Table_Internal<TFeatures, TData>,
111
+ ): Array<Column<TFeatures, TData, unknown>> {
112
+ return table.getAllColumns().flatMap((column) => column.getFlatColumns())
113
+ }
114
+
115
+ export function table_getAllFlatColumnsById<
116
+ TFeatures extends TableFeatures,
117
+ TData extends RowData,
118
+ >(
119
+ table: Table_Internal<TFeatures, TData>,
120
+ ): Record<string, Column<TFeatures, TData, unknown>> {
121
+ return table.getAllFlatColumns().reduce(
122
+ (acc, column) => {
123
+ acc[column.id] = column
124
+ return acc
125
+ },
126
+ {} as Record<string, Column<TFeatures, TData, unknown>>,
127
+ )
128
+ }
129
+
130
+ export function table_getAllLeafColumns<
131
+ TFeatures extends TableFeatures,
132
+ TData extends RowData,
133
+ >(
134
+ table: Table_Internal<TFeatures, TData>,
135
+ ): Array<Column<TFeatures, TData, unknown>> {
136
+ const leafColumns = table.getAllColumns().flatMap(
137
+ (c) => c.getLeafColumns(), // recursive
138
+ )
139
+ return callMemoOrStaticFn(
140
+ table,
141
+ 'getOrderColumns',
142
+ table_getOrderColumnsFn,
143
+ )(leafColumns as any) as any
144
+ }
145
+
146
+ export function table_getColumn<
147
+ TFeatures extends TableFeatures,
148
+ TData extends RowData,
149
+ >(
150
+ table: Table_Internal<TFeatures, TData>,
151
+ columnId: string,
152
+ ): Column<TFeatures, TData, unknown> | undefined {
153
+ const column = table.getAllFlatColumnsById()[columnId]
154
+
155
+ if (process.env.NODE_ENV === 'development' && !column) {
156
+ console.warn(`[Table] Column with id '${columnId}' does not exist.`)
157
+ }
158
+
159
+ return column
160
+ }
@@ -0,0 +1,24 @@
1
+ import { coreCellsFeature } from './cells/coreCellsFeature'
2
+ import { coreColumnsFeature } from './columns/coreColumnsFeature'
3
+ import { coreHeadersFeature } from './headers/coreHeadersFeature'
4
+ import { coreRowModelsFeature } from './row-models/coreRowModelsFeature'
5
+ import { coreRowsFeature } from './rows/coreRowsFeature'
6
+ import { coreTablesFeature } from './table/coreTablesFeature'
7
+
8
+ export interface CoreFeatures {
9
+ coreCellsFeature: typeof coreCellsFeature
10
+ coreColumnsFeature: typeof coreColumnsFeature
11
+ coreHeadersFeature: typeof coreHeadersFeature
12
+ coreRowModelsFeature: typeof coreRowModelsFeature
13
+ coreRowsFeature: typeof coreRowsFeature
14
+ coreTablesFeature: typeof coreTablesFeature
15
+ }
16
+
17
+ export const coreFeatures: CoreFeatures = {
18
+ coreCellsFeature,
19
+ coreColumnsFeature,
20
+ coreHeadersFeature,
21
+ coreRowModelsFeature,
22
+ coreRowsFeature,
23
+ coreTablesFeature,
24
+ }
@@ -0,0 +1,177 @@
1
+ import { callMemoOrStaticFn } from '../../utils'
2
+ import { column_getIsVisible } from '../../features/column-visibility/columnVisibilityFeature.utils'
3
+ import { constructHeader } from './constructHeader'
4
+ import type { Table_Internal } from '../../types/Table'
5
+ import type { CellData, RowData } from '../../types/type-utils'
6
+ import type { TableFeatures } from '../../types/TableFeatures'
7
+ import type { Header } from '../../types/Header'
8
+ import type { HeaderGroup } from '../../types/HeaderGroup'
9
+ import type { Column } from '../../types/Column'
10
+
11
+ export function buildHeaderGroups<
12
+ TFeatures extends TableFeatures,
13
+ TData extends RowData,
14
+ TValue extends CellData = CellData,
15
+ >(
16
+ allColumns: Array<Column<TFeatures, TData, TValue>>,
17
+ columnsToGroup: Array<Column<TFeatures, TData, TValue>>,
18
+ table: Table_Internal<TFeatures, TData>,
19
+ headerFamily?: 'center' | 'left' | 'right',
20
+ ) {
21
+ // Find the max depth of the columns:
22
+ // build the leaf column row
23
+ // build each buffer row going up
24
+ // placeholder for non-existent level
25
+ // real column for existing level
26
+
27
+ let maxDepth = 0
28
+
29
+ const findMaxDepth = (
30
+ columns: Array<Column<TFeatures, TData, TValue>>,
31
+ depth = 1,
32
+ ) => {
33
+ maxDepth = Math.max(maxDepth, depth)
34
+
35
+ columns
36
+ .filter((column) =>
37
+ callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),
38
+ )
39
+ .forEach((column) => {
40
+ if (column.columns.length) {
41
+ findMaxDepth(column.columns, depth + 1)
42
+ }
43
+ }, 0)
44
+ }
45
+
46
+ findMaxDepth(allColumns)
47
+
48
+ const headerGroups: Array<HeaderGroup<TFeatures, TData>> = []
49
+
50
+ const constructHeaderGroup = (
51
+ headersToGroup: Array<Header<TFeatures, TData, TValue>>,
52
+ depth: number,
53
+ ) => {
54
+ // The header group we are creating
55
+ const headerGroup: HeaderGroup<TFeatures, TData> = {
56
+ depth,
57
+ id: [headerFamily, `${depth}`].filter(Boolean).join('_'),
58
+ headers: [],
59
+ } as any
60
+
61
+ // The parent columns we're going to scan next
62
+ const pendingParentHeaders: Array<Header<TFeatures, TData, TValue>> = []
63
+
64
+ // Scan each column for parents
65
+ headersToGroup.forEach((headerToGroup) => {
66
+ // What is the latest (last) parent column?
67
+
68
+ const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]
69
+
70
+ const isLeafHeader = headerToGroup.column.depth === headerGroup.depth
71
+
72
+ let column: Column<TFeatures, TData, TValue>
73
+ let isPlaceholder = false
74
+
75
+ if (isLeafHeader && headerToGroup.column.parent) {
76
+ // The parent header is new
77
+ column = headerToGroup.column.parent
78
+ } else {
79
+ // The parent header is repeated
80
+ column = headerToGroup.column
81
+ isPlaceholder = true
82
+ }
83
+
84
+ if (
85
+ latestPendingParentHeader &&
86
+ latestPendingParentHeader.column === column
87
+ ) {
88
+ // This column is repeated. Add it as a sub header to the next batch
89
+ latestPendingParentHeader.subHeaders.push(headerToGroup)
90
+ } else {
91
+ // This is a new header. Let's create it
92
+ const header = constructHeader(table, column, {
93
+ id: [headerFamily, depth, column.id, headerToGroup.id]
94
+ .filter(Boolean)
95
+ .join('_'),
96
+ isPlaceholder,
97
+ placeholderId: isPlaceholder
98
+ ? `${pendingParentHeaders.filter((d) => d.column === column).length}`
99
+ : undefined,
100
+ depth,
101
+ index: pendingParentHeaders.length,
102
+ })
103
+
104
+ // Add the headerToGroup as a subHeader of the new header
105
+ header.subHeaders.push(headerToGroup)
106
+ // Add the new header to the pendingParentHeaders to get grouped
107
+ // in the next batch
108
+ pendingParentHeaders.push(header)
109
+ }
110
+
111
+ headerGroup.headers.push(headerToGroup)
112
+ headerToGroup.headerGroup = headerGroup
113
+ })
114
+
115
+ headerGroups.push(headerGroup)
116
+
117
+ if (depth > 0) {
118
+ constructHeaderGroup(pendingParentHeaders, depth - 1)
119
+ }
120
+ }
121
+
122
+ const bottomHeaders = columnsToGroup.map((column, index) =>
123
+ constructHeader(table, column, {
124
+ depth: maxDepth,
125
+ index,
126
+ }),
127
+ )
128
+
129
+ constructHeaderGroup(bottomHeaders, maxDepth - 1)
130
+
131
+ headerGroups.reverse()
132
+
133
+ // headerGroups = headerGroups.filter(headerGroup => {
134
+ // return !headerGroup.headers.every(header => header.isPlaceholder)
135
+ // })
136
+
137
+ const recurseHeadersForSpans = (
138
+ headers: Array<Header<TFeatures, TData, TValue>>,
139
+ ): Array<{ colSpan: number; rowSpan: number }> => {
140
+ const filteredHeaders = headers.filter((header) =>
141
+ callMemoOrStaticFn(header.column, 'getIsVisible', column_getIsVisible),
142
+ )
143
+
144
+ return filteredHeaders.map((header) => {
145
+ let colSpan = 0
146
+ let rowSpan = 0
147
+ let childRowSpans = [0]
148
+
149
+ if (header.subHeaders.length) {
150
+ childRowSpans = []
151
+
152
+ recurseHeadersForSpans(header.subHeaders).forEach(
153
+ ({ colSpan: childColSpan, rowSpan: childRowSpan }) => {
154
+ colSpan += childColSpan
155
+ childRowSpans.push(childRowSpan)
156
+ },
157
+ )
158
+ } else {
159
+ colSpan = 1
160
+ }
161
+
162
+ const minChildRowSpan = Math.min(...childRowSpans)
163
+ rowSpan = rowSpan + minChildRowSpan
164
+
165
+ header.colSpan = colSpan
166
+ header.rowSpan = rowSpan
167
+
168
+ return { colSpan, rowSpan }
169
+ })
170
+ }
171
+
172
+ recurseHeadersForSpans(
173
+ (headerGroups[0]?.headers ?? []) as Array<Header<TFeatures, TData, TValue>>,
174
+ )
175
+
176
+ return headerGroups
177
+ }