@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
@@ -0,0 +1,210 @@
1
+ import { RowData } from "../../types/type-utils.js";
2
+ import { CreatedFilterFn, FilterFnDef } from "./columnFilteringFeature.types.js";
3
+ import { TableFeatures } from "../../types/TableFeatures.js";
4
+
5
+ //#region src/features/column-filtering/filterFns.d.ts
6
+ /**
7
+ * Builds a `FilterFn` from a value-level comparator plus optional resolvers.
8
+ *
9
+ * The `filter` comparator receives the row's data value (already passed
10
+ * through `resolveDataValue` when one is defined) and the filter value
11
+ * (already passed through `resolveFilterValue` by the table). Keeping
12
+ * normalization in the resolvers means a variant of an existing filter
13
+ * function only has to swap the resolvers, not re-implement the comparison.
14
+ *
15
+ * The definition is attached to the returned function, so a variant can be
16
+ * created by spreading a built-in filter function and overriding what differs:
17
+ *
18
+ * ```ts
19
+ * const normalize = (value: unknown) =>
20
+ * String(value ?? '')
21
+ * .toLowerCase()
22
+ * .normalize('NFD')
23
+ * .replace(/\p{Diacritic}/gu, '')
24
+ *
25
+ * const includesStringIgnoreDiacritics = constructFilterFn({
26
+ * ...filterFn_includesString,
27
+ * resolveFilterValue: normalize,
28
+ * resolveDataValue: normalize,
29
+ * })
30
+ * ```
31
+ *
32
+ * Note: the table applies `resolveFilterValue` once per filter before any rows
33
+ * are tested. When calling a filter function directly (outside of a table),
34
+ * apply it yourself: `fn(row, columnId, fn.resolveFilterValue?.(value) ?? value)`.
35
+ */
36
+ declare function constructFilterFn<TFeatures extends TableFeatures = any, TData extends RowData = any>(def: FilterFnDef<TFeatures, TData>): CreatedFilterFn<TFeatures, TData>;
37
+ /**
38
+ * Keeps rows whose column value is strictly equal to the filter value.
39
+ *
40
+ * Uses JavaScript `===` comparison and auto-removes empty filter values.
41
+ */
42
+ declare const filterFn_equals: CreatedFilterFn<any, any>;
43
+ /**
44
+ * Keeps rows whose column value is loosely equal to the filter value.
45
+ *
46
+ * Uses JavaScript `==` comparison and auto-removes empty filter values. This is
47
+ * useful for matching string input against numeric row values.
48
+ */
49
+ declare const filterFn_weakEquals: CreatedFilterFn<any, any>;
50
+ /**
51
+ * Keeps rows whose stringified column value includes the filter text.
52
+ *
53
+ * Matching is case-sensitive and empty filter values are auto-removed.
54
+ */
55
+ declare const filterFn_includesStringSensitive: CreatedFilterFn<any, any>;
56
+ /**
57
+ * Keeps rows whose stringified column value includes the filter text.
58
+ *
59
+ * Both values are lowercased before comparison, and empty filter values are
60
+ * auto-removed.
61
+ */
62
+ declare const filterFn_includesString: CreatedFilterFn<any, any>;
63
+ /**
64
+ * Keeps rows whose stringified column value equals the filter text.
65
+ *
66
+ * Both values are lowercased before comparison, and empty filter values are
67
+ * auto-removed.
68
+ */
69
+ declare const filterFn_equalsString: CreatedFilterFn<any, any>;
70
+ /**
71
+ * Keeps rows whose stringified column value exactly equals the filter text.
72
+ *
73
+ * Matching is case-sensitive and empty filter values are auto-removed.
74
+ */
75
+ declare const filterFn_equalsStringSensitive: CreatedFilterFn<any, any>;
76
+ /**
77
+ * Keeps rows whose stringified column value starts with the filter text.
78
+ *
79
+ * Both values are lowercased before comparison, and empty filter values are
80
+ * auto-removed.
81
+ */
82
+ declare const filterFn_startsWith: CreatedFilterFn<any, any>;
83
+ /**
84
+ * Keeps rows whose stringified column value ends with the filter text.
85
+ *
86
+ * Both values are lowercased before comparison, and empty filter values are
87
+ * auto-removed.
88
+ */
89
+ declare const filterFn_endsWith: CreatedFilterFn<any, any>;
90
+ /**
91
+ * Keeps rows whose column value is empty.
92
+ *
93
+ * A value is empty when it is nullish or stringifies to whitespace only. The
94
+ * filter value acts as an on/off flag: `false` and blank values are
95
+ * auto-removed.
96
+ */
97
+ declare const filterFn_empty: CreatedFilterFn<any, any>;
98
+ /**
99
+ * Keeps rows whose column value is not empty.
100
+ *
101
+ * A value is empty when it is nullish or stringifies to whitespace only. The
102
+ * filter value acts as an on/off flag: `false` and blank values are
103
+ * auto-removed.
104
+ */
105
+ declare const filterFn_notEmpty: CreatedFilterFn<any, any>;
106
+ /**
107
+ * Keeps rows whose value is greater than the filter value.
108
+ *
109
+ * Numeric values are compared numerically when both sides can be coerced to
110
+ * numbers; otherwise normalized strings are compared.
111
+ */
112
+ declare const filterFn_greaterThan: CreatedFilterFn<any, any>;
113
+ /**
114
+ * Keeps rows whose value is greater than or equal to the filter value.
115
+ *
116
+ * Delegates to the built-in greater-than and strict-equality comparisons.
117
+ */
118
+ declare const filterFn_greaterThanOrEqualTo: CreatedFilterFn<any, any>;
119
+ /**
120
+ * Keeps rows whose value is less than the filter value.
121
+ *
122
+ * This is implemented as the inverse of greater-than-or-equal comparison.
123
+ */
124
+ declare const filterFn_lessThan: CreatedFilterFn<any, any>;
125
+ /**
126
+ * Keeps rows whose value is less than or equal to the filter value.
127
+ *
128
+ * This is implemented as the inverse of greater-than comparison.
129
+ */
130
+ declare const filterFn_lessThanOrEqualTo: CreatedFilterFn<any, any>;
131
+ /**
132
+ * Keeps rows whose value falls between an exclusive min/max pair.
133
+ *
134
+ * Blank range endpoints are treated as open-ended.
135
+ */
136
+ declare const filterFn_between: CreatedFilterFn<any, any>;
137
+ /**
138
+ * Keeps rows whose value falls between an inclusive min/max pair.
139
+ *
140
+ * Blank range endpoints are treated as open-ended.
141
+ */
142
+ declare const filterFn_betweenInclusive: CreatedFilterFn<any, any>;
143
+ /**
144
+ * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.
145
+ *
146
+ * Filter values are normalized so blank endpoints become open-ended and
147
+ * reversed endpoints are swapped.
148
+ */
149
+ declare const filterFn_inNumberRange: CreatedFilterFn<any, any>;
150
+ /**
151
+ * Keeps rows whose date value is inside an inclusive `[min, max]` date range.
152
+ *
153
+ * Row values and range endpoints may be `Date` objects, timestamps, or
154
+ * parseable date strings. Blank or invalid endpoints become open-ended and
155
+ * reversed endpoints are swapped. Rows without a valid date never match.
156
+ */
157
+ declare const filterFn_inDateRange: CreatedFilterFn<any, any>;
158
+ /**
159
+ * Keeps rows whose scalar column value equals at least one filter value.
160
+ */
161
+ declare const filterFn_arrHas: CreatedFilterFn<any, any>;
162
+ /**
163
+ * Keeps rows whose array or string column value includes at least one filter value.
164
+ */
165
+ declare const filterFn_arrIncludes: CreatedFilterFn<any, any>;
166
+ /**
167
+ * Keeps rows whose array column value includes every filter value.
168
+ */
169
+ declare const filterFn_arrIncludesAll: CreatedFilterFn<any, any>;
170
+ /**
171
+ * Keeps rows whose array column value includes at least one filter value.
172
+ */
173
+ declare const filterFn_arrIncludesSome: CreatedFilterFn<any, any>;
174
+ /**
175
+ * The built-in filter function registry.
176
+ *
177
+ * Registering this full object opts out of tree-shaking: every built-in
178
+ * filter function ends up in your bundle. Prefer importing the `filterFn_*`
179
+ * functions you actually use and registering just those in the `filterFns`
180
+ * slot, or passing them directly to the `filterFn` column option.
181
+ *
182
+ * @deprecated Import individual `filterFn_*` functions instead for a smaller
183
+ * bundle. This export still works and is not going away in v9, but built-in
184
+ * name resolution (including `filterFn: 'auto'`) only finds functions you
185
+ * register yourself.
186
+ */
187
+ declare const filterFns: {
188
+ arrIncludes: CreatedFilterFn<any, any>;
189
+ arrIncludesAll: CreatedFilterFn<any, any>;
190
+ arrHas: CreatedFilterFn<any, any>;
191
+ arrIncludesSome: CreatedFilterFn<any, any>;
192
+ between: CreatedFilterFn<any, any>;
193
+ betweenInclusive: CreatedFilterFn<any, any>;
194
+ empty: CreatedFilterFn<any, any>;
195
+ endsWith: CreatedFilterFn<any, any>;
196
+ equals: CreatedFilterFn<any, any>;
197
+ equalsString: CreatedFilterFn<any, any>;
198
+ equalsStringSensitive: CreatedFilterFn<any, any>;
199
+ inDateRange: CreatedFilterFn<any, any>;
200
+ inNumberRange: CreatedFilterFn<any, any>;
201
+ includesString: CreatedFilterFn<any, any>;
202
+ includesStringSensitive: CreatedFilterFn<any, any>;
203
+ notEmpty: CreatedFilterFn<any, any>;
204
+ startsWith: CreatedFilterFn<any, any>;
205
+ weakEquals: CreatedFilterFn<any, any>;
206
+ };
207
+ type BuiltInFilterFn = keyof typeof filterFns;
208
+ //#endregion
209
+ export { BuiltInFilterFn, constructFilterFn, filterFn_arrHas, filterFn_arrIncludes, filterFn_arrIncludesAll, filterFn_arrIncludesSome, filterFn_between, filterFn_betweenInclusive, filterFn_empty, filterFn_endsWith, filterFn_equals, filterFn_equalsString, filterFn_equalsStringSensitive, filterFn_greaterThan, filterFn_greaterThanOrEqualTo, filterFn_inDateRange, filterFn_inNumberRange, filterFn_includesString, filterFn_includesStringSensitive, filterFn_lessThan, filterFn_lessThanOrEqualTo, filterFn_notEmpty, filterFn_startsWith, filterFn_weakEquals, filterFns };
210
+ //# sourceMappingURL=filterFns.d.ts.map
@@ -0,0 +1,375 @@
1
+ //#region src/features/column-filtering/filterFns.ts
2
+ /**
3
+ * Builds a `FilterFn` from a value-level comparator plus optional resolvers.
4
+ *
5
+ * The `filter` comparator receives the row's data value (already passed
6
+ * through `resolveDataValue` when one is defined) and the filter value
7
+ * (already passed through `resolveFilterValue` by the table). Keeping
8
+ * normalization in the resolvers means a variant of an existing filter
9
+ * function only has to swap the resolvers, not re-implement the comparison.
10
+ *
11
+ * The definition is attached to the returned function, so a variant can be
12
+ * created by spreading a built-in filter function and overriding what differs:
13
+ *
14
+ * ```ts
15
+ * const normalize = (value: unknown) =>
16
+ * String(value ?? '')
17
+ * .toLowerCase()
18
+ * .normalize('NFD')
19
+ * .replace(/\p{Diacritic}/gu, '')
20
+ *
21
+ * const includesStringIgnoreDiacritics = constructFilterFn({
22
+ * ...filterFn_includesString,
23
+ * resolveFilterValue: normalize,
24
+ * resolveDataValue: normalize,
25
+ * })
26
+ * ```
27
+ *
28
+ * Note: the table applies `resolveFilterValue` once per filter before any rows
29
+ * are tested. When calling a filter function directly (outside of a table),
30
+ * apply it yourself: `fn(row, columnId, fn.resolveFilterValue?.(value) ?? value)`.
31
+ */
32
+ function constructFilterFn(def) {
33
+ const filterFn = Object.assign((row, columnId, filterValue, addMeta) => {
34
+ const rawValue = row.getValue(columnId);
35
+ const dataValue = filterFn.resolveDataValue ? filterFn.resolveDataValue(rawValue) : rawValue;
36
+ return filterFn.filter(dataValue, filterValue, row, columnId, addMeta);
37
+ }, def);
38
+ return filterFn;
39
+ }
40
+ /**
41
+ * Keeps rows whose column value is strictly equal to the filter value.
42
+ *
43
+ * Uses JavaScript `===` comparison and auto-removes empty filter values.
44
+ */
45
+ const filterFn_equals = constructFilterFn({
46
+ filter: (dataValue, filterValue) => dataValue === filterValue,
47
+ autoRemove: (val) => testFalsy(val)
48
+ });
49
+ /**
50
+ * Keeps rows whose column value is loosely equal to the filter value.
51
+ *
52
+ * Uses JavaScript `==` comparison and auto-removes empty filter values. This is
53
+ * useful for matching string input against numeric row values.
54
+ */
55
+ const filterFn_weakEquals = constructFilterFn({
56
+ filter: (dataValue, filterValue) => dataValue == filterValue,
57
+ autoRemove: (val) => testFalsy(val)
58
+ });
59
+ /**
60
+ * Keeps rows whose stringified column value includes the filter text.
61
+ *
62
+ * Matching is case-sensitive and empty filter values are auto-removed.
63
+ */
64
+ const filterFn_includesStringSensitive = constructFilterFn({
65
+ filter: (dataValue, filterValue) => Boolean(dataValue?.includes(filterValue)),
66
+ autoRemove: (val) => testFalsy(val),
67
+ resolveFilterValue: (val) => String(val),
68
+ resolveDataValue: (val) => val == null ? void 0 : String(val)
69
+ });
70
+ /**
71
+ * Keeps rows whose stringified column value includes the filter text.
72
+ *
73
+ * Both values are lowercased before comparison, and empty filter values are
74
+ * auto-removed.
75
+ */
76
+ const filterFn_includesString = constructFilterFn({
77
+ filter: (dataValue, filterValue) => Boolean(dataValue?.includes(filterValue)),
78
+ autoRemove: (val) => testFalsy(val),
79
+ resolveFilterValue: (val) => String(val).toLowerCase(),
80
+ resolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()
81
+ });
82
+ /**
83
+ * Keeps rows whose stringified column value equals the filter text.
84
+ *
85
+ * Both values are lowercased before comparison, and empty filter values are
86
+ * auto-removed.
87
+ */
88
+ const filterFn_equalsString = constructFilterFn({
89
+ filter: (dataValue, filterValue) => dataValue === filterValue,
90
+ autoRemove: (val) => testFalsy(val),
91
+ resolveFilterValue: (val) => String(val).toLowerCase(),
92
+ resolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()
93
+ });
94
+ /**
95
+ * Keeps rows whose stringified column value exactly equals the filter text.
96
+ *
97
+ * Matching is case-sensitive and empty filter values are auto-removed.
98
+ */
99
+ const filterFn_equalsStringSensitive = constructFilterFn({
100
+ filter: (dataValue, filterValue) => dataValue === filterValue,
101
+ autoRemove: (val) => testFalsy(val),
102
+ resolveFilterValue: (val) => String(val),
103
+ resolveDataValue: (val) => val == null ? void 0 : String(val)
104
+ });
105
+ /**
106
+ * Keeps rows whose stringified column value starts with the filter text.
107
+ *
108
+ * Both values are lowercased before comparison, and empty filter values are
109
+ * auto-removed.
110
+ */
111
+ const filterFn_startsWith = constructFilterFn({
112
+ filter: (dataValue, filterValue) => Boolean(dataValue?.startsWith(filterValue)),
113
+ autoRemove: (val) => testFalsy(val),
114
+ resolveFilterValue: (val) => String(val).toLowerCase(),
115
+ resolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()
116
+ });
117
+ /**
118
+ * Keeps rows whose stringified column value ends with the filter text.
119
+ *
120
+ * Both values are lowercased before comparison, and empty filter values are
121
+ * auto-removed.
122
+ */
123
+ const filterFn_endsWith = constructFilterFn({
124
+ filter: (dataValue, filterValue) => Boolean(dataValue?.endsWith(filterValue)),
125
+ autoRemove: (val) => testFalsy(val),
126
+ resolveFilterValue: (val) => String(val).toLowerCase(),
127
+ resolveDataValue: (val) => val == null ? void 0 : String(val).toLowerCase()
128
+ });
129
+ /**
130
+ * Keeps rows whose column value is empty.
131
+ *
132
+ * A value is empty when it is nullish or stringifies to whitespace only. The
133
+ * filter value acts as an on/off flag: `false` and blank values are
134
+ * auto-removed.
135
+ */
136
+ const filterFn_empty = constructFilterFn({
137
+ filter: (dataValue) => testValueEmpty(dataValue),
138
+ autoRemove: (val) => testFalsy(val) || val === false
139
+ });
140
+ /**
141
+ * Keeps rows whose column value is not empty.
142
+ *
143
+ * A value is empty when it is nullish or stringifies to whitespace only. The
144
+ * filter value acts as an on/off flag: `false` and blank values are
145
+ * auto-removed.
146
+ */
147
+ const filterFn_notEmpty = constructFilterFn({
148
+ filter: (dataValue) => !testValueEmpty(dataValue),
149
+ autoRemove: (val) => testFalsy(val) || val === false
150
+ });
151
+ /**
152
+ * Keeps rows whose value is greater than the filter value.
153
+ *
154
+ * Numeric values are compared numerically when both sides can be coerced to
155
+ * numbers; otherwise normalized strings are compared.
156
+ */
157
+ const filterFn_greaterThan = constructFilterFn({
158
+ filter: (dataValue, filterValue) => compareGreaterThan(dataValue, filterValue),
159
+ autoRemove: (val) => testFalsy(val)
160
+ });
161
+ /**
162
+ * Keeps rows whose value is greater than or equal to the filter value.
163
+ *
164
+ * Delegates to the built-in greater-than and strict-equality comparisons.
165
+ */
166
+ const filterFn_greaterThanOrEqualTo = constructFilterFn({
167
+ filter: (dataValue, filterValue) => compareGreaterThanOrEqualTo(dataValue, filterValue),
168
+ autoRemove: (val) => testFalsy(val)
169
+ });
170
+ /**
171
+ * Keeps rows whose value is less than the filter value.
172
+ *
173
+ * This is implemented as the inverse of greater-than-or-equal comparison.
174
+ */
175
+ const filterFn_lessThan = constructFilterFn({
176
+ filter: (dataValue, filterValue) => !compareGreaterThanOrEqualTo(dataValue, filterValue),
177
+ autoRemove: (val) => testFalsy(val)
178
+ });
179
+ /**
180
+ * Keeps rows whose value is less than or equal to the filter value.
181
+ *
182
+ * This is implemented as the inverse of greater-than comparison.
183
+ */
184
+ const filterFn_lessThanOrEqualTo = constructFilterFn({
185
+ filter: (dataValue, filterValue) => !compareGreaterThan(dataValue, filterValue),
186
+ autoRemove: (val) => testFalsy(val)
187
+ });
188
+ /**
189
+ * Keeps rows whose value falls between an exclusive min/max pair.
190
+ *
191
+ * Blank range endpoints are treated as open-ended.
192
+ */
193
+ const filterFn_between = constructFilterFn({
194
+ filter: (dataValue, filterValues) => compareBetween(dataValue, filterValues, false),
195
+ autoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])
196
+ });
197
+ /**
198
+ * Keeps rows whose value falls between an inclusive min/max pair.
199
+ *
200
+ * Blank range endpoints are treated as open-ended.
201
+ */
202
+ const filterFn_betweenInclusive = constructFilterFn({
203
+ filter: (dataValue, filterValues) => compareBetween(dataValue, filterValues, true),
204
+ autoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])
205
+ });
206
+ /**
207
+ * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.
208
+ *
209
+ * Filter values are normalized so blank endpoints become open-ended and
210
+ * reversed endpoints are swapped.
211
+ */
212
+ const filterFn_inNumberRange = constructFilterFn({
213
+ filter: (dataValue, filterValue) => {
214
+ const [min, max] = filterValue;
215
+ return dataValue >= min && dataValue <= max;
216
+ },
217
+ resolveFilterValue: (val) => {
218
+ const [unsafeMin, unsafeMax] = val;
219
+ const parsedMin = typeof unsafeMin !== "number" ? parseFloat(unsafeMin) : unsafeMin;
220
+ const parsedMax = typeof unsafeMax !== "number" ? parseFloat(unsafeMax) : unsafeMax;
221
+ let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;
222
+ let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;
223
+ if (min > max) {
224
+ const temp = min;
225
+ min = max;
226
+ max = temp;
227
+ }
228
+ return [min, max];
229
+ },
230
+ autoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])
231
+ });
232
+ /**
233
+ * Keeps rows whose date value is inside an inclusive `[min, max]` date range.
234
+ *
235
+ * Row values and range endpoints may be `Date` objects, timestamps, or
236
+ * parseable date strings. Blank or invalid endpoints become open-ended and
237
+ * reversed endpoints are swapped. Rows without a valid date never match.
238
+ */
239
+ const filterFn_inDateRange = constructFilterFn({
240
+ filter: (dataValue, filterValue) => {
241
+ const [min, max] = filterValue;
242
+ return dataValue >= min && dataValue <= max;
243
+ },
244
+ resolveFilterValue: (val) => {
245
+ const [unsafeMin, unsafeMax] = val;
246
+ const parsedMin = toDateTimestamp(unsafeMin);
247
+ const parsedMax = toDateTimestamp(unsafeMax);
248
+ let min = Number.isNaN(parsedMin) ? -Infinity : parsedMin;
249
+ let max = Number.isNaN(parsedMax) ? Infinity : parsedMax;
250
+ if (min > max) {
251
+ const temp = min;
252
+ min = max;
253
+ max = temp;
254
+ }
255
+ return [min, max];
256
+ },
257
+ resolveDataValue: (val) => toDateTimestamp(val),
258
+ autoRemove: (val) => testFalsy(val) || Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])
259
+ });
260
+ /**
261
+ * Keeps rows whose scalar column value equals at least one filter value.
262
+ */
263
+ const filterFn_arrHas = constructFilterFn({
264
+ filter: (dataValue, filterValue) => {
265
+ for (let i = 0; i < filterValue.length; i++) if (dataValue === filterValue[i]) return true;
266
+ return false;
267
+ },
268
+ autoRemove: (val) => testFalsy(val) || !val?.length
269
+ });
270
+ /**
271
+ * Keeps rows whose array or string column value includes at least one filter value.
272
+ */
273
+ const filterFn_arrIncludes = constructFilterFn({
274
+ filter: (dataValue, filterValue) => {
275
+ if (typeof dataValue !== "string" && !Array.isArray(dataValue)) return false;
276
+ for (let i = 0; i < filterValue.length; i++) if (dataValue.includes(filterValue[i])) return true;
277
+ return false;
278
+ },
279
+ autoRemove: (val) => testFalsy(val) || !val?.length
280
+ });
281
+ /**
282
+ * Keeps rows whose array column value includes every filter value.
283
+ */
284
+ const filterFn_arrIncludesAll = constructFilterFn({
285
+ filter: (dataValue, filterValue) => {
286
+ if (!Array.isArray(dataValue)) return false;
287
+ for (let i = 0; i < filterValue.length; i++) if (!dataValue.includes(filterValue[i])) return false;
288
+ return true;
289
+ },
290
+ autoRemove: (val) => testFalsy(val) || !val?.length
291
+ });
292
+ /**
293
+ * Keeps rows whose array column value includes at least one filter value.
294
+ */
295
+ const filterFn_arrIncludesSome = constructFilterFn({
296
+ filter: (dataValue, filterValue) => {
297
+ if (!Array.isArray(dataValue)) return false;
298
+ for (let i = 0; i < filterValue.length; i++) if (dataValue.includes(filterValue[i])) return true;
299
+ return false;
300
+ },
301
+ autoRemove: (val) => testFalsy(val) || !val?.length
302
+ });
303
+ /**
304
+ * The built-in filter function registry.
305
+ *
306
+ * Registering this full object opts out of tree-shaking: every built-in
307
+ * filter function ends up in your bundle. Prefer importing the `filterFn_*`
308
+ * functions you actually use and registering just those in the `filterFns`
309
+ * slot, or passing them directly to the `filterFn` column option.
310
+ *
311
+ * @deprecated Import individual `filterFn_*` functions instead for a smaller
312
+ * bundle. This export still works and is not going away in v9, but built-in
313
+ * name resolution (including `filterFn: 'auto'`) only finds functions you
314
+ * register yourself.
315
+ */
316
+ const filterFns = {
317
+ arrIncludes: filterFn_arrIncludes,
318
+ arrIncludesAll: filterFn_arrIncludesAll,
319
+ arrHas: filterFn_arrHas,
320
+ arrIncludesSome: filterFn_arrIncludesSome,
321
+ between: filterFn_between,
322
+ betweenInclusive: filterFn_betweenInclusive,
323
+ empty: filterFn_empty,
324
+ endsWith: filterFn_endsWith,
325
+ equals: filterFn_equals,
326
+ equalsString: filterFn_equalsString,
327
+ equalsStringSensitive: filterFn_equalsStringSensitive,
328
+ inDateRange: filterFn_inDateRange,
329
+ inNumberRange: filterFn_inNumberRange,
330
+ includesString: filterFn_includesString,
331
+ includesStringSensitive: filterFn_includesStringSensitive,
332
+ notEmpty: filterFn_notEmpty,
333
+ startsWith: filterFn_startsWith,
334
+ weakEquals: filterFn_weakEquals
335
+ };
336
+ function testFalsy(val) {
337
+ return val === void 0 || val === null || val === "";
338
+ }
339
+ function testValueEmpty(dataValue) {
340
+ return dataValue == null || String(dataValue).trim() === "";
341
+ }
342
+ function toDateTimestamp(value) {
343
+ if (value instanceof Date) return value.getTime();
344
+ if (typeof value === "number") return value;
345
+ if (value == null || value === "") return NaN;
346
+ return new Date(value).getTime();
347
+ }
348
+ function compareGreaterThan(dataValue, filterValue) {
349
+ const numericDataValue = dataValue == null ? 0 : +dataValue;
350
+ const numericFilterValue = Number(filterValue);
351
+ if (!isNaN(numericFilterValue) && !isNaN(numericDataValue)) return numericDataValue > numericFilterValue;
352
+ return String(dataValue ?? "").toLowerCase().trim() > String(filterValue).toLowerCase().trim();
353
+ }
354
+ function compareGreaterThanOrEqualTo(dataValue, filterValue) {
355
+ return dataValue === filterValue || compareGreaterThan(dataValue, filterValue);
356
+ }
357
+ function compareBetween(dataValue, filterValues, inclusive) {
358
+ const min = filterValues[0];
359
+ const hasMin = min !== "" && min !== void 0;
360
+ if (hasMin) {
361
+ if (!(inclusive ? compareGreaterThanOrEqualTo(dataValue, min) : compareGreaterThan(dataValue, min))) return false;
362
+ }
363
+ const max = filterValues[1];
364
+ if (max === "" || max === void 0) return true;
365
+ if (hasMin) {
366
+ const numericMin = Number(min);
367
+ const numericMax = Number(max);
368
+ if (!isNaN(numericMin) && !isNaN(numericMax) && numericMin > numericMax) return true;
369
+ }
370
+ return inclusive ? !compareGreaterThan(dataValue, max) : !compareGreaterThanOrEqualTo(dataValue, max);
371
+ }
372
+
373
+ //#endregion
374
+ export { constructFilterFn, filterFn_arrHas, filterFn_arrIncludes, filterFn_arrIncludesAll, filterFn_arrIncludesSome, filterFn_between, filterFn_betweenInclusive, filterFn_empty, filterFn_endsWith, filterFn_equals, filterFn_equalsString, filterFn_equalsStringSensitive, filterFn_greaterThan, filterFn_greaterThanOrEqualTo, filterFn_inDateRange, filterFn_inNumberRange, filterFn_includesString, filterFn_includesStringSensitive, filterFn_lessThan, filterFn_lessThanOrEqualTo, filterFn_notEmpty, filterFn_startsWith, filterFn_weakEquals, filterFns };
375
+ //# sourceMappingURL=filterFns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterFns.js","names":[],"sources":["../../../src/features/column-filtering/filterFns.ts"],"sourcesContent":["import type {\n CreatedFilterFn,\n ExtractFilterMeta,\n FilterFnDef,\n} from './columnFilteringFeature.types'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Row } from '../../types/Row'\n\n/**\n * Builds a `FilterFn` from a value-level comparator plus optional resolvers.\n *\n * The `filter` comparator receives the row's data value (already passed\n * through `resolveDataValue` when one is defined) and the filter value\n * (already passed through `resolveFilterValue` by the table). Keeping\n * normalization in the resolvers means a variant of an existing filter\n * function only has to swap the resolvers, not re-implement the comparison.\n *\n * The definition is attached to the returned function, so a variant can be\n * created by spreading a built-in filter function and overriding what differs:\n *\n * ```ts\n * const normalize = (value: unknown) =>\n * String(value ?? '')\n * .toLowerCase()\n * .normalize('NFD')\n * .replace(/\\p{Diacritic}/gu, '')\n *\n * const includesStringIgnoreDiacritics = constructFilterFn({\n * ...filterFn_includesString,\n * resolveFilterValue: normalize,\n * resolveDataValue: normalize,\n * })\n * ```\n *\n * Note: the table applies `resolveFilterValue` once per filter before any rows\n * are tested. When calling a filter function directly (outside of a table),\n * apply it yourself: `fn(row, columnId, fn.resolveFilterValue?.(value) ?? value)`.\n */\nexport function constructFilterFn<\n TFeatures extends TableFeatures = any,\n TData extends RowData = any,\n>(def: FilterFnDef<TFeatures, TData>): CreatedFilterFn<TFeatures, TData> {\n const filterFn: CreatedFilterFn<TFeatures, TData> = Object.assign(\n <TRowFeatures extends TableFeatures, TRowData extends RowData>(\n row: Row<TRowFeatures, TRowData>,\n columnId: string,\n filterValue: any,\n addMeta?: (meta: ExtractFilterMeta<TRowFeatures>) => void,\n ): boolean => {\n const rawValue = row.getValue(columnId)\n const dataValue = filterFn.resolveDataValue\n ? filterFn.resolveDataValue(rawValue)\n : rawValue\n // The def's comparator is typed against the factory's TFeatures/TData;\n // the caller's row generics are erased at this boundary.\n return filterFn.filter(\n dataValue,\n filterValue,\n row as any,\n columnId,\n addMeta as any,\n )\n },\n def,\n )\n return filterFn\n}\n\n// Basic filters\n\n/**\n * Keeps rows whose column value is strictly equal to the filter value.\n *\n * Uses JavaScript `===` comparison and auto-removes empty filter values.\n */\nexport const filterFn_equals = constructFilterFn({\n filter: (dataValue, filterValue) => dataValue === filterValue,\n autoRemove: (val: any) => testFalsy(val),\n})\n\n/**\n * Keeps rows whose column value is loosely equal to the filter value.\n *\n * Uses JavaScript `==` comparison and auto-removes empty filter values. This is\n * useful for matching string input against numeric row values.\n */\nexport const filterFn_weakEquals = constructFilterFn({\n filter: (dataValue, filterValue) => dataValue == filterValue,\n autoRemove: (val: any) => testFalsy(val),\n})\n\n// String filters\n\n/**\n * Keeps rows whose stringified column value includes the filter text.\n *\n * Matching is case-sensitive and empty filter values are auto-removed.\n */\nexport const filterFn_includesStringSensitive = constructFilterFn({\n filter: (dataValue, filterValue) => Boolean(dataValue?.includes(filterValue)),\n autoRemove: (val: any) => testFalsy(val),\n resolveFilterValue: (val: any) => String(val),\n resolveDataValue: (val: any) => (val == null ? undefined : String(val)),\n})\n\n/**\n * Keeps rows whose stringified column value includes the filter text.\n *\n * Both values are lowercased before comparison, and empty filter values are\n * auto-removed.\n */\nexport const filterFn_includesString = constructFilterFn({\n filter: (dataValue, filterValue) => Boolean(dataValue?.includes(filterValue)),\n autoRemove: (val: any) => testFalsy(val),\n resolveFilterValue: (val: any) => String(val).toLowerCase(),\n resolveDataValue: (val: any) =>\n val == null ? undefined : String(val).toLowerCase(),\n})\n\n/**\n * Keeps rows whose stringified column value equals the filter text.\n *\n * Both values are lowercased before comparison, and empty filter values are\n * auto-removed.\n */\nexport const filterFn_equalsString = constructFilterFn({\n filter: (dataValue, filterValue) => dataValue === filterValue,\n autoRemove: (val: any) => testFalsy(val),\n resolveFilterValue: (val: any) => String(val).toLowerCase(),\n resolveDataValue: (val: any) =>\n val == null ? undefined : String(val).toLowerCase(),\n})\n\n/**\n * Keeps rows whose stringified column value exactly equals the filter text.\n *\n * Matching is case-sensitive and empty filter values are auto-removed.\n */\nexport const filterFn_equalsStringSensitive = constructFilterFn({\n filter: (dataValue, filterValue) => dataValue === filterValue,\n autoRemove: (val: any) => testFalsy(val),\n resolveFilterValue: (val: any) => String(val),\n resolveDataValue: (val: any) => (val == null ? undefined : String(val)),\n})\n\n/**\n * Keeps rows whose stringified column value starts with the filter text.\n *\n * Both values are lowercased before comparison, and empty filter values are\n * auto-removed.\n */\nexport const filterFn_startsWith = constructFilterFn({\n filter: (dataValue, filterValue) =>\n Boolean(dataValue?.startsWith(filterValue)),\n autoRemove: (val: any) => testFalsy(val),\n resolveFilterValue: (val: any) => String(val).toLowerCase(),\n resolveDataValue: (val: any) =>\n val == null ? undefined : String(val).toLowerCase(),\n})\n\n/**\n * Keeps rows whose stringified column value ends with the filter text.\n *\n * Both values are lowercased before comparison, and empty filter values are\n * auto-removed.\n */\nexport const filterFn_endsWith = constructFilterFn({\n filter: (dataValue, filterValue) => Boolean(dataValue?.endsWith(filterValue)),\n autoRemove: (val: any) => testFalsy(val),\n resolveFilterValue: (val: any) => String(val).toLowerCase(),\n resolveDataValue: (val: any) =>\n val == null ? undefined : String(val).toLowerCase(),\n})\n\n// Blank filters\n\n/**\n * Keeps rows whose column value is empty.\n *\n * A value is empty when it is nullish or stringifies to whitespace only. The\n * filter value acts as an on/off flag: `false` and blank values are\n * auto-removed.\n */\nexport const filterFn_empty = constructFilterFn({\n filter: (dataValue) => testValueEmpty(dataValue),\n autoRemove: (val: any) => testFalsy(val) || val === false,\n})\n\n/**\n * Keeps rows whose column value is not empty.\n *\n * A value is empty when it is nullish or stringifies to whitespace only. The\n * filter value acts as an on/off flag: `false` and blank values are\n * auto-removed.\n */\nexport const filterFn_notEmpty = constructFilterFn({\n filter: (dataValue) => !testValueEmpty(dataValue),\n autoRemove: (val: any) => testFalsy(val) || val === false,\n})\n\n// Number filters\n\n/**\n * Keeps rows whose value is greater than the filter value.\n *\n * Numeric values are compared numerically when both sides can be coerced to\n * numbers; otherwise normalized strings are compared.\n */\nexport const filterFn_greaterThan = constructFilterFn({\n filter: (dataValue, filterValue) =>\n compareGreaterThan(dataValue, filterValue),\n autoRemove: (val: any) => testFalsy(val),\n})\n\n/**\n * Keeps rows whose value is greater than or equal to the filter value.\n *\n * Delegates to the built-in greater-than and strict-equality comparisons.\n */\nexport const filterFn_greaterThanOrEqualTo = constructFilterFn({\n filter: (dataValue, filterValue) =>\n compareGreaterThanOrEqualTo(dataValue, filterValue),\n autoRemove: (val: any) => testFalsy(val),\n})\n\n/**\n * Keeps rows whose value is less than the filter value.\n *\n * This is implemented as the inverse of greater-than-or-equal comparison.\n */\nexport const filterFn_lessThan = constructFilterFn({\n filter: (dataValue, filterValue) =>\n !compareGreaterThanOrEqualTo(dataValue, filterValue),\n autoRemove: (val: any) => testFalsy(val),\n})\n\n/**\n * Keeps rows whose value is less than or equal to the filter value.\n *\n * This is implemented as the inverse of greater-than comparison.\n */\nexport const filterFn_lessThanOrEqualTo = constructFilterFn({\n filter: (dataValue, filterValue) =>\n !compareGreaterThan(dataValue, filterValue),\n autoRemove: (val: any) => testFalsy(val),\n})\n\n// Range filters\n\n/**\n * Keeps rows whose value falls between an exclusive min/max pair.\n *\n * Blank range endpoints are treated as open-ended.\n */\nexport const filterFn_between = constructFilterFn({\n filter: (dataValue, filterValues: [unknown, unknown]) =>\n compareBetween(dataValue, filterValues, false),\n autoRemove: (val: any) =>\n testFalsy(val) ||\n (Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])),\n})\n\n/**\n * Keeps rows whose value falls between an inclusive min/max pair.\n *\n * Blank range endpoints are treated as open-ended.\n */\nexport const filterFn_betweenInclusive = constructFilterFn({\n filter: (dataValue, filterValues: [unknown, unknown]) =>\n compareBetween(dataValue, filterValues, true),\n autoRemove: (val: any) =>\n testFalsy(val) ||\n (Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])),\n})\n\n/**\n * Keeps rows whose numeric value is inside an inclusive `[min, max]` range.\n *\n * Filter values are normalized so blank endpoints become open-ended and\n * reversed endpoints are swapped.\n */\nexport const filterFn_inNumberRange = constructFilterFn({\n filter: (dataValue: number, filterValue: [number, number]) => {\n const [min, max] = filterValue\n return dataValue >= min && dataValue <= max\n },\n resolveFilterValue: (val: [any, any]) => {\n const [unsafeMin, unsafeMax] = val\n\n const parsedMin =\n typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin\n const parsedMax =\n typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max =\n unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n },\n autoRemove: (val: any) =>\n testFalsy(val) ||\n (Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])),\n})\n\n// Date filters\n\n/**\n * Keeps rows whose date value is inside an inclusive `[min, max]` date range.\n *\n * Row values and range endpoints may be `Date` objects, timestamps, or\n * parseable date strings. Blank or invalid endpoints become open-ended and\n * reversed endpoints are swapped. Rows without a valid date never match.\n */\nexport const filterFn_inDateRange = constructFilterFn({\n filter: (dataValue: number, filterValue: [number, number]) => {\n const [min, max] = filterValue\n return dataValue >= min && dataValue <= max\n },\n resolveFilterValue: (val: [any, any]) => {\n const [unsafeMin, unsafeMax] = val\n\n const parsedMin = toDateTimestamp(unsafeMin)\n const parsedMax = toDateTimestamp(unsafeMax)\n\n let min = Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n },\n resolveDataValue: (val: any) => toDateTimestamp(val),\n autoRemove: (val: any) =>\n testFalsy(val) ||\n (Array.isArray(val) && testFalsy(val[0]) && testFalsy(val[1])),\n})\n\n// Array filters\n\n/**\n * Keeps rows whose scalar column value equals at least one filter value.\n */\nexport const filterFn_arrHas = constructFilterFn({\n filter: (dataValue, filterValue: Array<unknown>) => {\n for (let i = 0; i < filterValue.length; i++) {\n if (dataValue === filterValue[i]) {\n return true\n }\n }\n return false\n },\n autoRemove: (val: any) => testFalsy(val) || !val?.length,\n})\n\n/**\n * Keeps rows whose array or string column value includes at least one filter value.\n */\nexport const filterFn_arrIncludes = constructFilterFn({\n filter: (dataValue, filterValue: Array<unknown>) => {\n if (typeof dataValue !== 'string' && !Array.isArray(dataValue)) {\n return false\n }\n\n for (let i = 0; i < filterValue.length; i++) {\n if (dataValue.includes(filterValue[i] as any)) {\n return true\n }\n }\n return false\n },\n autoRemove: (val: any) => testFalsy(val) || !val?.length,\n})\n\n/**\n * Keeps rows whose array column value includes every filter value.\n */\nexport const filterFn_arrIncludesAll = constructFilterFn({\n filter: (dataValue, filterValue: Array<unknown>) => {\n if (!Array.isArray(dataValue)) return false\n for (let i = 0; i < filterValue.length; i++) {\n if (!dataValue.includes(filterValue[i])) {\n return false\n }\n }\n return true\n },\n autoRemove: (val: any) => testFalsy(val) || !val?.length,\n})\n\n/**\n * Keeps rows whose array column value includes at least one filter value.\n */\nexport const filterFn_arrIncludesSome = constructFilterFn({\n filter: (dataValue, filterValue: Array<unknown>) => {\n if (!Array.isArray(dataValue)) return false\n for (let i = 0; i < filterValue.length; i++) {\n if (dataValue.includes(filterValue[i])) {\n return true\n }\n }\n return false\n },\n autoRemove: (val: any) => testFalsy(val) || !val?.length,\n})\n\n// Export\n\n/**\n * The built-in filter function registry.\n *\n * Registering this full object opts out of tree-shaking: every built-in\n * filter function ends up in your bundle. Prefer importing the `filterFn_*`\n * functions you actually use and registering just those in the `filterFns`\n * slot, or passing them directly to the `filterFn` column option.\n *\n * @deprecated Import individual `filterFn_*` functions instead for a smaller\n * bundle. This export still works and is not going away in v9, but built-in\n * name resolution (including `filterFn: 'auto'`) only finds functions you\n * register yourself.\n */\nexport const filterFns = {\n arrIncludes: filterFn_arrIncludes,\n arrIncludesAll: filterFn_arrIncludesAll,\n arrHas: filterFn_arrHas,\n arrIncludesSome: filterFn_arrIncludesSome,\n between: filterFn_between,\n betweenInclusive: filterFn_betweenInclusive,\n empty: filterFn_empty,\n endsWith: filterFn_endsWith,\n equals: filterFn_equals,\n equalsString: filterFn_equalsString,\n equalsStringSensitive: filterFn_equalsStringSensitive,\n inDateRange: filterFn_inDateRange,\n inNumberRange: filterFn_inNumberRange,\n includesString: filterFn_includesString,\n includesStringSensitive: filterFn_includesStringSensitive,\n notEmpty: filterFn_notEmpty,\n startsWith: filterFn_startsWith,\n weakEquals: filterFn_weakEquals,\n}\n\nexport type BuiltInFilterFn = keyof typeof filterFns\n\n// Utils\n\nfunction testFalsy(val: any) {\n return val === undefined || val === null || val === ''\n}\n\nfunction testValueEmpty(dataValue: any) {\n return dataValue == null || String(dataValue).trim() === ''\n}\n\nfunction toDateTimestamp(value: any): number {\n if (value instanceof Date) {\n return value.getTime()\n }\n if (typeof value === 'number') {\n return value\n }\n // Guard nullish and blank values explicitly: `new Date(null)` is the epoch,\n // not an invalid date.\n if (value == null || value === '') {\n return NaN\n }\n return new Date(value).getTime()\n}\n\nfunction compareGreaterThan(dataValue: any, filterValue: any): boolean {\n const numericDataValue = dataValue == null ? 0 : +dataValue\n const numericFilterValue = Number(filterValue)\n\n if (!isNaN(numericFilterValue) && !isNaN(numericDataValue)) {\n return numericDataValue > numericFilterValue\n }\n\n const stringDataValue = String(dataValue ?? '')\n .toLowerCase()\n .trim()\n const stringFilterValue = String(filterValue).toLowerCase().trim()\n return stringDataValue > stringFilterValue\n}\n\nfunction compareGreaterThanOrEqualTo(dataValue: any, filterValue: any) {\n return dataValue === filterValue || compareGreaterThan(dataValue, filterValue)\n}\n\nfunction compareBetween(\n dataValue: any,\n filterValues: [unknown, unknown],\n inclusive: boolean,\n): boolean {\n const min = filterValues[0]\n const hasMin = min !== '' && min !== undefined\n if (hasMin) {\n const passesMin = inclusive\n ? compareGreaterThanOrEqualTo(dataValue, min)\n : compareGreaterThan(dataValue, min)\n if (!passesMin) {\n return false\n }\n }\n\n const max = filterValues[1]\n if (max === '' || max === undefined) {\n return true\n }\n\n if (hasMin) {\n const numericMin = Number(min)\n const numericMax = Number(max)\n if (!isNaN(numericMin) && !isNaN(numericMax) && numericMin > numericMax) {\n return true\n }\n }\n\n return inclusive\n ? !compareGreaterThan(dataValue, max)\n : !compareGreaterThanOrEqualTo(dataValue, max)\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ const require_utils = require('../../utils.cjs');
1
2
  const require_constructRow = require('../../core/rows/constructRow.cjs');
2
3
 
3
4
  //#region src/features/column-filtering/filterRowsUtils.ts
@@ -12,7 +13,7 @@ function filterRows(rows, filterRowImpl, table) {
12
13
  }
13
14
  function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
14
15
  const newFilteredFlatRows = [];
15
- const newFilteredRowsById = {};
16
+ const newFilteredRowsById = require_utils.makeObjectMap();
16
17
  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;
17
18
  const recurseFilterRows = (rowsToFilter, depth = 0) => {
18
19
  const filteredRows = [];
@@ -53,7 +54,7 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
53
54
  }
54
55
  function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
55
56
  const newFilteredFlatRows = [];
56
- const newFilteredRowsById = {};
57
+ const newFilteredRowsById = require_utils.makeObjectMap();
57
58
  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;
58
59
  const recurseFilterRows = (rowsToFilter, depth = 0) => {
59
60
  const filteredRows = [];