@tanstack/table-core 9.0.0-beta.30 → 9.0.0-beta.33

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 (312) hide show
  1. package/dist/core/cells/constructCell.cjs +1 -4
  2. package/dist/core/cells/constructCell.cjs.map +1 -1
  3. package/dist/core/cells/constructCell.d.cts +1 -1
  4. package/dist/core/cells/constructCell.d.ts +1 -1
  5. package/dist/core/cells/constructCell.js +1 -4
  6. package/dist/core/cells/constructCell.js.map +1 -1
  7. package/dist/core/cells/coreCellsFeature.types.d.cts +1 -1
  8. package/dist/core/cells/coreCellsFeature.types.d.ts +1 -1
  9. package/dist/core/cells/coreCellsFeature.utils.d.cts +1 -1
  10. package/dist/core/cells/coreCellsFeature.utils.d.ts +1 -1
  11. package/dist/core/columns/constructColumn.cjs +3 -9
  12. package/dist/core/columns/constructColumn.cjs.map +1 -1
  13. package/dist/core/columns/constructColumn.js +3 -9
  14. package/dist/core/columns/constructColumn.js.map +1 -1
  15. package/dist/core/columns/coreColumnsFeature.cjs +12 -18
  16. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  17. package/dist/core/columns/coreColumnsFeature.js +12 -18
  18. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  19. package/dist/core/columns/coreColumnsFeature.utils.cjs +2 -6
  20. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  21. package/dist/core/columns/coreColumnsFeature.utils.js +2 -6
  22. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  23. package/dist/core/headers/buildHeaderGroups.cjs +1 -2
  24. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  25. package/dist/core/headers/buildHeaderGroups.js +1 -2
  26. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  27. package/dist/core/headers/constructHeader.cjs +1 -4
  28. package/dist/core/headers/constructHeader.cjs.map +1 -1
  29. package/dist/core/headers/constructHeader.js +1 -4
  30. package/dist/core/headers/constructHeader.js.map +1 -1
  31. package/dist/core/headers/coreHeadersFeature.cjs +8 -11
  32. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  33. package/dist/core/headers/coreHeadersFeature.js +8 -11
  34. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  35. package/dist/core/headers/coreHeadersFeature.utils.cjs +2 -4
  36. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  37. package/dist/core/headers/coreHeadersFeature.utils.js +2 -4
  38. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  39. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +3 -3
  40. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +3 -3
  41. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +6 -24
  42. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  43. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +1 -1
  44. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +1 -1
  45. package/dist/core/row-models/coreRowModelsFeature.utils.js +6 -24
  46. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  47. package/dist/core/row-models/createCoreRowModel.cjs +2 -3
  48. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  49. package/dist/core/row-models/createCoreRowModel.d.cts +1 -1
  50. package/dist/core/row-models/createCoreRowModel.d.ts +1 -1
  51. package/dist/core/row-models/createCoreRowModel.js +2 -3
  52. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  53. package/dist/core/rows/constructRow.cjs +2 -8
  54. package/dist/core/rows/constructRow.cjs.map +1 -1
  55. package/dist/core/rows/constructRow.js +2 -8
  56. package/dist/core/rows/constructRow.js.map +1 -1
  57. package/dist/core/rows/coreRowsFeature.types.d.cts +1 -1
  58. package/dist/core/rows/coreRowsFeature.types.d.ts +1 -1
  59. package/dist/core/rows/coreRowsFeature.utils.cjs +3 -4
  60. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  61. package/dist/core/rows/coreRowsFeature.utils.d.cts +1 -1
  62. package/dist/core/rows/coreRowsFeature.utils.d.ts +1 -1
  63. package/dist/core/rows/coreRowsFeature.utils.js +3 -4
  64. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  65. package/dist/core/table/constructTable.cjs +4 -10
  66. package/dist/core/table/constructTable.cjs.map +1 -1
  67. package/dist/core/table/constructTable.js +4 -10
  68. package/dist/core/table/constructTable.js.map +1 -1
  69. package/dist/experimental-worker-plugin.cjs +14 -0
  70. package/dist/experimental-worker-plugin.d.cts +5 -0
  71. package/dist/experimental-worker-plugin.d.ts +5 -0
  72. package/dist/experimental-worker-plugin.js +6 -0
  73. package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
  74. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  75. package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
  76. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  77. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +1 -1
  78. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +1 -1
  79. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +7 -25
  80. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  81. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +1 -1
  82. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +1 -1
  83. package/dist/features/column-faceting/columnFacetingFeature.utils.js +7 -25
  84. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  85. package/dist/features/column-faceting/createFacetedRowModel.cjs +8 -14
  86. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  87. package/dist/features/column-faceting/createFacetedRowModel.d.cts +1 -1
  88. package/dist/features/column-faceting/createFacetedRowModel.d.ts +1 -1
  89. package/dist/features/column-faceting/createFacetedRowModel.js +8 -14
  90. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  91. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +1 -1
  92. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +1 -1
  93. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +10 -13
  94. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  95. package/dist/features/column-filtering/columnFilteringFeature.utils.js +10 -13
  96. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  97. package/dist/features/column-filtering/createFilteredRowModel.cjs +12 -18
  98. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  99. package/dist/features/column-filtering/createFilteredRowModel.d.cts +1 -1
  100. package/dist/features/column-filtering/createFilteredRowModel.d.ts +1 -1
  101. package/dist/features/column-filtering/createFilteredRowModel.js +12 -18
  102. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  103. package/dist/features/column-grouping/columnGroupingFeature.cjs +1 -4
  104. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  105. package/dist/features/column-grouping/columnGroupingFeature.js +1 -4
  106. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  107. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +4 -4
  108. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +4 -4
  109. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +8 -13
  110. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  111. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +2 -2
  112. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +2 -2
  113. package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -13
  114. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  115. package/dist/features/column-grouping/createGroupedRowModel.cjs +11 -10
  116. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  117. package/dist/features/column-grouping/createGroupedRowModel.d.cts +1 -1
  118. package/dist/features/column-grouping/createGroupedRowModel.d.ts +1 -1
  119. package/dist/features/column-grouping/createGroupedRowModel.js +11 -10
  120. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  121. package/dist/features/column-ordering/columnOrderingFeature.cjs +13 -19
  122. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  123. package/dist/features/column-ordering/columnOrderingFeature.js +13 -19
  124. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  125. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +6 -11
  126. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  127. package/dist/features/column-ordering/columnOrderingFeature.utils.js +6 -11
  128. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  129. package/dist/features/column-pinning/columnPinningFeature.cjs +78 -114
  130. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  131. package/dist/features/column-pinning/columnPinningFeature.js +78 -114
  132. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  133. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +1 -1
  134. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +1 -1
  135. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +15 -28
  136. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  137. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +2 -2
  138. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +2 -2
  139. package/dist/features/column-pinning/columnPinningFeature.utils.js +15 -28
  140. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  141. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +12 -16
  142. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  143. package/dist/features/column-resizing/columnResizingFeature.utils.js +12 -16
  144. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  145. package/dist/features/column-sizing/columnSizingFeature.cjs +24 -48
  146. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  147. package/dist/features/column-sizing/columnSizingFeature.js +24 -48
  148. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  149. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +11 -18
  150. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  151. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +1 -1
  152. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +1 -1
  153. package/dist/features/column-sizing/columnSizingFeature.utils.js +11 -18
  154. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  155. package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -40
  156. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  157. package/dist/features/column-visibility/columnVisibilityFeature.js +25 -40
  158. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  159. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +1 -1
  160. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +1 -1
  161. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +3 -6
  162. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  163. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +1 -1
  164. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +1 -1
  165. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +3 -6
  166. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  167. package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
  168. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  169. package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
  170. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  171. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +3 -5
  172. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  173. package/dist/features/global-filtering/globalFilteringFeature.utils.js +3 -5
  174. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  175. package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
  176. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  177. package/dist/features/row-expanding/createExpandedRowModel.d.cts +1 -1
  178. package/dist/features/row-expanding/createExpandedRowModel.d.ts +1 -1
  179. package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
  180. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  181. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +1 -1
  182. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +1 -1
  183. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +8 -15
  184. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  185. package/dist/features/row-expanding/rowExpandingFeature.utils.js +8 -15
  186. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  187. package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
  188. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  189. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +1 -1
  190. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +1 -1
  191. package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
  192. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  193. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +1 -1
  194. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +1 -1
  195. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +8 -14
  196. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  197. package/dist/features/row-pagination/rowPaginationFeature.utils.js +8 -14
  198. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  199. package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
  200. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  201. package/dist/features/row-pinning/rowPinningFeature.js +4 -16
  202. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  203. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +7 -12
  204. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  205. package/dist/features/row-pinning/rowPinningFeature.utils.js +7 -12
  206. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  207. package/dist/features/row-selection/rowSelectionFeature.cjs +30 -60
  208. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  209. package/dist/features/row-selection/rowSelectionFeature.js +30 -60
  210. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  211. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +1 -1
  212. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +1 -1
  213. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +12 -19
  214. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  215. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +1 -1
  216. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +1 -1
  217. package/dist/features/row-selection/rowSelectionFeature.utils.js +12 -19
  218. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  219. package/dist/features/row-sorting/createSortedRowModel.cjs +3 -7
  220. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  221. package/dist/features/row-sorting/createSortedRowModel.d.cts +1 -1
  222. package/dist/features/row-sorting/createSortedRowModel.d.ts +1 -1
  223. package/dist/features/row-sorting/createSortedRowModel.js +3 -7
  224. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  225. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +2 -2
  226. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +2 -2
  227. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +9 -13
  228. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  229. package/dist/features/row-sorting/rowSortingFeature.utils.js +9 -13
  230. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  231. package/dist/flex-render.d.cts +1 -1
  232. package/dist/flex-render.d.ts +1 -1
  233. package/dist/fns/filterFns.cjs +8 -12
  234. package/dist/fns/filterFns.cjs.map +1 -1
  235. package/dist/fns/filterFns.js +8 -12
  236. package/dist/fns/filterFns.js.map +1 -1
  237. package/dist/index.d.cts +16 -16
  238. package/dist/index.d.ts +16 -16
  239. package/dist/store-reactivity-bindings.cjs +2 -2
  240. package/dist/store-reactivity-bindings.cjs.map +1 -1
  241. package/dist/store-reactivity-bindings.js +2 -2
  242. package/dist/store-reactivity-bindings.js.map +1 -1
  243. package/dist/types/Cell.d.cts +1 -1
  244. package/dist/types/Cell.d.ts +1 -1
  245. package/dist/types/Column.d.cts +7 -7
  246. package/dist/types/Column.d.ts +7 -7
  247. package/dist/types/ColumnDef.d.cts +6 -6
  248. package/dist/types/ColumnDef.d.ts +6 -6
  249. package/dist/types/Header.d.cts +1 -1
  250. package/dist/types/Header.d.ts +1 -1
  251. package/dist/types/Row.d.cts +2 -2
  252. package/dist/types/Row.d.ts +2 -2
  253. package/dist/types/RowModel.d.cts +4 -4
  254. package/dist/types/RowModel.d.ts +4 -4
  255. package/dist/types/RowModelFns.d.cts +2 -2
  256. package/dist/types/RowModelFns.d.ts +2 -2
  257. package/dist/types/Table.d.cts +9 -9
  258. package/dist/types/Table.d.ts +9 -9
  259. package/dist/types/TableFeatures.d.cts +4 -4
  260. package/dist/types/TableFeatures.d.ts +4 -4
  261. package/dist/types/TableOptions.d.cts +7 -7
  262. package/dist/types/TableOptions.d.ts +7 -7
  263. package/dist/types/TableState.d.cts +6 -6
  264. package/dist/types/TableState.d.ts +6 -6
  265. package/dist/utils.cjs +9 -12
  266. package/dist/utils.cjs.map +1 -1
  267. package/dist/utils.js +9 -12
  268. package/dist/utils.js.map +1 -1
  269. package/dist/worker/createTableWorker.cjs +189 -0
  270. package/dist/worker/createTableWorker.cjs.map +1 -0
  271. package/dist/worker/createTableWorker.d.cts +102 -0
  272. package/dist/worker/createTableWorker.d.ts +102 -0
  273. package/dist/worker/createTableWorker.js +186 -0
  274. package/dist/worker/createTableWorker.js.map +1 -0
  275. package/dist/worker/createWorkerRowModel.cjs +78 -0
  276. package/dist/worker/createWorkerRowModel.cjs.map +1 -0
  277. package/dist/worker/createWorkerRowModel.d.cts +42 -0
  278. package/dist/worker/createWorkerRowModel.d.ts +42 -0
  279. package/dist/worker/createWorkerRowModel.js +78 -0
  280. package/dist/worker/createWorkerRowModel.js.map +1 -0
  281. package/dist/worker/initTableWorker.cjs +100 -0
  282. package/dist/worker/initTableWorker.cjs.map +1 -0
  283. package/dist/worker/initTableWorker.d.cts +33 -0
  284. package/dist/worker/initTableWorker.d.ts +33 -0
  285. package/dist/worker/initTableWorker.js +100 -0
  286. package/dist/worker/initTableWorker.js.map +1 -0
  287. package/dist/worker/rebuildRowModel.cjs +72 -0
  288. package/dist/worker/rebuildRowModel.cjs.map +1 -0
  289. package/dist/worker/rebuildRowModel.d.cts +9 -0
  290. package/dist/worker/rebuildRowModel.d.ts +9 -0
  291. package/dist/worker/rebuildRowModel.js +72 -0
  292. package/dist/worker/rebuildRowModel.js.map +1 -0
  293. package/dist/worker/serializeRowModel.cjs +53 -0
  294. package/dist/worker/serializeRowModel.cjs.map +1 -0
  295. package/dist/worker/serializeRowModel.js +52 -0
  296. package/dist/worker/serializeRowModel.js.map +1 -0
  297. package/dist/worker/tableWorkerProtocol.cjs +29 -0
  298. package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
  299. package/dist/worker/tableWorkerProtocol.d.cts +88 -0
  300. package/dist/worker/tableWorkerProtocol.d.ts +88 -0
  301. package/dist/worker/tableWorkerProtocol.js +27 -0
  302. package/dist/worker/tableWorkerProtocol.js.map +1 -0
  303. package/package.json +6 -2
  304. package/src/experimental-worker-plugin.ts +22 -0
  305. package/src/features/column-grouping/createGroupedRowModel.ts +9 -3
  306. package/src/features/row-selection/rowSelectionFeature.utils.ts +4 -2
  307. package/src/worker/createTableWorker.ts +357 -0
  308. package/src/worker/createWorkerRowModel.ts +121 -0
  309. package/src/worker/initTableWorker.ts +164 -0
  310. package/src/worker/rebuildRowModel.ts +117 -0
  311. package/src/worker/serializeRowModel.ts +80 -0
  312. package/src/worker/tableWorkerProtocol.ts +105 -0
@@ -0,0 +1,117 @@
1
+ import { constructRow } from '../core/rows/constructRow'
2
+ import { hasOwn } from '../utils'
3
+ import type { RowModel } from '../core/row-models/coreRowModelsFeature.types'
4
+ import type { Table_Internal } from '../types/Table'
5
+ import type {
6
+ TableWorkerRowNode,
7
+ TableWorkerStagePayload,
8
+ } from './tableWorkerProtocol'
9
+
10
+ /** Payloads that carry data; `unchanged` never reaches the rebuilder. */
11
+ export type TableWorkerDataPayload = Exclude<
12
+ TableWorkerStagePayload,
13
+ { kind: 'unchanged' }
14
+ >
15
+
16
+ type AnyTable = Table_Internal<any, any>
17
+
18
+ // Main-thread side: payload + this table's core rows -> RowModel. Mirrors how
19
+ // the sync row models treat rows: data rows are reused (with depth/parentId
20
+ // rewritten, exactly like createGroupedRowModel does), synthetic group rows
21
+ // are reconstructed via constructRow with their worker-computed aggregates
22
+ // pre-seeded so no aggregation ever runs on the main thread.
23
+
24
+ function collectLeafRows(subRows: Array<any>, out: Array<any>) {
25
+ for (let i = 0; i < subRows.length; i++) {
26
+ const row = subRows[i]
27
+ if (row.groupingColumnId == null) {
28
+ out.push(row)
29
+ } else {
30
+ collectLeafRows(row.subRows, out)
31
+ }
32
+ }
33
+ }
34
+
35
+ export function rebuildRowModel(
36
+ table: AnyTable,
37
+ payload: TableWorkerDataPayload,
38
+ /**
39
+ * Whether a flat payload should rewrite row depth/parentId. Mirrors core:
40
+ * the grouped model's passthrough resets them, the filtered model never
41
+ * touches them. Without this distinction a filtered rebuild could zero the
42
+ * depths a grouped/sorted tree rebuild just assigned to shared row objects.
43
+ */
44
+ resetDepths: boolean,
45
+ ): RowModel<any, any> {
46
+ const core = table.getCoreRowModel()
47
+
48
+ if (payload.kind === 'flat') {
49
+ const { indices } = payload
50
+ const rows = new Array(indices.length)
51
+ for (let i = 0; i < indices.length; i++) {
52
+ const row: any = core.flatRows[indices[i]!]!
53
+ if (resetDepths) {
54
+ row.depth = 0
55
+ row.parentId = undefined
56
+ }
57
+ rows[i] = row
58
+ }
59
+ return { rows, flatRows: rows, rowsById: core.rowsById }
60
+ }
61
+
62
+ const flatRows: Array<any> = []
63
+ // Data rows resolve through the prototype chain to the core map; only
64
+ // synthetic group rows are added on top.
65
+ const rowsById: Record<string, any> = Object.create(core.rowsById)
66
+
67
+ const rebuildRows = (
68
+ nodes: Array<TableWorkerRowNode>,
69
+ depth: number,
70
+ parentId: string | undefined,
71
+ ): Array<any> => {
72
+ const rows = new Array(nodes.length)
73
+ for (let i = 0; i < nodes.length; i++) {
74
+ const node = nodes[i]!
75
+ if (typeof node === 'number') {
76
+ const row: any = core.flatRows[node]!
77
+ row.depth = depth
78
+ row.parentId = parentId
79
+ flatRows.push(row)
80
+ rows[i] = row
81
+ continue
82
+ }
83
+
84
+ const subRows = rebuildRows(node.children, depth + 1, node.id)
85
+ const leafRows: Array<any> = []
86
+ collectLeafRows(subRows, leafRows)
87
+
88
+ const row: any = constructRow(
89
+ table,
90
+ node.id,
91
+ leafRows[0]?.original,
92
+ node.index,
93
+ depth,
94
+ undefined,
95
+ parentId,
96
+ )
97
+ const aggregates = node.aggregates
98
+ Object.assign(row, {
99
+ groupingColumnId: node.groupingColumnId,
100
+ groupingValue: node.groupingValue,
101
+ subRows,
102
+ leafRows,
103
+ getValue: (columnId: string) =>
104
+ hasOwn(aggregates, columnId) ? aggregates[columnId] : undefined,
105
+ })
106
+
107
+ flatRows.push(row)
108
+ rowsById[node.id] = row
109
+ rows[i] = row
110
+ }
111
+ return rows
112
+ }
113
+
114
+ const rows = rebuildRows(payload.children, 0, undefined)
115
+
116
+ return { rows, flatRows, rowsById }
117
+ }
@@ -0,0 +1,80 @@
1
+ import type { RowModel } from '../core/row-models/coreRowModelsFeature.types'
2
+ import type {
3
+ TableWorkerRowNode,
4
+ TableWorkerStagePayload,
5
+ } from './tableWorkerProtocol'
6
+
7
+ // Worker-side: RowModel -> transferable payload. Stage-agnostic; the payload
8
+ // kind is chosen from the model's shape (synthetic rows present or not).
9
+
10
+ function isCloneSafe(value: unknown): boolean {
11
+ return typeof value !== 'function' && typeof value !== 'symbol'
12
+ }
13
+
14
+ function serializeRows(
15
+ rows: Array<any>,
16
+ coreIndexById: Record<string, number>,
17
+ aggregateColumnIds: Array<string>,
18
+ ): Array<TableWorkerRowNode> {
19
+ const nodes = new Array<TableWorkerRowNode>(rows.length)
20
+ for (let i = 0; i < rows.length; i++) {
21
+ const row = rows[i]
22
+ if (row.groupingColumnId == null) {
23
+ // Data row: its position in `options.data` is all the main thread needs.
24
+ nodes[i] = coreIndexById[row.id]!
25
+ continue
26
+ }
27
+ // Synthetic group row: compute aggregates eagerly (the expensive per-group
28
+ // work we want off the main thread), but only for columns with an explicit
29
+ // aggregation; sync tables aggregate lazily, so eagerly auto-aggregating
30
+ // every column would explode on high-cardinality grouping.
31
+ const aggregates: Record<string, unknown> = {}
32
+ for (let c = 0; c < aggregateColumnIds.length; c++) {
33
+ const columnId = aggregateColumnIds[c]!
34
+ const value = row.getValue(columnId)
35
+ if (value !== undefined && isCloneSafe(value)) {
36
+ aggregates[columnId] = value
37
+ }
38
+ }
39
+ // The group's own column always serializes its display value (the first
40
+ // leaf's value) so grouped cells render.
41
+ if (!(row.groupingColumnId in aggregates)) {
42
+ const value = row.getValue(row.groupingColumnId)
43
+ if (value !== undefined && isCloneSafe(value)) {
44
+ aggregates[row.groupingColumnId] = value
45
+ }
46
+ }
47
+ nodes[i] = {
48
+ id: row.id,
49
+ groupingColumnId: row.groupingColumnId,
50
+ groupingValue: row.groupingValue,
51
+ index: row.index,
52
+ aggregates,
53
+ children: serializeRows(row.subRows, coreIndexById, aggregateColumnIds),
54
+ }
55
+ }
56
+ return nodes
57
+ }
58
+
59
+ export function serializeRowModel(
60
+ model: RowModel<any, any>,
61
+ coreIndexById: Record<string, number>,
62
+ aggregateColumnIds: Array<string>,
63
+ transfer: Array<Transferable>,
64
+ ): TableWorkerStagePayload {
65
+ // Flat fast path: no synthetic rows anywhere (flatRows === rows for flat
66
+ // data). A Uint32Array permutation transfers at zero-copy cost.
67
+ if (model.flatRows.length === model.rows.length) {
68
+ const indices = new Uint32Array(model.rows.length)
69
+ for (let i = 0; i < indices.length; i++) {
70
+ indices[i] = coreIndexById[model.rows[i]!.id]!
71
+ }
72
+ transfer.push(indices.buffer)
73
+ return { kind: 'flat', indices }
74
+ }
75
+
76
+ return {
77
+ kind: 'tree',
78
+ children: serializeRows(model.rows, coreIndexById, aggregateColumnIds),
79
+ }
80
+ }
@@ -0,0 +1,105 @@
1
+ import type { RowData } from '../types/type-utils'
2
+
3
+ /**
4
+ * Row model stages that can be offloaded to the worker, in pipeline order.
5
+ * Everything else in this module is derived from this list; adding a stage
6
+ * means adding an entry here and to `tableWorkerStageStateDeps`.
7
+ */
8
+ export const tableWorkerPipeline = [
9
+ 'filtered',
10
+ 'grouped',
11
+ 'sorted',
12
+ 'expanded',
13
+ ] as const
14
+
15
+ export type TableWorkerStage = (typeof tableWorkerPipeline)[number]
16
+
17
+ /**
18
+ * The state slices each stage's computation depends on. The main thread sends
19
+ * the union of deps for its registered stages; a change to any of them
20
+ * triggers one worker round trip.
21
+ */
22
+ export const tableWorkerStageStateDeps: Record<
23
+ TableWorkerStage,
24
+ Array<string>
25
+ > = {
26
+ filtered: ['columnFilters', 'globalFilter'],
27
+ grouped: ['grouping'],
28
+ sorted: ['sorting'],
29
+ expanded: ['expanded'],
30
+ }
31
+
32
+ /**
33
+ * A serialized synthetic (group) row. Leaf rows serialize as their position in
34
+ * `options.data`; group rows carry what `constructRow` + the grouped row model
35
+ * need to rebuild them, plus eagerly computed aggregate values so no
36
+ * aggregation runs on the main thread.
37
+ */
38
+ export interface TableWorkerGroupNode {
39
+ id: string
40
+ groupingColumnId: string
41
+ groupingValue: unknown
42
+ index: number
43
+ aggregates: Record<string, unknown>
44
+ children: Array<TableWorkerRowNode>
45
+ }
46
+
47
+ export type TableWorkerRowNode = number | TableWorkerGroupNode
48
+
49
+ /**
50
+ * A stage result. Flat models (every row is a data row) travel as a
51
+ * transferable index permutation; models containing synthetic rows (grouping)
52
+ * travel as a tree. The kind is chosen from the model's actual shape at
53
+ * runtime, not from the stage name: a sorted model is flat without grouping
54
+ * and a tree with it.
55
+ *
56
+ * `unchanged` means the stage's model is identical to the last one sent for
57
+ * this dataset (its memoized inputs did not change); the main thread keeps
58
+ * its previous result and skips the rebuild entirely.
59
+ */
60
+ export type TableWorkerStagePayload =
61
+ | { kind: 'flat'; indices: Uint32Array }
62
+ | { kind: 'tree'; children: Array<TableWorkerRowNode> }
63
+ | { kind: 'unchanged' }
64
+
65
+ export type TableWorkerRequest<TData extends RowData = any> =
66
+ | {
67
+ type: 'data'
68
+ dataVersion: number
69
+ data: Array<TData>
70
+ }
71
+ | {
72
+ type: 'process'
73
+ requestId: number
74
+ dataVersion: number
75
+ /** The stages the main thread has worker-backed row models for. */
76
+ stages: Array<TableWorkerStage>
77
+ /** Serializable state slices (union of the stages' deps). */
78
+ state: Record<string, unknown>
79
+ }
80
+
81
+ export interface TableWorkerResult {
82
+ type: 'result'
83
+ requestId: number
84
+ dataVersion: number
85
+ stages: { [K in TableWorkerStage]?: TableWorkerStagePayload }
86
+ computeMs: number
87
+ }
88
+
89
+ export type TableWorkerResponse = TableWorkerResult
90
+
91
+ /**
92
+ * The state slice added by `workerRowModelsFeature`. `version` bumps when a
93
+ * worker result lands (driving re-renders through the normal state path);
94
+ * `isPending` is true while a request is in flight. The timing fields expose
95
+ * the last result's worker compute time and full round trip for devtools and
96
+ * debugging.
97
+ */
98
+ export interface TableState_WorkerRowModels {
99
+ workerRowModels: {
100
+ version: number
101
+ isPending: boolean
102
+ lastComputeMs?: number
103
+ lastRoundTripMs?: number
104
+ }
105
+ }