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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/esm/core/cells/constructCell.d.ts +7 -0
  2. package/dist/esm/core/cells/constructCell.js +21 -0
  3. package/dist/esm/core/cells/constructCell.js.map +1 -0
  4. package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
  5. package/dist/esm/core/cells/coreCellsFeature.js +26 -0
  6. package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
  7. package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
  8. package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
  9. package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
  10. package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
  11. package/dist/esm/core/columns/constructColumn.d.ts +6 -0
  12. package/dist/esm/core/columns/constructColumn.js +60 -0
  13. package/dist/esm/core/columns/constructColumn.js.map +1 -0
  14. package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
  15. package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
  16. package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
  17. package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
  18. package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
  19. package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
  20. package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
  21. package/dist/esm/core/coreFeatures.d.ts +15 -0
  22. package/dist/esm/core/coreFeatures.js +18 -0
  23. package/dist/esm/core/coreFeatures.js.map +1 -0
  24. package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
  25. package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
  26. package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
  27. package/dist/esm/core/headers/constructHeader.d.ts +12 -0
  28. package/dist/esm/core/headers/constructHeader.js +28 -0
  29. package/dist/esm/core/headers/constructHeader.js.map +1 -0
  30. package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
  31. package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
  32. package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
  33. package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
  34. package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
  35. package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
  36. package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
  37. package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
  38. package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
  39. package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
  40. package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
  41. package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
  42. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
  43. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
  44. package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
  45. package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
  46. package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
  47. package/dist/esm/core/rows/constructRow.d.ts +5 -0
  48. package/dist/esm/core/rows/constructRow.js +29 -0
  49. package/dist/esm/core/rows/constructRow.js.map +1 -0
  50. package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
  51. package/dist/esm/core/rows/coreRowsFeature.js +52 -0
  52. package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
  53. package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
  54. package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
  55. package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
  56. package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
  57. package/dist/esm/core/table/constructTable.d.ts +9 -0
  58. package/dist/esm/core/table/constructTable.js +62 -0
  59. package/dist/esm/core/table/constructTable.js.map +1 -0
  60. package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
  61. package/dist/esm/core/table/coreTablesFeature.js +22 -0
  62. package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
  63. package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
  64. package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
  65. package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
  66. package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
  67. package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
  68. package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
  69. package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
  70. package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
  71. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
  72. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
  73. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
  74. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
  75. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
  76. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
  77. package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
  78. package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
  79. package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
  80. package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
  81. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
  82. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
  83. package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
  84. package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
  85. package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
  86. package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
  87. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
  88. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
  89. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
  90. package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
  91. package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
  92. package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
  93. package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
  94. package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
  95. package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
  96. package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
  97. package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
  98. package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
  99. package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
  100. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
  101. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
  102. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
  103. package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
  104. package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
  105. package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
  106. package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
  107. package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
  108. package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
  109. package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
  110. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
  111. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
  112. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
  113. package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
  114. package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
  115. package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
  116. package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
  117. package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
  118. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
  119. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
  120. package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
  121. package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
  122. package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
  123. package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
  124. package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
  125. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
  126. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
  127. package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
  128. package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
  129. package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
  130. package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
  131. package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
  132. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
  133. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
  134. package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
  135. package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
  136. package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
  137. package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
  138. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
  139. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
  140. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
  141. package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
  142. package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
  143. package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
  144. package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
  145. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
  146. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
  147. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
  148. package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
  149. package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
  150. package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
  151. package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
  152. package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
  153. package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
  154. package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
  155. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
  156. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
  157. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
  158. package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
  159. package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
  160. package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
  161. package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
  162. package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
  163. package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
  164. package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
  165. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
  166. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
  167. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
  168. package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
  169. package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
  170. package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
  171. package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
  172. package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
  173. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
  174. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
  175. package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
  176. package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
  177. package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
  178. package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
  179. package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
  180. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
  181. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
  182. package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
  183. package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
  184. package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
  185. package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
  186. package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
  187. package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
  188. package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
  189. package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
  190. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
  191. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
  192. package/dist/esm/features/stockFeatures.d.ts +31 -0
  193. package/dist/esm/features/stockFeatures.js +34 -0
  194. package/dist/esm/features/stockFeatures.js.map +1 -0
  195. package/dist/esm/fns/aggregationFns.d.ts +49 -0
  196. package/dist/esm/fns/aggregationFns.js +110 -0
  197. package/dist/esm/fns/aggregationFns.js.map +1 -0
  198. package/dist/esm/fns/filterFns.d.ts +76 -0
  199. package/dist/esm/fns/filterFns.js +134 -0
  200. package/dist/esm/fns/filterFns.js.map +1 -0
  201. package/dist/esm/fns/sortFns.d.ts +17 -0
  202. package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
  203. package/dist/esm/fns/sortFns.js.map +1 -0
  204. package/dist/esm/helpers/columnHelper.d.ts +61 -0
  205. package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
  206. package/dist/esm/helpers/columnHelper.js.map +1 -0
  207. package/dist/esm/helpers/tableFeatures.d.ts +13 -0
  208. package/dist/esm/helpers/tableFeatures.js +7 -0
  209. package/dist/esm/helpers/tableFeatures.js.map +1 -0
  210. package/dist/esm/helpers/tableHelper.d.ts +25 -0
  211. package/dist/esm/helpers/tableHelper.js +13 -0
  212. package/dist/esm/helpers/tableHelper.js.map +1 -0
  213. package/dist/esm/helpers/tableOptions.d.ts +23 -0
  214. package/dist/esm/helpers/tableOptions.js +7 -0
  215. package/dist/esm/helpers/tableOptions.js.map +1 -0
  216. package/dist/esm/index.d.ts +109 -33
  217. package/dist/esm/index.js +397 -66
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/types/Cell.d.ts +13 -0
  220. package/dist/esm/types/Column.d.ts +26 -0
  221. package/dist/esm/types/ColumnDef.d.ts +64 -0
  222. package/dist/esm/types/Header.d.ts +14 -0
  223. package/dist/esm/types/HeaderGroup.d.ts +12 -0
  224. package/dist/esm/types/Row.d.ts +19 -0
  225. package/dist/esm/types/RowModel.d.ts +23 -0
  226. package/dist/esm/types/RowModelFns.d.ts +15 -0
  227. package/dist/esm/types/Table.d.ts +53 -0
  228. package/dist/esm/types/TableFeatures.d.ts +77 -0
  229. package/dist/esm/types/TableOptions.d.ts +39 -0
  230. package/dist/esm/types/TableState.d.ts +23 -0
  231. package/dist/esm/types/type-utils.d.ts +22 -0
  232. package/dist/esm/utils.d.ts +66 -33
  233. package/dist/esm/utils.js +183 -50
  234. package/dist/esm/utils.js.map +1 -1
  235. package/package.json +21 -12
  236. package/src/core/cells/constructCell.ts +49 -0
  237. package/src/core/cells/coreCellsFeature.ts +44 -0
  238. package/src/core/cells/coreCellsFeature.types.ts +68 -0
  239. package/src/core/cells/coreCellsFeature.utils.ts +35 -0
  240. package/src/core/columns/constructColumn.ts +111 -0
  241. package/src/core/columns/coreColumnsFeature.ts +90 -0
  242. package/src/core/columns/coreColumnsFeature.types.ts +103 -0
  243. package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
  244. package/src/core/coreFeatures.ts +24 -0
  245. package/src/core/headers/buildHeaderGroups.ts +177 -0
  246. package/src/core/headers/constructHeader.ts +61 -0
  247. package/src/core/headers/coreHeadersFeature.ts +98 -0
  248. package/src/core/headers/coreHeadersFeature.types.ts +123 -0
  249. package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
  250. package/src/core/row-models/coreRowModelsFeature.ts +78 -0
  251. package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
  252. package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
  253. package/src/core/row-models/createCoreRowModel.ts +88 -0
  254. package/src/core/rows/constructRow.ts +59 -0
  255. package/src/core/rows/coreRowsFeature.ts +84 -0
  256. package/src/core/rows/coreRowsFeature.types.ts +111 -0
  257. package/src/core/rows/coreRowsFeature.utils.ts +152 -0
  258. package/src/core/table/constructTable.ts +89 -0
  259. package/src/core/table/coreTablesFeature.ts +36 -0
  260. package/src/core/table/coreTablesFeature.types.ts +123 -0
  261. package/src/core/table/coreTablesFeature.utils.ts +40 -0
  262. package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
  263. package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
  264. package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
  265. package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
  266. package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
  267. package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
  268. package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
  269. package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
  270. package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
  271. package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
  272. package/src/features/column-filtering/filterRowsUtils.ts +152 -0
  273. package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
  274. package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
  275. package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
  276. package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
  277. package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
  278. package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
  279. package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
  280. package/src/features/column-pinning/columnPinningFeature.ts +324 -0
  281. package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
  282. package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
  283. package/src/features/column-resizing/columnResizingFeature.ts +92 -0
  284. package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
  285. package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
  286. package/src/features/column-sizing/columnSizingFeature.ts +146 -0
  287. package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
  288. package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
  289. package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
  290. package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
  291. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
  292. package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
  293. package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
  294. package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
  295. package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
  296. package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
  297. package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
  298. package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
  299. package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
  300. package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
  301. package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
  302. package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
  303. package/src/features/row-pinning/rowPinningFeature.ts +121 -0
  304. package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
  305. package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
  306. package/src/features/row-selection/rowSelectionFeature.ts +164 -0
  307. package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
  308. package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
  309. package/src/features/row-sorting/createSortedRowModel.ts +147 -0
  310. package/src/features/row-sorting/rowSortingFeature.ts +136 -0
  311. package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
  312. package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
  313. package/src/features/stockFeatures.ts +48 -0
  314. package/src/fns/aggregationFns.ts +220 -0
  315. package/src/fns/filterFns.ts +379 -0
  316. package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
  317. package/src/helpers/columnHelper.ts +117 -0
  318. package/src/helpers/tableFeatures.ts +24 -0
  319. package/src/helpers/tableHelper.ts +61 -0
  320. package/src/helpers/tableOptions.ts +82 -0
  321. package/src/index.ts +156 -42
  322. package/src/types/Cell.ts +41 -0
  323. package/src/types/Column.ts +86 -0
  324. package/src/types/ColumnDef.ts +217 -0
  325. package/src/types/Header.ts +45 -0
  326. package/src/types/HeaderGroup.ts +24 -0
  327. package/src/types/Row.ts +55 -0
  328. package/src/types/RowModel.ts +137 -0
  329. package/src/types/RowModelFns.ts +51 -0
  330. package/src/types/Table.ts +125 -0
  331. package/src/types/TableFeatures.ts +150 -0
  332. package/src/types/TableOptions.ts +125 -0
  333. package/src/types/TableState.ts +88 -0
  334. package/src/types/type-utils.ts +84 -0
  335. package/src/utils.ts +344 -164
  336. package/dist/cjs/aggregationFns.cjs +0 -94
  337. package/dist/cjs/aggregationFns.cjs.map +0 -1
  338. package/dist/cjs/aggregationFns.d.cts +0 -14
  339. package/dist/cjs/columnHelper.cjs +0 -19
  340. package/dist/cjs/columnHelper.cjs.map +0 -1
  341. package/dist/cjs/columnHelper.d.cts +0 -9
  342. package/dist/cjs/core/cell.cjs +0 -38
  343. package/dist/cjs/core/cell.cjs.map +0 -1
  344. package/dist/cjs/core/cell.d.cts +0 -50
  345. package/dist/cjs/core/column.cjs +0 -81
  346. package/dist/cjs/core/column.cjs.map +0 -1
  347. package/dist/cjs/core/column.d.cts +0 -56
  348. package/dist/cjs/core/headers.cjs +0 -310
  349. package/dist/cjs/core/headers.cjs.map +0 -1
  350. package/dist/cjs/core/headers.d.cts +0 -195
  351. package/dist/cjs/core/row.cjs +0 -92
  352. package/dist/cjs/core/row.cjs.map +0 -1
  353. package/dist/cjs/core/row.d.cts +0 -92
  354. package/dist/cjs/core/table.cjs +0 -232
  355. package/dist/cjs/core/table.cjs.map +0 -1
  356. package/dist/cjs/core/table.d.cts +0 -229
  357. package/dist/cjs/features/ColumnFaceting.cjs +0 -29
  358. package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
  359. package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
  360. package/dist/cjs/features/ColumnFiltering.cjs +0 -137
  361. package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
  362. package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
  363. package/dist/cjs/features/ColumnGrouping.cjs +0 -133
  364. package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
  365. package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
  366. package/dist/cjs/features/ColumnOrdering.cjs +0 -76
  367. package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
  368. package/dist/cjs/features/ColumnPinning.cjs +0 -145
  369. package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
  370. package/dist/cjs/features/ColumnPinning.d.cts +0 -127
  371. package/dist/cjs/features/ColumnSizing.cjs +0 -307
  372. package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
  373. package/dist/cjs/features/ColumnSizing.d.cts +0 -194
  374. package/dist/cjs/features/ColumnVisibility.cjs +0 -144
  375. package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
  376. package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
  377. package/dist/cjs/features/GlobalFaceting.cjs +0 -29
  378. package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
  379. package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
  380. package/dist/cjs/features/GlobalFiltering.cjs +0 -50
  381. package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
  382. package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
  383. package/dist/cjs/features/RowExpanding.cjs +0 -152
  384. package/dist/cjs/features/RowExpanding.cjs.map +0 -1
  385. package/dist/cjs/features/RowExpanding.d.cts +0 -155
  386. package/dist/cjs/features/RowPagination.cjs +0 -161
  387. package/dist/cjs/features/RowPagination.cjs.map +0 -1
  388. package/dist/cjs/features/RowPagination.d.cts +0 -166
  389. package/dist/cjs/features/RowPinning.cjs +0 -132
  390. package/dist/cjs/features/RowPinning.cjs.map +0 -1
  391. package/dist/cjs/features/RowPinning.d.cts +0 -99
  392. package/dist/cjs/features/RowSelection.cjs +0 -296
  393. package/dist/cjs/features/RowSelection.cjs.map +0 -1
  394. package/dist/cjs/features/RowSelection.d.cts +0 -177
  395. package/dist/cjs/features/RowSorting.cjs +0 -200
  396. package/dist/cjs/features/RowSorting.cjs.map +0 -1
  397. package/dist/cjs/features/RowSorting.d.cts +0 -238
  398. package/dist/cjs/filterFns.cjs +0 -88
  399. package/dist/cjs/filterFns.cjs.map +0 -1
  400. package/dist/cjs/filterFns.d.cts +0 -14
  401. package/dist/cjs/index.cjs +0 -88
  402. package/dist/cjs/index.cjs.map +0 -1
  403. package/dist/cjs/index.d.cts +0 -34
  404. package/dist/cjs/sortingFns.cjs +0 -91
  405. package/dist/cjs/sortingFns.cjs.map +0 -1
  406. package/dist/cjs/sortingFns.d.cts +0 -12
  407. package/dist/cjs/types.d.cts +0 -120
  408. package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
  409. package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
  410. package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
  411. package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
  412. package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
  413. package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
  414. package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
  415. package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
  416. package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
  417. package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -35
  418. package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
  419. package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
  420. package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
  421. package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
  422. package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
  423. package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -37
  424. package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
  425. package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
  426. package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
  427. package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
  428. package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
  429. package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
  430. package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
  431. package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
  432. package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
  433. package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
  434. package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
  435. package/dist/cjs/utils/getSortedRowModel.cjs +0 -88
  436. package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
  437. package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
  438. package/dist/cjs/utils.cjs +0 -98
  439. package/dist/cjs/utils.cjs.map +0 -1
  440. package/dist/cjs/utils.d.cts +0 -39
  441. package/dist/esm/aggregationFns.d.ts +0 -14
  442. package/dist/esm/aggregationFns.js +0 -94
  443. package/dist/esm/aggregationFns.js.map +0 -1
  444. package/dist/esm/columnHelper.d.ts +0 -9
  445. package/dist/esm/columnHelper.js.map +0 -1
  446. package/dist/esm/core/cell.d.ts +0 -50
  447. package/dist/esm/core/cell.js +0 -38
  448. package/dist/esm/core/cell.js.map +0 -1
  449. package/dist/esm/core/column.d.ts +0 -56
  450. package/dist/esm/core/column.js +0 -81
  451. package/dist/esm/core/column.js.map +0 -1
  452. package/dist/esm/core/headers.d.ts +0 -195
  453. package/dist/esm/core/headers.js +0 -310
  454. package/dist/esm/core/headers.js.map +0 -1
  455. package/dist/esm/core/row.d.ts +0 -92
  456. package/dist/esm/core/row.js +0 -92
  457. package/dist/esm/core/row.js.map +0 -1
  458. package/dist/esm/core/table.d.ts +0 -229
  459. package/dist/esm/core/table.js +0 -232
  460. package/dist/esm/core/table.js.map +0 -1
  461. package/dist/esm/features/ColumnFaceting.d.ts +0 -35
  462. package/dist/esm/features/ColumnFaceting.js +0 -29
  463. package/dist/esm/features/ColumnFaceting.js.map +0 -1
  464. package/dist/esm/features/ColumnFiltering.d.ts +0 -195
  465. package/dist/esm/features/ColumnFiltering.js +0 -137
  466. package/dist/esm/features/ColumnFiltering.js.map +0 -1
  467. package/dist/esm/features/ColumnGrouping.d.ts +0 -202
  468. package/dist/esm/features/ColumnGrouping.js +0 -133
  469. package/dist/esm/features/ColumnGrouping.js.map +0 -1
  470. package/dist/esm/features/ColumnOrdering.d.ts +0 -54
  471. package/dist/esm/features/ColumnOrdering.js +0 -76
  472. package/dist/esm/features/ColumnOrdering.js.map +0 -1
  473. package/dist/esm/features/ColumnPinning.d.ts +0 -127
  474. package/dist/esm/features/ColumnPinning.js +0 -145
  475. package/dist/esm/features/ColumnPinning.js.map +0 -1
  476. package/dist/esm/features/ColumnSizing.d.ts +0 -194
  477. package/dist/esm/features/ColumnSizing.js +0 -307
  478. package/dist/esm/features/ColumnSizing.js.map +0 -1
  479. package/dist/esm/features/ColumnVisibility.d.ts +0 -130
  480. package/dist/esm/features/ColumnVisibility.js +0 -144
  481. package/dist/esm/features/ColumnVisibility.js.map +0 -1
  482. package/dist/esm/features/GlobalFaceting.d.ts +0 -27
  483. package/dist/esm/features/GlobalFaceting.js +0 -29
  484. package/dist/esm/features/GlobalFaceting.js.map +0 -1
  485. package/dist/esm/features/GlobalFiltering.d.ts +0 -80
  486. package/dist/esm/features/GlobalFiltering.js +0 -50
  487. package/dist/esm/features/GlobalFiltering.js.map +0 -1
  488. package/dist/esm/features/RowExpanding.d.ts +0 -155
  489. package/dist/esm/features/RowExpanding.js +0 -152
  490. package/dist/esm/features/RowExpanding.js.map +0 -1
  491. package/dist/esm/features/RowPagination.d.ts +0 -166
  492. package/dist/esm/features/RowPagination.js +0 -161
  493. package/dist/esm/features/RowPagination.js.map +0 -1
  494. package/dist/esm/features/RowPinning.d.ts +0 -99
  495. package/dist/esm/features/RowPinning.js +0 -132
  496. package/dist/esm/features/RowPinning.js.map +0 -1
  497. package/dist/esm/features/RowSelection.d.ts +0 -177
  498. package/dist/esm/features/RowSelection.js +0 -296
  499. package/dist/esm/features/RowSelection.js.map +0 -1
  500. package/dist/esm/features/RowSorting.d.ts +0 -238
  501. package/dist/esm/features/RowSorting.js +0 -200
  502. package/dist/esm/features/RowSorting.js.map +0 -1
  503. package/dist/esm/filterFns.d.ts +0 -14
  504. package/dist/esm/filterFns.js +0 -88
  505. package/dist/esm/filterFns.js.map +0 -1
  506. package/dist/esm/sortingFns.d.ts +0 -12
  507. package/dist/esm/sortingFns.js.map +0 -1
  508. package/dist/esm/types.d.ts +0 -120
  509. package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
  510. package/dist/esm/utils/filterRowsUtils.js.map +0 -1
  511. package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
  512. package/dist/esm/utils/getCoreRowModel.js +0 -54
  513. package/dist/esm/utils/getCoreRowModel.js.map +0 -1
  514. package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
  515. package/dist/esm/utils/getExpandedRowModel.js +0 -41
  516. package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
  517. package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
  518. package/dist/esm/utils/getFacetedMinMaxValues.js +0 -35
  519. package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
  520. package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
  521. package/dist/esm/utils/getFacetedRowModel.js +0 -35
  522. package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
  523. package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
  524. package/dist/esm/utils/getFacetedUniqueValues.js +0 -37
  525. package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
  526. package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
  527. package/dist/esm/utils/getFilteredRowModel.js +0 -116
  528. package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
  529. package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
  530. package/dist/esm/utils/getGroupedRowModel.js +0 -118
  531. package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
  532. package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
  533. package/dist/esm/utils/getPaginationRowModel.js +0 -49
  534. package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
  535. package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
  536. package/dist/esm/utils/getSortedRowModel.js +0 -88
  537. package/dist/esm/utils/getSortedRowModel.js.map +0 -1
  538. package/src/aggregationFns.ts +0 -123
  539. package/src/columnHelper.ts +0 -91
  540. package/src/core/cell.ts +0 -91
  541. package/src/core/column.ts +0 -165
  542. package/src/core/headers.ts +0 -639
  543. package/src/core/row.ts +0 -201
  544. package/src/core/table.ts +0 -563
  545. package/src/features/ColumnFaceting.ts +0 -84
  546. package/src/features/ColumnFiltering.ts +0 -429
  547. package/src/features/ColumnGrouping.ts +0 -422
  548. package/src/features/ColumnOrdering.ts +0 -161
  549. package/src/features/ColumnPinning.ts +0 -336
  550. package/src/features/ColumnSizing.ts +0 -579
  551. package/src/features/ColumnVisibility.ts +0 -317
  552. package/src/features/GlobalFaceting.ts +0 -66
  553. package/src/features/GlobalFiltering.ts +0 -162
  554. package/src/features/RowExpanding.ts +0 -355
  555. package/src/features/RowPagination.ts +0 -396
  556. package/src/features/RowPinning.ts +0 -277
  557. package/src/features/RowSelection.ts +0 -668
  558. package/src/features/RowSorting.ts +0 -542
  559. package/src/filterFns.ts +0 -150
  560. package/src/types.ts +0 -361
  561. package/src/utils/filterRowsUtils.ts +0 -130
  562. package/src/utils/getCoreRowModel.ts +0 -82
  563. package/src/utils/getExpandedRowModel.ts +0 -51
  564. package/src/utils/getFacetedMinMaxValues.ts +0 -42
  565. package/src/utils/getFacetedRowModel.ts +0 -44
  566. package/src/utils/getFacetedUniqueValues.ts +0 -42
  567. package/src/utils/getFilteredRowModel.ts +0 -151
  568. package/src/utils/getGroupedRowModel.ts +0 -181
  569. package/src/utils/getPaginationRowModel.ts +0 -60
  570. package/src/utils/getSortedRowModel.ts +0 -121
@@ -0,0 +1,69 @@
1
+ import { assignTableAPIs, assignPrototypeAPIs, makeStateUpdater } from "../../utils.js";
2
+ import { table_resetColumnFilters, table_setColumnFilters, column_setFilterValue, column_getFilterIndex, column_getFilterValue, column_getIsFiltered, column_getCanFilter, column_getFilterFn, column_getAutoFilterFn, getDefaultColumnFiltersState } from "./columnFilteringFeature.utils.js";
3
+ function constructColumnFilteringFeature() {
4
+ return {
5
+ getInitialState: (initialState) => {
6
+ return {
7
+ columnFilters: getDefaultColumnFiltersState(),
8
+ ...initialState
9
+ };
10
+ },
11
+ getDefaultColumnDef: () => {
12
+ return {
13
+ filterFn: "auto"
14
+ };
15
+ },
16
+ getDefaultTableOptions: (table) => {
17
+ return {
18
+ onColumnFiltersChange: makeStateUpdater("columnFilters", table),
19
+ filterFromLeafRows: false,
20
+ maxLeafRowFilterDepth: 100
21
+ };
22
+ },
23
+ assignColumnPrototype: (prototype, table) => {
24
+ assignPrototypeAPIs("columnFilteringFeature", prototype, table, {
25
+ column_getAutoFilterFn: {
26
+ fn: (column) => column_getAutoFilterFn(column)
27
+ },
28
+ column_getFilterFn: {
29
+ fn: (column) => column_getFilterFn(column)
30
+ },
31
+ column_getCanFilter: {
32
+ fn: (column) => column_getCanFilter(column)
33
+ },
34
+ column_getIsFiltered: {
35
+ fn: (column) => column_getIsFiltered(column)
36
+ },
37
+ column_getFilterValue: {
38
+ fn: (column) => column_getFilterValue(column)
39
+ },
40
+ column_getFilterIndex: {
41
+ fn: (column) => column_getFilterIndex(column)
42
+ },
43
+ column_setFilterValue: {
44
+ fn: (column, value) => column_setFilterValue(column, value)
45
+ }
46
+ });
47
+ },
48
+ initRowInstanceData: (row) => {
49
+ row.columnFilters = {};
50
+ row.columnFiltersMeta = {};
51
+ },
52
+ constructTableAPIs: (table) => {
53
+ assignTableAPIs("columnFilteringFeature", table, {
54
+ table_setColumnFilters: {
55
+ fn: (updater) => table_setColumnFilters(table, updater)
56
+ },
57
+ table_resetColumnFilters: {
58
+ fn: (defaultState) => table_resetColumnFilters(table, defaultState)
59
+ }
60
+ });
61
+ }
62
+ };
63
+ }
64
+ const columnFilteringFeature = constructColumnFilteringFeature();
65
+ export {
66
+ columnFilteringFeature,
67
+ constructColumnFilteringFeature
68
+ };
69
+ //# sourceMappingURL=columnFilteringFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnFilteringFeature.js","sources":["../../../../src/features/column-filtering/columnFilteringFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getAutoFilterFn,\n column_getCanFilter,\n column_getFilterFn,\n column_getFilterIndex,\n column_getFilterValue,\n column_getIsFiltered,\n column_setFilterValue,\n getDefaultColumnFiltersState,\n table_resetColumnFilters,\n table_setColumnFilters,\n} from './columnFilteringFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// CachedRowModel_Filtered,\n// ColumnDef_ColumnFiltering,\n// Column_ColumnFiltering,\n// CreateRowModel_Filtered,\n// RowModelFns_ColumnFiltering,\n// Row_ColumnFiltering,\n// TableOptions_ColumnFiltering,\n// TableState_ColumnFiltering,\n// Table_ColumnFiltering,\n// } from './columnFilteringFeature.types'\n\ninterface ColumnFilteringFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // CachedRowModel: CachedRowModel_Filtered<TFeatures, TData>\n // Column: Column_ColumnFiltering<TFeatures, TData>\n // ColumnDef: ColumnDef_ColumnFiltering<TFeatures, TData>\n // CreateRowModels: CreateRowModel_Filtered<TFeatures, TData>\n // Row: Row_ColumnFiltering<TFeatures, TData>\n // RowModelFns: RowModelFns_ColumnFiltering<TFeatures, TData>\n // Table: Table_ColumnFiltering<TFeatures, TData>\n // TableOptions: TableOptions_ColumnFiltering<TFeatures, TData>\n // TableState: TableState_ColumnFiltering\n}\n\nexport function constructColumnFilteringFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnFilteringFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnFilters: getDefaultColumnFiltersState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto',\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnFilteringFeature', prototype, table, {\n column_getAutoFilterFn: {\n fn: (column) => column_getAutoFilterFn(column),\n },\n column_getFilterFn: {\n fn: (column) => column_getFilterFn(column),\n },\n column_getCanFilter: {\n fn: (column) => column_getCanFilter(column),\n },\n column_getIsFiltered: {\n fn: (column) => column_getIsFiltered(column),\n },\n column_getFilterValue: {\n fn: (column) => column_getFilterValue(column),\n },\n column_getFilterIndex: {\n fn: (column) => column_getFilterIndex(column),\n },\n column_setFilterValue: {\n fn: (column, value) => column_setFilterValue(column, value),\n },\n })\n },\n\n initRowInstanceData: (row) => {\n ;(row as any).columnFilters = {}\n ;(row as any).columnFiltersMeta = {}\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnFilteringFeature', table, {\n table_setColumnFilters: {\n fn: (updater) => table_setColumnFilters(table, updater),\n },\n table_resetColumnFilters: {\n fn: (defaultState) => table_resetColumnFilters(table, defaultState),\n },\n })\n },\n }\n}\n\n/**\n * The Column Filtering feature adds column filtering state and APIs to the table, row, and column objects.\n * **Note:** This does not include Global Filtering. The globalFilteringFeature feature has been split out into its own standalone feature.\n */\nexport const columnFilteringFeature = constructColumnFilteringFeature()\n"],"names":[],"mappings":";;AA8CO,SAAS,kCAGwD;AACtE,SAAO;AAAA,IACL,iBAAiB,CAAC,iBAAiB;AACjC,aAAO;AAAA,QACL,eAAe,6BAAA;AAAA,QACf,GAAG;AAAA,MAAA;AAAA,IAEP;AAAA,IAEA,qBAAqB,MAAM;AACzB,aAAO;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,IAEd;AAAA,IAEA,wBAAwB,CAAC,UAAU;AACjC,aAAO;AAAA,QACL,uBAAuB,iBAAiB,iBAAiB,KAAK;AAAA,QAC9D,oBAAoB;AAAA,QACpB,uBAAuB;AAAA,MAAA;AAAA,IAE3B;AAAA,IAEA,uBAAuB,CAAC,WAAW,UAAU;AAC3C,0BAAoB,0BAA0B,WAAW,OAAO;AAAA,QAC9D,wBAAwB;AAAA,UACtB,IAAI,CAAC,WAAW,uBAAuB,MAAM;AAAA,QAAA;AAAA,QAE/C,oBAAoB;AAAA,UAClB,IAAI,CAAC,WAAW,mBAAmB,MAAM;AAAA,QAAA;AAAA,QAE3C,qBAAqB;AAAA,UACnB,IAAI,CAAC,WAAW,oBAAoB,MAAM;AAAA,QAAA;AAAA,QAE5C,sBAAsB;AAAA,UACpB,IAAI,CAAC,WAAW,qBAAqB,MAAM;AAAA,QAAA;AAAA,QAE7C,uBAAuB;AAAA,UACrB,IAAI,CAAC,WAAW,sBAAsB,MAAM;AAAA,QAAA;AAAA,QAE9C,uBAAuB;AAAA,UACrB,IAAI,CAAC,WAAW,sBAAsB,MAAM;AAAA,QAAA;AAAA,QAE9C,uBAAuB;AAAA,UACrB,IAAI,CAAC,QAAQ,UAAU,sBAAsB,QAAQ,KAAK;AAAA,QAAA;AAAA,MAC5D,CACD;AAAA,IACH;AAAA,IAEA,qBAAqB,CAAC,QAAQ;AAC1B,UAAY,gBAAgB,CAAA;AAC5B,UAAY,oBAAoB,CAAA;AAAA,IACpC;AAAA,IAEA,oBAAoB,CAAC,UAAU;AAC7B,sBAAgB,0BAA0B,OAAO;AAAA,QAC/C,wBAAwB;AAAA,UACtB,IAAI,CAAC,YAAY,uBAAuB,OAAO,OAAO;AAAA,QAAA;AAAA,QAExD,0BAA0B;AAAA,UACxB,IAAI,CAAC,iBAAiB,yBAAyB,OAAO,YAAY;AAAA,QAAA;AAAA,MACpE,CACD;AAAA,IACH;AAAA,EAAA;AAEJ;AAMO,MAAM,yBAAyB,gCAAA;"}
@@ -0,0 +1,145 @@
1
+ import { Table } from '../../types/Table.js';
2
+ import { BuiltInFilterFn } from '../../fns/filterFns.js';
3
+ import { CellData, OnChangeFn, RowData, Updater } from '../../types/type-utils.js';
4
+ import { TableFeatures } from '../../types/TableFeatures.js';
5
+ import { RowModel } from '../../core/row-models/coreRowModelsFeature.types';
6
+ import { Row } from '../../types/Row.js';
7
+ import { Column } from '../../types/Column.js';
8
+ export interface FilterMeta {
9
+ }
10
+ export interface FilterFns {
11
+ }
12
+ export interface TableState_ColumnFiltering {
13
+ columnFilters: ColumnFiltersState;
14
+ }
15
+ export type ColumnFiltersState = Array<ColumnFilter>;
16
+ export interface ColumnFilter {
17
+ id: string;
18
+ value: unknown;
19
+ }
20
+ export interface ResolvedColumnFilter<TFeatures extends TableFeatures, TData extends RowData> {
21
+ filterFn: FilterFn<TFeatures, TData>;
22
+ id: string;
23
+ resolvedValue: unknown;
24
+ }
25
+ export interface RowModelFns_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
26
+ filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>;
27
+ }
28
+ export interface FilterFn<TFeatures extends TableFeatures, TData extends RowData> {
29
+ (row: Row<TFeatures, TData>, columnId: string, filterValue: any, addMeta?: (meta: FilterMeta) => void): boolean;
30
+ autoRemove?: ColumnFilterAutoRemoveTestFn<TFeatures, TData>;
31
+ resolveFilterValue?: TransformFilterValueFn<TFeatures, TData>;
32
+ }
33
+ export type TransformFilterValueFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> = (value: any, column?: Column<TFeatures, TData, TValue>) => TValue;
34
+ export type ColumnFilterAutoRemoveTestFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> = (value: any, column?: Column<TFeatures, TData, TValue>) => boolean;
35
+ export type CustomFilterFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, FilterFn<TFeatures, TData>>;
36
+ export type FilterFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | BuiltInFilterFn | keyof FilterFns | FilterFn<TFeatures, TData>;
37
+ export interface ColumnDef_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
38
+ /**
39
+ * Enables/disables the **column** filter for this column.
40
+ */
41
+ enableColumnFilter?: boolean;
42
+ /**
43
+ * The filter function to use with this column. Can be the name of a built-in filter function or a custom filter function.
44
+ */
45
+ filterFn?: FilterFnOption<TFeatures, TData>;
46
+ }
47
+ export interface Column_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
48
+ /**
49
+ * Returns an automatically calculated filter function for the column based off of the columns first known value.
50
+ */
51
+ getAutoFilterFn: () => FilterFn<TFeatures, TData>;
52
+ /**
53
+ * Returns whether or not the column can be **column** filtered.
54
+ */
55
+ getCanFilter: () => boolean;
56
+ /**
57
+ * Returns the filter function (either user-defined or automatic, depending on configuration) for the columnId specified.
58
+ */
59
+ getFilterFn: () => FilterFn<TFeatures, TData>;
60
+ /**
61
+ * Returns the index (including `-1`) of the column filter in the table's `state.columnFilters` array.
62
+ */
63
+ getFilterIndex: () => number;
64
+ /**
65
+ * Returns the current filter value for the column.
66
+ */
67
+ getFilterValue: () => unknown;
68
+ /**
69
+ * Returns whether or not the column is currently filtered.
70
+ */
71
+ getIsFiltered: () => boolean;
72
+ /**
73
+ * A function that sets the current filter value for the column. You can pass it a value or an updater function for immutability-safe operations on existing values.
74
+ */
75
+ setFilterValue: (updater: Updater<any>) => void;
76
+ }
77
+ export interface Row_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
78
+ /**
79
+ * The column filters map for the row. This object tracks whether a row is passing/failing specific filters by their column ID.
80
+ */
81
+ columnFilters: Record<string, boolean>;
82
+ /**
83
+ * The column filters meta map for the row. This object tracks any filter meta for a row as optionally provided during the filtering process.
84
+ */
85
+ columnFiltersMeta: Record<string, FilterMeta>;
86
+ }
87
+ export interface TableOptions_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
88
+ /**
89
+ * Enables/disables **column** filtering for all columns.
90
+ */
91
+ enableColumnFilters?: boolean;
92
+ /**
93
+ * Enables/disables all filtering for the table.
94
+ */
95
+ enableFilters?: boolean;
96
+ /**
97
+ * By default, filtering is done from parent rows down (so if a parent row is filtered out, all of its children will be filtered out as well). Setting this option to `true` will cause filtering to be done from leaf rows up (which means parent rows will be included so long as one of their child or grand-child rows is also included).
98
+ */
99
+ filterFromLeafRows?: boolean;
100
+ /**
101
+ * Disables the `getFilteredRowModel` from being used to filter data. This may be useful if your table needs to dynamically support both client-side and server-side filtering.
102
+ */
103
+ manualFiltering?: boolean;
104
+ /**
105
+ * By default, filtering is done for all rows (max depth of 100), no matter if they are root level parent rows or the child leaf rows of a parent row. Setting this option to `0` will cause filtering to only be applied to the root level parent rows, with all sub-rows remaining unfiltered. Similarly, setting this option to `1` will cause filtering to only be applied to child leaf rows 1 level deep, and so on.
106
+
107
+ * This is useful for situations where you want a row's entire child hierarchy to be visible regardless of the applied filter.
108
+ */
109
+ maxLeafRowFilterDepth?: number;
110
+ /**
111
+ * If provided, this function will be called with an `updaterFn` when `state.columnFilters` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
112
+ */
113
+ onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
114
+ }
115
+ export interface Table_ColumnFiltering {
116
+ /**
117
+ * Resets the **columnFilters** state to `initialState.columnFilters`, or `true` can be passed to force a default blank state reset to `[]`.
118
+ */
119
+ resetColumnFilters: (defaultState?: boolean) => void;
120
+ /**
121
+ * Sets or updates the `state.columnFilters` state.
122
+ */
123
+ setColumnFilters: (updater: Updater<ColumnFiltersState>) => void;
124
+ }
125
+ export interface Table_RowModels_Filtered<TFeatures extends TableFeatures, TData extends RowData> {
126
+ /**
127
+ * Returns the row model for the table after **column** filtering has been applied.
128
+ */
129
+ getFilteredRowModel: () => RowModel<TFeatures, TData>;
130
+ /**
131
+ * Returns the row model for the table before any **column** filtering has been applied.
132
+ */
133
+ getPreFilteredRowModel: () => RowModel<TFeatures, TData>;
134
+ }
135
+ export interface CreateRowModel_Filtered<TFeatures extends TableFeatures, TData extends RowData> {
136
+ /**
137
+ * If provided, this function is called **once** per table and should return a **new function** which will calculate and return the row model for the table when it's filtered.
138
+ * - For server-side filtering, this function is unnecessary and can be ignored since the server should already return the filtered row model.
139
+ * - For client-side filtering, this function is required. A default implementation is provided via any table adapter's `{ getFilteredRowModel }` export.
140
+ */
141
+ filteredRowModel?: (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
142
+ }
143
+ export interface CachedRowModel_Filtered<TFeatures extends TableFeatures, TData extends RowData> {
144
+ filteredRowModel: () => RowModel<TFeatures, TData>;
145
+ }
@@ -0,0 +1,16 @@
1
+ import { CellData, RowData, Updater } from '../../types/type-utils.js';
2
+ import { TableFeatures } from '../../types/TableFeatures.js';
3
+ import { Table_Internal } from '../../types/Table.js';
4
+ import { Column_Internal } from '../../types/Column.js';
5
+ import { ColumnFiltersState, FilterFn } from './columnFilteringFeature.types';
6
+ export declare function getDefaultColumnFiltersState(): ColumnFiltersState;
7
+ export declare function column_getAutoFilterFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): FilterFn<TFeatures, TData> | undefined;
8
+ export declare function column_getFilterFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): FilterFn<TFeatures, TData> | undefined;
9
+ export declare function column_getCanFilter<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
10
+ export declare function column_getIsFiltered<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
11
+ export declare function column_getFilterValue<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): unknown;
12
+ export declare function column_getFilterIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): number;
13
+ export declare function column_setFilterValue<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, value: any): void;
14
+ export declare function table_setColumnFilters<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnFiltersState>): void;
15
+ export declare function table_resetColumnFilters<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
16
+ export declare function shouldAutoRemoveFilter<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(filterFn?: FilterFn<TFeatures, TData>, value?: any, column?: Column_Internal<TFeatures, TData, TValue>): boolean;
@@ -0,0 +1,118 @@
1
+ import { isFunction, functionalUpdate } from "../../utils.js";
2
+ function getDefaultColumnFiltersState() {
3
+ return structuredClone([]);
4
+ }
5
+ function column_getAutoFilterFn(column) {
6
+ const filterFns = column.table._rowModelFns.filterFns;
7
+ const firstRow = column.table.getCoreRowModel().flatRows[0];
8
+ const value = firstRow ? firstRow.getValue(column.id) : void 0;
9
+ if (typeof value === "string") {
10
+ return filterFns?.includesString;
11
+ }
12
+ if (typeof value === "number") {
13
+ return filterFns?.inNumberRange;
14
+ }
15
+ if (typeof value === "boolean") {
16
+ return filterFns?.equals;
17
+ }
18
+ if (value !== null && typeof value === "object") {
19
+ return filterFns?.equals;
20
+ }
21
+ if (Array.isArray(value)) {
22
+ return filterFns?.arrIncludes;
23
+ }
24
+ return filterFns?.weakEquals;
25
+ }
26
+ function column_getFilterFn(column) {
27
+ let filterFn = null;
28
+ const filterFns = column.table._rowModelFns.filterFns;
29
+ filterFn = isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === "auto" ? column_getAutoFilterFn(column) : filterFns?.[column.columnDef.filterFn];
30
+ if (process.env.NODE_ENV === "development" && !filterFn) {
31
+ console.warn(
32
+ `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`
33
+ );
34
+ }
35
+ return filterFn;
36
+ }
37
+ function column_getCanFilter(column) {
38
+ return (column.columnDef.enableColumnFilter ?? true) && (column.table.options.enableColumnFilters ?? true) && (column.table.options.enableFilters ?? true) && !!column.accessorFn;
39
+ }
40
+ function column_getIsFiltered(column) {
41
+ return column_getFilterIndex(column) > -1;
42
+ }
43
+ function column_getFilterValue(column) {
44
+ return column.table.store.state.columnFilters?.find((d) => d.id === column.id)?.value;
45
+ }
46
+ function column_getFilterIndex(column) {
47
+ return column.table.store.state.columnFilters?.findIndex(
48
+ (d) => d.id === column.id
49
+ ) ?? -1;
50
+ }
51
+ function column_setFilterValue(column, value) {
52
+ table_setColumnFilters(column.table, (old) => {
53
+ const filterFn = column_getFilterFn(column);
54
+ const previousFilter = old.find((d) => d.id === column.id);
55
+ const newFilter = functionalUpdate(
56
+ value,
57
+ previousFilter ? previousFilter.value : void 0
58
+ );
59
+ if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
60
+ return old.filter((d) => d.id !== column.id);
61
+ }
62
+ const newFilterObj = { id: column.id, value: newFilter };
63
+ if (previousFilter) {
64
+ return old.map((d) => {
65
+ if (d.id === column.id) {
66
+ return newFilterObj;
67
+ }
68
+ return d;
69
+ });
70
+ }
71
+ if (old.length) {
72
+ return [...old, newFilterObj];
73
+ }
74
+ return [newFilterObj];
75
+ });
76
+ }
77
+ function table_setColumnFilters(table, updater) {
78
+ const leafColumns = table.getAllLeafColumns();
79
+ const updateFn = (old) => {
80
+ return functionalUpdate(updater, old).filter((filter) => {
81
+ const column = leafColumns.find((d) => d.id === filter.id);
82
+ if (column) {
83
+ const filterFn = column_getFilterFn(column);
84
+ if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
85
+ return false;
86
+ }
87
+ }
88
+ return true;
89
+ });
90
+ };
91
+ table.options.onColumnFiltersChange?.(updateFn);
92
+ }
93
+ function table_resetColumnFilters(table, defaultState) {
94
+ table_setColumnFilters(
95
+ table,
96
+ defaultState ? [] : table.initialState.columnFilters ?? []
97
+ );
98
+ }
99
+ function shouldAutoRemoveFilter(filterFn, value, column) {
100
+ return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(
101
+ value,
102
+ column
103
+ ) : false) || typeof value === "undefined" || typeof value === "string" && !value;
104
+ }
105
+ export {
106
+ column_getAutoFilterFn,
107
+ column_getCanFilter,
108
+ column_getFilterFn,
109
+ column_getFilterIndex,
110
+ column_getFilterValue,
111
+ column_getIsFiltered,
112
+ column_setFilterValue,
113
+ getDefaultColumnFiltersState,
114
+ shouldAutoRemoveFilter,
115
+ table_resetColumnFilters,
116
+ table_setColumnFilters
117
+ };
118
+ //# sourceMappingURL=columnFilteringFeature.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnFilteringFeature.utils.js","sources":["../../../../src/features/column-filtering/columnFilteringFeature.utils.ts"],"sourcesContent":["import { functionalUpdate, isFunction } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type {\n ColumnFiltersState,\n FilterFn,\n} from './columnFilteringFeature.types'\n\nexport function getDefaultColumnFiltersState(): ColumnFiltersState {\n return structuredClone([])\n}\n\nexport function column_getAutoFilterFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const filterFns = column.table._rowModelFns.filterFns as\n | Record<string, FilterFn<TFeatures, TData>>\n | undefined\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow ? firstRow.getValue(column.id) : undefined\n\n if (typeof value === 'string') {\n return filterFns?.includesString\n }\n\n if (typeof value === 'number') {\n return filterFns?.inNumberRange\n }\n\n if (typeof value === 'boolean') {\n return filterFns?.equals\n }\n\n if (value !== null && typeof value === 'object') {\n return filterFns?.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns?.arrIncludes\n }\n\n return filterFns?.weakEquals\n}\n\nexport function column_getFilterFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n): FilterFn<TFeatures, TData> | undefined {\n let filterFn = null\n const filterFns = column.table._rowModelFns.filterFns as\n | Record<string, FilterFn<TFeatures, TData>>\n | undefined\n filterFn = isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === 'auto'\n ? column_getAutoFilterFn(column)\n : filterFns?.[column.columnDef.filterFn as string]\n\n if (process.env.NODE_ENV === 'development' && !filterFn) {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`,\n )\n }\n\n return filterFn\n}\n\nexport function column_getCanFilter<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (column.table.options.enableColumnFilters ?? true) &&\n (column.table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n}\n\nexport function column_getIsFiltered<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return column_getFilterIndex(column) > -1\n}\n\nexport function column_getFilterValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return column.table.store.state.columnFilters?.find((d) => d.id === column.id)\n ?.value\n}\n\nexport function column_getFilterIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return (\n column.table.store.state.columnFilters?.findIndex(\n (d) => d.id === column.id,\n ) ?? -1\n )\n}\n\nexport function column_setFilterValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, value: any) {\n table_setColumnFilters(column.table, (old) => {\n const filterFn = column_getFilterFn(column)\n const previousFilter = old.find((d) => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousFilter ? previousFilter.value : undefined,\n )\n\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n return old.filter((d) => d.id !== column.id)\n }\n\n const newFilterObj = { id: column.id, value: newFilter }\n\n if (previousFilter) {\n return old.map((d) => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n })\n }\n\n if (old.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n}\n\nexport function table_setColumnFilters<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<ColumnFiltersState>,\n) {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old).filter((filter) => {\n const column = leafColumns.find((d) => d.id === filter.id)\n\n if (column) {\n const filterFn = column_getFilterFn(column)\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n}\n\nexport function table_resetColumnFilters<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnFilters(\n table,\n defaultState ? [] : (table.initialState.columnFilters ?? []),\n )\n}\n\nexport function shouldAutoRemoveFilter<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n filterFn?: FilterFn<TFeatures, TData>,\n value?: any,\n column?: Column_Internal<TFeatures, TData, TValue>,\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(\n value,\n column as Column_Internal<TFeatures, TData, unknown>,\n )\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { RowData } from '../../types/type-utils.js';
2
+ import { TableFeatures } from '../../types/TableFeatures.js';
3
+ import { RowModel } from '../../core/row-models/coreRowModelsFeature.types';
4
+ import { Table } from '../../types/Table.js';
5
+ import { FilterFn, FilterFns } from './columnFilteringFeature.types';
6
+ export declare function createFilteredRowModel<TFeatures extends TableFeatures, TData extends RowData = any>(filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
@@ -0,0 +1,110 @@
1
+ import { tableMemo } from "../../utils.js";
2
+ import { table_getColumn } from "../../core/columns/coreColumnsFeature.utils.js";
3
+ import { table_getGlobalFilterFn, column_getCanGlobalFilter } from "../global-filtering/globalFilteringFeature.utils.js";
4
+ import { table_autoResetPageIndex } from "../row-pagination/rowPaginationFeature.utils.js";
5
+ import { filterRows } from "./filterRowsUtils.js";
6
+ import { column_getFilterFn } from "./columnFilteringFeature.utils.js";
7
+ function createFilteredRowModel(filterFns) {
8
+ return (_table) => {
9
+ const table = _table;
10
+ if (!table._rowModelFns.filterFns) table._rowModelFns.filterFns = filterFns;
11
+ return tableMemo({
12
+ feature: "columnFilteringFeature",
13
+ table,
14
+ fnName: "table.getFilteredRowModel",
15
+ memoDeps: () => [
16
+ table.getPreFilteredRowModel(),
17
+ table.store.state.columnFilters,
18
+ table.store.state.globalFilter
19
+ ],
20
+ fn: () => _createFilteredRowModel(table),
21
+ onAfterUpdate: () => table_autoResetPageIndex(table)
22
+ });
23
+ };
24
+ }
25
+ function _createFilteredRowModel(table) {
26
+ const rowModel = table.getPreFilteredRowModel();
27
+ const { columnFilters, globalFilter } = table.store.state;
28
+ if (!rowModel.rows.length || !columnFilters?.length && !globalFilter) {
29
+ for (const row of rowModel.flatRows) {
30
+ row.columnFilters = {};
31
+ row.columnFiltersMeta = {};
32
+ }
33
+ return rowModel;
34
+ }
35
+ const resolvedColumnFilters = [];
36
+ const resolvedGlobalFilters = [];
37
+ columnFilters?.forEach((columnFilter) => {
38
+ const column = table_getColumn(table, columnFilter.id);
39
+ if (!column) {
40
+ return;
41
+ }
42
+ const filterFn = column_getFilterFn(column);
43
+ resolvedColumnFilters.push({
44
+ id: columnFilter.id,
45
+ filterFn,
46
+ resolvedValue: filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value
47
+ });
48
+ });
49
+ const filterableIds = columnFilters?.map((d) => d.id) ?? [];
50
+ const globalFilterFn = table_getGlobalFilterFn(table);
51
+ const globallyFilterableColumns = table.getAllLeafColumns().filter((column) => column_getCanGlobalFilter(column));
52
+ if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
53
+ filterableIds.push("__global__");
54
+ globallyFilterableColumns.forEach((column) => {
55
+ resolvedGlobalFilters.push({
56
+ id: column.id,
57
+ filterFn: globalFilterFn,
58
+ resolvedValue: globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter
59
+ });
60
+ });
61
+ }
62
+ for (const row of rowModel.flatRows) {
63
+ row.columnFilters = {};
64
+ if (resolvedColumnFilters.length) {
65
+ for (const currentColumnFilter of resolvedColumnFilters) {
66
+ const id = currentColumnFilter.id;
67
+ row.columnFilters[id] = currentColumnFilter.filterFn(
68
+ row,
69
+ id,
70
+ currentColumnFilter.resolvedValue,
71
+ (filterMeta) => {
72
+ !row.columnFiltersMeta ? row.columnFiltersMeta = {} : row.columnFiltersMeta[id] = filterMeta;
73
+ }
74
+ );
75
+ }
76
+ }
77
+ if (resolvedGlobalFilters.length) {
78
+ for (const currentGlobalFilter of resolvedGlobalFilters) {
79
+ const id = currentGlobalFilter.id;
80
+ if (currentGlobalFilter.filterFn(
81
+ row,
82
+ id,
83
+ currentGlobalFilter.resolvedValue,
84
+ (filterMeta) => {
85
+ !row.columnFiltersMeta ? row.columnFiltersMeta = {} : row.columnFiltersMeta[id] = filterMeta;
86
+ }
87
+ )) {
88
+ row.columnFilters.__global__ = true;
89
+ break;
90
+ }
91
+ }
92
+ if (row.columnFilters.__global__ !== true) {
93
+ row.columnFilters.__global__ = false;
94
+ }
95
+ }
96
+ }
97
+ const filterRowsImpl = (row) => {
98
+ for (const columnId of filterableIds) {
99
+ if (row.columnFilters[columnId] === false) {
100
+ return false;
101
+ }
102
+ }
103
+ return true;
104
+ };
105
+ return filterRows(rowModel.rows, filterRowsImpl, table);
106
+ }
107
+ export {
108
+ createFilteredRowModel
109
+ };
110
+ //# sourceMappingURL=createFilteredRowModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFilteredRowModel.js","sources":["../../../../src/features/column-filtering/createFilteredRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport {\n column_getCanGlobalFilter,\n table_getGlobalFilterFn,\n} from '../global-filtering/globalFilteringFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { filterRows } from './filterRowsUtils'\nimport { column_getFilterFn } from './columnFilteringFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n FilterFn,\n FilterFns,\n ResolvedColumnFilter,\n Row_ColumnFiltering,\n} from './columnFilteringFeature.types'\n\nexport function createFilteredRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table = _table as Table_Internal<TFeatures, TData>\n if (!table._rowModelFns.filterFns) table._rowModelFns.filterFns = filterFns\n return tableMemo({\n feature: 'columnFilteringFeature',\n table,\n fnName: 'table.getFilteredRowModel',\n memoDeps: () => [\n table.getPreFilteredRowModel(),\n table.store.state.columnFilters,\n table.store.state.globalFilter,\n ],\n fn: () => _createFilteredRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createFilteredRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreFilteredRowModel()\n const { columnFilters, globalFilter } = table.store.state\n\n if (!rowModel.rows.length || (!columnFilters?.length && !globalFilter)) {\n for (const row of rowModel.flatRows as Array<\n Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>\n >) {\n row.columnFilters = {}\n row.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =\n []\n const resolvedGlobalFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =\n []\n\n columnFilters?.forEach((columnFilter) => {\n const column = table_getColumn(table, columnFilter.id)\n\n if (!column) {\n return\n }\n\n const filterFn = column_getFilterFn(column)!\n\n resolvedColumnFilters.push({\n id: columnFilter.id,\n filterFn,\n resolvedValue:\n filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value,\n })\n })\n\n const filterableIds = columnFilters?.map((d) => d.id) ?? []\n\n const globalFilterFn = table_getGlobalFilterFn(table)\n\n const globallyFilterableColumns = table\n .getAllLeafColumns()\n .filter((column) => column_getCanGlobalFilter(column))\n\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__')\n\n globallyFilterableColumns.forEach((column) => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter,\n })\n })\n }\n\n // Flag the pre-filtered row model with each filter state\n for (const row of rowModel.flatRows as Array<\n Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>\n >) {\n row.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (const currentColumnFilter of resolvedColumnFilters) {\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n (filterMeta) => {\n !row.columnFiltersMeta\n ? (row.columnFiltersMeta = {})\n : (row.columnFiltersMeta[id] = filterMeta)\n },\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (const currentGlobalFilter of resolvedGlobalFilters) {\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n (filterMeta) => {\n !row.columnFiltersMeta\n ? (row.columnFiltersMeta = {})\n : (row.columnFiltersMeta[id] = filterMeta)\n },\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (\n row: Row<TFeatures, TData> & Row_ColumnFiltering<TFeatures, TData>,\n ) => {\n // Horizontally filter rows through each column\n for (const columnId of filterableIds) {\n if (row.columnFilters[columnId] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl as any, table)\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { RowModel } from '../../core/row-models/coreRowModelsFeature.types';
2
+ import { Row } from '../../types/Row.js';
3
+ import { Table_Internal } from '../../types/Table.js';
4
+ import { TableFeatures } from '../../types/TableFeatures.js';
5
+ import { RowData } from '../../types/type-utils.js';
6
+ export declare function filterRows<TFeatures extends TableFeatures, TData extends RowData>(rows: Array<Row<TFeatures, TData>>, filterRowImpl: (row: Row<TFeatures, TData>) => any, table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData>;
@@ -1,4 +1,4 @@
1
- import { _createRow } from "../core/row.js";
1
+ import { constructRow } from "../../core/rows/constructRow.js";
2
2
  function filterRows(rows, filterRowImpl, table) {
3
3
  if (table.options.filterFromLeafRows) {
4
4
  return filterRowModelFromLeafs(rows, filterRowImpl, table);
@@ -10,11 +10,9 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
10
10
  const newFilteredRowsById = {};
11
11
  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;
12
12
  const recurseFilterRows = (rowsToFilter2, depth = 0) => {
13
- var _a;
14
- const rows = [];
15
- for (let i = 0; i < rowsToFilter2.length; i++) {
16
- let row = rowsToFilter2[i];
17
- const newRow = _createRow(
13
+ const filteredRows = [];
14
+ for (let row of rowsToFilter2) {
15
+ const newRow = constructRow(
18
16
  table,
19
17
  row.id,
20
18
  row.original,
@@ -24,17 +22,17 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
24
22
  row.parentId
25
23
  );
26
24
  newRow.columnFilters = row.columnFilters;
27
- if (((_a = row.subRows) == null ? void 0 : _a.length) && depth < maxDepth) {
25
+ if (row.subRows.length && depth < maxDepth) {
28
26
  newRow.subRows = recurseFilterRows(row.subRows, depth + 1);
29
27
  row = newRow;
30
28
  if (filterRow(row) && !newRow.subRows.length) {
31
- rows.push(row);
29
+ filteredRows.push(row);
32
30
  newFilteredRowsById[row.id] = row;
33
31
  newFilteredFlatRows.push(row);
34
32
  continue;
35
33
  }
36
34
  if (filterRow(row) || newRow.subRows.length) {
37
- rows.push(row);
35
+ filteredRows.push(row);
38
36
  newFilteredRowsById[row.id] = row;
39
37
  newFilteredFlatRows.push(row);
40
38
  continue;
@@ -42,13 +40,13 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
42
40
  } else {
43
41
  row = newRow;
44
42
  if (filterRow(row)) {
45
- rows.push(row);
43
+ filteredRows.push(row);
46
44
  newFilteredRowsById[row.id] = row;
47
45
  newFilteredFlatRows.push(row);
48
46
  }
49
47
  }
50
48
  }
51
- return rows;
49
+ return filteredRows;
52
50
  };
53
51
  return {
54
52
  rows: recurseFilterRows(rowsToFilter),
@@ -61,14 +59,12 @@ function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
61
59
  const newFilteredRowsById = {};
62
60
  const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;
63
61
  const recurseFilterRows = (rowsToFilter2, depth = 0) => {
64
- var _a;
65
- const rows = [];
66
- for (let i = 0; i < rowsToFilter2.length; i++) {
67
- let row = rowsToFilter2[i];
62
+ const filteredRows = [];
63
+ for (let row of rowsToFilter2) {
68
64
  const pass = filterRow(row);
69
65
  if (pass) {
70
- if (((_a = row.subRows) == null ? void 0 : _a.length) && depth < maxDepth) {
71
- const newRow = _createRow(
66
+ if (row.subRows.length && depth < maxDepth) {
67
+ const newRow = constructRow(
72
68
  table,
73
69
  row.id,
74
70
  row.original,
@@ -80,12 +76,12 @@ function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
80
76
  newRow.subRows = recurseFilterRows(row.subRows, depth + 1);
81
77
  row = newRow;
82
78
  }
83
- rows.push(row);
79
+ filteredRows.push(row);
84
80
  newFilteredFlatRows.push(row);
85
81
  newFilteredRowsById[row.id] = row;
86
82
  }
87
83
  }
88
- return rows;
84
+ return filteredRows;
89
85
  };
90
86
  return {
91
87
  rows: recurseFilterRows(rowsToFilter),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterRowsUtils.js","sources":["../../../../src/features/column-filtering/filterRowsUtils.ts"],"sourcesContent":["import { constructRow } from '../../core/rows/constructRow'\nimport type { Row_ColumnFiltering } from './columnFilteringFeature.types'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Row } from '../../types/Row'\nimport type { Table_Internal } from '../../types/Table'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowData } from '../../types/type-utils'\n\nexport function filterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n rows: Array<Row<TFeatures, TData>>,\n filterRowImpl: (row: Row<TFeatures, TData>) => any,\n table: Table_Internal<TFeatures, TData>,\n) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table)\n }\n\n return filterRowModelFromRoot(rows, filterRowImpl, table)\n}\n\nfunction filterRowModelFromLeafs<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n rowsToFilter: Array<Row<TFeatures, TData>>,\n filterRow: (\n row: Row<TFeatures, TData>,\n ) => Array<Row<TFeatures, TData>> | undefined,\n table: Table_Internal<TFeatures, TData>,\n): RowModel<TFeatures, TData> {\n const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []\n const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n const recurseFilterRows = (\n rowsToFilter: Array<\n Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>\n >,\n depth = 0,\n ) => {\n const filteredRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnFiltering<TFeatures, TData>> = []\n\n // Filter from children up first\n for (let row of rowsToFilter) {\n const newRow = constructRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId,\n ) as Row<TFeatures, TData> &\n Partial<Row_ColumnFiltering<TFeatures, TData>>\n newRow.columnFilters = row.columnFilters\n\n if (row.subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n\n if (filterRow(row) && !newRow.subRows.length) {\n filteredRows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n\n if (filterRow(row) || newRow.subRows.length) {\n filteredRows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n } else {\n row = newRow\n if (filterRow(row)) {\n filteredRows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n }\n }\n }\n\n return filteredRows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n\nfunction filterRowModelFromRoot<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n rowsToFilter: Array<Row<TFeatures, TData>>,\n filterRow: (row: Row<TFeatures, TData>) => any,\n table: Table_Internal<TFeatures, TData>,\n): RowModel<TFeatures, TData> {\n const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []\n const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n // Filters top level and nested rows\n const recurseFilterRows = (\n rowsToFilter: Array<Row<TFeatures, TData>>,\n depth = 0,\n ) => {\n // Filter from parents downward first\n\n const filteredRows: Array<Row<TFeatures, TData>> = []\n\n // Apply the filter to any subRows\n for (let row of rowsToFilter) {\n const pass = filterRow(row)\n\n if (pass) {\n if (row.subRows.length && depth < maxDepth) {\n const newRow = constructRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId,\n )\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n }\n\n filteredRows.push(row)\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n }\n }\n\n return filteredRows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n"],"names":["rowsToFilter"],"mappings":";AAQO,SAAS,WAId,MACA,eACA,OACA;AACA,MAAI,MAAM,QAAQ,oBAAoB;AACpC,WAAO,wBAAwB,MAAM,eAAe,KAAK;AAAA,EAC3D;AAEA,SAAO,uBAAuB,MAAM,eAAe,KAAK;AAC1D;AAEA,SAAS,wBAIP,cACA,WAGA,OAC4B;AAC5B,QAAM,sBAAoD,CAAA;AAC1D,QAAM,sBAA6D,CAAA;AACnE,QAAM,WAAW,MAAM,QAAQ,yBAAyB;AAExD,QAAM,oBAAoB,CACxBA,eAGA,QAAQ,MACL;AACH,UAAM,eAC6C,CAAA;AAGnD,aAAS,OAAOA,eAAc;AAC5B,YAAM,SAAS;AAAA,QACb;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ;AAAA,QACA,IAAI;AAAA,MAAA;AAGN,aAAO,gBAAgB,IAAI;AAE3B,UAAI,IAAI,QAAQ,UAAU,QAAQ,UAAU;AAC1C,eAAO,UAAU,kBAAkB,IAAI,SAAS,QAAQ,CAAC;AACzD,cAAM;AAEN,YAAI,UAAU,GAAG,KAAK,CAAC,OAAO,QAAQ,QAAQ;AAC5C,uBAAa,KAAK,GAAG;AACrB,8BAAoB,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAC5B;AAAA,QACF;AAEA,YAAI,UAAU,GAAG,KAAK,OAAO,QAAQ,QAAQ;AAC3C,uBAAa,KAAK,GAAG;AACrB,8BAAoB,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAC5B;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM;AACN,YAAI,UAAU,GAAG,GAAG;AAClB,uBAAa,KAAK,GAAG;AACrB,8BAAoB,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB,YAAY;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;AAEA,SAAS,uBAIP,cACA,WACA,OAC4B;AAC5B,QAAM,sBAAoD,CAAA;AAC1D,QAAM,sBAA6D,CAAA;AACnE,QAAM,WAAW,MAAM,QAAQ,yBAAyB;AAGxD,QAAM,oBAAoB,CACxBA,eACA,QAAQ,MACL;AAGH,UAAM,eAA6C,CAAA;AAGnD,aAAS,OAAOA,eAAc;AAC5B,YAAM,OAAO,UAAU,GAAG;AAE1B,UAAI,MAAM;AACR,YAAI,IAAI,QAAQ,UAAU,QAAQ,UAAU;AAC1C,gBAAM,SAAS;AAAA,YACb;AAAA,YACA,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ;AAAA,YACA,IAAI;AAAA,UAAA;AAEN,iBAAO,UAAU,kBAAkB,IAAI,SAAS,QAAQ,CAAC;AACzD,gBAAM;AAAA,QACR;AAEA,qBAAa,KAAK,GAAG;AACrB,4BAAoB,KAAK,GAAG;AAC5B,4BAAoB,IAAI,EAAE,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB,YAAY;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}