@tanstack/table-core 9.0.0-beta.5 → 9.0.0-beta.50

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 (602) hide show
  1. package/README.md +2 -0
  2. package/dist/core/cells/constructCell.cjs +1 -4
  3. package/dist/core/cells/constructCell.cjs.map +1 -1
  4. package/dist/core/cells/constructCell.d.cts +4 -4
  5. package/dist/core/cells/constructCell.d.ts +4 -4
  6. package/dist/core/cells/constructCell.js +1 -4
  7. package/dist/core/cells/constructCell.js.map +1 -1
  8. package/dist/core/cells/coreCellsFeature.types.d.cts +7 -7
  9. package/dist/core/cells/coreCellsFeature.types.d.ts +7 -7
  10. package/dist/core/cells/coreCellsFeature.utils.d.cts +4 -4
  11. package/dist/core/cells/coreCellsFeature.utils.d.ts +4 -4
  12. package/dist/core/columns/constructColumn.cjs +4 -5
  13. package/dist/core/columns/constructColumn.cjs.map +1 -1
  14. package/dist/core/columns/constructColumn.d.cts +3 -3
  15. package/dist/core/columns/constructColumn.d.ts +3 -3
  16. package/dist/core/columns/constructColumn.js +4 -5
  17. package/dist/core/columns/constructColumn.js.map +1 -1
  18. package/dist/core/columns/coreColumnsFeature.cjs +12 -18
  19. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  20. package/dist/core/columns/coreColumnsFeature.js +12 -18
  21. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  22. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
  23. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
  24. package/dist/core/columns/coreColumnsFeature.utils.cjs +4 -8
  25. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  26. package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
  27. package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
  28. package/dist/core/columns/coreColumnsFeature.utils.js +5 -9
  29. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  30. package/dist/core/coreFeatures.cjs.map +1 -1
  31. package/dist/core/coreFeatures.d.cts +1 -1
  32. package/dist/core/coreFeatures.d.ts +1 -1
  33. package/dist/core/coreFeatures.js.map +1 -1
  34. package/dist/core/headers/buildHeaderGroups.cjs +1 -2
  35. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  36. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  37. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  38. package/dist/core/headers/buildHeaderGroups.js +1 -2
  39. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  40. package/dist/core/headers/constructHeader.cjs +1 -4
  41. package/dist/core/headers/constructHeader.cjs.map +1 -1
  42. package/dist/core/headers/constructHeader.d.cts +2 -2
  43. package/dist/core/headers/constructHeader.d.ts +2 -2
  44. package/dist/core/headers/constructHeader.js +1 -4
  45. package/dist/core/headers/constructHeader.js.map +1 -1
  46. package/dist/core/headers/coreHeadersFeature.cjs +8 -11
  47. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  48. package/dist/core/headers/coreHeadersFeature.js +8 -11
  49. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  50. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  51. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  52. package/dist/core/headers/coreHeadersFeature.utils.cjs +8 -10
  53. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  54. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  55. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  56. package/dist/core/headers/coreHeadersFeature.utils.js +8 -10
  57. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  58. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +7 -15
  59. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -15
  60. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +8 -26
  61. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  62. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +16 -16
  63. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +16 -16
  64. package/dist/core/row-models/coreRowModelsFeature.utils.js +8 -26
  65. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  66. package/dist/core/row-models/createCoreRowModel.cjs +4 -6
  67. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  68. package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
  69. package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
  70. package/dist/core/row-models/createCoreRowModel.js +5 -7
  71. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  72. package/dist/core/rows/constructRow.cjs +6 -10
  73. package/dist/core/rows/constructRow.cjs.map +1 -1
  74. package/dist/core/rows/constructRow.d.cts +2 -2
  75. package/dist/core/rows/constructRow.d.ts +2 -2
  76. package/dist/core/rows/constructRow.js +7 -10
  77. package/dist/core/rows/constructRow.js.map +1 -1
  78. package/dist/core/rows/coreRowsFeature.cjs +18 -2
  79. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  80. package/dist/core/rows/coreRowsFeature.js +19 -3
  81. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  82. package/dist/core/rows/coreRowsFeature.types.d.cts +41 -7
  83. package/dist/core/rows/coreRowsFeature.types.d.ts +41 -7
  84. package/dist/core/rows/coreRowsFeature.utils.cjs +62 -8
  85. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  86. package/dist/core/rows/coreRowsFeature.utils.d.cts +24 -5
  87. package/dist/core/rows/coreRowsFeature.utils.d.ts +24 -5
  88. package/dist/core/rows/coreRowsFeature.utils.js +61 -10
  89. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  90. package/dist/core/table/constructTable.cjs +24 -14
  91. package/dist/core/table/constructTable.cjs.map +1 -1
  92. package/dist/core/table/constructTable.d.cts +1 -1
  93. package/dist/core/table/constructTable.d.ts +1 -1
  94. package/dist/core/table/constructTable.js +24 -14
  95. package/dist/core/table/constructTable.js.map +1 -1
  96. package/dist/core/table/coreTablesFeature.types.d.cts +32 -19
  97. package/dist/core/table/coreTablesFeature.types.d.ts +32 -19
  98. package/dist/core/table/coreTablesFeature.utils.cjs +38 -14
  99. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  100. package/dist/core/table/coreTablesFeature.utils.d.cts +10 -7
  101. package/dist/core/table/coreTablesFeature.utils.d.ts +10 -7
  102. package/dist/core/table/coreTablesFeature.utils.js +38 -14
  103. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  104. package/dist/experimental-worker-plugin.cjs +14 -0
  105. package/dist/experimental-worker-plugin.d.cts +5 -0
  106. package/dist/experimental-worker-plugin.d.ts +5 -0
  107. package/dist/experimental-worker-plugin.js +6 -0
  108. package/dist/features/aggregation/aggregationFeature.cjs +39 -0
  109. package/dist/features/aggregation/aggregationFeature.cjs.map +1 -0
  110. package/dist/features/aggregation/aggregationFeature.d.cts +10 -0
  111. package/dist/features/aggregation/aggregationFeature.d.ts +10 -0
  112. package/dist/features/aggregation/aggregationFeature.js +39 -0
  113. package/dist/features/aggregation/aggregationFeature.js.map +1 -0
  114. package/dist/features/aggregation/aggregationFeature.types.cjs +13 -0
  115. package/dist/features/aggregation/aggregationFeature.types.cjs.map +1 -0
  116. package/dist/features/aggregation/aggregationFeature.types.d.cts +195 -0
  117. package/dist/features/aggregation/aggregationFeature.types.d.ts +195 -0
  118. package/dist/features/aggregation/aggregationFeature.types.js +12 -0
  119. package/dist/features/aggregation/aggregationFeature.types.js.map +1 -0
  120. package/dist/features/aggregation/aggregationFeature.utils.cjs +212 -0
  121. package/dist/features/aggregation/aggregationFeature.utils.cjs.map +1 -0
  122. package/dist/features/aggregation/aggregationFeature.utils.d.cts +34 -0
  123. package/dist/features/aggregation/aggregationFeature.utils.d.ts +34 -0
  124. package/dist/features/aggregation/aggregationFeature.utils.js +206 -0
  125. package/dist/features/aggregation/aggregationFeature.utils.js.map +1 -0
  126. package/dist/features/aggregation/aggregationFns.cjs +246 -0
  127. package/dist/features/aggregation/aggregationFns.cjs.map +1 -0
  128. package/dist/features/aggregation/aggregationFns.d.cts +68 -0
  129. package/dist/features/aggregation/aggregationFns.d.ts +68 -0
  130. package/dist/features/aggregation/aggregationFns.js +235 -0
  131. package/dist/features/aggregation/aggregationFns.js.map +1 -0
  132. package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
  133. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  134. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  135. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  136. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
  137. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
  138. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
  139. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  140. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
  141. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
  142. package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
  143. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  144. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
  145. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  146. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  147. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  148. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  149. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  150. package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
  151. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  152. package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
  153. package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
  154. package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
  155. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  156. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
  157. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  158. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  159. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  160. package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
  161. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  162. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  163. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  164. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  165. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  166. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
  167. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
  168. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
  169. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  170. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
  171. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
  172. package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
  173. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  174. package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
  175. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  176. package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
  177. package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
  178. package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
  179. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  180. package/dist/features/column-filtering/filterFns.cjs +399 -0
  181. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  182. package/dist/features/column-filtering/filterFns.d.cts +210 -0
  183. package/dist/features/column-filtering/filterFns.d.ts +210 -0
  184. package/dist/features/column-filtering/filterFns.js +375 -0
  185. package/dist/features/column-filtering/filterFns.js.map +1 -0
  186. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  187. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  188. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  189. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  190. package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
  191. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  192. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  193. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  194. package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
  195. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  196. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
  197. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
  198. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
  199. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  200. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
  201. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
  202. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
  203. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  204. package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
  205. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  206. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
  207. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
  208. package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
  209. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  210. package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
  211. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  212. package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
  213. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  214. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
  215. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
  216. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
  217. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  218. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
  219. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
  220. package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
  221. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  222. package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
  223. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  224. package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
  225. package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
  226. package/dist/features/column-pinning/columnPinningFeature.js +125 -144
  227. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  228. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
  229. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
  230. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
  231. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  232. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
  233. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
  234. package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
  235. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  236. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  237. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  238. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
  239. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  240. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  241. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  242. package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
  243. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  244. package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
  245. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  246. package/dist/features/column-sizing/columnSizingFeature.js +34 -68
  247. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  248. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
  249. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
  250. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
  251. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  252. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
  253. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
  254. package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
  255. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  256. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
  257. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  258. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
  259. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  260. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
  261. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
  262. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
  263. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  264. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
  265. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
  266. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
  267. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  268. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  269. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  270. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  271. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  272. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  273. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  274. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
  275. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  276. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
  277. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
  278. package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
  279. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  280. package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
  281. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  282. package/dist/features/row-expanding/createExpandedRowModel.d.cts +2 -2
  283. package/dist/features/row-expanding/createExpandedRowModel.d.ts +2 -2
  284. package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
  285. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  286. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +6 -15
  287. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -15
  288. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +28 -26
  289. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  290. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  291. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  292. package/dist/features/row-expanding/rowExpandingFeature.utils.js +29 -27
  293. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  294. package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
  295. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  296. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +2 -2
  297. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +2 -2
  298. package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
  299. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  300. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +5 -14
  301. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -14
  302. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +9 -15
  303. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  304. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  305. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  306. package/dist/features/row-pagination/rowPaginationFeature.utils.js +9 -15
  307. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  308. package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
  309. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  310. package/dist/features/row-pinning/rowPinningFeature.js +4 -16
  311. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  312. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  313. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  314. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +9 -14
  315. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  316. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  317. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  318. package/dist/features/row-pinning/rowPinningFeature.utils.js +9 -14
  319. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  320. package/dist/features/row-selection/rowSelectionFeature.cjs +66 -22
  321. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  322. package/dist/features/row-selection/rowSelectionFeature.js +67 -23
  323. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  324. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +49 -11
  325. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +49 -11
  326. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +128 -72
  327. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  328. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +57 -30
  329. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +57 -30
  330. package/dist/features/row-selection/rowSelectionFeature.utils.js +129 -74
  331. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  332. package/dist/features/row-sorting/createSortedRowModel.cjs +69 -50
  333. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  334. package/dist/features/row-sorting/createSortedRowModel.d.cts +10 -4
  335. package/dist/features/row-sorting/createSortedRowModel.d.ts +10 -4
  336. package/dist/features/row-sorting/createSortedRowModel.js +70 -51
  337. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  338. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +54 -22
  339. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -22
  340. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +31 -17
  341. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  342. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  343. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  344. package/dist/features/row-sorting/rowSortingFeature.utils.js +31 -17
  345. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  346. package/dist/features/row-sorting/sortFns.cjs +226 -0
  347. package/dist/features/row-sorting/sortFns.cjs.map +1 -0
  348. package/dist/features/row-sorting/sortFns.d.cts +98 -0
  349. package/dist/features/row-sorting/sortFns.d.ts +98 -0
  350. package/dist/features/row-sorting/sortFns.js +217 -0
  351. package/dist/features/row-sorting/sortFns.js.map +1 -0
  352. package/dist/features/stockFeatures.cjs +2 -0
  353. package/dist/features/stockFeatures.cjs.map +1 -1
  354. package/dist/features/stockFeatures.d.cts +2 -0
  355. package/dist/features/stockFeatures.d.ts +2 -0
  356. package/dist/features/stockFeatures.js +2 -0
  357. package/dist/features/stockFeatures.js.map +1 -1
  358. package/dist/flex-render.d.cts +1 -1
  359. package/dist/flex-render.d.ts +1 -1
  360. package/dist/helpers/columnHelper.cjs.map +1 -1
  361. package/dist/helpers/columnHelper.d.cts +2 -2
  362. package/dist/helpers/columnHelper.d.ts +2 -2
  363. package/dist/helpers/columnHelper.js.map +1 -1
  364. package/dist/helpers/metaHelper.cjs +30 -0
  365. package/dist/helpers/metaHelper.cjs.map +1 -0
  366. package/dist/helpers/metaHelper.d.cts +26 -0
  367. package/dist/helpers/metaHelper.d.ts +26 -0
  368. package/dist/helpers/metaHelper.js +29 -0
  369. package/dist/helpers/metaHelper.js.map +1 -0
  370. package/dist/helpers/tableFeatures.cjs +32 -3
  371. package/dist/helpers/tableFeatures.cjs.map +1 -1
  372. package/dist/helpers/tableFeatures.d.cts +34 -5
  373. package/dist/helpers/tableFeatures.d.ts +34 -5
  374. package/dist/helpers/tableFeatures.js +32 -3
  375. package/dist/helpers/tableFeatures.js.map +1 -1
  376. package/dist/index.cjs +23 -3
  377. package/dist/index.d.cts +31 -28
  378. package/dist/index.d.ts +31 -28
  379. package/dist/index.js +8 -5
  380. package/dist/static-functions.cjs +30 -19
  381. package/dist/static-functions.d.cts +8 -7
  382. package/dist/static-functions.d.ts +8 -7
  383. package/dist/static-functions.js +8 -7
  384. package/dist/store-reactivity-bindings.cjs +3 -3
  385. package/dist/store-reactivity-bindings.cjs.map +1 -1
  386. package/dist/store-reactivity-bindings.d.cts +1 -1
  387. package/dist/store-reactivity-bindings.d.ts +1 -1
  388. package/dist/store-reactivity-bindings.js +3 -3
  389. package/dist/store-reactivity-bindings.js.map +1 -1
  390. package/dist/types/Cell.d.cts +4 -2
  391. package/dist/types/Cell.d.ts +4 -2
  392. package/dist/types/Column.d.cts +15 -15
  393. package/dist/types/Column.d.ts +15 -15
  394. package/dist/types/ColumnDef.d.cts +30 -14
  395. package/dist/types/ColumnDef.d.ts +30 -14
  396. package/dist/types/Header.d.cts +2 -2
  397. package/dist/types/Header.d.ts +2 -2
  398. package/dist/types/HeaderGroup.d.cts +2 -2
  399. package/dist/types/HeaderGroup.d.ts +2 -2
  400. package/dist/types/Row.d.cts +6 -4
  401. package/dist/types/Row.d.ts +6 -4
  402. package/dist/types/RowModel.d.cts +11 -23
  403. package/dist/types/RowModel.d.ts +11 -23
  404. package/dist/types/RowModelFns.d.cts +4 -4
  405. package/dist/types/RowModelFns.d.ts +4 -4
  406. package/dist/types/Table.d.cts +26 -31
  407. package/dist/types/Table.d.ts +26 -31
  408. package/dist/types/TableFeatures.d.cts +350 -22
  409. package/dist/types/TableFeatures.d.ts +350 -22
  410. package/dist/types/TableOptions.d.cts +22 -14
  411. package/dist/types/TableOptions.d.ts +22 -14
  412. package/dist/types/TableState.d.cts +6 -6
  413. package/dist/types/TableState.d.ts +6 -6
  414. package/dist/types/type-utils.d.cts +8 -1
  415. package/dist/types/type-utils.d.ts +8 -1
  416. package/dist/utils.cjs +51 -29
  417. package/dist/utils.cjs.map +1 -1
  418. package/dist/utils.d.cts +30 -8
  419. package/dist/utils.d.ts +30 -8
  420. package/dist/utils.js +49 -30
  421. package/dist/utils.js.map +1 -1
  422. package/dist/worker/createTableWorker.cjs +189 -0
  423. package/dist/worker/createTableWorker.cjs.map +1 -0
  424. package/dist/worker/createTableWorker.d.cts +102 -0
  425. package/dist/worker/createTableWorker.d.ts +102 -0
  426. package/dist/worker/createTableWorker.js +186 -0
  427. package/dist/worker/createTableWorker.js.map +1 -0
  428. package/dist/worker/createWorkerRowModel.cjs +78 -0
  429. package/dist/worker/createWorkerRowModel.cjs.map +1 -0
  430. package/dist/worker/createWorkerRowModel.d.cts +42 -0
  431. package/dist/worker/createWorkerRowModel.d.ts +42 -0
  432. package/dist/worker/createWorkerRowModel.js +78 -0
  433. package/dist/worker/createWorkerRowModel.js.map +1 -0
  434. package/dist/worker/initTableWorker.cjs +100 -0
  435. package/dist/worker/initTableWorker.cjs.map +1 -0
  436. package/dist/worker/initTableWorker.d.cts +33 -0
  437. package/dist/worker/initTableWorker.d.ts +33 -0
  438. package/dist/worker/initTableWorker.js +100 -0
  439. package/dist/worker/initTableWorker.js.map +1 -0
  440. package/dist/worker/rebuildRowModel.cjs +72 -0
  441. package/dist/worker/rebuildRowModel.cjs.map +1 -0
  442. package/dist/worker/rebuildRowModel.d.cts +9 -0
  443. package/dist/worker/rebuildRowModel.d.ts +9 -0
  444. package/dist/worker/rebuildRowModel.js +72 -0
  445. package/dist/worker/rebuildRowModel.js.map +1 -0
  446. package/dist/worker/serializeRowModel.cjs +53 -0
  447. package/dist/worker/serializeRowModel.cjs.map +1 -0
  448. package/dist/worker/serializeRowModel.js +52 -0
  449. package/dist/worker/serializeRowModel.js.map +1 -0
  450. package/dist/worker/tableWorkerProtocol.cjs +29 -0
  451. package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
  452. package/dist/worker/tableWorkerProtocol.d.cts +88 -0
  453. package/dist/worker/tableWorkerProtocol.d.ts +88 -0
  454. package/dist/worker/tableWorkerProtocol.js +27 -0
  455. package/dist/worker/tableWorkerProtocol.js.map +1 -0
  456. package/package.json +8 -3
  457. package/skills/aggregation/SKILL.md +141 -0
  458. package/skills/api-not-found/SKILL.md +113 -0
  459. package/skills/client-vs-server/SKILL.md +164 -0
  460. package/skills/column-faceting/SKILL.md +97 -0
  461. package/skills/column-filtering/SKILL.md +87 -0
  462. package/skills/column-ordering/SKILL.md +75 -0
  463. package/skills/column-pinning/SKILL.md +89 -0
  464. package/skills/column-resizing/SKILL.md +91 -0
  465. package/skills/column-sizing/SKILL.md +72 -0
  466. package/skills/column-visibility/SKILL.md +75 -0
  467. package/skills/core/SKILL.md +175 -0
  468. package/skills/custom-features/SKILL.md +235 -0
  469. package/skills/expanding/SKILL.md +80 -0
  470. package/skills/global-filtering/SKILL.md +84 -0
  471. package/skills/grouping/SKILL.md +51 -401
  472. package/skills/migrate-v8-to-v9/SKILL.md +274 -416
  473. package/skills/pagination/SKILL.md +37 -344
  474. package/skills/row-pinning/SKILL.md +47 -234
  475. package/skills/row-selection/SKILL.md +75 -302
  476. package/skills/sorting/SKILL.md +45 -303
  477. package/skills/table-features/SKILL.md +159 -0
  478. package/skills/typescript/SKILL.md +126 -0
  479. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  480. package/src/core/columns/constructColumn.ts +6 -0
  481. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  482. package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
  483. package/src/core/coreFeatures.ts +1 -1
  484. package/src/core/headers/buildHeaderGroups.ts +4 -2
  485. package/src/core/headers/coreHeadersFeature.types.ts +12 -12
  486. package/src/core/headers/coreHeadersFeature.utils.ts +7 -8
  487. package/src/core/row-models/coreRowModelsFeature.types.ts +6 -20
  488. package/src/core/row-models/coreRowModelsFeature.utils.ts +8 -8
  489. package/src/core/row-models/createCoreRowModel.ts +7 -6
  490. package/src/core/rows/constructRow.ts +4 -2
  491. package/src/core/rows/coreRowsFeature.ts +21 -0
  492. package/src/core/rows/coreRowsFeature.types.ts +45 -8
  493. package/src/core/rows/coreRowsFeature.utils.ts +93 -5
  494. package/src/core/table/constructTable.ts +44 -6
  495. package/src/core/table/coreTablesFeature.types.ts +45 -20
  496. package/src/core/table/coreTablesFeature.utils.ts +59 -19
  497. package/src/experimental-worker-plugin.ts +22 -0
  498. package/src/features/aggregation/aggregationFeature.ts +60 -0
  499. package/src/features/aggregation/aggregationFeature.types.ts +339 -0
  500. package/src/features/aggregation/aggregationFeature.utils.ts +430 -0
  501. package/src/features/aggregation/aggregationFns.ts +345 -0
  502. package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
  503. package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
  504. package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
  505. package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
  506. package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
  507. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  508. package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
  509. package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
  510. package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
  511. package/src/features/column-filtering/filterFns.ts +533 -0
  512. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  513. package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
  514. package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
  515. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
  516. package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
  517. package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
  518. package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
  519. package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
  520. package/src/features/column-pinning/columnPinningFeature.ts +76 -59
  521. package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
  522. package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
  523. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  524. package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
  525. package/src/features/column-sizing/columnSizingFeature.ts +24 -24
  526. package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
  527. package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
  528. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  529. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  530. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
  531. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  532. package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
  533. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
  534. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  535. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  536. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
  537. package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
  538. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  539. package/src/features/row-selection/rowSelectionFeature.ts +53 -3
  540. package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
  541. package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
  542. package/src/features/row-sorting/createSortedRowModel.ts +107 -75
  543. package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
  544. package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
  545. package/src/features/row-sorting/sortFns.ts +366 -0
  546. package/src/features/stockFeatures.ts +3 -0
  547. package/src/helpers/columnHelper.ts +4 -4
  548. package/src/helpers/metaHelper.ts +24 -0
  549. package/src/helpers/tableFeatures.ts +37 -5
  550. package/src/index.ts +8 -8
  551. package/src/static-functions.ts +1 -0
  552. package/src/store-reactivity-bindings.ts +1 -1
  553. package/src/types/Cell.ts +4 -2
  554. package/src/types/Column.ts +13 -9
  555. package/src/types/ColumnDef.ts +40 -10
  556. package/src/types/Header.ts +2 -2
  557. package/src/types/HeaderGroup.ts +6 -6
  558. package/src/types/Row.ts +6 -4
  559. package/src/types/RowModel.ts +19 -74
  560. package/src/types/RowModelFns.ts +10 -10
  561. package/src/types/Table.ts +52 -27
  562. package/src/types/TableFeatures.ts +392 -14
  563. package/src/types/TableOptions.ts +67 -14
  564. package/src/types/TableState.ts +15 -1
  565. package/src/types/type-utils.ts +8 -0
  566. package/src/utils.ts +60 -8
  567. package/src/worker/createTableWorker.ts +357 -0
  568. package/src/worker/createWorkerRowModel.ts +121 -0
  569. package/src/worker/initTableWorker.ts +164 -0
  570. package/src/worker/rebuildRowModel.ts +120 -0
  571. package/src/worker/serializeRowModel.ts +80 -0
  572. package/src/worker/tableWorkerProtocol.ts +105 -0
  573. package/dist/fns/aggregationFns.cjs +0 -161
  574. package/dist/fns/aggregationFns.cjs.map +0 -1
  575. package/dist/fns/aggregationFns.d.cts +0 -85
  576. package/dist/fns/aggregationFns.d.ts +0 -85
  577. package/dist/fns/aggregationFns.js +0 -151
  578. package/dist/fns/aggregationFns.js.map +0 -1
  579. package/dist/fns/filterFns.cjs +0 -201
  580. package/dist/fns/filterFns.cjs.map +0 -1
  581. package/dist/fns/filterFns.d.cts +0 -167
  582. package/dist/fns/filterFns.d.ts +0 -167
  583. package/dist/fns/filterFns.js +0 -185
  584. package/dist/fns/filterFns.js.map +0 -1
  585. package/dist/fns/sortFns.cjs +0 -118
  586. package/dist/fns/sortFns.cjs.map +0 -1
  587. package/dist/fns/sortFns.d.cts +0 -65
  588. package/dist/fns/sortFns.d.ts +0 -65
  589. package/dist/fns/sortFns.js +0 -110
  590. package/dist/fns/sortFns.js.map +0 -1
  591. package/skills/column-definitions/SKILL.md +0 -333
  592. package/skills/column-layout/SKILL.md +0 -328
  593. package/skills/column-layout/references/subsystems.md +0 -220
  594. package/skills/customizing-feature-behavior/SKILL.md +0 -416
  595. package/skills/filtering/SKILL.md +0 -357
  596. package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
  597. package/skills/row-expanding/SKILL.md +0 -348
  598. package/skills/setup/SKILL.md +0 -400
  599. package/skills/state-management/SKILL.md +0 -388
  600. package/src/fns/aggregationFns.ts +0 -245
  601. package/src/fns/filterFns.ts +0 -382
  602. package/src/fns/sortFns.ts +0 -217
@@ -1,382 +0,0 @@
1
- import type { RowData } from '../types/type-utils'
2
- import type { TableFeatures } from '../types/TableFeatures'
3
- import type { Row } from '../types/Row'
4
-
5
- // Basic filters
6
-
7
- /**
8
- * Keeps rows whose column value is strictly equal to the filter value.
9
- *
10
- * Uses JavaScript `===` comparison and auto-removes empty filter values.
11
- */
12
- export const filterFn_equals = Object.assign(
13
- <TFeatures extends TableFeatures, TData extends RowData>(
14
- row: Row<TFeatures, TData>,
15
- columnId: string,
16
- filterValue: unknown,
17
- ) => {
18
- return row.getValue(columnId) === filterValue
19
- },
20
- { autoRemove: (val: any) => testFalsy(val) },
21
- )
22
-
23
- /**
24
- * Keeps rows whose column value is loosely equal to the filter value.
25
- *
26
- * Uses JavaScript `==` comparison and auto-removes empty filter values. This is
27
- * useful for matching string input against numeric row values.
28
- */
29
- export const filterFn_weakEquals = Object.assign(
30
- <TFeatures extends TableFeatures, TData extends RowData>(
31
- row: Row<TFeatures, TData>,
32
- columnId: string,
33
- filterValue: unknown,
34
- ) => {
35
- return row.getValue(columnId) == filterValue
36
- },
37
- { autoRemove: (val: any) => testFalsy(val) },
38
- )
39
-
40
- // String filters
41
-
42
- /**
43
- * Keeps rows whose stringified column value includes the filter text.
44
- *
45
- * Matching is case-sensitive and empty filter values are auto-removed.
46
- */
47
- export const filterFn_includesStringSensitive = Object.assign(
48
- <TFeatures extends TableFeatures, TData extends RowData>(
49
- row: Row<TFeatures, TData>,
50
- columnId: string,
51
- filterValue: unknown,
52
- ) => {
53
- return Boolean(
54
- row.getValue(columnId)?.toString().includes(String(filterValue)),
55
- )
56
- },
57
- { autoRemove: (val: any) => testFalsy(val) },
58
- )
59
-
60
- /**
61
- * Keeps rows whose stringified column value includes the filter text.
62
- *
63
- * Both values are lowercased before comparison, and empty filter values are
64
- * auto-removed.
65
- */
66
- export const filterFn_includesString = Object.assign(
67
- <TFeatures extends TableFeatures, TData extends RowData>(
68
- row: Row<TFeatures, TData>,
69
- columnId: string,
70
- filterValue: unknown,
71
- ) => {
72
- return Boolean(
73
- row
74
- .getValue(columnId)
75
- ?.toString()
76
- .toLowerCase()
77
- .includes(String(filterValue).toLowerCase()),
78
- )
79
- },
80
- { autoRemove: (val: any) => testFalsy(val) },
81
- )
82
-
83
- /**
84
- * Keeps rows whose stringified column value equals the filter text.
85
- *
86
- * Both values are lowercased before comparison, and empty filter values are
87
- * auto-removed.
88
- */
89
- export const filterFn_equalsString = Object.assign(
90
- <TFeatures extends TableFeatures, TData extends RowData>(
91
- row: Row<TFeatures, TData>,
92
- columnId: string,
93
- filterValue: unknown,
94
- ) => {
95
- return (
96
- row.getValue(columnId)?.toString().toLowerCase() ===
97
- String(filterValue).toLowerCase()
98
- )
99
- },
100
- { autoRemove: (val: any) => testFalsy(val) },
101
- )
102
-
103
- /**
104
- * Keeps rows whose stringified column value exactly equals the filter text.
105
- *
106
- * Matching is case-sensitive and empty filter values are auto-removed.
107
- */
108
- export const filterFn_equalsStringSensitive = Object.assign(
109
- <TFeatures extends TableFeatures, TData extends RowData>(
110
- row: Row<TFeatures, TData>,
111
- columnId: string,
112
- filterValue: unknown,
113
- ) => {
114
- return row.getValue(columnId)?.toString() === String(filterValue)
115
- },
116
- { autoRemove: (val: any) => testFalsy(val) },
117
- )
118
-
119
- // Number filters
120
-
121
- /**
122
- * Keeps rows whose value is greater than the filter value.
123
- *
124
- * Numeric values are compared numerically when both sides can be coerced to
125
- * numbers; otherwise normalized strings are compared.
126
- */
127
- export const filterFn_greaterThan = Object.assign(
128
- <TFeatures extends TableFeatures, TData extends RowData>(
129
- row: Row<TFeatures, TData>,
130
- columnId: string,
131
- filterValue: unknown,
132
- ) => {
133
- const rowValue = row.getValue(columnId)
134
- const numericRowValue =
135
- rowValue === null || rowValue === undefined ? 0 : +rowValue
136
- const numericFilterValue = Number(filterValue)
137
-
138
- if (!isNaN(numericFilterValue) && !isNaN(numericRowValue)) {
139
- return numericRowValue > numericFilterValue
140
- }
141
-
142
- const stringValue = (rowValue ?? '').toString().toLowerCase().trim()
143
- const stringFilterValue = String(filterValue).toLowerCase().trim()
144
- return stringValue > stringFilterValue
145
- },
146
- { resolveFilterValue: (val: any) => testFalsy(val) },
147
- )
148
-
149
- /**
150
- * Keeps rows whose value is greater than or equal to the filter value.
151
- *
152
- * Delegates to the built-in greater-than and equality comparisons.
153
- */
154
- export const filterFn_greaterThanOrEqualTo = Object.assign(
155
- <TFeatures extends TableFeatures, TData extends RowData>(
156
- row: Row<TFeatures, TData>,
157
- columnId: string,
158
- filterValue: unknown,
159
- ) => {
160
- return (
161
- filterFn_greaterThan(row, columnId, filterValue) ||
162
- filterFn_equals(row, columnId, filterValue)
163
- )
164
- },
165
- { resolveFilterValue: (val: any) => testFalsy(val) },
166
- )
167
-
168
- /**
169
- * Keeps rows whose value is less than the filter value.
170
- *
171
- * This is implemented as the inverse of greater-than-or-equal comparison.
172
- */
173
- export const filterFn_lessThan = Object.assign(
174
- <TFeatures extends TableFeatures, TData extends RowData>(
175
- row: Row<TFeatures, TData>,
176
- columnId: string,
177
- filterValue: unknown,
178
- ) => {
179
- return !filterFn_greaterThanOrEqualTo(row, columnId, filterValue)
180
- },
181
- { resolveFilterValue: (val: any) => testFalsy(val) },
182
- )
183
-
184
- /**
185
- * Keeps rows whose value is less than or equal to the filter value.
186
- *
187
- * This is implemented as the inverse of greater-than comparison.
188
- */
189
- export const filterFn_lessThanOrEqualTo = Object.assign(
190
- <TFeatures extends TableFeatures, TData extends RowData>(
191
- row: Row<TFeatures, TData>,
192
- columnId: string,
193
- filterValue: unknown,
194
- ) => {
195
- return !filterFn_greaterThan(row, columnId, filterValue)
196
- },
197
- { resolveFilterValue: (val: any) => testFalsy(val) },
198
- )
199
-
200
- // Range filters
201
-
202
- /**
203
- * Keeps rows whose value falls between an exclusive min/max pair.
204
- *
205
- * Blank range endpoints are treated as open-ended.
206
- */
207
- const filterFn_between = Object.assign(
208
- <TFeatures extends TableFeatures, TData extends RowData>(
209
- row: Row<TFeatures, TData>,
210
- columnId: string,
211
- filterValues: [unknown, unknown],
212
- ): boolean =>
213
- ((['', undefined] as Array<any>).includes(filterValues[0]) ||
214
- filterFn_greaterThan(row, columnId, filterValues[0])) &&
215
- ((!isNaN(Number(filterValues[0])) &&
216
- !isNaN(Number(filterValues[1])) &&
217
- Number(filterValues[0]) > Number(filterValues[1])) ||
218
- (['', undefined] as Array<any>).includes(filterValues[1]) ||
219
- filterFn_lessThan(row, columnId, filterValues[1])),
220
- { autoRemove: (val: any) => !val },
221
- )
222
-
223
- /**
224
- * Keeps rows whose value falls between an inclusive min/max pair.
225
- *
226
- * Blank range endpoints are treated as open-ended.
227
- */
228
- const filterFn_betweenInclusive = Object.assign(
229
- <TFeatures extends TableFeatures, TData extends RowData>(
230
- row: Row<TFeatures, TData>,
231
- columnId: string,
232
- filterValues: [unknown, unknown],
233
- ): boolean =>
234
- ((['', undefined] as Array<any>).includes(filterValues[0]) ||
235
- filterFn_greaterThanOrEqualTo(row, columnId, filterValues[0])) &&
236
- ((!isNaN(Number(filterValues[0])) &&
237
- !isNaN(Number(filterValues[1])) &&
238
- Number(filterValues[0]) > Number(filterValues[1])) ||
239
- (['', undefined] as Array<any>).includes(filterValues[1]) ||
240
- filterFn_lessThanOrEqualTo(row, columnId, filterValues[1])),
241
- { autoRemove: (val: any) => !val },
242
- )
243
-
244
- /**
245
- * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.
246
- *
247
- * Filter values are normalized so blank endpoints become open-ended and
248
- * reversed endpoints are swapped.
249
- */
250
- export const filterFn_inNumberRange = Object.assign(
251
- <TFeatures extends TableFeatures, TData extends RowData>(
252
- row: Row<TFeatures, TData>,
253
- columnId: string,
254
- filterValue: [number, number],
255
- ) => {
256
- const [min, max] = filterValue
257
-
258
- const rowValue: number = row.getValue(columnId)
259
- return rowValue >= min && rowValue <= max
260
- },
261
- {
262
- resolveFilterValue: (val: [any, any]) => {
263
- const [unsafeMin, unsafeMax] = val
264
-
265
- const parsedMin =
266
- typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin
267
- const parsedMax =
268
- typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax
269
-
270
- let min =
271
- unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin
272
- let max =
273
- unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax
274
-
275
- if (min > max) {
276
- const temp = min
277
- min = max
278
- max = temp
279
- }
280
-
281
- return [min, max] as const
282
- },
283
- autoRemove: (val: any) =>
284
- testFalsy(val) || (testFalsy(val[0]) && testFalsy(val[1])),
285
- },
286
- )
287
-
288
- // Array filters
289
-
290
- /**
291
- * Keeps rows whose scalar column value equals at least one filter value.
292
- */
293
- export const filterFn_arrHas = <
294
- TFeatures extends TableFeatures,
295
- TData extends RowData,
296
- >(
297
- row: Row<TFeatures, TData>,
298
- columnId: string,
299
- filterValue: Array<unknown>,
300
- ) => {
301
- return filterValue.some((val) => row.getValue<unknown>(columnId) === val)
302
- }
303
-
304
- /**
305
- * Keeps rows whose array or string column value includes at least one filter value.
306
- */
307
- export const filterFn_arrIncludes = Object.assign(
308
- <TFeatures extends TableFeatures, TData extends RowData>(
309
- row: Row<TFeatures, TData>,
310
- columnId: string,
311
- filterValue: Array<unknown>,
312
- ) => {
313
- return filterValue.some((val) =>
314
- (row.getValue<unknown>(columnId) as Array<unknown> | string).includes(
315
- val as any,
316
- ),
317
- )
318
- },
319
- { autoRemove: (val: any) => testFalsy(val) || !val?.length },
320
- )
321
-
322
- /**
323
- * Keeps rows whose array column value includes every filter value.
324
- */
325
- export const filterFn_arrIncludesAll = Object.assign(
326
- <TFeatures extends TableFeatures, TData extends RowData>(
327
- row: Row<TFeatures, TData>,
328
- columnId: string,
329
- filterValue: Array<unknown>,
330
- ) => {
331
- const value = row.getValue<Array<unknown>>(columnId)
332
- if (!Array.isArray(value)) return false
333
- return !filterValue.some((val) => !value.includes(val))
334
- },
335
- { autoRemove: (val: any) => testFalsy(val) || !val?.length },
336
- )
337
-
338
- /**
339
- * Keeps rows whose array column value includes at least one filter value.
340
- */
341
- export const filterFn_arrIncludesSome = Object.assign(
342
- <TFeatures extends TableFeatures, TData extends RowData>(
343
- row: Row<TFeatures, TData>,
344
- columnId: string,
345
- filterValue: Array<unknown>,
346
- ) => {
347
- const value = row.getValue<Array<unknown>>(columnId)
348
- if (!Array.isArray(value)) return false
349
- return filterValue.some((val) => value.includes(val))
350
- },
351
- { autoRemove: (val: any) => testFalsy(val) || !val?.length },
352
- )
353
-
354
- // Export
355
-
356
- /**
357
- * The built-in filter function registry.
358
- *
359
- * Pass this object to filtered row model creation or extend it with custom filter functions.
360
- */
361
- export const filterFns = {
362
- arrIncludes: filterFn_arrIncludes,
363
- arrIncludesAll: filterFn_arrIncludesAll,
364
- arrHas: filterFn_arrHas,
365
- arrIncludesSome: filterFn_arrIncludesSome,
366
- between: filterFn_between,
367
- betweenInclusive: filterFn_betweenInclusive,
368
- equals: filterFn_equals,
369
- equalsString: filterFn_equalsString,
370
- inNumberRange: filterFn_inNumberRange,
371
- includesString: filterFn_includesString,
372
- includesStringSensitive: filterFn_includesStringSensitive,
373
- weakEquals: filterFn_weakEquals,
374
- }
375
-
376
- export type BuiltInFilterFn = keyof typeof filterFns
377
-
378
- // Utils
379
-
380
- function testFalsy(val: any) {
381
- return val === undefined || val === null || val === ''
382
- }
@@ -1,217 +0,0 @@
1
- import type { RowData } from '../types/type-utils'
2
- import type { TableFeatures } from '../types/TableFeatures'
3
- import type { Row } from '../types/Row'
4
-
5
- /**
6
- * Regular expression used to split mixed text and numeric chunks.
7
- *
8
- * The alphanumeric sort functions use these chunks for natural sorting of
9
- * strings like `item2` before `item10`.
10
- */
11
- export const reSplitAlphaNumeric = /([0-9]+)/gm
12
-
13
- /**
14
- * Sorts rows with the built-in alphanumeric strategy.
15
- *
16
- * This comparator returns ascending-order results; descending order is applied by the sorting row model.
17
- */
18
- export const sortFn_alphanumeric = <
19
- TFeatures extends TableFeatures,
20
- TData extends RowData,
21
- >(
22
- rowA: Row<TFeatures, TData>,
23
- rowB: Row<TFeatures, TData>,
24
- columnId: string,
25
- ) => {
26
- return compareAlphanumeric(
27
- toString(rowA.getValue(columnId)).toLowerCase(),
28
- toString(rowB.getValue(columnId)).toLowerCase(),
29
- )
30
- }
31
-
32
- /**
33
- * Sorts rows with the built-in alphanumeric case sensitive strategy.
34
- *
35
- * This comparator returns ascending-order results; descending order is applied by the sorting row model.
36
- */
37
- export const sortFn_alphanumericCaseSensitive = <
38
- TFeatures extends TableFeatures,
39
- TData extends RowData,
40
- >(
41
- rowA: Row<TFeatures, TData>,
42
- rowB: Row<TFeatures, TData>,
43
- columnId: string,
44
- ) => {
45
- return compareAlphanumeric(
46
- toString(rowA.getValue(columnId)),
47
- toString(rowB.getValue(columnId)),
48
- )
49
- }
50
-
51
- // The text filter is more basic (less numeric support)
52
- // but is much faster
53
- /**
54
- * Sorts rows with the built-in text strategy.
55
- *
56
- * This comparator returns ascending-order results; descending order is applied by the sorting row model.
57
- */
58
- export const sortFn_text = <
59
- TFeatures extends TableFeatures,
60
- TData extends RowData,
61
- >(
62
- rowA: Row<TFeatures, TData>,
63
- rowB: Row<TFeatures, TData>,
64
- columnId: string,
65
- ) => {
66
- return compareBasic(
67
- toString(rowA.getValue(columnId)).toLowerCase(),
68
- toString(rowB.getValue(columnId)).toLowerCase(),
69
- )
70
- }
71
-
72
- // The text filter is more basic (less numeric support)
73
- // but is much faster
74
- /**
75
- * Sorts rows with the built-in text case sensitive strategy.
76
- *
77
- * This comparator returns ascending-order results; descending order is applied by the sorting row model.
78
- */
79
- export const sortFn_textCaseSensitive = <
80
- TFeatures extends TableFeatures,
81
- TData extends RowData,
82
- >(
83
- rowA: Row<TFeatures, TData>,
84
- rowB: Row<TFeatures, TData>,
85
- columnId: string,
86
- ) => {
87
- return compareBasic(
88
- toString(rowA.getValue(columnId)),
89
- toString(rowB.getValue(columnId)),
90
- )
91
- }
92
-
93
- /**
94
- * Sorts rows with the built-in datetime strategy.
95
- *
96
- * This comparator returns ascending-order results; descending order is applied by the sorting row model.
97
- */
98
- export const sortFn_datetime = <
99
- TFeatures extends TableFeatures,
100
- TData extends RowData,
101
- >(
102
- rowA: Row<TFeatures, TData>,
103
- rowB: Row<TFeatures, TData>,
104
- columnId: string,
105
- ) => {
106
- const a: number | string = rowA.getValue(columnId)
107
- const b: number | string = rowB.getValue(columnId)
108
-
109
- // Can handle nullish values
110
- // Use > and < because == (and ===) doesn't work with
111
- // Date objects (would require calling getTime()).
112
- return a > b ? 1 : a < b ? -1 : 0
113
- }
114
-
115
- /**
116
- * Sorts rows with the built-in basic strategy.
117
- *
118
- * This comparator returns ascending-order results; descending order is applied by the sorting row model.
119
- */
120
- export const sortFn_basic = <
121
- TFeatures extends TableFeatures,
122
- TData extends RowData,
123
- >(
124
- rowA: Row<TFeatures, TData>,
125
- rowB: Row<TFeatures, TData>,
126
- columnId: string,
127
- ) => {
128
- return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))
129
- }
130
-
131
- // Utils
132
-
133
- function compareBasic(a: any, b: any) {
134
- return a === b ? 0 : a > b ? 1 : -1
135
- }
136
-
137
- function toString(a: any) {
138
- if (typeof a === 'number') {
139
- if (isNaN(a) || a === Infinity || a === -Infinity) {
140
- return ''
141
- }
142
- return String(a)
143
- }
144
- if (typeof a === 'string') {
145
- return a
146
- }
147
- return ''
148
- }
149
-
150
- // Mixed sorting is slow, but very inclusive of many edge cases.
151
- // It handles numbers, mixed alphanumeric combinations, and even
152
- // null, undefined, and Infinity
153
- function compareAlphanumeric(aStr: string, bStr: string) {
154
- // Split on number groups, but keep the delimiter
155
- // Then remove falsey split values
156
- const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)
157
- const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)
158
-
159
- let ai = 0
160
- let bi = 0
161
- const aLen = a.length
162
- const bLen = b.length
163
-
164
- while (ai < aLen && bi < bLen) {
165
- const aa = a[ai++]!
166
- const bb = b[bi++]!
167
-
168
- const an = parseInt(aa, 10)
169
- const bn = parseInt(bb, 10)
170
-
171
- const combo = [an, bn].sort()
172
-
173
- // Both are string
174
- if (isNaN(combo[0]!)) {
175
- if (aa > bb) {
176
- return 1
177
- }
178
- if (bb > aa) {
179
- return -1
180
- }
181
- continue
182
- }
183
-
184
- // One is a string, one is a number
185
- if (isNaN(combo[1]!)) {
186
- return isNaN(an) ? -1 : 1
187
- }
188
-
189
- // Both are numbers
190
- if (an > bn) {
191
- return 1
192
- }
193
- if (bn > an) {
194
- return -1
195
- }
196
- }
197
-
198
- return aLen - ai - (bLen - bi)
199
- }
200
-
201
- // Exports
202
-
203
- /**
204
- * The built-in sorting function registry.
205
- *
206
- * Pass this object to sorted row model creation or extend it with custom sorting functions.
207
- */
208
- export const sortFns = {
209
- alphanumeric: sortFn_alphanumeric,
210
- alphanumericCaseSensitive: sortFn_alphanumericCaseSensitive,
211
- basic: sortFn_basic,
212
- datetime: sortFn_datetime,
213
- text: sortFn_text,
214
- textCaseSensitive: sortFn_textCaseSensitive,
215
- }
216
-
217
- export type BuiltInSortFn = keyof typeof sortFns