@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,48 @@
1
+ import { columnFacetingFeature } from './column-faceting/columnFacetingFeature'
2
+ import { columnFilteringFeature } from './column-filtering/columnFilteringFeature'
3
+ import { columnGroupingFeature } from './column-grouping/columnGroupingFeature'
4
+ import { columnOrderingFeature } from './column-ordering/columnOrderingFeature'
5
+ import { columnPinningFeature } from './column-pinning/columnPinningFeature'
6
+ import { columnResizingFeature } from './column-resizing/columnResizingFeature'
7
+ import { columnSizingFeature } from './column-sizing/columnSizingFeature'
8
+ import { columnVisibilityFeature } from './column-visibility/columnVisibilityFeature'
9
+ import { globalFilteringFeature } from './global-filtering/globalFilteringFeature'
10
+ import { rowExpandingFeature } from './row-expanding/rowExpandingFeature'
11
+ import { rowPaginationFeature } from './row-pagination/rowPaginationFeature'
12
+ import { rowPinningFeature } from './row-pinning/rowPinningFeature'
13
+ import { rowSelectionFeature } from './row-selection/rowSelectionFeature'
14
+ import { rowSortingFeature } from './row-sorting/rowSortingFeature'
15
+
16
+ export interface StockFeatures {
17
+ columnFacetingFeature: typeof columnFacetingFeature
18
+ columnFilteringFeature: typeof columnFilteringFeature
19
+ columnGroupingFeature: typeof columnGroupingFeature
20
+ columnOrderingFeature: typeof columnOrderingFeature
21
+ columnPinningFeature: typeof columnPinningFeature
22
+ columnResizingFeature: typeof columnResizingFeature
23
+ columnSizingFeature: typeof columnSizingFeature
24
+ columnVisibilityFeature: typeof columnVisibilityFeature
25
+ globalFilteringFeature: typeof globalFilteringFeature
26
+ rowExpandingFeature: typeof rowExpandingFeature
27
+ rowPaginationFeature: typeof rowPaginationFeature
28
+ rowPinningFeature: typeof rowPinningFeature
29
+ rowSelectionFeature: typeof rowSelectionFeature
30
+ rowSortingFeature: typeof rowSortingFeature
31
+ }
32
+
33
+ export const stockFeatures: StockFeatures = {
34
+ columnFacetingFeature,
35
+ columnFilteringFeature,
36
+ columnGroupingFeature,
37
+ columnOrderingFeature,
38
+ columnPinningFeature,
39
+ columnResizingFeature,
40
+ columnSizingFeature,
41
+ columnVisibilityFeature,
42
+ globalFilteringFeature,
43
+ rowExpandingFeature,
44
+ rowPaginationFeature,
45
+ rowPinningFeature,
46
+ rowSelectionFeature,
47
+ rowSortingFeature,
48
+ } as const
@@ -0,0 +1,220 @@
1
+ import { isNumberArray } from '../utils'
2
+ import type { RowData } from '../types/type-utils'
3
+ import type { TableFeatures } from '../types/TableFeatures'
4
+ import type { Row } from '../types/Row'
5
+ import type { AggregationFn } from '../features/column-grouping/columnGroupingFeature.types'
6
+
7
+ /**
8
+ * Aggregation function for summing up the values of a column.
9
+ */
10
+ export const aggregationFn_sum: AggregationFn<any, any> = <
11
+ TFeatures extends TableFeatures,
12
+ TData extends RowData,
13
+ >(
14
+ columnId: string,
15
+ _leafRows: Array<Row<any, any>>,
16
+ childRows: Array<Row<any, any>>,
17
+ ) => {
18
+ // It's faster to just add the aggregations together instead of
19
+ // process leaf nodes individually
20
+ return childRows.reduce((sumValue, next) => {
21
+ const nextValue = next.getValue(columnId)
22
+ return sumValue + (typeof nextValue === 'number' ? nextValue : 0)
23
+ }, 0)
24
+ }
25
+
26
+ /**
27
+ * Aggregation function for finding the minimum value of a column.
28
+ */
29
+ export const aggregationFn_min: AggregationFn<any, any> = <
30
+ TFeatures extends TableFeatures,
31
+ TData extends RowData,
32
+ >(
33
+ columnId: string,
34
+ _leafRows: Array<Row<any, any>>,
35
+ childRows: Array<Row<any, any>>,
36
+ ) => {
37
+ let minValue: number | undefined
38
+
39
+ childRows.forEach((row) => {
40
+ const value = row.getValue(columnId)
41
+
42
+ if (
43
+ value != null &&
44
+ typeof value === 'number' &&
45
+ (minValue === undefined || value < minValue)
46
+ ) {
47
+ minValue = value
48
+ }
49
+ })
50
+
51
+ return minValue
52
+ }
53
+
54
+ /**
55
+ * Aggregation function for finding the maximum value of a column.
56
+ */
57
+ export const aggregationFn_max: AggregationFn<any, any> = <
58
+ TFeatures extends TableFeatures,
59
+ TData extends RowData,
60
+ >(
61
+ columnId: string,
62
+ _leafRows: Array<Row<any, any>>,
63
+ childRows: Array<Row<any, any>>,
64
+ ) => {
65
+ let maxValue: number | undefined
66
+
67
+ childRows.forEach((row) => {
68
+ const value = row.getValue(columnId)
69
+ if (
70
+ value != null &&
71
+ typeof value === 'number' &&
72
+ (maxValue === undefined || value > maxValue)
73
+ ) {
74
+ maxValue = value
75
+ }
76
+ })
77
+
78
+ return maxValue
79
+ }
80
+
81
+ /**
82
+ * Aggregation function for finding the extent (min and max) of a column.
83
+ */
84
+ export const aggregationFn_extent: AggregationFn<any, any> = <
85
+ TFeatures extends TableFeatures,
86
+ TData extends RowData,
87
+ >(
88
+ columnId: string,
89
+ _leafRows: Array<Row<any, any>>,
90
+ childRows: Array<Row<any, any>>,
91
+ ) => {
92
+ let minValue: number | undefined
93
+ let maxValue: number | undefined
94
+
95
+ childRows.forEach((row) => {
96
+ const value = row.getValue(columnId)
97
+ if (value != null && typeof value === 'number') {
98
+ if (minValue === undefined) {
99
+ minValue = maxValue = value
100
+ } else {
101
+ if (minValue > value) minValue = value
102
+ if (maxValue! < value) maxValue = value
103
+ }
104
+ }
105
+ })
106
+
107
+ return [minValue, maxValue]
108
+ }
109
+
110
+ /**
111
+ * Aggregation function for finding the mean (average) of a column.
112
+ */
113
+ export const aggregationFn_mean: AggregationFn<any, any> = <
114
+ TFeatures extends TableFeatures,
115
+ TData extends RowData,
116
+ >(
117
+ columnId: string,
118
+ leafRows: Array<Row<any, any>>,
119
+ ) => {
120
+ let count = 0
121
+ let sumValue = 0
122
+
123
+ leafRows.forEach((row) => {
124
+ const value = row.getValue(columnId)
125
+ if (value != null && typeof value === 'number') {
126
+ ++count
127
+ sumValue += value
128
+ } else if (value != null) {
129
+ const numValue = +value
130
+ if (!Number.isNaN(numValue)) {
131
+ ++count
132
+ sumValue += numValue
133
+ }
134
+ }
135
+ })
136
+
137
+ if (count) return sumValue / count
138
+
139
+ return
140
+ }
141
+
142
+ /**
143
+ * Aggregation function for finding the median value of a column.
144
+ */
145
+ export const aggregationFn_median: AggregationFn<any, any> = <
146
+ TFeatures extends TableFeatures,
147
+ TData extends RowData,
148
+ >(
149
+ columnId: string,
150
+ leafRows: Array<Row<any, any>>,
151
+ ) => {
152
+ if (!leafRows.length) {
153
+ return
154
+ }
155
+
156
+ const values = leafRows.map((row) => row.getValue(columnId))
157
+ if (!isNumberArray(values)) {
158
+ return
159
+ }
160
+ if (values.length === 1) {
161
+ return values[0]
162
+ }
163
+
164
+ const mid = Math.floor(values.length / 2)
165
+ const nums = values.sort((a, b) => a - b)
166
+ return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1]! + nums[mid]!) / 2
167
+ }
168
+
169
+ /**
170
+ * Aggregation function for finding the unique values of a column.
171
+ */
172
+ export const aggregationFn_unique: AggregationFn<any, any> = <
173
+ TFeatures extends TableFeatures,
174
+ TData extends RowData,
175
+ >(
176
+ columnId: string,
177
+ leafRows: Array<Row<any, any>>,
178
+ ) => {
179
+ return Array.from(new Set(leafRows.map((d) => d.getValue(columnId))).values())
180
+ }
181
+
182
+ /**
183
+ * Aggregation function for finding the count of unique values of a column.
184
+ */
185
+ export const aggregationFn_uniqueCount: AggregationFn<any, any> = <
186
+ TFeatures extends TableFeatures,
187
+ TData extends RowData,
188
+ >(
189
+ columnId: string,
190
+ leafRows: Array<Row<any, any>>,
191
+ ) => {
192
+ return new Set(leafRows.map((d) => d.getValue(columnId))).size
193
+ }
194
+
195
+ /**
196
+ * Aggregation function for counting the number of rows in a column.
197
+ */
198
+ export const aggregationFn_count: AggregationFn<any, any> = <
199
+ TFeatures extends TableFeatures,
200
+ TData extends RowData,
201
+ >(
202
+ _columnId: string,
203
+ leafRows: Array<Row<any, any>>,
204
+ ) => {
205
+ return leafRows.length
206
+ }
207
+
208
+ export const aggregationFns = {
209
+ sum: aggregationFn_sum,
210
+ min: aggregationFn_min,
211
+ max: aggregationFn_max,
212
+ extent: aggregationFn_extent,
213
+ mean: aggregationFn_mean,
214
+ median: aggregationFn_median,
215
+ unique: aggregationFn_unique,
216
+ uniqueCount: aggregationFn_uniqueCount,
217
+ count: aggregationFn_count,
218
+ }
219
+
220
+ export type BuiltInAggregationFn = keyof typeof aggregationFns
@@ -0,0 +1,379 @@
1
+ import type { RowData } from '../types/type-utils'
2
+ import type { TableFeatures } from '../types/TableFeatures'
3
+ import type { Row } from '../types/Row'
4
+ import type { FilterFn } from '../features/column-filtering/columnFilteringFeature.types'
5
+
6
+ // Basic filters
7
+
8
+ /**
9
+ * Filter function for checking if a value is exactly equal to a given value. (JS === comparison)
10
+ */
11
+ export const filterFn_equals: FilterFn<any, any> = <
12
+ TFeatures extends TableFeatures,
13
+ TData extends RowData,
14
+ >(
15
+ row: Row<TFeatures, TData>,
16
+ columnId: string,
17
+ filterValue: unknown,
18
+ ) => {
19
+ return row.getValue(columnId) === filterValue
20
+ }
21
+
22
+ filterFn_equals.autoRemove = (val: any) => testFalsy(val)
23
+
24
+ /**
25
+ * Filter function for checking if a value is weakly equal to a given value. (JS == comparison)
26
+ */
27
+ export const filterFn_weakEquals: FilterFn<any, any> = <
28
+ TFeatures extends TableFeatures,
29
+ TData extends RowData,
30
+ >(
31
+ row: Row<TFeatures, TData>,
32
+ columnId: string,
33
+ filterValue: unknown,
34
+ ) => {
35
+ return row.getValue(columnId) == filterValue
36
+ }
37
+
38
+ filterFn_weakEquals.autoRemove = (val: any) => testFalsy(val)
39
+
40
+ // String filters
41
+
42
+ /**
43
+ * Filter function for checking if a string includes a given substring. (Case-sensitive)
44
+ */
45
+ export const filterFn_includesStringSensitive: FilterFn<any, any> = <
46
+ TFeatures extends TableFeatures,
47
+ TData extends RowData,
48
+ >(
49
+ row: Row<TFeatures, TData>,
50
+ columnId: string,
51
+ filterValue: string,
52
+ ) => {
53
+ return Boolean(
54
+ row.getValue(columnId)?.toString().includes(filterValue.toString()),
55
+ )
56
+ }
57
+
58
+ filterFn_includesStringSensitive.autoRemove = (val: any) => testFalsy(val)
59
+
60
+ /**
61
+ * Filter function for checking if a string includes a given substring. (Non-case-sensitive)
62
+ */
63
+ export const filterFn_includesString: FilterFn<any, any> = <
64
+ TFeatures extends TableFeatures,
65
+ TData extends RowData,
66
+ >(
67
+ row: Row<TFeatures, TData>,
68
+ columnId: string,
69
+ filterValue: string,
70
+ ) => {
71
+ return Boolean(
72
+ row
73
+ .getValue(columnId)
74
+ ?.toString()
75
+ .toLowerCase()
76
+ .includes(filterValue.toString().toLowerCase()),
77
+ )
78
+ }
79
+
80
+ filterFn_includesString.autoRemove = (val: any) => testFalsy(val)
81
+
82
+ /**
83
+ * Filter function for checking if a string is exactly equal to a given string. (Non-case-sensitive)
84
+ */
85
+ export const filterFn_equalsString: FilterFn<any, any> = <
86
+ TFeatures extends TableFeatures,
87
+ TData extends RowData,
88
+ >(
89
+ row: Row<TFeatures, TData>,
90
+ columnId: string,
91
+ filterValue: string,
92
+ ) => {
93
+ return (
94
+ row.getValue(columnId)?.toString().toLowerCase() ===
95
+ filterValue.toLowerCase()
96
+ )
97
+ }
98
+
99
+ filterFn_equalsString.autoRemove = (val: any) => testFalsy(val)
100
+
101
+ /**
102
+ * Filter function for checking if a string is exactly equal to a given string. (Case-sensitive)
103
+ */
104
+ export const filterFn_equalsStringSensitive: FilterFn<any, any> = <
105
+ TFeatures extends TableFeatures,
106
+ TData extends RowData,
107
+ >(
108
+ row: Row<TFeatures, TData>,
109
+ columnId: string,
110
+ filterValue: string,
111
+ ) => {
112
+ return row.getValue(columnId)?.toString() === filterValue
113
+ }
114
+
115
+ filterFn_equalsStringSensitive.autoRemove = (val: any) => testFalsy(val)
116
+
117
+ // Number filters
118
+
119
+ /**
120
+ * Filter function for checking if a number is greater than a given number.
121
+ */
122
+ export const filterFn_greaterThan: FilterFn<any, any> = <
123
+ TFeatures extends TableFeatures,
124
+ TData extends RowData,
125
+ >(
126
+ row: Row<TFeatures, TData>,
127
+ columnId: string,
128
+ filterValue: Date | number | string,
129
+ ) => {
130
+ const rowValue = row.getValue(columnId)
131
+ const numericRowValue =
132
+ rowValue === null || rowValue === undefined ? 0 : +rowValue
133
+ const numericFilterValue = +filterValue
134
+
135
+ if (!isNaN(numericFilterValue) && !isNaN(numericRowValue)) {
136
+ return numericRowValue > numericFilterValue
137
+ }
138
+
139
+ const stringValue = (rowValue ?? '').toString().toLowerCase().trim()
140
+ const stringFilterValue = filterValue.toString().toLowerCase().trim()
141
+ return stringValue > stringFilterValue
142
+ }
143
+
144
+ filterFn_greaterThan.resolveFilterValue = (val: any) => testFalsy(val)
145
+
146
+ /**
147
+ * Filter function for checking if a number is greater than or equal to a given number.
148
+ */
149
+ export const filterFn_greaterThanOrEqualTo: FilterFn<any, any> = <
150
+ TFeatures extends TableFeatures,
151
+ TData extends RowData,
152
+ >(
153
+ row: Row<TFeatures, TData>,
154
+ columnId: string,
155
+ filterValue: Date | number | string,
156
+ ) => {
157
+ return (
158
+ filterFn_greaterThan(row as any, columnId, filterValue) ||
159
+ filterFn_equals(row as any, columnId, filterValue)
160
+ )
161
+ }
162
+
163
+ filterFn_greaterThanOrEqualTo.resolveFilterValue = (val: any) => testFalsy(val)
164
+
165
+ /**
166
+ * Filter function for checking if a number is less than a given number.
167
+ */
168
+ export const filterFn_lessThan: FilterFn<any, any> = <
169
+ TFeatures extends TableFeatures,
170
+ TData extends RowData,
171
+ >(
172
+ row: Row<TFeatures, TData>,
173
+ columnId: string,
174
+ filterValue: Date | number | string,
175
+ ) => {
176
+ return !filterFn_greaterThanOrEqualTo(row as any, columnId, filterValue)
177
+ }
178
+
179
+ filterFn_lessThan.resolveFilterValue = (val: any) => testFalsy(val)
180
+
181
+ /**
182
+ * Filter function for checking if a number is less than or equal to a given number.
183
+ */
184
+ export const filterFn_lessThanOrEqualTo: FilterFn<any, any> = <
185
+ TFeatures extends TableFeatures,
186
+ TData extends RowData,
187
+ >(
188
+ row: Row<TFeatures, TData>,
189
+ columnId: string,
190
+ filterValue: Date | number | string,
191
+ ) => {
192
+ return !filterFn_greaterThan(row as any, columnId, filterValue)
193
+ }
194
+
195
+ filterFn_lessThanOrEqualTo.resolveFilterValue = (val: any) => testFalsy(val)
196
+
197
+ // Range filters
198
+
199
+ /**
200
+ * Filter function for checking if a number or a string is between two given values.
201
+ */
202
+ const filterFn_between: FilterFn<any, any> = <
203
+ TFeatures extends TableFeatures,
204
+ TData extends RowData,
205
+ >(
206
+ row: Row<TFeatures, TData>,
207
+ columnId: string,
208
+ filterValues: [number | string, number | string],
209
+ ): boolean =>
210
+ ((['', undefined] as Array<any>).includes(filterValues[0]) ||
211
+ filterFn_greaterThan(row as any, columnId, filterValues[0])) &&
212
+ ((!isNaN(+filterValues[0]) &&
213
+ !isNaN(+filterValues[1]) &&
214
+ +filterValues[0] > +filterValues[1]) ||
215
+ (['', undefined] as Array<any>).includes(filterValues[1]) ||
216
+ filterFn_lessThan(row as any, columnId, filterValues[1]))
217
+
218
+ filterFn_between.autoRemove = (val: any) => !val
219
+
220
+ /**
221
+ * Filter function for checking if a number or a string is between two given values or equal to them.
222
+ */
223
+ const filterFn_betweenInclusive: FilterFn<any, any> = <
224
+ TFeatures extends TableFeatures,
225
+ TData extends RowData,
226
+ >(
227
+ row: Row<TFeatures, TData>,
228
+ columnId: string,
229
+ filterValues: [number | string, number | string],
230
+ ): boolean =>
231
+ ((['', undefined] as Array<any>).includes(filterValues[0]) ||
232
+ filterFn_greaterThanOrEqualTo(row as any, columnId, filterValues[0])) &&
233
+ ((!isNaN(+filterValues[0]) &&
234
+ !isNaN(+filterValues[1]) &&
235
+ +filterValues[0] > +filterValues[1]) ||
236
+ (['', undefined] as Array<any>).includes(filterValues[1]) ||
237
+ filterFn_lessThanOrEqualTo(row as any, columnId, filterValues[1]))
238
+
239
+ filterFn_betweenInclusive.autoRemove = (val: any) => !val
240
+
241
+ /**
242
+ * Filter function for checking if a number is within a given range.
243
+ */
244
+ export const filterFn_inNumberRange: FilterFn<any, any> = <
245
+ TFeatures extends TableFeatures,
246
+ TData extends RowData,
247
+ >(
248
+ row: Row<TFeatures, TData>,
249
+ columnId: string,
250
+ filterValue: [number, number],
251
+ ) => {
252
+ const [min, max] = filterValue
253
+
254
+ const rowValue: number = row.getValue(columnId)
255
+ return rowValue >= min && rowValue <= max
256
+ }
257
+
258
+ filterFn_inNumberRange.resolveFilterValue = (val: [any, any]) => {
259
+ const [unsafeMin, unsafeMax] = val
260
+
261
+ const parsedMin =
262
+ typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin
263
+ const parsedMax =
264
+ typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax
265
+
266
+ let min =
267
+ unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin
268
+ let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax
269
+
270
+ if (min > max) {
271
+ const temp = min
272
+ min = max
273
+ max = temp
274
+ }
275
+
276
+ return [min, max] as const
277
+ }
278
+
279
+ filterFn_inNumberRange.autoRemove = (val: any) =>
280
+ testFalsy(val) || (testFalsy(val[0]) && testFalsy(val[1]))
281
+
282
+ // Array filters
283
+
284
+ /**
285
+ * Filter function for checking if an array has a given value.
286
+ */
287
+ export const filterFn_arrHas: FilterFn<any, any> = <
288
+ TFeatures extends TableFeatures,
289
+ TData extends RowData,
290
+ >(
291
+ row: Row<TFeatures, TData>,
292
+ columnId: string,
293
+ filterValue: Array<unknown>,
294
+ ) => {
295
+ return filterValue.some((val) => row.getValue<unknown>(columnId) === val)
296
+ }
297
+
298
+ /**
299
+ * Filter function for checking if an array includes a given value.
300
+ */
301
+ export const filterFn_arrIncludes: FilterFn<any, any> = <
302
+ TFeatures extends TableFeatures,
303
+ TData extends RowData,
304
+ >(
305
+ row: Row<TFeatures, TData>,
306
+ columnId: string,
307
+ filterValue: Array<unknown>,
308
+ ) => {
309
+ return filterValue.some((val) =>
310
+ (row.getValue<unknown>(columnId) as Array<unknown> | string).includes(
311
+ val as any,
312
+ ),
313
+ )
314
+ }
315
+
316
+ filterFn_arrIncludes.autoRemove = (val: any) => testFalsy(val) || !val?.length
317
+
318
+ /**
319
+ * Filter function for checking if an array includes all of the given values.
320
+ */
321
+ export const filterFn_arrIncludesAll: FilterFn<any, any> = <
322
+ TFeatures extends TableFeatures,
323
+ TData extends RowData,
324
+ >(
325
+ row: Row<TFeatures, TData>,
326
+ columnId: string,
327
+ filterValue: Array<unknown>,
328
+ ) => {
329
+ const value = row.getValue<Array<unknown>>(columnId)
330
+ if (!Array.isArray(value)) return false
331
+ return !filterValue.some((val) => !value.includes(val))
332
+ }
333
+
334
+ filterFn_arrIncludesAll.autoRemove = (val: any) =>
335
+ testFalsy(val) || !val?.length
336
+
337
+ /**
338
+ * Filter function for checking if an array includes any of the given values.
339
+ */
340
+ export const filterFn_arrIncludesSome: FilterFn<any, any> = <
341
+ TFeatures extends TableFeatures,
342
+ TData extends RowData,
343
+ >(
344
+ row: Row<TFeatures, TData>,
345
+ columnId: string,
346
+ filterValue: Array<unknown>,
347
+ ) => {
348
+ const value = row.getValue<Array<unknown>>(columnId)
349
+ if (!Array.isArray(value)) return false
350
+ return filterValue.some((val) => value.includes(val))
351
+ }
352
+
353
+ filterFn_arrIncludesSome.autoRemove = (val: any) =>
354
+ testFalsy(val) || !val?.length
355
+
356
+ // Export
357
+
358
+ export const filterFns = {
359
+ arrIncludes: filterFn_arrIncludes,
360
+ arrIncludesAll: filterFn_arrIncludesAll,
361
+ arrHas: filterFn_arrHas,
362
+ arrIncludesSome: filterFn_arrIncludesSome,
363
+ between: filterFn_between,
364
+ betweenInclusive: filterFn_betweenInclusive,
365
+ equals: filterFn_equals,
366
+ equalsString: filterFn_equalsString,
367
+ inNumberRange: filterFn_inNumberRange,
368
+ includesString: filterFn_includesString,
369
+ includesStringSensitive: filterFn_includesStringSensitive,
370
+ weakEquals: filterFn_weakEquals,
371
+ }
372
+
373
+ export type BuiltInFilterFn = keyof typeof filterFns
374
+
375
+ // Utils
376
+
377
+ function testFalsy(val: any) {
378
+ return val === undefined || val === null || val === ''
379
+ }