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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/esm/core/cells/constructCell.d.ts +7 -0
  2. package/dist/esm/core/cells/constructCell.js +21 -0
  3. package/dist/esm/core/cells/constructCell.js.map +1 -0
  4. package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
  5. package/dist/esm/core/cells/coreCellsFeature.js +26 -0
  6. package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
  7. package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
  8. package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
  9. package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
  10. package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
  11. package/dist/esm/core/columns/constructColumn.d.ts +6 -0
  12. package/dist/esm/core/columns/constructColumn.js +60 -0
  13. package/dist/esm/core/columns/constructColumn.js.map +1 -0
  14. package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
  15. package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
  16. package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
  17. package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
  18. package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
  19. package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
  20. package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
  21. package/dist/esm/core/coreFeatures.d.ts +15 -0
  22. package/dist/esm/core/coreFeatures.js +18 -0
  23. package/dist/esm/core/coreFeatures.js.map +1 -0
  24. package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
  25. package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
  26. package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
  27. package/dist/esm/core/headers/constructHeader.d.ts +12 -0
  28. package/dist/esm/core/headers/constructHeader.js +28 -0
  29. package/dist/esm/core/headers/constructHeader.js.map +1 -0
  30. package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
  31. package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
  32. package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
  33. package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
  34. package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
  35. package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
  36. package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
  37. package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
  38. package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
  39. package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
  40. package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
  41. package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
  42. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
  43. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
  44. package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
  45. package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
  46. package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
  47. package/dist/esm/core/rows/constructRow.d.ts +5 -0
  48. package/dist/esm/core/rows/constructRow.js +29 -0
  49. package/dist/esm/core/rows/constructRow.js.map +1 -0
  50. package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
  51. package/dist/esm/core/rows/coreRowsFeature.js +52 -0
  52. package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
  53. package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
  54. package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
  55. package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
  56. package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
  57. package/dist/esm/core/table/constructTable.d.ts +9 -0
  58. package/dist/esm/core/table/constructTable.js +65 -0
  59. package/dist/esm/core/table/constructTable.js.map +1 -0
  60. package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
  61. package/dist/esm/core/table/coreTablesFeature.js +22 -0
  62. package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
  63. package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
  64. package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
  65. package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
  66. package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
  67. package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
  68. package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
  69. package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
  70. package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
  71. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
  72. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
  73. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
  74. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
  75. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
  76. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
  77. package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
  78. package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
  79. package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
  80. package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
  81. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
  82. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
  83. package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
  84. package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
  85. package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
  86. package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
  87. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
  88. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
  89. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
  90. package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
  91. package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
  92. package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
  93. package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
  94. package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
  95. package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
  96. package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
  97. package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
  98. package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
  99. package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
  100. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
  101. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
  102. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
  103. package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
  104. package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
  105. package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
  106. package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
  107. package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
  108. package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
  109. package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
  110. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
  111. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
  112. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
  113. package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
  114. package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
  115. package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
  116. package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
  117. package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
  118. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
  119. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
  120. package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
  121. package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
  122. package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
  123. package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
  124. package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
  125. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
  126. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
  127. package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
  128. package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
  129. package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
  130. package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
  131. package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
  132. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
  133. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
  134. package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
  135. package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
  136. package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
  137. package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
  138. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
  139. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
  140. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
  141. package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
  142. package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
  143. package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
  144. package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
  145. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
  146. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
  147. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
  148. package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
  149. package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
  150. package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
  151. package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
  152. package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
  153. package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
  154. package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
  155. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
  156. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
  157. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
  158. package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
  159. package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
  160. package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
  161. package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
  162. package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
  163. package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
  164. package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
  165. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
  166. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
  167. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
  168. package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
  169. package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
  170. package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
  171. package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
  172. package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
  173. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
  174. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
  175. package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
  176. package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
  177. package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
  178. package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
  179. package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
  180. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
  181. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
  182. package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
  183. package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
  184. package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
  185. package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
  186. package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
  187. package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
  188. package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
  189. package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
  190. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
  191. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
  192. package/dist/esm/features/stockFeatures.d.ts +31 -0
  193. package/dist/esm/features/stockFeatures.js +34 -0
  194. package/dist/esm/features/stockFeatures.js.map +1 -0
  195. package/dist/esm/fns/aggregationFns.d.ts +49 -0
  196. package/dist/esm/fns/aggregationFns.js +110 -0
  197. package/dist/esm/fns/aggregationFns.js.map +1 -0
  198. package/dist/esm/fns/filterFns.d.ts +76 -0
  199. package/dist/esm/fns/filterFns.js +134 -0
  200. package/dist/esm/fns/filterFns.js.map +1 -0
  201. package/dist/esm/fns/sortFns.d.ts +17 -0
  202. package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
  203. package/dist/esm/fns/sortFns.js.map +1 -0
  204. package/dist/esm/helpers/columnHelper.d.ts +61 -0
  205. package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
  206. package/dist/esm/helpers/columnHelper.js.map +1 -0
  207. package/dist/esm/helpers/tableFeatures.d.ts +13 -0
  208. package/dist/esm/helpers/tableFeatures.js +7 -0
  209. package/dist/esm/helpers/tableFeatures.js.map +1 -0
  210. package/dist/esm/helpers/tableHelper.d.ts +25 -0
  211. package/dist/esm/helpers/tableHelper.js +13 -0
  212. package/dist/esm/helpers/tableHelper.js.map +1 -0
  213. package/dist/esm/helpers/tableOptions.d.ts +23 -0
  214. package/dist/esm/helpers/tableOptions.js +7 -0
  215. package/dist/esm/helpers/tableOptions.js.map +1 -0
  216. package/dist/esm/index.d.ts +109 -33
  217. package/dist/esm/index.js +397 -66
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/types/Cell.d.ts +13 -0
  220. package/dist/esm/types/Column.d.ts +26 -0
  221. package/dist/esm/types/ColumnDef.d.ts +64 -0
  222. package/dist/esm/types/Header.d.ts +14 -0
  223. package/dist/esm/types/HeaderGroup.d.ts +12 -0
  224. package/dist/esm/types/Row.d.ts +19 -0
  225. package/dist/esm/types/RowModel.d.ts +23 -0
  226. package/dist/esm/types/RowModelFns.d.ts +15 -0
  227. package/dist/esm/types/Table.d.ts +53 -0
  228. package/dist/esm/types/TableFeatures.d.ts +77 -0
  229. package/dist/esm/types/TableOptions.d.ts +39 -0
  230. package/dist/esm/types/TableState.d.ts +23 -0
  231. package/dist/esm/types/type-utils.d.ts +22 -0
  232. package/dist/esm/utils.d.ts +66 -33
  233. package/dist/esm/utils.js +183 -50
  234. package/dist/esm/utils.js.map +1 -1
  235. package/package.json +21 -12
  236. package/src/core/cells/constructCell.ts +49 -0
  237. package/src/core/cells/coreCellsFeature.ts +44 -0
  238. package/src/core/cells/coreCellsFeature.types.ts +68 -0
  239. package/src/core/cells/coreCellsFeature.utils.ts +35 -0
  240. package/src/core/columns/constructColumn.ts +111 -0
  241. package/src/core/columns/coreColumnsFeature.ts +90 -0
  242. package/src/core/columns/coreColumnsFeature.types.ts +103 -0
  243. package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
  244. package/src/core/coreFeatures.ts +24 -0
  245. package/src/core/headers/buildHeaderGroups.ts +177 -0
  246. package/src/core/headers/constructHeader.ts +61 -0
  247. package/src/core/headers/coreHeadersFeature.ts +98 -0
  248. package/src/core/headers/coreHeadersFeature.types.ts +123 -0
  249. package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
  250. package/src/core/row-models/coreRowModelsFeature.ts +78 -0
  251. package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
  252. package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
  253. package/src/core/row-models/createCoreRowModel.ts +88 -0
  254. package/src/core/rows/constructRow.ts +59 -0
  255. package/src/core/rows/coreRowsFeature.ts +84 -0
  256. package/src/core/rows/coreRowsFeature.types.ts +111 -0
  257. package/src/core/rows/coreRowsFeature.utils.ts +152 -0
  258. package/src/core/table/constructTable.ts +95 -0
  259. package/src/core/table/coreTablesFeature.ts +36 -0
  260. package/src/core/table/coreTablesFeature.types.ts +123 -0
  261. package/src/core/table/coreTablesFeature.utils.ts +40 -0
  262. package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
  263. package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
  264. package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
  265. package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
  266. package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
  267. package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
  268. package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
  269. package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
  270. package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
  271. package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
  272. package/src/features/column-filtering/filterRowsUtils.ts +152 -0
  273. package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
  274. package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
  275. package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
  276. package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
  277. package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
  278. package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
  279. package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
  280. package/src/features/column-pinning/columnPinningFeature.ts +324 -0
  281. package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
  282. package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
  283. package/src/features/column-resizing/columnResizingFeature.ts +92 -0
  284. package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
  285. package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
  286. package/src/features/column-sizing/columnSizingFeature.ts +146 -0
  287. package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
  288. package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
  289. package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
  290. package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
  291. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
  292. package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
  293. package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
  294. package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
  295. package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
  296. package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
  297. package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
  298. package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
  299. package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
  300. package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
  301. package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
  302. package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
  303. package/src/features/row-pinning/rowPinningFeature.ts +121 -0
  304. package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
  305. package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
  306. package/src/features/row-selection/rowSelectionFeature.ts +164 -0
  307. package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
  308. package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
  309. package/src/features/row-sorting/createSortedRowModel.ts +147 -0
  310. package/src/features/row-sorting/rowSortingFeature.ts +136 -0
  311. package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
  312. package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
  313. package/src/features/stockFeatures.ts +48 -0
  314. package/src/fns/aggregationFns.ts +220 -0
  315. package/src/fns/filterFns.ts +379 -0
  316. package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
  317. package/src/helpers/columnHelper.ts +117 -0
  318. package/src/helpers/tableFeatures.ts +24 -0
  319. package/src/helpers/tableHelper.ts +61 -0
  320. package/src/helpers/tableOptions.ts +82 -0
  321. package/src/index.ts +156 -42
  322. package/src/types/Cell.ts +41 -0
  323. package/src/types/Column.ts +86 -0
  324. package/src/types/ColumnDef.ts +217 -0
  325. package/src/types/Header.ts +45 -0
  326. package/src/types/HeaderGroup.ts +24 -0
  327. package/src/types/Row.ts +55 -0
  328. package/src/types/RowModel.ts +137 -0
  329. package/src/types/RowModelFns.ts +51 -0
  330. package/src/types/Table.ts +125 -0
  331. package/src/types/TableFeatures.ts +150 -0
  332. package/src/types/TableOptions.ts +125 -0
  333. package/src/types/TableState.ts +88 -0
  334. package/src/types/type-utils.ts +84 -0
  335. package/src/utils.ts +344 -164
  336. package/dist/cjs/aggregationFns.cjs +0 -94
  337. package/dist/cjs/aggregationFns.cjs.map +0 -1
  338. package/dist/cjs/aggregationFns.d.cts +0 -14
  339. package/dist/cjs/columnHelper.cjs +0 -19
  340. package/dist/cjs/columnHelper.cjs.map +0 -1
  341. package/dist/cjs/columnHelper.d.cts +0 -9
  342. package/dist/cjs/core/cell.cjs +0 -38
  343. package/dist/cjs/core/cell.cjs.map +0 -1
  344. package/dist/cjs/core/cell.d.cts +0 -50
  345. package/dist/cjs/core/column.cjs +0 -81
  346. package/dist/cjs/core/column.cjs.map +0 -1
  347. package/dist/cjs/core/column.d.cts +0 -56
  348. package/dist/cjs/core/headers.cjs +0 -310
  349. package/dist/cjs/core/headers.cjs.map +0 -1
  350. package/dist/cjs/core/headers.d.cts +0 -195
  351. package/dist/cjs/core/row.cjs +0 -92
  352. package/dist/cjs/core/row.cjs.map +0 -1
  353. package/dist/cjs/core/row.d.cts +0 -92
  354. package/dist/cjs/core/table.cjs +0 -232
  355. package/dist/cjs/core/table.cjs.map +0 -1
  356. package/dist/cjs/core/table.d.cts +0 -229
  357. package/dist/cjs/features/ColumnFaceting.cjs +0 -29
  358. package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
  359. package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
  360. package/dist/cjs/features/ColumnFiltering.cjs +0 -137
  361. package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
  362. package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
  363. package/dist/cjs/features/ColumnGrouping.cjs +0 -133
  364. package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
  365. package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
  366. package/dist/cjs/features/ColumnOrdering.cjs +0 -76
  367. package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
  368. package/dist/cjs/features/ColumnPinning.cjs +0 -145
  369. package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
  370. package/dist/cjs/features/ColumnPinning.d.cts +0 -127
  371. package/dist/cjs/features/ColumnSizing.cjs +0 -307
  372. package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
  373. package/dist/cjs/features/ColumnSizing.d.cts +0 -194
  374. package/dist/cjs/features/ColumnVisibility.cjs +0 -144
  375. package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
  376. package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
  377. package/dist/cjs/features/GlobalFaceting.cjs +0 -29
  378. package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
  379. package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
  380. package/dist/cjs/features/GlobalFiltering.cjs +0 -50
  381. package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
  382. package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
  383. package/dist/cjs/features/RowExpanding.cjs +0 -152
  384. package/dist/cjs/features/RowExpanding.cjs.map +0 -1
  385. package/dist/cjs/features/RowExpanding.d.cts +0 -155
  386. package/dist/cjs/features/RowPagination.cjs +0 -161
  387. package/dist/cjs/features/RowPagination.cjs.map +0 -1
  388. package/dist/cjs/features/RowPagination.d.cts +0 -166
  389. package/dist/cjs/features/RowPinning.cjs +0 -132
  390. package/dist/cjs/features/RowPinning.cjs.map +0 -1
  391. package/dist/cjs/features/RowPinning.d.cts +0 -99
  392. package/dist/cjs/features/RowSelection.cjs +0 -296
  393. package/dist/cjs/features/RowSelection.cjs.map +0 -1
  394. package/dist/cjs/features/RowSelection.d.cts +0 -177
  395. package/dist/cjs/features/RowSorting.cjs +0 -200
  396. package/dist/cjs/features/RowSorting.cjs.map +0 -1
  397. package/dist/cjs/features/RowSorting.d.cts +0 -238
  398. package/dist/cjs/filterFns.cjs +0 -88
  399. package/dist/cjs/filterFns.cjs.map +0 -1
  400. package/dist/cjs/filterFns.d.cts +0 -14
  401. package/dist/cjs/index.cjs +0 -88
  402. package/dist/cjs/index.cjs.map +0 -1
  403. package/dist/cjs/index.d.cts +0 -34
  404. package/dist/cjs/sortingFns.cjs +0 -91
  405. package/dist/cjs/sortingFns.cjs.map +0 -1
  406. package/dist/cjs/sortingFns.d.cts +0 -12
  407. package/dist/cjs/types.d.cts +0 -120
  408. package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
  409. package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
  410. package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
  411. package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
  412. package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
  413. package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
  414. package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
  415. package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
  416. package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
  417. package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -35
  418. package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
  419. package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
  420. package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
  421. package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
  422. package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
  423. package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -37
  424. package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
  425. package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
  426. package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
  427. package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
  428. package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
  429. package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
  430. package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
  431. package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
  432. package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
  433. package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
  434. package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
  435. package/dist/cjs/utils/getSortedRowModel.cjs +0 -88
  436. package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
  437. package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
  438. package/dist/cjs/utils.cjs +0 -98
  439. package/dist/cjs/utils.cjs.map +0 -1
  440. package/dist/cjs/utils.d.cts +0 -39
  441. package/dist/esm/aggregationFns.d.ts +0 -14
  442. package/dist/esm/aggregationFns.js +0 -94
  443. package/dist/esm/aggregationFns.js.map +0 -1
  444. package/dist/esm/columnHelper.d.ts +0 -9
  445. package/dist/esm/columnHelper.js.map +0 -1
  446. package/dist/esm/core/cell.d.ts +0 -50
  447. package/dist/esm/core/cell.js +0 -38
  448. package/dist/esm/core/cell.js.map +0 -1
  449. package/dist/esm/core/column.d.ts +0 -56
  450. package/dist/esm/core/column.js +0 -81
  451. package/dist/esm/core/column.js.map +0 -1
  452. package/dist/esm/core/headers.d.ts +0 -195
  453. package/dist/esm/core/headers.js +0 -310
  454. package/dist/esm/core/headers.js.map +0 -1
  455. package/dist/esm/core/row.d.ts +0 -92
  456. package/dist/esm/core/row.js +0 -92
  457. package/dist/esm/core/row.js.map +0 -1
  458. package/dist/esm/core/table.d.ts +0 -229
  459. package/dist/esm/core/table.js +0 -232
  460. package/dist/esm/core/table.js.map +0 -1
  461. package/dist/esm/features/ColumnFaceting.d.ts +0 -35
  462. package/dist/esm/features/ColumnFaceting.js +0 -29
  463. package/dist/esm/features/ColumnFaceting.js.map +0 -1
  464. package/dist/esm/features/ColumnFiltering.d.ts +0 -195
  465. package/dist/esm/features/ColumnFiltering.js +0 -137
  466. package/dist/esm/features/ColumnFiltering.js.map +0 -1
  467. package/dist/esm/features/ColumnGrouping.d.ts +0 -202
  468. package/dist/esm/features/ColumnGrouping.js +0 -133
  469. package/dist/esm/features/ColumnGrouping.js.map +0 -1
  470. package/dist/esm/features/ColumnOrdering.d.ts +0 -54
  471. package/dist/esm/features/ColumnOrdering.js +0 -76
  472. package/dist/esm/features/ColumnOrdering.js.map +0 -1
  473. package/dist/esm/features/ColumnPinning.d.ts +0 -127
  474. package/dist/esm/features/ColumnPinning.js +0 -145
  475. package/dist/esm/features/ColumnPinning.js.map +0 -1
  476. package/dist/esm/features/ColumnSizing.d.ts +0 -194
  477. package/dist/esm/features/ColumnSizing.js +0 -307
  478. package/dist/esm/features/ColumnSizing.js.map +0 -1
  479. package/dist/esm/features/ColumnVisibility.d.ts +0 -130
  480. package/dist/esm/features/ColumnVisibility.js +0 -144
  481. package/dist/esm/features/ColumnVisibility.js.map +0 -1
  482. package/dist/esm/features/GlobalFaceting.d.ts +0 -27
  483. package/dist/esm/features/GlobalFaceting.js +0 -29
  484. package/dist/esm/features/GlobalFaceting.js.map +0 -1
  485. package/dist/esm/features/GlobalFiltering.d.ts +0 -80
  486. package/dist/esm/features/GlobalFiltering.js +0 -50
  487. package/dist/esm/features/GlobalFiltering.js.map +0 -1
  488. package/dist/esm/features/RowExpanding.d.ts +0 -155
  489. package/dist/esm/features/RowExpanding.js +0 -152
  490. package/dist/esm/features/RowExpanding.js.map +0 -1
  491. package/dist/esm/features/RowPagination.d.ts +0 -166
  492. package/dist/esm/features/RowPagination.js +0 -161
  493. package/dist/esm/features/RowPagination.js.map +0 -1
  494. package/dist/esm/features/RowPinning.d.ts +0 -99
  495. package/dist/esm/features/RowPinning.js +0 -132
  496. package/dist/esm/features/RowPinning.js.map +0 -1
  497. package/dist/esm/features/RowSelection.d.ts +0 -177
  498. package/dist/esm/features/RowSelection.js +0 -296
  499. package/dist/esm/features/RowSelection.js.map +0 -1
  500. package/dist/esm/features/RowSorting.d.ts +0 -238
  501. package/dist/esm/features/RowSorting.js +0 -200
  502. package/dist/esm/features/RowSorting.js.map +0 -1
  503. package/dist/esm/filterFns.d.ts +0 -14
  504. package/dist/esm/filterFns.js +0 -88
  505. package/dist/esm/filterFns.js.map +0 -1
  506. package/dist/esm/sortingFns.d.ts +0 -12
  507. package/dist/esm/sortingFns.js.map +0 -1
  508. package/dist/esm/types.d.ts +0 -120
  509. package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
  510. package/dist/esm/utils/filterRowsUtils.js.map +0 -1
  511. package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
  512. package/dist/esm/utils/getCoreRowModel.js +0 -54
  513. package/dist/esm/utils/getCoreRowModel.js.map +0 -1
  514. package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
  515. package/dist/esm/utils/getExpandedRowModel.js +0 -41
  516. package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
  517. package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
  518. package/dist/esm/utils/getFacetedMinMaxValues.js +0 -35
  519. package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
  520. package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
  521. package/dist/esm/utils/getFacetedRowModel.js +0 -35
  522. package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
  523. package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
  524. package/dist/esm/utils/getFacetedUniqueValues.js +0 -37
  525. package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
  526. package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
  527. package/dist/esm/utils/getFilteredRowModel.js +0 -116
  528. package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
  529. package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
  530. package/dist/esm/utils/getGroupedRowModel.js +0 -118
  531. package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
  532. package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
  533. package/dist/esm/utils/getPaginationRowModel.js +0 -49
  534. package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
  535. package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
  536. package/dist/esm/utils/getSortedRowModel.js +0 -88
  537. package/dist/esm/utils/getSortedRowModel.js.map +0 -1
  538. package/src/aggregationFns.ts +0 -123
  539. package/src/columnHelper.ts +0 -91
  540. package/src/core/cell.ts +0 -91
  541. package/src/core/column.ts +0 -165
  542. package/src/core/headers.ts +0 -639
  543. package/src/core/row.ts +0 -201
  544. package/src/core/table.ts +0 -563
  545. package/src/features/ColumnFaceting.ts +0 -84
  546. package/src/features/ColumnFiltering.ts +0 -429
  547. package/src/features/ColumnGrouping.ts +0 -422
  548. package/src/features/ColumnOrdering.ts +0 -161
  549. package/src/features/ColumnPinning.ts +0 -336
  550. package/src/features/ColumnSizing.ts +0 -579
  551. package/src/features/ColumnVisibility.ts +0 -317
  552. package/src/features/GlobalFaceting.ts +0 -66
  553. package/src/features/GlobalFiltering.ts +0 -162
  554. package/src/features/RowExpanding.ts +0 -355
  555. package/src/features/RowPagination.ts +0 -396
  556. package/src/features/RowPinning.ts +0 -277
  557. package/src/features/RowSelection.ts +0 -668
  558. package/src/features/RowSorting.ts +0 -542
  559. package/src/filterFns.ts +0 -150
  560. package/src/types.ts +0 -361
  561. package/src/utils/filterRowsUtils.ts +0 -130
  562. package/src/utils/getCoreRowModel.ts +0 -82
  563. package/src/utils/getExpandedRowModel.ts +0 -51
  564. package/src/utils/getFacetedMinMaxValues.ts +0 -42
  565. package/src/utils/getFacetedRowModel.ts +0 -44
  566. package/src/utils/getFacetedUniqueValues.ts +0 -42
  567. package/src/utils/getFilteredRowModel.ts +0 -151
  568. package/src/utils/getGroupedRowModel.ts +0 -181
  569. package/src/utils/getPaginationRowModel.ts +0 -60
  570. package/src/utils/getSortedRowModel.ts +0 -121
@@ -0,0 +1,136 @@
1
+ import {
2
+ assignPrototypeAPIs,
3
+ assignTableAPIs,
4
+ makeStateUpdater,
5
+ } from '../../utils'
6
+ import {
7
+ column_clearSorting,
8
+ column_getAutoSortDir,
9
+ column_getAutoSortFn,
10
+ column_getCanMultiSort,
11
+ column_getCanSort,
12
+ column_getFirstSortDir,
13
+ column_getIsSorted,
14
+ column_getNextSortingOrder,
15
+ column_getSortFn,
16
+ column_getSortIndex,
17
+ column_getToggleSortingHandler,
18
+ column_toggleSorting,
19
+ getDefaultSortingState,
20
+ table_resetSorting,
21
+ table_setSorting,
22
+ } from './rowSortingFeature.utils'
23
+ import type { RowData } from '../../types/type-utils'
24
+ import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
25
+ // import type {
26
+ // CachedRowModel_Sorted,
27
+ // ColumnDef_RowSorting,
28
+ // Column_RowSorting,
29
+ // CreateRowModel_Sorted,
30
+ // RowModelFns_RowSorting,
31
+ // TableOptions_RowSorting,
32
+ // TableState_RowSorting,
33
+ // Table_RowSorting,
34
+ // } from './rowSortingFeature.types'
35
+
36
+ interface RowSortingFeatureConstructors<
37
+ TFeatures extends TableFeatures,
38
+ TData extends RowData,
39
+ > {
40
+ // CachedRowModel: CachedRowModel_Sorted<TFeatures, TData>
41
+ // Column: Column_RowSorting<TFeatures, TData>
42
+ // ColumnDef: ColumnDef_RowSorting<TFeatures, TData>
43
+ // CreateRowModels: CreateRowModel_Sorted<TFeatures, TData>
44
+ // RowModelFns: RowModelFns_RowSorting<TFeatures, TData>
45
+ // Table: Table_RowSorting<TFeatures, TData>
46
+ // TableOptions: TableOptions_RowSorting
47
+ // TableState: TableState_RowSorting
48
+ }
49
+
50
+ export function constructRowSortingFeature<
51
+ TFeatures extends TableFeatures,
52
+ TData extends RowData,
53
+ >(): TableFeature<RowSortingFeatureConstructors<TFeatures, TData>> {
54
+ return {
55
+ getInitialState(initialState) {
56
+ return {
57
+ sorting: getDefaultSortingState(),
58
+ ...initialState,
59
+ }
60
+ },
61
+
62
+ getDefaultColumnDef() {
63
+ return {
64
+ sortFn: 'auto',
65
+ sortUndefined: 1,
66
+ }
67
+ },
68
+
69
+ getDefaultTableOptions(table) {
70
+ return {
71
+ onSortingChange: makeStateUpdater('sorting', table),
72
+ isMultiSortEvent: (e: unknown) => {
73
+ return (e as MouseEvent).shiftKey
74
+ },
75
+ }
76
+ },
77
+
78
+ assignColumnPrototype(prototype, table) {
79
+ assignPrototypeAPIs('rowSortingFeature', prototype, table, {
80
+ 'column.getAutoSortFn': {
81
+ fn: (column) => column_getAutoSortFn(column),
82
+ },
83
+ 'column.getAutoSortDir': {
84
+ fn: (column) => column_getAutoSortDir(column),
85
+ },
86
+ column_getSortFn: {
87
+ fn: (column) => column_getSortFn(column),
88
+ },
89
+ column_toggleSorting: {
90
+ fn: (column, desc, multi) =>
91
+ column_toggleSorting(column, desc, multi),
92
+ },
93
+ column_getFirstSortDir: {
94
+ fn: (column) => column_getFirstSortDir(column),
95
+ },
96
+ column_getNextSortingOrder: {
97
+ fn: (column, multi) => column_getNextSortingOrder(column, multi),
98
+ },
99
+ column_getCanSort: {
100
+ fn: (column) => column_getCanSort(column),
101
+ },
102
+ column_getCanMultiSort: {
103
+ fn: (column) => column_getCanMultiSort(column),
104
+ },
105
+ column_getIsSorted: {
106
+ fn: (column) => column_getIsSorted(column),
107
+ },
108
+ column_getSortIndex: {
109
+ fn: (column) => column_getSortIndex(column),
110
+ },
111
+ column_clearSorting: {
112
+ fn: (column) => column_clearSorting(column),
113
+ },
114
+ column_getToggleSortingHandler: {
115
+ fn: (column) => column_getToggleSortingHandler(column),
116
+ },
117
+ })
118
+ },
119
+
120
+ constructTableAPIs(table) {
121
+ assignTableAPIs('rowSortingFeature', table, {
122
+ table_setSorting: {
123
+ fn: (updater) => table_setSorting(table, updater),
124
+ },
125
+ table_resetSorting: {
126
+ fn: (defaultState) => table_resetSorting(table, defaultState),
127
+ },
128
+ })
129
+ },
130
+ }
131
+ }
132
+
133
+ /**
134
+ * The (Row) Sorting feature adds sorting state and APIs to the table and column objects.
135
+ */
136
+ export const rowSortingFeature = constructRowSortingFeature()
@@ -0,0 +1,229 @@
1
+ import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
2
+ import type { Table } from '../../types/Table'
3
+ import type { BuiltInSortFn } from '../../fns/sortFns'
4
+ import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
5
+ import type { TableFeatures } from '../../types/TableFeatures'
6
+ import type { Row } from '../../types/Row'
7
+
8
+ export type SortDirection = 'asc' | 'desc'
9
+
10
+ export interface ColumnSort {
11
+ desc: boolean
12
+ id: string
13
+ }
14
+
15
+ export type SortingState = Array<ColumnSort>
16
+
17
+ export interface TableState_RowSorting {
18
+ sorting: SortingState
19
+ }
20
+
21
+ export interface RowModelFns_RowSorting<
22
+ TFeatures extends TableFeatures,
23
+ TData extends RowData,
24
+ > {
25
+ sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>
26
+ }
27
+
28
+ export interface SortFns {}
29
+
30
+ export interface SortFn<
31
+ TFeatures extends TableFeatures,
32
+ TData extends RowData,
33
+ > {
34
+ (
35
+ rowA: Row<TFeatures, TData>,
36
+ rowB: Row<TFeatures, TData>,
37
+ columnId: string,
38
+ ): number
39
+ }
40
+
41
+ export type CustomSortFns<
42
+ TFeatures extends TableFeatures,
43
+ TData extends RowData,
44
+ > = Record<string, SortFn<TFeatures, TData>>
45
+
46
+ export type SortFnOption<
47
+ TFeatures extends TableFeatures,
48
+ TData extends RowData,
49
+ > = 'auto' | keyof SortFns | BuiltInSortFn | SortFn<TFeatures, TData>
50
+
51
+ export interface ColumnDef_RowSorting<
52
+ TFeatures extends TableFeatures,
53
+ TData extends RowData,
54
+ > {
55
+ /**
56
+ * Enables/Disables multi-sorting for this column.
57
+ */
58
+ enableMultiSort?: boolean
59
+ /**
60
+ * Enables/Disables sorting for this column.
61
+ */
62
+ enableSorting?: boolean
63
+ /**
64
+ * Inverts the order of the sorting for this column. This is useful for values that have an inverted best/worst scale where lower numbers are better, eg. a ranking (1st, 2nd, 3rd) or golf-like scoring
65
+ */
66
+ invertSorting?: boolean
67
+ /**
68
+ * Set to `true` for sorting toggles on this column to start in the descending direction.
69
+ */
70
+ sortDescFirst?: boolean
71
+ /**
72
+ * The sorting function to use with this column.
73
+ * - A `string` referencing a built-in sorting function
74
+ * - A custom sorting function
75
+ */
76
+ sortFn?: SortFnOption<TFeatures, TData>
77
+ /**
78
+ * The priority of undefined values when sorting this column.
79
+ * - `false`
80
+ * - Undefined values will be considered tied and need to be sorted by the next column filter or original index (whichever applies)
81
+ * - `-1`
82
+ * - Undefined values will be sorted with higher priority (ascending) (if ascending, undefined will appear on the beginning of the list)
83
+ * - `1`
84
+ * - Undefined values will be sorted with lower priority (descending) (if ascending, undefined will appear on the end of the list)
85
+ */
86
+ sortUndefined?: false | -1 | 1 | 'first' | 'last'
87
+ }
88
+
89
+ export interface Column_RowSorting<
90
+ TFeatures extends TableFeatures,
91
+ TData extends RowData,
92
+ > {
93
+ /**
94
+ * Removes this column from the table's sorting state
95
+ */
96
+ clearSorting: () => void
97
+ /**
98
+ * Returns a sort direction automatically inferred based on the columns values.
99
+ */
100
+ getAutoSortDir: () => SortDirection
101
+ /**
102
+ * Returns a sorting function automatically inferred based on the columns values.
103
+ */
104
+ getAutoSortFn: () => SortFn<TFeatures, TData>
105
+ /**
106
+ * Returns whether this column can be multi-sorted.
107
+ */
108
+ getCanMultiSort: () => boolean
109
+ /**
110
+ * Returns whether this column can be sorted.
111
+ */
112
+ getCanSort: () => boolean
113
+ /**
114
+ * Returns the first direction that should be used when sorting this column.
115
+ */
116
+ getFirstSortDir: () => SortDirection
117
+ /**
118
+ * Returns the current sort direction of this column.
119
+ */
120
+ getIsSorted: () => false | SortDirection
121
+ /**
122
+ * Returns the next sorting order.
123
+ */
124
+ getNextSortingOrder: () => SortDirection | false
125
+ /**
126
+ * Returns the index position of this column's sorting within the sorting state
127
+ */
128
+ getSortIndex: () => number
129
+ /**
130
+ * Returns the resolved sorting function to be used for this column
131
+ */
132
+ getSortFn: () => SortFn<TFeatures, TData>
133
+ /**
134
+ * Returns a function that can be used to toggle this column's sorting state. This is useful for attaching a click handler to the column header.
135
+ */
136
+ getToggleSortingHandler: () => undefined | ((event: unknown) => void)
137
+ /**
138
+ * Toggles this columns sorting state. If `desc` is provided, it will force the sort direction to that value. If `isMulti` is provided, it will additivity multi-sort the column (or toggle it if it is already sorted).
139
+ */
140
+ toggleSorting: (desc?: boolean, isMulti?: boolean) => void
141
+ }
142
+
143
+ export interface TableOptions_RowSorting {
144
+ /**
145
+ * Enables/disables the ability to remove multi-sorts
146
+ */
147
+ enableMultiRemove?: boolean
148
+ /**
149
+ * Enables/Disables multi-sorting for the table.
150
+ */
151
+ enableMultiSort?: boolean
152
+ /**
153
+ * Enables/Disables sorting for the table.
154
+ */
155
+ enableSorting?: boolean
156
+ /**
157
+ * Enables/Disables the ability to remove sorting for the table.
158
+ * - If `true` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'none' -> ...
159
+ * - If `false` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'desc' -> 'asc' -> ...
160
+ */
161
+ enableSortingRemoval?: boolean
162
+ /**
163
+ * Pass a custom function that will be used to determine if a multi-sort event should be triggered. It is passed the event from the sort toggle handler and should return `true` if the event should trigger a multi-sort.
164
+ */
165
+ isMultiSortEvent?: (e: unknown) => boolean
166
+ /**
167
+ * Enables manual sorting for the table. If this is `true`, you will be expected to sort your data before it is passed to the table. This is useful if you are doing server-side sorting.
168
+ */
169
+ manualSorting?: boolean
170
+ /**
171
+ * Set a maximum number of columns that can be multi-sorted.
172
+ */
173
+ maxMultiSortColCount?: number
174
+ /**
175
+ * If provided, this function will be called with an `updaterFn` when `state.sorting` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
176
+ */
177
+ onSortingChange?: OnChangeFn<SortingState>
178
+ /**
179
+ * If `true`, all sorts will default to descending as their first toggle state.
180
+ */
181
+ sortDescFirst?: boolean
182
+ }
183
+
184
+ export interface Table_RowSorting<
185
+ TFeatures extends TableFeatures,
186
+ TData extends RowData,
187
+ > {
188
+ /**
189
+ * Resets the **sorting** state to `initialState.sorting`, or `true` can be passed to force a default blank state reset to `[]`.
190
+ */
191
+ resetSorting: (defaultState?: boolean) => void
192
+ /**
193
+ * Sets or updates the `state.sorting` state.
194
+ */
195
+ setSorting: (updater: Updater<SortingState>) => void
196
+ }
197
+
198
+ export interface Table_RowModels_Sorted<
199
+ TFeatures extends TableFeatures,
200
+ TData extends RowData,
201
+ > {
202
+ /**
203
+ * Returns the row model for the table before any sorting has been applied.
204
+ */
205
+ getPreSortedRowModel: () => RowModel<TFeatures, TData>
206
+ /**
207
+ * Returns the row model for the table after sorting has been applied.
208
+ */
209
+ getSortedRowModel: () => RowModel<TFeatures, TData>
210
+ }
211
+
212
+ export interface CreateRowModel_Sorted<
213
+ TFeatures extends TableFeatures,
214
+ TData extends RowData,
215
+ > {
216
+ /**
217
+ * This function is used to retrieve the sorted row model. If using server-side sorting, this function is not required. To use client-side sorting, pass the exported `getSortedRowModel()` from your adapter to your table or implement your own.
218
+ */
219
+ sortedRowModel?: (
220
+ table: Table<TFeatures, TData>,
221
+ ) => () => RowModel<TFeatures, TData>
222
+ }
223
+
224
+ export interface CachedRowModel_Sorted<
225
+ TFeatures extends TableFeatures,
226
+ TData extends RowData,
227
+ > {
228
+ sortedRowModel: () => RowModel<TFeatures, TData>
229
+ }
@@ -0,0 +1,320 @@
1
+ import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'
2
+ import { isFunction } from '../../utils'
3
+ import type { CellData, RowData, Updater } from '../../types/type-utils'
4
+ import type { TableFeatures } from '../../types/TableFeatures'
5
+ import type { Table_Internal } from '../../types/Table'
6
+ import type { Column_Internal } from '../../types/Column'
7
+ import type {
8
+ SortDirection,
9
+ SortFn,
10
+ SortingState,
11
+ } from './rowSortingFeature.types'
12
+
13
+ // State Utils
14
+
15
+ export function getDefaultSortingState(): SortingState {
16
+ return structuredClone([])
17
+ }
18
+
19
+ export function table_setSorting<
20
+ TFeatures extends TableFeatures,
21
+ TData extends RowData,
22
+ >(table: Table_Internal<TFeatures, TData>, updater: Updater<SortingState>) {
23
+ table.options.onSortingChange?.(updater)
24
+ }
25
+
26
+ export function table_resetSorting<
27
+ TFeatures extends TableFeatures,
28
+ TData extends RowData,
29
+ >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
30
+ table_setSorting(
31
+ table,
32
+ defaultState ? [] : (table.initialState.sorting ?? []),
33
+ )
34
+ }
35
+
36
+ // Column Utils
37
+
38
+ export function column_getAutoSortFn<
39
+ TFeatures extends TableFeatures,
40
+ TData extends RowData,
41
+ TValue extends CellData = CellData,
42
+ >(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {
43
+ const sortFns = column.table._rowModelFns.sortFns as
44
+ | Record<string, SortFn<TFeatures, TData>>
45
+ | undefined
46
+
47
+ let sortFn: SortFn<TFeatures, TData> | undefined
48
+
49
+ const firstRows = column.table.getFilteredRowModel().flatRows.slice(10)
50
+
51
+ let isString = false
52
+
53
+ for (const row of firstRows) {
54
+ const value = row.getValue(column.id)
55
+
56
+ if (Object.prototype.toString.call(value) === '[object Date]') {
57
+ sortFn = sortFns?.datetime
58
+ }
59
+
60
+ if (typeof value === 'string') {
61
+ isString = true
62
+
63
+ if (value.split(reSplitAlphaNumeric).length > 1) {
64
+ sortFn = sortFns?.alphanumeric
65
+ }
66
+ }
67
+ }
68
+
69
+ if (isString) {
70
+ sortFn = sortFns?.text
71
+ }
72
+
73
+ return sortFn ?? sortFn_basic
74
+ }
75
+
76
+ export function column_getAutoSortDir<
77
+ TFeatures extends TableFeatures,
78
+ TData extends RowData,
79
+ TValue extends CellData = CellData,
80
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
81
+ const firstRow = column.table.getFilteredRowModel().flatRows[0]
82
+
83
+ const value = firstRow ? firstRow.getValue(column.id) : undefined
84
+
85
+ if (typeof value === 'string') {
86
+ return 'asc'
87
+ }
88
+
89
+ return 'desc'
90
+ }
91
+
92
+ export function column_getSortFn<
93
+ TFeatures extends TableFeatures,
94
+ TData extends RowData,
95
+ TValue extends CellData = CellData,
96
+ >(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {
97
+ const sortFns = column.table._rowModelFns.sortFns as
98
+ | Record<string, SortFn<TFeatures, TData>>
99
+ | undefined
100
+
101
+ return isFunction(column.columnDef.sortFn)
102
+ ? column.columnDef.sortFn
103
+ : column.columnDef.sortFn === 'auto'
104
+ ? column_getAutoSortFn(column)
105
+ : (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)
106
+ }
107
+
108
+ export function column_toggleSorting<
109
+ TFeatures extends TableFeatures,
110
+ TData extends RowData,
111
+ TValue extends CellData = CellData,
112
+ >(
113
+ column: Column_Internal<TFeatures, TData, TValue>,
114
+ desc?: boolean,
115
+ multi?: boolean,
116
+ ) {
117
+ // if (column.columns.length) {
118
+ // column.columns.forEach((c, i) => {
119
+ // if (c.id) {
120
+ // table.toggleColumnSorting(c.id, undefined, multi || !!i)
121
+ // }
122
+ // })
123
+ // return
124
+ // }
125
+
126
+ // this needs to be outside of table.setSorting to be in sync with rerender
127
+ const nextSortingOrder = column_getNextSortingOrder(column)
128
+ const hasManualValue = typeof desc !== 'undefined'
129
+
130
+ table_setSorting(column.table, (old) => {
131
+ // Find any existing sorting for this column
132
+ const existingSorting = old.find((d) => d.id === column.id)
133
+ const existingIndex = old.findIndex((d) => d.id === column.id)
134
+
135
+ let newSorting: SortingState = []
136
+
137
+ // What should we do with this sort action?
138
+ let sortAction: 'add' | 'remove' | 'toggle' | 'replace'
139
+ const nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'
140
+
141
+ // Multi-mode
142
+ if (old.length && column_getCanMultiSort(column) && multi) {
143
+ if (existingSorting) {
144
+ sortAction = 'toggle'
145
+ } else {
146
+ sortAction = 'add'
147
+ }
148
+ } else {
149
+ // Normal mode
150
+ if (old.length && existingIndex !== old.length - 1) {
151
+ sortAction = 'replace'
152
+ } else if (existingSorting) {
153
+ sortAction = 'toggle'
154
+ } else {
155
+ sortAction = 'replace'
156
+ }
157
+ }
158
+
159
+ // Handle toggle states that will remove the sorting
160
+ if (sortAction === 'toggle') {
161
+ // If we are "actually" toggling (not a manual set value), should we remove the sorting?
162
+ if (!hasManualValue) {
163
+ // Is our intention to remove?
164
+ if (!nextSortingOrder) {
165
+ sortAction = 'remove'
166
+ }
167
+ }
168
+ }
169
+
170
+ if (sortAction === 'add') {
171
+ newSorting = [
172
+ ...old,
173
+ {
174
+ id: column.id,
175
+ desc: nextDesc,
176
+ },
177
+ ]
178
+ // Take latest n columns
179
+ newSorting.splice(
180
+ 0,
181
+ newSorting.length -
182
+ (column.table.options.maxMultiSortColCount ??
183
+ Number.MAX_SAFE_INTEGER),
184
+ )
185
+ } else if (sortAction === 'toggle') {
186
+ // This flips (or sets) the
187
+ newSorting = old.map((d) => {
188
+ if (d.id === column.id) {
189
+ return {
190
+ ...d,
191
+ desc: nextDesc,
192
+ }
193
+ }
194
+ return d
195
+ })
196
+ } else if (sortAction === 'remove') {
197
+ newSorting = old.filter((d) => d.id !== column.id)
198
+ } else {
199
+ newSorting = [
200
+ {
201
+ id: column.id,
202
+ desc: nextDesc,
203
+ },
204
+ ]
205
+ }
206
+
207
+ return newSorting
208
+ })
209
+ }
210
+
211
+ export function column_getFirstSortDir<
212
+ TFeatures extends TableFeatures,
213
+ TData extends RowData,
214
+ TValue extends CellData = CellData,
215
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
216
+ const sortDescFirst =
217
+ column.columnDef.sortDescFirst ??
218
+ column.table.options.sortDescFirst ??
219
+ column_getAutoSortDir(column) === 'desc'
220
+ return sortDescFirst ? 'desc' : 'asc'
221
+ }
222
+
223
+ export function column_getNextSortingOrder<
224
+ TFeatures extends TableFeatures,
225
+ TData extends RowData,
226
+ TValue extends CellData = CellData,
227
+ >(column: Column_Internal<TFeatures, TData, TValue>, multi?: boolean) {
228
+ const firstSortDirection = column_getFirstSortDir(column)
229
+ const isSorted = column_getIsSorted(column)
230
+
231
+ if (!isSorted) {
232
+ return firstSortDirection
233
+ }
234
+
235
+ if (
236
+ isSorted !== firstSortDirection &&
237
+ (column.table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general
238
+ (multi ? (column.table.options.enableMultiRemove ?? true) : true) // If multi, don't allow if enableMultiRemove))
239
+ ) {
240
+ return false
241
+ }
242
+ return isSorted === 'desc' ? 'asc' : 'desc'
243
+ }
244
+
245
+ export function column_getCanSort<
246
+ TFeatures extends TableFeatures,
247
+ TData extends RowData,
248
+ TValue extends CellData = CellData,
249
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
250
+ return (
251
+ (column.columnDef.enableSorting ?? true) &&
252
+ (column.table.options.enableSorting ?? true) &&
253
+ !!column.accessorFn
254
+ )
255
+ }
256
+
257
+ export function column_getCanMultiSort<
258
+ TFeatures extends TableFeatures,
259
+ TData extends RowData,
260
+ TValue extends CellData = CellData,
261
+ >(column: Column_Internal<TFeatures, TData, TValue>): boolean {
262
+ return (
263
+ column.columnDef.enableMultiSort ??
264
+ column.table.options.enableMultiSort ??
265
+ !!column.accessorFn
266
+ )
267
+ }
268
+
269
+ export function column_getIsSorted<
270
+ TFeatures extends TableFeatures,
271
+ TData extends RowData,
272
+ TValue extends CellData = CellData,
273
+ >(column: Column_Internal<TFeatures, TData, TValue>): false | SortDirection {
274
+ const columnSort = column.table.store.state.sorting?.find(
275
+ (d) => d.id === column.id,
276
+ )
277
+ return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'
278
+ }
279
+
280
+ export function column_getSortIndex<
281
+ TFeatures extends TableFeatures,
282
+ TData extends RowData,
283
+ TValue extends CellData = CellData,
284
+ >(column: Column_Internal<TFeatures, TData, TValue>): number {
285
+ return (
286
+ column.table.store.state.sorting?.findIndex((d) => d.id === column.id) ?? -1
287
+ )
288
+ }
289
+
290
+ export function column_clearSorting<
291
+ TFeatures extends TableFeatures,
292
+ TData extends RowData,
293
+ TValue extends CellData = CellData,
294
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
295
+ // clear sorting for just 1 column
296
+ table_setSorting(column.table, (old) =>
297
+ old.length ? old.filter((d) => d.id !== column.id) : [],
298
+ )
299
+ }
300
+
301
+ export function column_getToggleSortingHandler<
302
+ TFeatures extends TableFeatures,
303
+ TData extends RowData,
304
+ TValue extends CellData = CellData,
305
+ >(column: Column_Internal<TFeatures, TData, TValue>) {
306
+ const canSort = column_getCanSort(column)
307
+
308
+ return (e: unknown) => {
309
+ if (!canSort) return
310
+ ;(e as any).persist?.()
311
+ column_toggleSorting(
312
+ column,
313
+
314
+ undefined,
315
+ column_getCanMultiSort(column)
316
+ ? column.table.options.isMultiSortEvent?.(e)
317
+ : false,
318
+ )
319
+ }
320
+ }