@rowsncolumns/spreadsheet-state 28.0.76 → 29.1.0

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 (633) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +122 -6
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +464 -43
  4. package/dist/cjs/api/copy-paste.d.ts +8 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +4 -4
  7. package/dist/cjs/api/filter.d.ts +15 -1
  8. package/dist/cjs/api/filter.d.ts.map +1 -1
  9. package/dist/cjs/api/filter.js +32 -2
  10. package/dist/cjs/api/formula.d.ts +63 -0
  11. package/dist/cjs/api/formula.d.ts.map +1 -1
  12. package/dist/cjs/api/formula.js +278 -8
  13. package/dist/cjs/api/immer-utils.d.ts +11 -1
  14. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  15. package/dist/cjs/api/immer-utils.js +17 -1
  16. package/dist/cjs/api/insert-cut-cells.d.ts +35 -0
  17. package/dist/cjs/api/insert-cut-cells.d.ts.map +1 -0
  18. package/dist/cjs/api/insert-cut-cells.js +60 -0
  19. package/dist/cjs/api/merges.d.ts +8 -0
  20. package/dist/cjs/api/merges.d.ts.map +1 -1
  21. package/dist/cjs/api/merges.js +11 -0
  22. package/dist/cjs/api/paint-format.d.ts +22 -1
  23. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  24. package/dist/cjs/api/paint-format.js +57 -1
  25. package/dist/cjs/api/sort.d.ts +23 -1
  26. package/dist/cjs/api/sort.d.ts.map +1 -1
  27. package/dist/cjs/api/sort.js +52 -6
  28. package/dist/cjs/api/structural-guards.d.ts +57 -0
  29. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  30. package/dist/cjs/api/structural-guards.js +93 -1
  31. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  32. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  33. package/dist/cjs/api/structural-table-refs.js +177 -16
  34. package/dist/cjs/api/subtotal.d.ts +20 -13
  35. package/dist/cjs/api/subtotal.d.ts.map +1 -1
  36. package/dist/cjs/api/subtotal.js +26 -19
  37. package/dist/cjs/api/table.d.ts +26 -2
  38. package/dist/cjs/api/table.d.ts.map +1 -1
  39. package/dist/cjs/api/table.js +93 -60
  40. package/dist/cjs/api/validation.d.ts.map +1 -1
  41. package/dist/cjs/api/validation.js +53 -8
  42. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  43. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  45. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  47. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  48. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  49. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  50. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  51. package/dist/cjs/atoms/index.d.ts +4 -0
  52. package/dist/cjs/atoms/index.d.ts.map +1 -1
  53. package/dist/cjs/atoms/index.js +4 -0
  54. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  55. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  56. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  57. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  58. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  59. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  60. package/dist/cjs/commands.d.ts +138 -2
  61. package/dist/cjs/commands.d.ts.map +1 -1
  62. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  63. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  64. package/dist/cjs/components/editors/embed-editor.js +38 -9
  65. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  66. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  67. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  68. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  69. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  70. package/dist/cjs/components/editors/table-editor.js +261 -20
  71. package/dist/cjs/components/index.d.ts +1 -0
  72. package/dist/cjs/components/index.d.ts.map +1 -1
  73. package/dist/cjs/components/index.js +1 -0
  74. package/dist/cjs/constants.d.ts +9 -1
  75. package/dist/cjs/constants.d.ts.map +1 -1
  76. package/dist/cjs/constants.js +12 -0
  77. package/dist/cjs/generated-names.d.ts +13 -3
  78. package/dist/cjs/generated-names.d.ts.map +1 -1
  79. package/dist/cjs/generated-names.js +3 -1
  80. package/dist/cjs/helpers.d.ts +5 -0
  81. package/dist/cjs/helpers.d.ts.map +1 -1
  82. package/dist/cjs/helpers.js +10 -1
  83. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  84. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  85. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  86. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  87. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  89. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  90. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  92. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  93. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-change.js +218 -136
  95. package/dist/cjs/hooks/use-on-copy.d.ts +1 -1
  96. package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-copy.js +2 -3
  98. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  99. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  100. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  101. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  102. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  104. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  105. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  107. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  108. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  110. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  111. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  113. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  114. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  116. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +9 -1
  117. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  118. package/dist/cjs/hooks/use-on-delete-sheet.js +17 -1
  119. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  120. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  121. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  122. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  123. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  124. package/dist/cjs/hooks/use-on-delete.js +5 -1
  125. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  126. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  127. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  128. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  129. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  130. package/dist/cjs/hooks/use-on-fill.js +29 -15
  131. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  133. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  134. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  136. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  137. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  139. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  140. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  142. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  143. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  145. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  146. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  148. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  149. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  151. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  152. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  154. package/dist/cjs/hooks/use-on-move-columns.d.ts +4 -1
  155. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  156. package/dist/cjs/hooks/use-on-move-columns.js +28 -6
  157. package/dist/cjs/hooks/use-on-move-rows.d.ts +18 -1
  158. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  159. package/dist/cjs/hooks/use-on-move-rows.js +44 -6
  160. package/dist/cjs/hooks/use-on-move-selection.d.ts +9 -2
  161. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  162. package/dist/cjs/hooks/use-on-move-selection.js +101 -25
  163. package/dist/cjs/hooks/use-on-paste.d.ts +33 -2
  164. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-paste.js +1005 -740
  166. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  167. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  169. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  170. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  171. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  172. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  173. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  174. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  175. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  176. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  177. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  178. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  179. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  181. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  182. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  184. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  185. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  187. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  188. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  190. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  191. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  193. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  194. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-on-table.js +257 -49
  196. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  197. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  199. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  200. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  201. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  202. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  203. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  204. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  205. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  206. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  207. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  208. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  209. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  210. package/dist/cjs/hooks/use-slicers.js +17 -26
  211. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  212. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  213. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  214. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +69 -12
  215. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  216. package/dist/cjs/hooks/use-spreadsheet-state.js +383 -84
  217. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  218. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  219. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  220. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  221. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  222. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  223. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  224. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  225. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  226. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  227. package/dist/cjs/index.d.ts +8 -0
  228. package/dist/cjs/index.d.ts.map +1 -1
  229. package/dist/cjs/index.js +9 -0
  230. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  231. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  232. package/dist/cjs/interface/apply-fill.js +207 -98
  233. package/dist/cjs/interface/change-batch.d.ts +1 -1
  234. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  235. package/dist/cjs/interface/change-batch.js +112 -15
  236. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  237. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  238. package/dist/cjs/interface/change-calculated-column.js +87 -17
  239. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  240. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/change-table-column.js +336 -76
  242. package/dist/cjs/interface/create-table.d.ts +15 -3
  243. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  244. package/dist/cjs/interface/create-table.js +100 -25
  245. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  246. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-cells-shift-left.js +10 -1
  248. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  249. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-cells-shift-up.js +10 -1
  251. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  252. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-cells.js +81 -25
  254. package/dist/cjs/interface/delete-column.d.ts +1 -1
  255. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  256. package/dist/cjs/interface/delete-column.js +29 -22
  257. package/dist/cjs/interface/delete-row.d.ts +1 -1
  258. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  259. package/dist/cjs/interface/delete-row.js +244 -39
  260. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  261. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  262. package/dist/cjs/interface/delete-sheet.js +118 -1
  263. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  264. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  265. package/dist/cjs/interface/delete-table-column.js +11 -1
  266. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  267. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  268. package/dist/cjs/interface/delete-table-row.js +361 -275
  269. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  270. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  271. package/dist/cjs/interface/embeds.d.ts +10 -1
  272. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  273. package/dist/cjs/interface/embeds.js +120 -6
  274. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  275. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  276. package/dist/cjs/interface/insert-cells-shift-down.js +10 -1
  277. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  278. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  279. package/dist/cjs/interface/insert-cells-shift-right.js +10 -1
  280. package/dist/cjs/interface/insert-column.d.ts +2 -2
  281. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  282. package/dist/cjs/interface/insert-column.js +101 -56
  283. package/dist/cjs/interface/insert-row.d.ts +1 -1
  284. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  285. package/dist/cjs/interface/insert-row.js +25 -7
  286. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  287. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  288. package/dist/cjs/interface/insert-table-row.js +70 -19
  289. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  290. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  291. package/dist/cjs/interface/remove-duplicates.js +46 -6
  292. package/dist/cjs/interface/remove-table.d.ts +1 -1
  293. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/remove-table.js +72 -16
  295. package/dist/cjs/interface/slicers.d.ts +12 -1
  296. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  297. package/dist/cjs/interface/slicers.js +47 -2
  298. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  299. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  300. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  301. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  302. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  303. package/dist/cjs/interface/table-totalrow.js +107 -73
  304. package/dist/cjs/interface/table-utils.d.ts +59 -6
  305. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  306. package/dist/cjs/interface/table-utils.js +211 -15
  307. package/dist/cjs/interface/update-table.d.ts +16 -1
  308. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  309. package/dist/cjs/interface/update-table.js +190 -44
  310. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  311. package/dist/cjs/test-setup.d.ts.map +1 -1
  312. package/dist/cjs/test-setup.js +6 -0
  313. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  314. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  315. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  316. package/dist/cjs/validation-schema/table.schema.js +20 -3
  317. package/dist/esm/api/anchored-objects.d.ts +122 -6
  318. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  319. package/dist/esm/api/anchored-objects.js +375 -15
  320. package/dist/esm/api/copy-paste.d.ts +8 -2
  321. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  322. package/dist/esm/api/copy-paste.js +4 -4
  323. package/dist/esm/api/filter.d.ts +15 -1
  324. package/dist/esm/api/filter.d.ts.map +1 -1
  325. package/dist/esm/api/filter.js +28 -0
  326. package/dist/esm/api/formula.d.ts +63 -0
  327. package/dist/esm/api/formula.d.ts.map +1 -1
  328. package/dist/esm/api/formula.js +235 -8
  329. package/dist/esm/api/immer-utils.d.ts +11 -1
  330. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  331. package/dist/esm/api/immer-utils.js +16 -0
  332. package/dist/esm/api/insert-cut-cells.d.ts +35 -0
  333. package/dist/esm/api/insert-cut-cells.d.ts.map +1 -0
  334. package/dist/esm/api/insert-cut-cells.js +67 -0
  335. package/dist/esm/api/merges.d.ts +8 -0
  336. package/dist/esm/api/merges.d.ts.map +1 -1
  337. package/dist/esm/api/merges.js +9 -0
  338. package/dist/esm/api/paint-format.d.ts +22 -1
  339. package/dist/esm/api/paint-format.d.ts.map +1 -1
  340. package/dist/esm/api/paint-format.js +44 -1
  341. package/dist/esm/api/sort.d.ts +23 -1
  342. package/dist/esm/api/sort.d.ts.map +1 -1
  343. package/dist/esm/api/sort.js +45 -6
  344. package/dist/esm/api/structural-guards.d.ts +57 -0
  345. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  346. package/dist/esm/api/structural-guards.js +85 -0
  347. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  348. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  349. package/dist/esm/api/structural-table-refs.js +126 -6
  350. package/dist/esm/api/subtotal.d.ts +20 -13
  351. package/dist/esm/api/subtotal.d.ts.map +1 -1
  352. package/dist/esm/api/subtotal.js +15 -8
  353. package/dist/esm/api/table.d.ts +26 -2
  354. package/dist/esm/api/table.d.ts.map +1 -1
  355. package/dist/esm/api/table.js +70 -48
  356. package/dist/esm/api/validation.d.ts.map +1 -1
  357. package/dist/esm/api/validation.js +53 -8
  358. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  359. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  360. package/dist/esm/atoms/creating-table.atom.js +4 -0
  361. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  362. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  363. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  364. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  365. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  366. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  367. package/dist/esm/atoms/index.d.ts +4 -0
  368. package/dist/esm/atoms/index.d.ts.map +1 -1
  369. package/dist/esm/atoms/index.js +4 -0
  370. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  371. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  372. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  373. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  374. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  375. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  376. package/dist/esm/commands.d.ts +138 -2
  377. package/dist/esm/commands.d.ts.map +1 -1
  378. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  379. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  380. package/dist/esm/components/editors/embed-editor.js +40 -6
  381. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  382. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  383. package/dist/esm/components/editors/slicer-editor.js +85 -0
  384. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  385. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  386. package/dist/esm/components/editors/table-editor.js +243 -19
  387. package/dist/esm/components/index.d.ts +1 -0
  388. package/dist/esm/components/index.d.ts.map +1 -1
  389. package/dist/esm/components/index.js +1 -0
  390. package/dist/esm/constants.d.ts +9 -1
  391. package/dist/esm/constants.d.ts.map +1 -1
  392. package/dist/esm/constants.js +12 -0
  393. package/dist/esm/generated-names.d.ts +13 -3
  394. package/dist/esm/generated-names.d.ts.map +1 -1
  395. package/dist/esm/generated-names.js +3 -1
  396. package/dist/esm/helpers.d.ts +5 -0
  397. package/dist/esm/helpers.d.ts.map +1 -1
  398. package/dist/esm/helpers.js +7 -1
  399. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  400. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  402. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  403. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  405. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  406. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  408. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  409. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-change.js +214 -124
  411. package/dist/esm/hooks/use-on-copy.d.ts +1 -1
  412. package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-copy.js +2 -3
  414. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  415. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  416. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  417. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  418. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  419. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  420. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  421. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  422. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  423. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  424. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  425. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  426. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  427. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  428. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  429. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  430. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  431. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  432. package/dist/esm/hooks/use-on-delete-sheet.d.ts +9 -1
  433. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  434. package/dist/esm/hooks/use-on-delete-sheet.js +17 -1
  435. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  436. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  437. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  438. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  439. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  440. package/dist/esm/hooks/use-on-delete.js +5 -1
  441. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  442. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  443. package/dist/esm/hooks/use-on-embeds.js +23 -6
  444. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  445. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  446. package/dist/esm/hooks/use-on-fill.js +27 -1
  447. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  449. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  450. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  452. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  453. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  455. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  456. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  457. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  458. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  459. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  460. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  461. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  462. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  463. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  464. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  465. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  467. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  468. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  470. package/dist/esm/hooks/use-on-move-columns.d.ts +4 -1
  471. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-move-columns.js +28 -6
  473. package/dist/esm/hooks/use-on-move-rows.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-move-rows.js +44 -6
  476. package/dist/esm/hooks/use-on-move-selection.d.ts +9 -2
  477. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-move-selection.js +57 -1
  479. package/dist/esm/hooks/use-on-paste.d.ts +33 -2
  480. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-paste.js +825 -643
  482. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  483. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  484. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  485. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  486. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  488. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  489. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  490. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  491. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  492. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  493. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  494. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  495. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  497. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  498. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  499. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  500. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  501. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  503. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  504. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  505. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  506. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  507. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  508. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  509. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  510. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  511. package/dist/esm/hooks/use-on-table.js +234 -26
  512. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  513. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  514. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  515. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  516. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  517. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  518. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  519. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  520. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  521. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  522. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  523. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  524. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  525. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  526. package/dist/esm/hooks/use-slicers.js +16 -8
  527. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  528. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  529. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  530. package/dist/esm/hooks/use-spreadsheet-state.d.ts +69 -12
  531. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  532. package/dist/esm/hooks/use-spreadsheet-state.js +321 -14
  533. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  534. package/dist/esm/hooks/use-structured-reference.js +17 -0
  535. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  536. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  537. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  538. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  539. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  540. package/dist/esm/hooks/use-undo-redo.js +158 -7
  541. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  542. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  543. package/dist/esm/index.d.ts +8 -0
  544. package/dist/esm/index.d.ts.map +1 -1
  545. package/dist/esm/index.js +9 -0
  546. package/dist/esm/interface/apply-fill.d.ts +26 -3
  547. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  548. package/dist/esm/interface/apply-fill.js +188 -88
  549. package/dist/esm/interface/change-batch.d.ts +1 -1
  550. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  551. package/dist/esm/interface/change-batch.js +89 -8
  552. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  553. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  554. package/dist/esm/interface/change-calculated-column.js +81 -16
  555. package/dist/esm/interface/change-table-column.d.ts +81 -7
  556. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  557. package/dist/esm/interface/change-table-column.js +295 -67
  558. package/dist/esm/interface/create-table.d.ts +15 -3
  559. package/dist/esm/interface/create-table.d.ts.map +1 -1
  560. package/dist/esm/interface/create-table.js +103 -27
  561. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  562. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  563. package/dist/esm/interface/delete-cells-shift-left.js +10 -1
  564. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  565. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  566. package/dist/esm/interface/delete-cells-shift-up.js +10 -1
  567. package/dist/esm/interface/delete-cells.d.ts +1 -1
  568. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  569. package/dist/esm/interface/delete-cells.js +47 -14
  570. package/dist/esm/interface/delete-column.d.ts +1 -1
  571. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  572. package/dist/esm/interface/delete-column.js +26 -30
  573. package/dist/esm/interface/delete-row.d.ts +1 -1
  574. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  575. package/dist/esm/interface/delete-row.js +191 -44
  576. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  577. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  578. package/dist/esm/interface/delete-sheet.js +113 -1
  579. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  580. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  581. package/dist/esm/interface/delete-table-column.js +11 -1
  582. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  583. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  584. package/dist/esm/interface/delete-table-row.js +312 -232
  585. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  586. package/dist/esm/interface/duplicate-sheet.js +73 -26
  587. package/dist/esm/interface/embeds.d.ts +10 -1
  588. package/dist/esm/interface/embeds.d.ts.map +1 -1
  589. package/dist/esm/interface/embeds.js +84 -5
  590. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  591. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  592. package/dist/esm/interface/insert-cells-shift-down.js +10 -1
  593. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  594. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  595. package/dist/esm/interface/insert-cells-shift-right.js +10 -1
  596. package/dist/esm/interface/insert-column.d.ts +2 -2
  597. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  598. package/dist/esm/interface/insert-column.js +70 -33
  599. package/dist/esm/interface/insert-row.d.ts +1 -1
  600. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  601. package/dist/esm/interface/insert-row.js +22 -6
  602. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  603. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  604. package/dist/esm/interface/insert-table-row.js +67 -12
  605. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  606. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  607. package/dist/esm/interface/remove-duplicates.js +41 -6
  608. package/dist/esm/interface/remove-table.d.ts +1 -1
  609. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  610. package/dist/esm/interface/remove-table.js +58 -10
  611. package/dist/esm/interface/slicers.d.ts +12 -1
  612. package/dist/esm/interface/slicers.d.ts.map +1 -1
  613. package/dist/esm/interface/slicers.js +44 -2
  614. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  615. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  616. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  617. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  618. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  619. package/dist/esm/interface/table-totalrow.js +98 -68
  620. package/dist/esm/interface/table-utils.d.ts +59 -6
  621. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  622. package/dist/esm/interface/table-utils.js +155 -14
  623. package/dist/esm/interface/update-table.d.ts +16 -1
  624. package/dist/esm/interface/update-table.d.ts.map +1 -1
  625. package/dist/esm/interface/update-table.js +203 -42
  626. package/dist/esm/sheet-cell.d.ts.map +1 -1
  627. package/dist/esm/test-setup.d.ts.map +1 -1
  628. package/dist/esm/test-setup.js +6 -0
  629. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  630. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  631. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  632. package/dist/esm/validation-schema/table.schema.js +15 -2
  633. package/package.json +25 -17
@@ -4,10 +4,11 @@ import { produceWithPatches } from "immer";
4
4
  import { FILL_UNTOUCHED } from "../api/fill";
5
5
  import { createSheetCellIdentifier } from "../api/formula";
6
6
  import { createSheetDraft } from "../api/immer-utils";
7
+ import { findAdjacentTable } from "../api/table";
7
8
  import { defaultCellCoords, defaultSheetId, SheetCell } from "../sheet-cell";
8
9
  import { getFillDirection } from "./../api/selection";
9
10
  import { collectDataValidationTarget, extendDataValidationRanges, } from "./data-validation-utils";
10
- export const applyFill = ({ locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getCellData, getEffectiveValue, getFormattedValue, getAutoFillValues, getSheetName, enqueueCalculation, enqueueStructureChange, onChangeSheetData, createHistory, onChangeDataValidations, getMerges, onFillMerges, }) => {
11
+ export const applyFill = ({ locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getCellData, getEffectiveValue, getFormattedValue, getAutoFillValues, getSheetName, enqueueCalculation, enqueueStructureChange, onChangeSheetData, createHistory, onChangeDataValidations, getMerges, onFillMerges, tables, getUserEnteredValue, onChangeTableColumn, batchHistory = (action) => action(), autoExpandTables = true, }) => {
11
12
  return async (
12
13
  // Active sheet ID
13
14
  sheetId,
@@ -25,7 +26,6 @@ export const applyFill = ({ locale, cellXfsRegistry, sharedStringRegistry, getDa
25
26
  ? selections
26
27
  : selectionFromActiveCell(activeCell);
27
28
  const selection = finalSelections[finalSelections.length - 1];
28
- const saveHistory = createHistory();
29
29
  const { range: fillBounds } = fillSelection;
30
30
  const direction = getFillDirection(fillSelection, selection);
31
31
  // We need to track this for history. Precedent cells
@@ -79,6 +79,20 @@ export const applyFill = ({ locale, cellXfsRegistry, sharedStringRegistry, getDa
79
79
  startColumnIndex: targetBounds.startColumnIndex,
80
80
  endColumnIndex: selection.range.startColumnIndex - 1,
81
81
  };
82
+ // Excel grows a table whose last row / last column the fill handle is dragged past: the
83
+ // filled cells directly below it (within its columns) or directly to its right (within its
84
+ // rows) join the table, exactly as if they had been typed. Resolved BEFORE the write, since the
85
+ // adjacency test reads the not-yet-filled cells.
86
+ const tableExpansion = autoExpandTables
87
+ ? findFillTableExpansion({
88
+ sheetId,
89
+ direction,
90
+ selection: selection.range,
91
+ filledArea,
92
+ tables,
93
+ getUserEnteredValue,
94
+ })
95
+ : undefined;
82
96
  // Sample cell
83
97
  const sheetCell = new SheetCell(defaultSheetId, defaultCellCoords, undefined, { locale, cellXfsRegistry, getDataValidationById });
84
98
  const getFillValue = (rowIndex, columnIndex) => {
@@ -137,104 +151,190 @@ export const applyFill = ({ locale, cellXfsRegistry, sharedStringRegistry, getDa
137
151
  startColumnIndex: fillBounds.startColumnIndex,
138
152
  endColumnIndex: fillBounds.endColumnIndex,
139
153
  });
140
- // Copy sheetdata
141
- onChangeSheetData?.((prevSheetData) => {
142
- const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
143
- switch (direction) {
144
- case Direction.Down: {
145
- const start = selection.range.endRowIndex + 1;
146
- const end = targetBounds.endRowIndex;
147
- let counter = 0;
148
- for (let i = start; i <= end; i++) {
149
- let rowIndex = selection.range.startRowIndex + counter;
150
- if (rowIndex > selection.range.endRowIndex) {
151
- counter = 0;
152
- rowIndex = selection.range.startRowIndex;
153
- }
154
- const rollingRowIndex = i - start;
155
- for (let columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
156
- const rollingColumnIndex = columnIndex - selection.range.startColumnIndex;
157
- writeFilledCell(draft, i, columnIndex, rollingRowIndex, rollingColumnIndex);
154
+ // The fill and the table growth it triggers undo as ONE step.
155
+ batchHistory(() => {
156
+ const saveHistory = createHistory();
157
+ // Copy sheetdata
158
+ onChangeSheetData?.((prevSheetData) => {
159
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
160
+ switch (direction) {
161
+ case Direction.Down: {
162
+ const start = selection.range.endRowIndex + 1;
163
+ const end = targetBounds.endRowIndex;
164
+ let counter = 0;
165
+ for (let i = start; i <= end; i++) {
166
+ let rowIndex = selection.range.startRowIndex + counter;
167
+ if (rowIndex > selection.range.endRowIndex) {
168
+ counter = 0;
169
+ rowIndex = selection.range.startRowIndex;
170
+ }
171
+ const rollingRowIndex = i - start;
172
+ for (let columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
173
+ const rollingColumnIndex = columnIndex - selection.range.startColumnIndex;
174
+ writeFilledCell(draft, i, columnIndex, rollingRowIndex, rollingColumnIndex);
175
+ }
176
+ counter++;
158
177
  }
159
- counter++;
178
+ break;
160
179
  }
161
- break;
162
- }
163
- case Direction.Up: {
164
- const start = selection.range.startRowIndex - 1;
165
- const end = targetBounds.startRowIndex;
166
- for (let i = start; i >= end; i--) {
167
- const rollingRowIndex = i - targetBounds.startRowIndex;
168
- for (let columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
169
- const rollingColumnIndex = columnIndex - selection.range.startColumnIndex;
170
- writeFilledCell(draft, i, columnIndex, rollingRowIndex, rollingColumnIndex);
180
+ case Direction.Up: {
181
+ const start = selection.range.startRowIndex - 1;
182
+ const end = targetBounds.startRowIndex;
183
+ for (let i = start; i >= end; i--) {
184
+ const rollingRowIndex = i - targetBounds.startRowIndex;
185
+ for (let columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
186
+ const rollingColumnIndex = columnIndex - selection.range.startColumnIndex;
187
+ writeFilledCell(draft, i, columnIndex, rollingRowIndex, rollingColumnIndex);
188
+ }
171
189
  }
190
+ break;
172
191
  }
173
- break;
174
- }
175
- case Direction.Right: {
176
- for (let rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
177
- const start = selection.range.endColumnIndex + 1;
178
- const end = targetBounds.endColumnIndex;
179
- let counter = 0;
180
- const rollingRowIndex = rowIndex - selection.range.startRowIndex;
181
- for (let j = start; j <= end; j++) {
182
- let columnIndex = selection.range.startColumnIndex + counter;
183
- if (columnIndex > selection.range.endColumnIndex) {
184
- counter = 0;
185
- columnIndex = selection.range.startColumnIndex;
192
+ case Direction.Right: {
193
+ for (let rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
194
+ const start = selection.range.endColumnIndex + 1;
195
+ const end = targetBounds.endColumnIndex;
196
+ let counter = 0;
197
+ const rollingRowIndex = rowIndex - selection.range.startRowIndex;
198
+ for (let j = start; j <= end; j++) {
199
+ let columnIndex = selection.range.startColumnIndex + counter;
200
+ if (columnIndex > selection.range.endColumnIndex) {
201
+ counter = 0;
202
+ columnIndex = selection.range.startColumnIndex;
203
+ }
204
+ const rollingColumnIndex = j - start;
205
+ writeFilledCell(draft, rowIndex, j, rollingRowIndex, rollingColumnIndex);
206
+ counter++;
186
207
  }
187
- const rollingColumnIndex = j - start;
188
- writeFilledCell(draft, rowIndex, j, rollingRowIndex, rollingColumnIndex);
189
- counter++;
190
208
  }
209
+ break;
191
210
  }
192
- break;
193
- }
194
- case Direction.Left: {
195
- for (let rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
196
- const start = selection.range.startColumnIndex - 1;
197
- const end = targetBounds.startColumnIndex;
198
- const rollingRowIndex = rowIndex - selection.range.startRowIndex;
199
- let counter = 0;
200
- for (let j = start; j >= end; j--) {
201
- let columnIndex = selection.range.endColumnIndex + counter;
202
- if (columnIndex < selection.range.startColumnIndex) {
203
- counter = 0;
204
- columnIndex = selection.range.endColumnIndex;
211
+ case Direction.Left: {
212
+ for (let rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
213
+ const start = selection.range.startColumnIndex - 1;
214
+ const end = targetBounds.startColumnIndex;
215
+ const rollingRowIndex = rowIndex - selection.range.startRowIndex;
216
+ let counter = 0;
217
+ for (let j = start; j >= end; j--) {
218
+ let columnIndex = selection.range.endColumnIndex + counter;
219
+ if (columnIndex < selection.range.startColumnIndex) {
220
+ counter = 0;
221
+ columnIndex = selection.range.endColumnIndex;
222
+ }
223
+ const rollingColumnIndex = j - targetBounds.startColumnIndex;
224
+ writeFilledCell(draft, rowIndex, j, rollingRowIndex, rollingColumnIndex);
225
+ counter--;
205
226
  }
206
- const rollingColumnIndex = j - targetBounds.startColumnIndex;
207
- writeFilledCell(draft, rowIndex, j, rollingRowIndex, rollingColumnIndex);
208
- counter--;
209
227
  }
228
+ break;
210
229
  }
211
- break;
212
230
  }
213
- }
214
- // Series-dialog Trend: the seed cells Excel replaces with the fitted values.
215
- for (const seed of fillValues.seedCells ?? []) {
216
- writeCell(draft, seed.rowIndex, seed.columnIndex, seed.cell);
217
- }
218
- });
219
- // Save history
220
- saveHistory({
221
- sheetData: { patches, inversePatches },
222
- recalcCells: { undo: recalcCells, redo: recalcCells },
223
- sheetId: { undo: sheetId, redo: sheetId },
224
- activeCell: { undo: activeCell, redo: activeCell },
225
- selections: {
226
- undo: fillableSelections ?? selections,
227
- redo: [{ ...fillSelection, range: targetBounds }],
228
- },
231
+ // Series-dialog Trend: the seed cells Excel replaces with the fitted values.
232
+ for (const seed of fillValues.seedCells ?? []) {
233
+ writeCell(draft, seed.rowIndex, seed.columnIndex, seed.cell);
234
+ }
235
+ });
236
+ // Save history
237
+ saveHistory({
238
+ sheetData: { patches, inversePatches },
239
+ recalcCells: { undo: recalcCells, redo: recalcCells },
240
+ sheetId: { undo: sheetId, redo: sheetId },
241
+ activeCell: { undo: activeCell, redo: activeCell },
242
+ selections: {
243
+ undo: fillableSelections ?? selections,
244
+ redo: [{ ...fillSelection, range: targetBounds }],
245
+ },
246
+ });
247
+ extendDataValidationRanges(dataValidationTargets, onChangeDataValidations, saveHistory);
248
+ sharedStringRegistry?.getPatches(saveHistory);
249
+ return nextState;
229
250
  });
230
- extendDataValidationRanges(dataValidationTargets, onChangeDataValidations, saveHistory);
231
- sharedStringRegistry?.getPatches(saveHistory);
232
- return nextState;
251
+ // A merged seed replicates its block shape over the filled area (Excel).
252
+ const fillMerges = fillValues.fillMerges;
253
+ if (fillMerges?.length) {
254
+ onFillMerges?.(sheetId, activeCell, filledArea, fillMerges, targetBounds);
255
+ }
256
+ if (tableExpansion) {
257
+ const { table, coords, isRowExpansion, isColumnExpansion, range } = tableExpansion;
258
+ // The header cell of each new column names it (a rightward fill past the table grows it by
259
+ // every filled column); every other expansion needs no value.
260
+ const headerNameAt = (columnIndex) => {
261
+ const headerValue = isColumnExpansion && coords.rowIndex === table.range.startRowIndex
262
+ ? fillValues[coords.rowIndex - selection.range.startRowIndex]?.[columnIndex - (selection.range.endColumnIndex + 1)]
263
+ : undefined;
264
+ const headerName = headerValue === undefined || headerValue === FILL_UNTOUCHED
265
+ ? undefined
266
+ : typeof headerValue === "object"
267
+ ? new SheetCell(sheetId, { rowIndex: coords.rowIndex, columnIndex }, headerValue, { locale }).getUserEnteredValue()
268
+ : headerValue;
269
+ return typeof headerName === "string" || typeof headerName === "boolean"
270
+ ? headerName
271
+ : typeof headerName === "number"
272
+ ? String(headerName)
273
+ : undefined;
274
+ };
275
+ const headerValues = [];
276
+ for (let columnIndex = coords.columnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
277
+ headerValues.push(headerNameAt(columnIndex));
278
+ }
279
+ onChangeTableColumn?.(sheetId, coords, headerValues[0], table, isRowExpansion, isColumnExpansion, range, headerValues);
280
+ }
233
281
  });
234
- // A merged seed replicates its block shape over the filled area (Excel).
235
- const fillMerges = fillValues.fillMerges;
236
- if (fillMerges?.length) {
237
- onFillMerges?.(sheetId, activeCell, filledArea, fillMerges, targetBounds);
238
- }
239
282
  };
240
283
  };
284
+ /**
285
+ * The table a fill grows, if any: for a downward fill the first filled row is the row right after a
286
+ * table (within its columns); for a rightward fill the first filled column is the column right after
287
+ * a table (within its rows). The fill may start inside the table — a drag from any body row past the
288
+ * last row grows it from that last row on. Adjacency, the empty-line rule and the totals-row rule
289
+ * (a table with a totals row never auto-grows) are `findAdjacentTable`'s, shared with typing and
290
+ * paste. Fills upward / leftward never grow a table.
291
+ */
292
+ export const findFillTableExpansion = ({ sheetId, direction, selection, filledArea, tables, getUserEnteredValue, }) => {
293
+ if (!tables?.length || !getUserEnteredValue) {
294
+ return undefined;
295
+ }
296
+ if (direction !== Direction.Down && direction !== Direction.Right) {
297
+ return undefined;
298
+ }
299
+ for (const table of tables) {
300
+ if (table.sheetId !== sheetId) {
301
+ continue;
302
+ }
303
+ const coords = direction === Direction.Down
304
+ ? table.range.endRowIndex + 1 >= filledArea.startRowIndex &&
305
+ table.range.endRowIndex + 1 <= filledArea.endRowIndex &&
306
+ selection.startColumnIndex >= table.range.startColumnIndex &&
307
+ selection.startColumnIndex <= table.range.endColumnIndex
308
+ ? {
309
+ rowIndex: table.range.endRowIndex + 1,
310
+ columnIndex: selection.startColumnIndex,
311
+ }
312
+ : undefined
313
+ : table.range.endColumnIndex + 1 >= filledArea.startColumnIndex &&
314
+ table.range.endColumnIndex + 1 <= filledArea.endColumnIndex &&
315
+ selection.startRowIndex >= table.range.startRowIndex &&
316
+ selection.startRowIndex <= table.range.endRowIndex
317
+ ? {
318
+ rowIndex: selection.startRowIndex,
319
+ columnIndex: table.range.endColumnIndex + 1,
320
+ }
321
+ : undefined;
322
+ if (!coords) {
323
+ continue;
324
+ }
325
+ const [adjacentTable, isRowExpansion, isColumnExpansion] = findAdjacentTable(sheetId, coords, tables, getUserEnteredValue);
326
+ if (!adjacentTable || !(isRowExpansion || isColumnExpansion)) {
327
+ continue;
328
+ }
329
+ return {
330
+ table: adjacentTable,
331
+ coords,
332
+ isRowExpansion,
333
+ isColumnExpansion,
334
+ range: direction === Direction.Down
335
+ ? { ...filledArea, startRowIndex: coords.rowIndex }
336
+ : { ...filledArea, startColumnIndex: coords.columnIndex },
337
+ };
338
+ }
339
+ return undefined;
340
+ };
@@ -35,5 +35,5 @@ export interface ChangeBatchOptions {
35
35
  */
36
36
  disableTypeInference?: boolean;
37
37
  }
38
- export declare const changeBatch: <T extends CellData, K extends CellFormat, S extends Sheet = Sheet>({ createHistory, enqueueCalculation, onChangeSheetData, onChangeSheets, onChangeTableColumn, onChangeCalculatedColumn, tokenizer, getEffectiveValuesFromRange, locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getFormattedValue, getUserEnteredValue, getCellDimensions, getRowHeight, isMergedCell, tables, onChangeCitations, }: UseOnChangeBatchProps<T, S>) => (sheetId: number, ranges: GridRange[] | GridRange, values: (string | boolean | number | undefined | null)[][] | string | boolean | number | undefined | null, formatting?: (K | undefined | null)[][] | K | null | undefined, citations?: (string | undefined | null)[][] | string | null | undefined, options?: ChangeBatchOptions) => void;
38
+ export declare const changeBatch: <T extends CellData, K extends CellFormat, S extends Sheet = Sheet>({ createHistory, enqueueCalculation, enqueueGraphOperation, onChangeSheetData, onChangeSheets, onChangeTables, onChangeTableColumn, onChangeCalculatedColumn, tokenizer, getEffectiveValuesFromRange, locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getFormattedValue, getUserEnteredValue, getCellDimensions, getRowHeight, isMergedCell, tables, onChangeCitations, autoExpandTables, generatedNames, }: UseOnChangeBatchProps<T, S>) => (sheetId: number, ranges: GridRange[] | GridRange, values: (string | boolean | number | undefined | null)[][] | string | boolean | number | undefined | null, formatting?: (K | undefined | null)[][] | K | null | undefined, citations?: (string | undefined | null)[][] | string | null | undefined, options?: ChangeBatchOptions) => void;
39
39
  //# sourceMappingURL=change-batch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-batch.d.ts","sourceRoot":"","sources":["../../../interface/change-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EACV,QAAQ,EAER,KAAK,EAEN,MAAM,2BAA2B,CAAC;AAiBnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAI1E,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,WAAW,GACtB,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,0VAoBC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE1B,SAAS,MAAM,EACf,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,QACI,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAClD,MAAM,GACN,OAAO,GACP,MAAM,GACN,SAAS,GACT,IAAI,EACR,aAAa,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9D,YAAY,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACvE,UAAS,kBAAuB,SA2ZnC,CAAC"}
1
+ {"version":3,"file":"change-batch.d.ts","sourceRoot":"","sources":["../../../interface/change-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EACV,QAAQ,EAER,KAAK,EAEN,MAAM,2BAA2B,CAAC;AAkBnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAK1E,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,WAAW,GACtB,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,maAwBC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE1B,SAAS,MAAM,EACf,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,QACI,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAClD,MAAM,GACN,OAAO,GACP,MAAM,GACN,SAAS,GACT,IAAI,EACR,aAAa,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9D,YAAY,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACvE,UAAS,kBAAuB,SAggBnC,CAAC"}
@@ -3,9 +3,11 @@ import { alignmentImpliesWrap, isNil } from "@rowsncolumns/utils";
3
3
  import { produceWithPatches } from "immer";
4
4
  import { createSheetCellIdentifier } from "../api/formula";
5
5
  import { createSheetDraft } from "../api/immer-utils";
6
+ import { renameHeaderCellsInFormulas } from "../api/structural-table-refs";
6
7
  import { findActiveTableWithinCell, findAdjacentTable, removeTableName, } from "../api/table";
8
+ import { planHeaderCellRenames } from "./change-table-column";
7
9
  import { SheetCell } from "../sheet-cell";
8
- export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetData, onChangeSheets, onChangeTableColumn, onChangeCalculatedColumn, tokenizer, getEffectiveValuesFromRange, locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getFormattedValue, getUserEnteredValue, getCellDimensions, getRowHeight, isMergedCell, tables, onChangeCitations, }) => {
10
+ export const changeBatch = ({ createHistory, enqueueCalculation, enqueueGraphOperation, onChangeSheetData, onChangeSheets, onChangeTables, onChangeTableColumn, onChangeCalculatedColumn, tokenizer, getEffectiveValuesFromRange, locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getFormattedValue, getUserEnteredValue, getCellDimensions, getRowHeight, isMergedCell, tables, onChangeCitations, autoExpandTables = true, generatedNames, }) => {
9
11
  return (sheetId, ranges, values, formatting, citations, options = {}) => {
10
12
  const { enableEvaluation = true, enableHistory = true, formattingOnly = false, disableTypeInference = false, } = options;
11
13
  const saveHistory = enableHistory ? createHistory() : () => undefined;
@@ -35,12 +37,42 @@ export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetDa
35
37
  let isColumnExpansion = false;
36
38
  let currentTable;
37
39
  if (!formattingOnly && tables?.length && coords) {
38
- [adjacentTable, isRowExpansion, isColumnExpansion] = findAdjacentTable(sheetId, coords, tables, getUserEnteredValue);
40
+ if (autoExpandTables) {
41
+ [adjacentTable, isRowExpansion, isColumnExpansion] = findAdjacentTable(sheetId, coords, tables, getUserEnteredValue);
42
+ }
39
43
  currentTable =
40
44
  isColumnExpansion && adjacentTable
41
45
  ? adjacentTable
42
46
  : findActiveTableWithinCell(sheetId, coords, tables);
43
47
  }
48
+ // Header cells of existing tables the batch lands on take the typed-header
49
+ // rule: text, de-duplicated, structured references following.
50
+ const headerRenames = !formattingOnly && tables?.length
51
+ ? planHeaderCellRenames({
52
+ sheetId,
53
+ tables,
54
+ generatedNames,
55
+ cells: finalRanges.flatMap((range) => {
56
+ const cells = [];
57
+ for (let rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
58
+ for (let columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
59
+ cells.push({
60
+ rowIndex,
61
+ columnIndex,
62
+ value: Array.isArray(values)
63
+ ? values[rowIndex - range.startRowIndex]?.[columnIndex - range.startColumnIndex]
64
+ : values,
65
+ });
66
+ }
67
+ }
68
+ return cells;
69
+ }),
70
+ })
71
+ : [];
72
+ const headerRenameAt = new Map(headerRenames.map((rename) => [
73
+ `${rename.rowIndex}:${rename.columnIndex}`,
74
+ rename,
75
+ ]));
44
76
  // Update sheet data
45
77
  onChangeSheetData?.((prevSheetData) => {
46
78
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
@@ -68,7 +100,14 @@ export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetDa
68
100
  });
69
101
  // Set text value of the cell
70
102
  // Skip value changes if formattingOnly is true
71
- if (!formattingOnly) {
103
+ const headerRename = headerRenameAt.get(`${rowIndex}:${columnIndex}`);
104
+ if (headerRename) {
105
+ // A table header cell holds its column name as text.
106
+ sheetCell.setUserEnteredValue(headerRename.newName, undefined, {
107
+ disableTypeInference: true,
108
+ });
109
+ }
110
+ else if (!formattingOnly) {
72
111
  if (isNil(value)) {
73
112
  sheetCell.deleteContents();
74
113
  }
@@ -133,6 +172,16 @@ export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetDa
133
172
  }
134
173
  }
135
174
  }
175
+ renameHeaderCellsInFormulas({
176
+ draft,
177
+ headerRenames,
178
+ enqueueCalculation,
179
+ enqueueGraphOperation,
180
+ recalcCells,
181
+ locale,
182
+ cellXfsRegistry,
183
+ sharedStringRegistry,
184
+ });
136
185
  });
137
186
  // Save history
138
187
  saveHistory({
@@ -144,8 +193,40 @@ export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetDa
144
193
  sheetId: { undo: sheetId, redo: sheetId },
145
194
  recalcCells: { undo: recalcCells, redo: recalcCells },
146
195
  });
196
+ // Flush the registries HERE, after this updater interned the batch's
197
+ // strings and formats. When `onChangeSheetData` is a React state setter
198
+ // and the slice already has an update queued in this tick (a row insert
199
+ // composed with this write — Data → Subtotal, Insert Cut Cells, agent
200
+ // streams), React defers the updater to the render instead of running it
201
+ // eagerly; a flush issued after the dispatch would run before any string
202
+ // was minted, find the registries empty, and leave every text cell of the
203
+ // batch pointing at an `ss` id no table holds — blank locally and after
204
+ // reload. Inside the updater the strings are always there, and the
205
+ // patches land on this same history pointer.
206
+ cellXfsRegistry?.getPatches(saveHistory);
207
+ sharedStringRegistry?.getPatches(saveHistory);
147
208
  return nextState;
148
209
  });
210
+ if (headerRenames.length) {
211
+ onChangeTables?.((prevTables) => {
212
+ const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
213
+ for (const { table, dimensionIndex, newName } of headerRenames) {
214
+ const current = draft.find((candidate) => candidate.id === table.id);
215
+ if (!current)
216
+ continue;
217
+ current.columns ??= [];
218
+ if (current.columns[dimensionIndex]) {
219
+ current.columns[dimensionIndex].name = newName;
220
+ }
221
+ else {
222
+ current.columns[dimensionIndex] = { name: newName };
223
+ }
224
+ }
225
+ });
226
+ saveHistory({ tables: { patches, inversePatches } });
227
+ return nextState;
228
+ });
229
+ }
149
230
  // Update sheet rowCount and columnCount if values were added beyond current bounds
150
231
  onChangeSheets?.((prevSheets) => {
151
232
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
@@ -163,10 +244,6 @@ export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetDa
163
244
  });
164
245
  return nextState;
165
246
  });
166
- // Save cellXfs
167
- cellXfsRegistry?.getPatches(saveHistory);
168
- // Save shared strings patches
169
- sharedStringRegistry?.getPatches(saveHistory);
170
247
  // Update row heights when text format or wrapping changes (Excel's
171
248
  // justify / distributed alignments wrap implicitly)
172
249
  const affectsRowHeight = (cellFormat) => !!cellFormat &&
@@ -270,7 +347,11 @@ export const changeBatch = ({ createHistory, enqueueCalculation, onChangeSheetDa
270
347
  }
271
348
  if (!formattingOnly && tables?.length && primaryRange && coords) {
272
349
  if (onChangeTableColumn) {
273
- onChangeTableColumn(sheetId, coords, value, adjacentTable, isRowExpansion, isColumnExpansion, primaryRange);
350
+ // A block written right of the table names every new column from its header cell.
351
+ const headerValues = isColumnExpansion && Array.isArray(values)
352
+ ? values[0]?.map((cell) => cell ?? undefined)
353
+ : undefined;
354
+ onChangeTableColumn(sheetId, coords, value, adjacentTable, isRowExpansion, isColumnExpansion, primaryRange, headerValues);
274
355
  }
275
356
  if (onChangeCalculatedColumn) {
276
357
  const isAdjacentColumn = currentTable &&
@@ -1,5 +1,9 @@
1
1
  import type { CellInterface } from "@rowsncolumns/common-types";
2
- import type { CellData, TableView } from "@rowsncolumns/spreadsheet";
2
+ import type { CalculatedColumnFill, CellData, TableView } from "@rowsncolumns/spreadsheet";
3
3
  import type { UseOnChangeCalculatedColumnProps } from "../hooks/use-on-change-calculated-column";
4
- export declare const changeCalculatedColumn: <T extends CellData>({ locale, sharedStringRegistry, cellXfsRegistry, onChangeTables, onChangeSheetData, getUserEnteredValue, getSheetName, createHistory, enqueueCalculation, onCommand, }: UseOnChangeCalculatedColumnProps<T>) => (sheetId: number, coords: CellInterface, value: string | boolean | undefined, currentTable: TableView | undefined) => void;
4
+ export declare const changeCalculatedColumn: <T extends CellData>({ locale, sharedStringRegistry, cellXfsRegistry, onChangeTables, onChangeSheetData, getUserEnteredValue, getSheetName, createHistory, enqueueCalculation, onCommand, autoCalculatedColumns, }: UseOnChangeCalculatedColumnProps<T>) => (sheetId: number, coords: CellInterface, value: string | boolean | undefined, currentTable: TableView | undefined, options?: ChangeCalculatedColumnOptions) => CalculatedColumnFill | undefined;
5
+ export type ChangeCalculatedColumnOptions = {
6
+ /** Fill the column even over cells that differ from the typed formula (the smart tag's "Overwrite all cells in this column with this formula"). */
7
+ force?: boolean;
8
+ };
5
9
  //# sourceMappingURL=change-calculated-column.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-calculated-column.d.ts","sourceRoot":"","sources":["../../../interface/change-calculated-column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAEV,QAAQ,EACR,SAAS,EACV,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAIjG,eAAO,MAAM,sBAAsB,GAChC,CAAC,SAAS,QAAQ,EAAE,wKAWlB,gCAAgC,CAAC,CAAC,CAAC,MAEpC,SAAS,MAAM,EACf,QAAQ,aAAa,EACrB,OAAO,MAAM,GAAG,OAAO,GAAG,SAAS,EACnC,cAAc,SAAS,GAAG,SAAS,SAuKpC,CAAC"}
1
+ {"version":3,"file":"change-calculated-column.d.ts","sourceRoot":"","sources":["../../../interface/change-calculated-column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAEV,oBAAoB,EAEpB,QAAQ,EACR,SAAS,EACV,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAQjG,eAAO,MAAM,sBAAsB,GAChC,CAAC,SAAS,QAAQ,EAAE,+LAYlB,gCAAgC,CAAC,CAAC,CAAC,MAEpC,SAAS,MAAM,EACf,QAAQ,aAAa,EACrB,OAAO,MAAM,GAAG,OAAO,GAAG,SAAS,EACnC,cAAc,SAAS,GAAG,SAAS,EACnC,UAAU,6BAA6B,KACtC,oBAAoB,GAAG,SA8PzB,CAAC;AAEJ,MAAM,MAAM,6BAA6B,GAAG;IAC1C,mJAAmJ;IACnJ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC"}