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

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/column-faceting/columnFacetingFeature.cjs +12 -18
  109. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  110. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  111. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  112. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
  113. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
  114. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
  115. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  116. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
  117. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
  118. package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
  119. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  120. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
  121. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  122. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  123. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  124. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  125. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  126. package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
  127. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  128. package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
  129. package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
  130. package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
  131. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  132. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
  133. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  134. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  135. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  136. package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
  137. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  138. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  139. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  140. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  141. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  142. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
  143. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
  144. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
  145. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  146. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
  147. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
  148. package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
  149. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  150. package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
  151. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  152. package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
  153. package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
  154. package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
  155. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  156. package/dist/features/column-filtering/filterFns.cjs +399 -0
  157. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  158. package/dist/features/column-filtering/filterFns.d.cts +210 -0
  159. package/dist/features/column-filtering/filterFns.d.ts +210 -0
  160. package/dist/features/column-filtering/filterFns.js +375 -0
  161. package/dist/features/column-filtering/filterFns.js.map +1 -0
  162. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  163. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  164. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  165. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  166. package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
  167. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  168. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  169. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  170. package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
  171. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  172. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
  173. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
  174. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
  175. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  176. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
  177. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
  178. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
  179. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  180. package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
  181. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  182. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
  183. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
  184. package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
  185. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  186. package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
  187. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  188. package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
  189. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  190. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
  191. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
  192. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
  193. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  194. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
  195. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
  196. package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
  197. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  198. package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
  199. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  200. package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
  201. package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
  202. package/dist/features/column-pinning/columnPinningFeature.js +125 -144
  203. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  204. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
  205. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
  206. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
  207. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  208. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
  209. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
  210. package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
  211. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  212. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
  213. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
  214. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
  215. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  216. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  217. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  218. package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
  219. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  220. package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
  221. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  222. package/dist/features/column-sizing/columnSizingFeature.js +34 -68
  223. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  224. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
  225. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
  226. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
  227. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  228. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
  229. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
  230. package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
  231. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  232. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
  233. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  234. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
  235. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  236. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
  237. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
  238. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
  239. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  240. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
  241. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
  242. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
  243. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  244. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  245. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  246. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  247. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  248. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
  249. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
  250. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
  251. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  252. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
  253. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
  254. package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
  255. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  256. package/dist/features/row-aggregation/aggregationFns.cjs +246 -0
  257. package/dist/features/row-aggregation/aggregationFns.cjs.map +1 -0
  258. package/dist/features/row-aggregation/aggregationFns.d.cts +68 -0
  259. package/dist/features/row-aggregation/aggregationFns.d.ts +68 -0
  260. package/dist/features/row-aggregation/aggregationFns.js +235 -0
  261. package/dist/features/row-aggregation/aggregationFns.js.map +1 -0
  262. package/dist/features/row-aggregation/rowAggregationFeature.cjs +39 -0
  263. package/dist/features/row-aggregation/rowAggregationFeature.cjs.map +1 -0
  264. package/dist/features/row-aggregation/rowAggregationFeature.d.cts +10 -0
  265. package/dist/features/row-aggregation/rowAggregationFeature.d.ts +10 -0
  266. package/dist/features/row-aggregation/rowAggregationFeature.js +39 -0
  267. package/dist/features/row-aggregation/rowAggregationFeature.js.map +1 -0
  268. package/dist/features/row-aggregation/rowAggregationFeature.types.cjs +13 -0
  269. package/dist/features/row-aggregation/rowAggregationFeature.types.cjs.map +1 -0
  270. package/dist/features/row-aggregation/rowAggregationFeature.types.d.cts +195 -0
  271. package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +195 -0
  272. package/dist/features/row-aggregation/rowAggregationFeature.types.js +12 -0
  273. package/dist/features/row-aggregation/rowAggregationFeature.types.js.map +1 -0
  274. package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs +212 -0
  275. package/dist/features/row-aggregation/rowAggregationFeature.utils.cjs.map +1 -0
  276. package/dist/features/row-aggregation/rowAggregationFeature.utils.d.cts +34 -0
  277. package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +34 -0
  278. package/dist/features/row-aggregation/rowAggregationFeature.utils.js +206 -0
  279. package/dist/features/row-aggregation/rowAggregationFeature.utils.js.map +1 -0
  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/column-faceting/columnFacetingFeature.types.ts +17 -48
  499. package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
  500. package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
  501. package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
  502. package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
  503. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  504. package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
  505. package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
  506. package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
  507. package/src/features/column-filtering/filterFns.ts +533 -0
  508. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  509. package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
  510. package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
  511. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
  512. package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
  513. package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
  514. package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
  515. package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
  516. package/src/features/column-pinning/columnPinningFeature.ts +76 -59
  517. package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
  518. package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
  519. package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
  520. package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
  521. package/src/features/column-sizing/columnSizingFeature.ts +24 -24
  522. package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
  523. package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
  524. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  525. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  526. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
  527. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  528. package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
  529. package/src/features/row-aggregation/aggregationFns.ts +345 -0
  530. package/src/features/row-aggregation/rowAggregationFeature.ts +60 -0
  531. package/src/features/row-aggregation/rowAggregationFeature.types.ts +339 -0
  532. package/src/features/row-aggregation/rowAggregationFeature.utils.ts +430 -0
  533. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
  534. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  535. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  536. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
  537. package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
  538. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  539. package/src/features/row-selection/rowSelectionFeature.ts +53 -3
  540. package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
  541. package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
  542. package/src/features/row-sorting/createSortedRowModel.ts +107 -75
  543. package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
  544. package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
  545. package/src/features/row-sorting/sortFns.ts +366 -0
  546. package/src/features/stockFeatures.ts +3 -0
  547. package/src/helpers/columnHelper.ts +4 -4
  548. package/src/helpers/metaHelper.ts +24 -0
  549. package/src/helpers/tableFeatures.ts +37 -5
  550. package/src/index.ts +8 -8
  551. package/src/static-functions.ts +1 -0
  552. package/src/store-reactivity-bindings.ts +1 -1
  553. package/src/types/Cell.ts +4 -2
  554. package/src/types/Column.ts +13 -9
  555. package/src/types/ColumnDef.ts +40 -10
  556. package/src/types/Header.ts +2 -2
  557. package/src/types/HeaderGroup.ts +6 -6
  558. package/src/types/Row.ts +6 -4
  559. package/src/types/RowModel.ts +19 -74
  560. package/src/types/RowModelFns.ts +10 -10
  561. package/src/types/Table.ts +52 -27
  562. package/src/types/TableFeatures.ts +392 -14
  563. package/src/types/TableOptions.ts +67 -14
  564. package/src/types/TableState.ts +15 -1
  565. package/src/types/type-utils.ts +8 -0
  566. package/src/utils.ts +60 -8
  567. package/src/worker/createTableWorker.ts +357 -0
  568. package/src/worker/createWorkerRowModel.ts +121 -0
  569. package/src/worker/initTableWorker.ts +164 -0
  570. package/src/worker/rebuildRowModel.ts +120 -0
  571. package/src/worker/serializeRowModel.ts +80 -0
  572. package/src/worker/tableWorkerProtocol.ts +105 -0
  573. package/dist/fns/aggregationFns.cjs +0 -161
  574. package/dist/fns/aggregationFns.cjs.map +0 -1
  575. package/dist/fns/aggregationFns.d.cts +0 -85
  576. package/dist/fns/aggregationFns.d.ts +0 -85
  577. package/dist/fns/aggregationFns.js +0 -151
  578. package/dist/fns/aggregationFns.js.map +0 -1
  579. package/dist/fns/filterFns.cjs +0 -201
  580. package/dist/fns/filterFns.cjs.map +0 -1
  581. package/dist/fns/filterFns.d.cts +0 -167
  582. package/dist/fns/filterFns.d.ts +0 -167
  583. package/dist/fns/filterFns.js +0 -185
  584. package/dist/fns/filterFns.js.map +0 -1
  585. package/dist/fns/sortFns.cjs +0 -118
  586. package/dist/fns/sortFns.cjs.map +0 -1
  587. package/dist/fns/sortFns.d.cts +0 -65
  588. package/dist/fns/sortFns.d.ts +0 -65
  589. package/dist/fns/sortFns.js +0 -110
  590. package/dist/fns/sortFns.js.map +0 -1
  591. package/skills/column-definitions/SKILL.md +0 -333
  592. package/skills/column-layout/SKILL.md +0 -328
  593. package/skills/column-layout/references/subsystems.md +0 -220
  594. package/skills/customizing-feature-behavior/SKILL.md +0 -416
  595. package/skills/filtering/SKILL.md +0 -357
  596. package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
  597. package/skills/row-expanding/SKILL.md +0 -348
  598. package/skills/setup/SKILL.md +0 -400
  599. package/skills/state-management/SKILL.md +0 -388
  600. package/src/fns/aggregationFns.ts +0 -245
  601. package/src/fns/filterFns.ts +0 -382
  602. package/src/fns/sortFns.ts +0 -217
@@ -1,10 +1,19 @@
1
- import { cloneState } from '../../utils'
1
+ import {
2
+ callMemoOrStaticFn,
3
+ cloneState,
4
+ copyInstancePropertiesWithoutMemos,
5
+ hasOwn,
6
+ makeObjectMap,
7
+ } from '../../utils'
2
8
  import type { RowData, Updater } from '../../types/type-utils'
3
9
  import type { TableFeatures } from '../../types/TableFeatures'
4
10
  import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
5
11
  import type { Table_Internal } from '../../types/Table'
6
12
  import type { Row } from '../../types/Row'
7
- import type { RowSelectionState } from './rowSelectionFeature.types'
13
+ import type {
14
+ RowSelectionState,
15
+ ToggleSelectedOptions,
16
+ } from './rowSelectionFeature.types'
8
17
 
9
18
  // State APIs
10
19
 
@@ -20,7 +29,7 @@ import type { RowSelectionState } from './rowSelectionFeature.types'
20
29
  * ```
21
30
  */
22
31
  export function getDefaultRowSelectionState(): RowSelectionState {
23
- return {}
32
+ return makeObjectMap()
24
33
  }
25
34
 
26
35
  /**
@@ -60,9 +69,16 @@ export function table_resetRowSelection<
60
69
  TFeatures extends TableFeatures,
61
70
  TData extends RowData,
62
71
  >(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
72
+ // @ts-ignore - _lastSelectedRowId is part of the RowSelection feature
73
+ table._lastSelectedRowId = null
63
74
  table_setRowSelection(
64
75
  table,
65
- defaultState ? {} : cloneState(table.initialState.rowSelection ?? {}),
76
+ defaultState
77
+ ? makeObjectMap()
78
+ : Object.assign(
79
+ makeObjectMap<true>(),
80
+ cloneState(table.initialState.rowSelection ?? {}),
81
+ ),
66
82
  )
67
83
  }
68
84
 
@@ -82,23 +98,38 @@ export function table_resetRowSelection<
82
98
  export function table_toggleAllRowsSelected<
83
99
  TFeatures extends TableFeatures,
84
100
  TData extends RowData,
85
- >(table: Table_Internal<TFeatures, TData>, value?: boolean) {
101
+ >(
102
+ table: Table_Internal<TFeatures, TData>,
103
+ value?: boolean,
104
+ opts?: { deselectAll?: boolean },
105
+ ) {
106
+ // @ts-ignore - _lastSelectedRowId is part of the RowSelection feature
107
+ table._lastSelectedRowId = null
86
108
  table_setRowSelection(table, (old) => {
87
109
  value =
88
- typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)
89
-
90
- const rowSelection = { ...old }
110
+ typeof value !== 'undefined'
111
+ ? value
112
+ : !callMemoOrStaticFn(
113
+ table,
114
+ 'getIsAllRowsSelected',
115
+ table_getIsAllRowsSelected,
116
+ )
117
+
118
+ if (opts?.deselectAll && !value) {
119
+ // deselectAll opt: clear the whole selection map instead of deleting ids one-by-one
120
+ return makeObjectMap<true>()
121
+ }
91
122
 
123
+ const rowSelection = Object.assign(makeObjectMap<true>(), old)
92
124
  const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows
93
125
 
94
126
  // We don't use `mutateRowIsSelected` here for performance reasons.
95
127
  // All of the rows are flat already, so it wouldn't be worth it
96
128
  if (value) {
97
129
  preGroupedFlatRows.forEach((row) => {
98
- if (!row_getCanSelect(row)) {
99
- return
130
+ if (row_getCanSelect(row)) {
131
+ rowSelection[row.id] = true
100
132
  }
101
- rowSelection[row.id] = true
102
133
  })
103
134
  } else {
104
135
  preGroupedFlatRows.forEach((row) => {
@@ -124,14 +155,32 @@ export function table_toggleAllRowsSelected<
124
155
  export function table_toggleAllPageRowsSelected<
125
156
  TFeatures extends TableFeatures,
126
157
  TData extends RowData,
127
- >(table: Table_Internal<TFeatures, TData>, value?: boolean) {
158
+ >(
159
+ table: Table_Internal<TFeatures, TData>,
160
+ value?: boolean,
161
+ opts?: { deselectAll?: boolean },
162
+ ) {
163
+ // @ts-ignore - _lastSelectedRowId is part of the RowSelection feature
164
+ table._lastSelectedRowId = null
128
165
  table_setRowSelection(table, (old) => {
129
166
  const resolvedValue =
130
167
  typeof value !== 'undefined'
131
168
  ? value
132
- : !table_getIsAllPageRowsSelected(table)
169
+ : !callMemoOrStaticFn(
170
+ table,
171
+ 'getIsAllPageRowsSelected',
172
+ table_getIsAllPageRowsSelected,
173
+ )
174
+
175
+ if (opts?.deselectAll && !resolvedValue) {
176
+ // deselectAll opt: clear the whole selection map instead of deleting ids one-by-one
177
+ return makeObjectMap<true>()
178
+ }
133
179
 
134
- const rowSelection: RowSelectionState = { ...old }
180
+ const rowSelection: RowSelectionState = Object.assign(
181
+ makeObjectMap<true>(),
182
+ old,
183
+ )
135
184
 
136
185
  table.getRowModel().rows.forEach((row) => {
137
186
  mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)
@@ -176,15 +225,21 @@ export function table_getSelectedRowModel<
176
225
  >(table: Table_Internal<TFeatures, TData>) {
177
226
  const rowModel = table.getCoreRowModel()
178
227
 
179
- if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {
228
+ if (
229
+ !callMemoOrStaticFn(
230
+ table,
231
+ 'getIsSomeRowsSelected',
232
+ table_getIsSomeRowsSelected,
233
+ )
234
+ ) {
180
235
  return {
181
236
  rows: [],
182
237
  flatRows: [],
183
- rowsById: {},
238
+ rowsById: makeObjectMap(),
184
239
  }
185
240
  }
186
241
 
187
- return selectRowsFn(rowModel)
242
+ return selectRowsFn(rowModel, table)
188
243
  }
189
244
 
190
245
  /**
@@ -202,17 +257,23 @@ export function table_getFilteredSelectedRowModel<
202
257
  TFeatures extends TableFeatures,
203
258
  TData extends RowData,
204
259
  >(table: Table_Internal<TFeatures, TData>) {
205
- const rowModel = table.getCoreRowModel()
260
+ const rowModel = table.getFilteredRowModel()
206
261
 
207
- if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {
262
+ if (
263
+ !callMemoOrStaticFn(
264
+ table,
265
+ 'getIsSomeRowsSelected',
266
+ table_getIsSomeRowsSelected,
267
+ )
268
+ ) {
208
269
  return {
209
270
  rows: [],
210
271
  flatRows: [],
211
- rowsById: {},
272
+ rowsById: makeObjectMap(),
212
273
  }
213
274
  }
214
275
 
215
- return selectRowsFn(rowModel)
276
+ return selectRowsFn(rowModel, table)
216
277
  }
217
278
 
218
279
  /**
@@ -230,17 +291,40 @@ export function table_getGroupedSelectedRowModel<
230
291
  TFeatures extends TableFeatures,
231
292
  TData extends RowData,
232
293
  >(table: Table_Internal<TFeatures, TData>) {
233
- const rowModel = table.getCoreRowModel()
294
+ // The sorted model falls back grouped -> filtered -> core when those
295
+ // features are not registered, so selected group rows are always visible.
296
+ const rowModel = table.getSortedRowModel()
234
297
 
235
- if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {
298
+ if (
299
+ !callMemoOrStaticFn(
300
+ table,
301
+ 'getIsSomeRowsSelected',
302
+ table_getIsSomeRowsSelected,
303
+ )
304
+ ) {
236
305
  return {
237
306
  rows: [],
238
307
  flatRows: [],
239
- rowsById: {},
308
+ rowsById: makeObjectMap(),
240
309
  }
241
310
  }
242
311
 
243
- return selectRowsFn(rowModel)
312
+ return selectRowsFn(rowModel, table)
313
+ }
314
+
315
+ /**
316
+ * Returns the ids of all selected rows.
317
+ *
318
+ * @example
319
+ * ```ts
320
+ * const selectedRowIds = table_getSelectedRowIds(table)
321
+ * ```
322
+ */
323
+ export function table_getSelectedRowIds<
324
+ TFeatures extends TableFeatures,
325
+ TData extends RowData,
326
+ >(table: Table_Internal<TFeatures, TData>): Array<string> {
327
+ return Object.keys(table.atoms.rowSelection?.get() ?? {})
244
328
  }
245
329
 
246
330
  /**
@@ -259,7 +343,7 @@ export function table_getIsAllRowsSelected<
259
343
  TData extends RowData,
260
344
  >(table: Table_Internal<TFeatures, TData>) {
261
345
  const preGroupedFlatRows = table.getFilteredRowModel().flatRows
262
- const rowSelection: RowSelectionState = table.atoms.rowSelection?.get() ?? {}
346
+ const rowSelection = table.atoms.rowSelection?.get() ?? {}
263
347
 
264
348
  let isAllRowsSelected = Boolean(
265
349
  preGroupedFlatRows.length && Object.keys(rowSelection).length,
@@ -268,7 +352,7 @@ export function table_getIsAllRowsSelected<
268
352
  if (isAllRowsSelected) {
269
353
  if (
270
354
  preGroupedFlatRows.some(
271
- (row) => row_getCanSelect(row) && !rowSelection[row.id],
355
+ (row) => row_getCanSelect(row) && !isRowSelected(row, rowSelection),
272
356
  )
273
357
  ) {
274
358
  isAllRowsSelected = false
@@ -295,13 +379,13 @@ export function table_getIsAllPageRowsSelected<
295
379
  const paginationFlatRows = table
296
380
  .getPaginatedRowModel()
297
381
  .flatRows.filter((row) => row_getCanSelect(row))
298
- const rowSelection: RowSelectionState = table.atoms.rowSelection?.get() ?? {}
382
+ const rowSelection = table.atoms.rowSelection?.get() ?? {}
299
383
 
300
384
  let isAllPageRowsSelected = !!paginationFlatRows.length
301
385
 
302
386
  if (
303
387
  isAllPageRowsSelected &&
304
- paginationFlatRows.some((row) => !rowSelection[row.id])
388
+ paginationFlatRows.some((row) => !isRowSelected(row, rowSelection))
305
389
  ) {
306
390
  isAllPageRowsSelected = false
307
391
  }
@@ -312,8 +396,7 @@ export function table_getIsAllPageRowsSelected<
312
396
  /**
313
397
  * Checks whether selection is partially applied across filtered rows.
314
398
  *
315
- * The result is true when at least one row id is selected but fewer ids are
316
- * selected than the current filtered flat row count.
399
+ * The result is true when at least one row id is selected
317
400
  *
318
401
  * @example
319
402
  * ```ts
@@ -324,21 +407,15 @@ export function table_getIsSomeRowsSelected<
324
407
  TFeatures extends TableFeatures,
325
408
  TData extends RowData,
326
409
  >(table: Table_Internal<TFeatures, TData>) {
327
- const totalSelected = Object.keys(
328
- table.atoms.rowSelection?.get() ?? {},
329
- ).length
330
410
  return (
331
- totalSelected > 0 &&
332
- totalSelected < table.getFilteredRowModel().flatRows.length
411
+ callMemoOrStaticFn(table, 'getSelectedRowIds', table_getSelectedRowIds)
412
+ .length > 0
333
413
  )
334
414
  }
335
415
 
336
416
  /**
337
417
  * Checks whether the current page has a partial selection.
338
418
  *
339
- * This is false when all selectable page rows are selected. Otherwise it is true
340
- * if any selectable page row or descendant is selected.
341
- *
342
419
  * @example
343
420
  * ```ts
344
421
  * const somePageRowsSelected = table_getIsSomePageRowsSelected(table)
@@ -348,12 +425,14 @@ export function table_getIsSomePageRowsSelected<
348
425
  TFeatures extends TableFeatures,
349
426
  TData extends RowData,
350
427
  >(table: Table_Internal<TFeatures, TData>) {
351
- const paginationFlatRows = table.getPaginatedRowModel().flatRows
352
- return table_getIsAllPageRowsSelected(table)
353
- ? false
354
- : paginationFlatRows
355
- .filter((row) => row_getCanSelect(row))
356
- .some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))
428
+ return table
429
+ .getPaginatedRowModel()
430
+ .flatRows.filter((row) => row_getCanSelect(row))
431
+ .some(
432
+ (row) =>
433
+ row_getIsSelected(row) ||
434
+ callMemoOrStaticFn(row, 'getIsSomeSelected', row_getIsSomeSelected),
435
+ )
357
436
  }
358
437
 
359
438
  /**
@@ -413,38 +492,32 @@ export function table_getToggleAllPageRowsSelectedHandler<
413
492
  * @example
414
493
  * ```ts
415
494
  * row_toggleSelected(row)
495
+ * row_toggleSelected(row, true)
496
+ * row_toggleSelected(row, false)
497
+ * row_toggleSelected(row, true, { selectChildren: false })
498
+ * row_toggleSelected(row, false, { selectChildren: false })
416
499
  * ```
417
500
  */
418
501
  export function row_toggleSelected<
419
502
  TFeatures extends TableFeatures,
420
503
  TData extends RowData,
421
- >(
422
- row: Row<TFeatures, TData>,
423
- value?: boolean,
424
- opts?: {
425
- selectChildren?: boolean
426
- },
427
- ) {
504
+ >(row: Row<TFeatures, TData>, value?: boolean, opts?: ToggleSelectedOptions) {
428
505
  const isSelected = row_getIsSelected(row)
429
506
 
430
507
  table_setRowSelection(row.table, (old) => {
431
508
  value = typeof value !== 'undefined' ? value : !isSelected
432
509
 
433
- if (row_getCanSelect(row) && isSelected === value) {
434
- return old
435
- }
436
-
437
- const selectedRowIds = { ...old }
510
+ const rowSelection = Object.assign(makeObjectMap<true>(), old)
438
511
 
439
512
  mutateRowIsSelected(
440
- selectedRowIds,
513
+ rowSelection,
441
514
  row.id,
442
515
  value,
443
516
  opts?.selectChildren ?? true,
444
517
  row.table,
445
518
  )
446
519
 
447
- return selectedRowIds
520
+ return rowSelection
448
521
  })
449
522
  }
450
523
 
@@ -462,7 +535,8 @@ export function row_getIsSelected<
462
535
  TFeatures extends TableFeatures,
463
536
  TData extends RowData,
464
537
  >(row: Row<TFeatures, TData>) {
465
- return isRowSelected(row)
538
+ const rowSelection = row.table.atoms.rowSelection?.get() ?? {}
539
+ return isRowSelected(row, rowSelection)
466
540
  }
467
541
 
468
542
  /**
@@ -572,7 +646,11 @@ export function row_getCanMultiSelect<
572
646
  * Creates a checkbox-style handler that selects or deselects this row.
573
647
  *
574
648
  * The handler is a no-op when the row cannot be selected and reads
575
- * `event.target.checked`.
649
+ * `event.target.checked`. Shift events select or deselect the inclusive range
650
+ * from the most recent selectable row handled by this table. The event's
651
+ * optional `persist()` method is called before it is read. Pass
652
+ * `selectChildren: false` to limit changes to rows explicitly present in the
653
+ * display-order interval.
576
654
  *
577
655
  * @example
578
656
  * ```ts
@@ -582,44 +660,137 @@ export function row_getCanMultiSelect<
582
660
  export function row_getToggleSelectedHandler<
583
661
  TFeatures extends TableFeatures,
584
662
  TData extends RowData,
585
- >(row: Row<TFeatures, TData>) {
663
+ >(row: Row<TFeatures, TData>, opts?: ToggleSelectedOptions) {
586
664
  const canSelect = row_getCanSelect(row)
587
665
 
588
666
  return (e: unknown) => {
589
667
  if (!canSelect) return
590
- row_toggleSelected(
591
- row,
592
- ((e as MouseEvent).target as HTMLInputElement).checked,
593
- )
668
+
669
+ const event = e as {
670
+ persist?: () => void
671
+ target: { checked: boolean }
672
+ }
673
+ event.persist?.()
674
+
675
+ const table = row.table
676
+ const checked = event.target.checked
677
+ // @ts-ignore - _lastSelectedRowId is part of the RowSelection feature
678
+ const anchorId = table._lastSelectedRowId
679
+ const canSelectRange =
680
+ table.options.enableRowRangeSelection !== false &&
681
+ anchorId !== null &&
682
+ row_getCanMultiSelect(row) &&
683
+ (table.options.isRowRangeSelectionEvent?.(e) ?? false)
684
+
685
+ if (
686
+ !canSelectRange ||
687
+ !selectRowRange(row, anchorId, checked, opts?.selectChildren ?? true)
688
+ ) {
689
+ row_toggleSelected(row, checked, opts)
690
+ }
691
+
692
+ // @ts-ignore - _lastSelectedRowId is part of the RowSelection feature
693
+ table._lastSelectedRowId = row.id
594
694
  }
595
695
  }
596
696
 
697
+ /**
698
+ * Resolves and mutates an inclusive interval in the table's latest logical
699
+ * display order.
700
+ *
701
+ * The anchor is resolved without throwing from the pre-pagination row model,
702
+ * then the core row model. Both endpoint display indexes must still identify
703
+ * those rows in the current order and both endpoints must support
704
+ * multi-selection. Eligible interval rows are applied through one row
705
+ * selection updater; non-selectable and non-multi-selectable rows are skipped.
706
+ * Returns `false` when the interaction should fall back to an ordinary toggle.
707
+ */
708
+ function selectRowRange<TFeatures extends TableFeatures, TData extends RowData>(
709
+ row: Row<TFeatures, TData>,
710
+ anchorId: string,
711
+ value: boolean,
712
+ includeChildren: boolean,
713
+ ): boolean {
714
+ const table = row.table
715
+ const rows = table.getRowsInDisplayOrder()
716
+ const anchorRow =
717
+ table.getPrePaginatedRowModel().rowsById[anchorId] ??
718
+ table.getCoreRowModel().rowsById[anchorId]
719
+
720
+ if (!anchorRow) {
721
+ return false
722
+ }
723
+
724
+ const anchorIndex = anchorRow.getDisplayIndex()
725
+ const rowIndex = row.getDisplayIndex()
726
+ const anchorAtIndex = rows[anchorIndex]
727
+ const rowAtIndex = rows[rowIndex]
728
+
729
+ if (
730
+ anchorIndex < 0 ||
731
+ rowIndex < 0 ||
732
+ anchorIndex >= rows.length ||
733
+ rowIndex >= rows.length ||
734
+ anchorAtIndex?.id !== anchorRow.id ||
735
+ rowAtIndex?.id !== row.id ||
736
+ !row_getCanMultiSelect(anchorRow) ||
737
+ !row_getCanMultiSelect(row)
738
+ ) {
739
+ return false
740
+ }
741
+
742
+ const start = Math.min(anchorIndex, rowIndex)
743
+ const end = Math.max(anchorIndex, rowIndex)
744
+
745
+ table_setRowSelection(table, (old) => {
746
+ const rowSelection = Object.assign(makeObjectMap<true>(), old)
747
+
748
+ for (let index = start; index <= end; index++) {
749
+ const rangeRow = rows[index]!
750
+ if (!row_getCanSelect(rangeRow) || !row_getCanMultiSelect(rangeRow)) {
751
+ continue
752
+ }
753
+ mutateRowIsSelected(
754
+ rowSelection,
755
+ rangeRow.id,
756
+ value,
757
+ includeChildren,
758
+ table,
759
+ )
760
+ }
761
+
762
+ return rowSelection
763
+ })
764
+
765
+ return true
766
+ }
767
+
597
768
  const mutateRowIsSelected = <
598
769
  TFeatures extends TableFeatures,
599
770
  TData extends RowData,
600
771
  >(
601
- selectedRowIds: Record<string, boolean | undefined>,
772
+ rowSelection: RowSelectionState,
602
773
  rowId: string,
603
774
  value: boolean,
604
775
  includeChildren: boolean,
605
776
  table: Table_Internal<TFeatures, TData>,
606
- ) => {
777
+ ): void => {
607
778
  const row = table.getRow(rowId, true)
608
779
 
609
780
  if (value) {
610
781
  if (!row_getCanMultiSelect(row)) {
611
- Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])
782
+ Object.keys(rowSelection).forEach((key) => delete rowSelection[key])
612
783
  }
613
784
  if (row_getCanSelect(row)) {
614
- selectedRowIds[rowId] = true
785
+ rowSelection[rowId] = true
615
786
  }
616
787
  } else {
617
- delete selectedRowIds[rowId]
788
+ delete rowSelection[rowId]
618
789
  }
619
790
 
620
791
  if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {
621
792
  row.subRows.forEach((r) =>
622
- mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),
793
+ mutateRowIsSelected(rowSelection, r.id, value, includeChildren, table),
623
794
  )
624
795
  }
625
796
  }
@@ -638,10 +809,13 @@ const mutateRowIsSelected = <
638
809
  export function selectRowsFn<
639
810
  TFeatures extends TableFeatures,
640
811
  TData extends RowData,
641
- >(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {
812
+ >(
813
+ rowModel: RowModel<TFeatures, TData>,
814
+ table: Table_Internal<TFeatures, TData>,
815
+ ): RowModel<TFeatures, TData> {
642
816
  const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []
643
- const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}
644
-
817
+ const newSelectedRowsById = makeObjectMap<Row<TFeatures, TData>>()
818
+ const rowSelection = table.atoms.rowSelection?.get() ?? {}
645
819
  // Filters top level and nested rows.
646
820
  const recurseRows = (
647
821
  rows: Array<Row<TFeatures, TData>>,
@@ -649,8 +823,8 @@ export function selectRowsFn<
649
823
  ): Array<Row<TFeatures, TData>> => {
650
824
  const result: Array<Row<TFeatures, TData>> = []
651
825
  for (let i = 0; i < rows.length; i++) {
652
- let row = rows[i]!
653
- const isSelected = isRowSelected(row)
826
+ const row = rows[i]!
827
+ const isSelected = isRowSelected(row, rowSelection)
654
828
 
655
829
  if (isSelected) {
656
830
  newSelectedFlatRows.push(row)
@@ -658,13 +832,18 @@ export function selectRowsFn<
658
832
  }
659
833
 
660
834
  if (row.subRows.length) {
661
- row = {
662
- ...row,
663
- subRows: recurseRows(row.subRows, depth + 1),
835
+ // Always recurse — selected descendants of unselected parents must
836
+ // still be collected into flatRows/rowsById.
837
+ const newSubRows = recurseRows(row.subRows, depth + 1)
838
+
839
+ if (isSelected) {
840
+ // Preserve prototype chain so methods like getValue() remain accessible
841
+ const cloned = Object.create(Object.getPrototypeOf(row))
842
+ copyInstancePropertiesWithoutMemos(cloned, row)
843
+ cloned.subRows = newSubRows
844
+ result.push(cloned)
664
845
  }
665
- }
666
-
667
- if (isSelected) {
846
+ } else if (isSelected) {
668
847
  result.push(row)
669
848
  }
670
849
  }
@@ -689,8 +868,8 @@ export function selectRowsFn<
689
868
  export function isRowSelected<
690
869
  TFeatures extends TableFeatures,
691
870
  TData extends RowData,
692
- >(row: Row<TFeatures, TData>): boolean {
693
- return (row.table.atoms.rowSelection?.get() ?? {})[row.id] ?? false
871
+ >(row: Row<TFeatures, TData>, rowSelection: RowSelectionState): boolean {
872
+ return !!(hasOwn(rowSelection, row.id) && rowSelection[row.id])
694
873
  }
695
874
 
696
875
  /**
@@ -709,17 +888,21 @@ export function isSubRowSelected<
709
888
  >(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {
710
889
  if (!row.subRows.length) return false
711
890
 
712
- let allChildrenSelected = true
891
+ const rowSelection = row.table.atoms.rowSelection?.get() ?? {}
892
+
713
893
  let someSelected = false
894
+ let allChildrenSelected = true
895
+
896
+ for (let i = 0; i < row.subRows.length; i++) {
897
+ const subRow = row.subRows[i]!
714
898
 
715
- row.subRows.forEach((subRow) => {
716
899
  // Bail out early if we know both of these
717
900
  if (someSelected && !allChildrenSelected) {
718
- return
901
+ break
719
902
  }
720
903
 
721
904
  if (row_getCanSelect(subRow)) {
722
- if (isRowSelected(subRow)) {
905
+ if (isRowSelected(subRow, rowSelection)) {
723
906
  someSelected = true
724
907
  } else {
725
908
  allChildrenSelected = false
@@ -738,8 +921,7 @@ export function isSubRowSelected<
738
921
  allChildrenSelected = false
739
922
  }
740
923
  }
741
- })
924
+ }
742
925
 
743
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
744
926
  return allChildrenSelected ? 'all' : someSelected ? 'some' : false
745
927
  }