@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
@@ -1,5 +1,7 @@
1
- import { uuid } from "@rowsncolumns/utils";
1
+ import { getCellUserEnteredValue, getExtendedValueFormula, getNextTableCopyName, uuid, } from "@rowsncolumns/utils";
2
2
  import { castDraft, produceWithPatches } from "immer";
3
+ import { retargetChartSpecRanges } from "../api/anchored-objects";
4
+ import { renameTablesInFormula } from "../api/formula";
3
5
  import { createSheetDraft } from "../api/immer-utils";
4
6
  import { getGeneratedSheetCopyName } from "../generated-names";
5
7
  import { SheetCell } from "../sheet-cell";
@@ -8,6 +10,10 @@ export const duplicateSheet = ({ locale, maxSheetCount, sheets, idCreationStrate
8
10
  const saveHistory = createHistory();
9
11
  // Track the newSheetId that gets generated inside produceWithPatches
10
12
  let finalNewSheetId;
13
+ // A chartsheet copy owns a fresh copy of its chart; both ids are minted
14
+ // up front so the sheet and the chart agree.
15
+ let copiedChartSheetChartId;
16
+ let sourceChartSheetChartId;
11
17
  // Add sheet
12
18
  onChangeSheets((prevSheets) => {
13
19
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
@@ -25,11 +31,18 @@ export const duplicateSheet = ({ locale, maxSheetCount, sheets, idCreationStrate
25
31
  // Generate unique title using the CURRENT draft state
26
32
  const existingTitles = draft.map((s) => s.title);
27
33
  const newTitle = generateUniqueSheetName(existingTitles, sheet.title, generatedNames);
34
+ if (sheet.type === "chartsheet" && sheet.chartId != null) {
35
+ sourceChartSheetChartId = sheet.chartId;
36
+ copiedChartSheetChartId = idCreationStrategy?.("chart") ?? uuid();
37
+ }
28
38
  /* Update the sheet title */
29
39
  const newSheet = {
30
40
  ...sheet,
31
41
  sheetId: newSheetId,
32
42
  title: newTitle,
43
+ ...(copiedChartSheetChartId !== undefined
44
+ ? { chartId: copiedChartSheetChartId }
45
+ : {}),
33
46
  };
34
47
  draft.push(castDraft(newSheet));
35
48
  finalNewSheetId = newSheetId;
@@ -48,6 +61,37 @@ export const duplicateSheet = ({ locale, maxSheetCount, sheets, idCreationStrate
48
61
  return undefined;
49
62
  }
50
63
  const newSheetId = finalNewSheetId;
64
+ // Copy tables first: the copy's formulas re-point their structured
65
+ // references at the copied tables (Excel: `Sales[Amount]` in the copy
66
+ // reads `Sales2[Amount]`), so the sheet-data copy needs the new names.
67
+ // Lower-cased old title → copy title.
68
+ const tableRenames = new Map();
69
+ onChangeTables?.((prevTables) => {
70
+ const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
71
+ const currentTables = draft.filter((table) => table.sheetId === sheetId);
72
+ // Excel names the copy `Sales2`, `Sales3`, … against every table
73
+ // in the workbook, including the copies made by this duplication.
74
+ const takenTitles = draft.map((table) => table.title);
75
+ for (const table of currentTables) {
76
+ const title = getNextTableCopyName(table.title, takenTitles);
77
+ takenTitles.push(title);
78
+ if (table.title) {
79
+ tableRenames.set(table.title.toLowerCase(), title);
80
+ }
81
+ draft.push({
82
+ ...table,
83
+ title,
84
+ id: idCreationStrategy?.("table") ?? uuid(),
85
+ sheetId: newSheetId,
86
+ });
87
+ }
88
+ });
89
+ // Save history
90
+ saveHistory({
91
+ tables: { patches, inversePatches },
92
+ });
93
+ return nextState;
94
+ });
51
95
  onChangeSheetData?.((prevSheetData) => {
52
96
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
53
97
  // Clone the sheet
@@ -64,6 +108,16 @@ export const duplicateSheet = ({ locale, maxSheetCount, sheets, idCreationStrate
64
108
  // Create a cell
65
109
  sheetCell.assign(newSheetId, { rowIndex, columnIndex }, cellData, { locale });
66
110
  if (sheetCell.isFormula()) {
111
+ const formula = getExtendedValueFormula(getCellUserEnteredValue(cellData));
112
+ const renamed = formula
113
+ ? renameTablesInFormula(formula, tableRenames)
114
+ : undefined;
115
+ if (renamed !== undefined && renamed !== formula) {
116
+ sheetCell.setFormulaValue(renamed, false);
117
+ const copySheet = createSheetDraft(draft, newSheetId, rowIndex);
118
+ copySheet[rowIndex].values[columnIndex] =
119
+ sheetCell.getCellData();
120
+ }
67
121
  enqueueGraphOperation({
68
122
  type: "add",
69
123
  position: {
@@ -82,35 +136,28 @@ export const duplicateSheet = ({ locale, maxSheetCount, sheets, idCreationStrate
82
136
  });
83
137
  return nextState;
84
138
  });
85
- // Update tables
86
- onChangeTables?.((prevTables) => {
87
- const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
88
- const currentTables = draft.filter((table) => table.sheetId === sheetId);
89
- draft.push(...currentTables.map((table, index) => ({
90
- ...table,
91
- title: `${table.title}${index + 1}`,
92
- id: idCreationStrategy?.("table") ?? uuid(),
93
- sheetId: newSheetId,
94
- })));
95
- });
96
- // Save history
97
- saveHistory({
98
- tables: { patches, inversePatches },
99
- });
100
- return nextState;
101
- });
102
139
  // Check if there are charts
103
140
  onChangeCharts?.((prevCharts) => {
104
141
  const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
105
142
  const current = draft.filter((chart) => chart.position.sheetId === sheetId);
106
- draft.push(...current.map((chart) => ({
107
- ...chart,
108
- chartId: idCreationStrategy?.("chart") ?? uuid(),
109
- position: {
110
- ...chart.position,
111
- sheetId: newSheetId,
112
- },
113
- })));
143
+ draft.push(...current.map((chart) => {
144
+ // The copy reads the copy's own cells (Excel); ranges on other
145
+ // sheets keep reading them.
146
+ const spec = JSON.parse(JSON.stringify(chart.spec));
147
+ retargetChartSpecRanges(spec, sheetId, newSheetId);
148
+ return {
149
+ ...chart,
150
+ chartId: copiedChartSheetChartId !== undefined &&
151
+ chart.chartId === sourceChartSheetChartId
152
+ ? copiedChartSheetChartId
153
+ : (idCreationStrategy?.("chart") ?? uuid()),
154
+ spec,
155
+ position: {
156
+ ...chart.position,
157
+ sheetId: newSheetId,
158
+ },
159
+ };
160
+ }));
114
161
  });
115
162
  // Save history
116
163
  saveHistory({
@@ -1,4 +1,4 @@
1
- import type { EmbeddedObject } from "@rowsncolumns/spreadsheet";
1
+ import type { EmbeddedChart, EmbeddedObject, ZOrderChange } from "@rowsncolumns/spreadsheet";
2
2
  import { type CanvasGridProps, type CellData } from "@rowsncolumns/spreadsheet";
3
3
  import type { UseOnEmbedsProps } from "../hooks/use-on-embeds";
4
4
  export declare const deleteEmbed: <T extends CellData>({ onChangeEmbeds, createHistory, }: Omit<UseOnEmbedsProps<T>, "sheetId">) => (embedId: EmbeddedObject["embedId"]) => void;
@@ -6,4 +6,13 @@ export declare const updateEmbed: <T extends CellData>({ onChangeEmbeds, createH
6
6
  export declare const moveEmbed: <T extends CellData>({ onChangeEmbeds, createHistory, }: UseOnEmbedsProps<T>) => NonNullable<CanvasGridProps["onMoveEmbed"]>;
7
7
  export declare const resizeEmbed: <T extends CellData>({ onChangeEmbeds, createHistory, }: UseOnEmbedsProps<T>) => NonNullable<CanvasGridProps["onResizeEmbed"]>;
8
8
  export declare const createEmbed: <T extends CellData>({ onChangeEmbeds, createHistory, }: Omit<UseOnEmbedsProps<T>, "sheetId">) => (spec: EmbeddedObject) => void;
9
+ /**
10
+ * Excel's Arrange menu: write the planned `position.zOrder` of every changed
11
+ * chart and embed (`planZOrderChange`) as ONE history entry — the charts and
12
+ * embeds patches share the entry, so a Bring Forward that swaps a chart with
13
+ * a picture undoes in one step.
14
+ */
15
+ export declare const changeZOrder: <T extends CellData>({ onChangeCharts, onChangeEmbeds, createHistory, }: Omit<UseOnEmbedsProps<T>, "sheetId"> & {
16
+ onChangeCharts?: React.Dispatch<React.SetStateAction<EmbeddedChart[]>>;
17
+ }) => (changes: ZOrderChange[]) => void;
9
18
  //# sourceMappingURL=embeds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embeds.d.ts","sourceRoot":"","sources":["../../../interface/embeds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC7B,SAAS,cAAc,CAAC,SAAS,CAAC,SA0B3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC7B,OAAO,cAAc,SA0B9B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG3C,gBAAgB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CA6BlE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,gBAAgB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAuCpE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC7B,MAAM,cAAc,SAiB7B,CAAC"}
1
+ {"version":3,"file":"embeds.d.ts","sourceRoot":"","sources":["../../../interface/embeds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC7B,SAAS,cAAc,CAAC,SAAS,CAAC,SA0B3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC7B,OAAO,cAAc,SA0B9B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG3C,gBAAgB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAyClE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,gBAAgB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CA6CpE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC7B,MAAM,cAAc,SAqB7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,oDAI9C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IACxC,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;CACxE,MACS,SAAS,YAAY,EAAE,SAmEhC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { DEFAULT_ACTIVE_CELL } from "@rowsncolumns/utils";
2
2
  import { produceWithPatches } from "immer";
3
+ import { setOverlayToAnchor } from "../api/anchored-objects";
3
4
  const DEFAULT_OVERLAY_POSITION = {
4
5
  anchorCell: DEFAULT_ACTIVE_CELL,
5
6
  heightPixels: 400,
@@ -18,8 +19,8 @@ export const deleteEmbed = ({ onChangeEmbeds, createHistory, }) => {
18
19
  saveHistory({
19
20
  embeds: { patches, inversePatches },
20
21
  selectedEmbedOrChart: {
21
- redo: embedId,
22
- undo: undefined,
22
+ undo: embedId,
23
+ redo: undefined,
23
24
  },
24
25
  });
25
26
  return nextState;
@@ -39,8 +40,8 @@ export const updateEmbed = ({ onChangeEmbeds, createHistory, }) => {
39
40
  saveHistory({
40
41
  embeds: { patches, inversePatches },
41
42
  selectedEmbedOrChart: {
43
+ undo: embed.embedId,
42
44
  redo: embed.embedId,
43
- undo: undefined,
44
45
  },
45
46
  });
46
47
  return nextState;
@@ -48,7 +49,7 @@ export const updateEmbed = ({ onChangeEmbeds, createHistory, }) => {
48
49
  };
49
50
  };
50
51
  export const moveEmbed = ({ onChangeEmbeds, createHistory, }) => {
51
- return (embedId, sheetId, anchorCell, offsetXPixels, offsetYPixels) => {
52
+ return (embedId, sheetId, anchorCell, offsetXPixels, offsetYPixels, toAnchor) => {
52
53
  const saveHistory = createHistory();
53
54
  onChangeEmbeds?.((prevCharts) => {
54
55
  const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
@@ -63,17 +64,22 @@ export const moveEmbed = ({ onChangeEmbeds, createHistory, }) => {
63
64
  embed.position.overlayPosition.anchorCell = anchorCell;
64
65
  embed.position.overlayPosition.offsetXPixels = offsetXPixels;
65
66
  embed.position.overlayPosition.offsetYPixels = offsetYPixels;
67
+ setOverlayToAnchor(embed.position.overlayPosition, toAnchor);
66
68
  }
67
69
  });
68
70
  saveHistory({
69
71
  embeds: { patches, inversePatches },
72
+ selectedEmbedOrChart: {
73
+ undo: embedId,
74
+ redo: embedId,
75
+ },
70
76
  });
71
77
  return nextState;
72
78
  });
73
79
  };
74
80
  };
75
81
  export const resizeEmbed = ({ onChangeEmbeds, createHistory, }) => {
76
- return (embedId, sheetId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
82
+ return (embedId, sheetId, anchorCell, offsetXPixels, offsetYPixels, width, height, toAnchor) => {
77
83
  const saveHistory = createHistory();
78
84
  onChangeEmbeds?.((prevCharts) => {
79
85
  const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
@@ -90,10 +96,15 @@ export const resizeEmbed = ({ onChangeEmbeds, createHistory, }) => {
90
96
  embed.position.overlayPosition.offsetYPixels = offsetYPixels;
91
97
  embed.position.overlayPosition.widthPixels = width;
92
98
  embed.position.overlayPosition.heightPixels = height;
99
+ setOverlayToAnchor(embed.position.overlayPosition, toAnchor);
93
100
  }
94
101
  });
95
102
  saveHistory({
96
103
  embeds: { patches, inversePatches },
104
+ selectedEmbedOrChart: {
105
+ undo: embedId,
106
+ redo: embedId,
107
+ },
97
108
  });
98
109
  return nextState;
99
110
  });
@@ -108,8 +119,76 @@ export const createEmbed = ({ onChangeEmbeds, createHistory, }) => {
108
119
  });
109
120
  saveHistory({
110
121
  embeds: { patches, inversePatches },
122
+ selectedEmbedOrChart: {
123
+ undo: undefined,
124
+ redo: spec.embedId,
125
+ },
111
126
  });
112
127
  return nextState;
113
128
  });
114
129
  };
115
130
  };
131
+ /**
132
+ * Excel's Arrange menu: write the planned `position.zOrder` of every changed
133
+ * chart and embed (`planZOrderChange`) as ONE history entry — the charts and
134
+ * embeds patches share the entry, so a Bring Forward that swaps a chart with
135
+ * a picture undoes in one step.
136
+ */
137
+ export const changeZOrder = ({ onChangeCharts, onChangeEmbeds, createHistory, }) => {
138
+ return (changes) => {
139
+ const chartZOrders = new Map();
140
+ const embedZOrders = new Map();
141
+ for (const change of changes) {
142
+ if (change.kind === "chart") {
143
+ chartZOrders.set(change.chart.chartId, change.chart.position.zOrder ?? undefined);
144
+ }
145
+ else {
146
+ embedZOrders.set(change.embed.embedId, change.embed.position.zOrder ?? undefined);
147
+ }
148
+ }
149
+ const writesCharts = chartZOrders.size > 0 && !!onChangeCharts;
150
+ const writesEmbeds = embedZOrders.size > 0 && !!onChangeEmbeds;
151
+ if (!writesCharts && !writesEmbeds) {
152
+ return;
153
+ }
154
+ const saveHistory = createHistory();
155
+ const entry = {};
156
+ // Both setters run their updaters before the entry is saved, so the two
157
+ // patch sets land in the same history step.
158
+ let pending = (writesCharts ? 1 : 0) + (writesEmbeds ? 1 : 0);
159
+ const flush = () => {
160
+ pending -= 1;
161
+ if (pending === 0) {
162
+ saveHistory(entry);
163
+ }
164
+ };
165
+ if (writesCharts) {
166
+ onChangeCharts?.((prevCharts) => {
167
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
168
+ for (const chart of draft) {
169
+ if (chartZOrders.has(chart.chartId)) {
170
+ chart.position.zOrder = chartZOrders.get(chart.chartId);
171
+ }
172
+ }
173
+ });
174
+ entry.charts = { patches, inversePatches };
175
+ flush();
176
+ return nextState;
177
+ });
178
+ }
179
+ if (writesEmbeds) {
180
+ onChangeEmbeds?.((prevEmbeds) => {
181
+ const [nextState, patches, inversePatches] = produceWithPatches(prevEmbeds, (draft) => {
182
+ for (const embed of draft) {
183
+ if (embedZOrders.has(embed.embedId)) {
184
+ embed.position.zOrder = embedZOrders.get(embed.embedId);
185
+ }
186
+ }
187
+ });
188
+ entry.embeds = { patches, inversePatches };
189
+ flush();
190
+ return nextState;
191
+ });
192
+ }
193
+ };
194
+ };
@@ -10,5 +10,5 @@ import type { UseOnInsertCellsShiftDown } from "../hooks/use-on-insert-cells-shi
10
10
  * insertion (FMT-03). Refusals (torn merge/table/array, off-sheet push) are decided by the hook via
11
11
  * `getShiftCellsRefusal` before this runs.
12
12
  */
13
- export declare const insertCellsShiftDown: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }: UseOnInsertCellsShiftDown<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
13
+ export declare const insertCellsShiftDown: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, onChangeCharts, }: UseOnInsertCellsShiftDown<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
14
14
  //# sourceMappingURL=insert-cells-shift-down.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-cells-shift-down.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAe5E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAIzF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8RAkBvE,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE9B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAoQnD,CAAC"}
1
+ {"version":3,"file":"insert-cells-shift-down.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAIzF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8SAmBvE,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE9B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAwRnD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { produceWithPatches } from "immer";
2
+ import { shiftChartsOnCellShift } from "../api/anchored-objects";
2
3
  import { collectUniqueDependentsForRange, processSideEffectDependentCells, } from "../api/dependency";
3
4
  import { createSheetCellIdentifier, expandRangesInFormula } from "../api/formula";
4
5
  import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
@@ -14,7 +15,7 @@ import { SheetCell } from "../sheet-cell";
14
15
  * insertion (FMT-03). Refusals (torn merge/table/array, off-sheet push) are decided by the hook via
15
16
  * `getShiftCellsRefusal` before this runs.
16
17
  */
17
- export const insertCellsShiftDown = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }) => {
18
+ export const insertCellsShiftDown = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, onChangeCharts, }) => {
18
19
  return (sheetId, activeCell, selections) => {
19
20
  const saveHistory = createHistory();
20
21
  // We need to track this for history. Precedent cells
@@ -87,6 +88,14 @@ export const insertCellsShiftDown = ({ rowCount, columnCount, locale, cellXfsReg
87
88
  });
88
89
  return nextState;
89
90
  });
91
+ // Chart ranges wholly inside the shifted columns grow/shift like references; the frame stays put.
92
+ onChangeCharts?.((prevCharts) => {
93
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
94
+ shiftChartsOnCellShift(draft, sheetId, "row", "insert", r1, count, { startIndex: c1, endIndex: c2 });
95
+ });
96
+ saveHistory({ charts: { patches, inversePatches } });
97
+ return nextState;
98
+ });
90
99
  // Sheet data
91
100
  onChangeSheetData?.((prevSheetData) => {
92
101
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
@@ -10,5 +10,5 @@ import type { UseOnInsertCellsShiftRight } from "../hooks/use-on-insert-cells-sh
10
10
  * (torn merge/table/array, a non-blank cell pushed past `columnCount` — SHF-10) are decided by the
11
11
  * hook before this runs.
12
12
  */
13
- export declare const insertCellsShiftRight: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }: UseOnInsertCellsShiftRight<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
13
+ export declare const insertCellsShiftRight: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, onChangeCharts, }: UseOnInsertCellsShiftRight<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
14
14
  //# sourceMappingURL=insert-cells-shift-right.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-cells-shift-right.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-right.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAI3F;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8RAkBxE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,MAE/B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAqQnD,CAAC"}
1
+ {"version":3,"file":"insert-cells-shift-right.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-right.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAiB5E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAI3F;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8SAmBxE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,MAE/B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAyRnD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { createArrayRange } from "@rowsncolumns/utils";
2
2
  import { produceWithPatches } from "immer";
3
+ import { shiftChartsOnCellShift } from "../api/anchored-objects";
3
4
  import { collectUniqueDependentsForRange, processSideEffectDependentCells, } from "../api/dependency";
4
5
  import { createSheetCellIdentifier, expandRangesInFormula } from "../api/formula";
5
6
  import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
@@ -15,7 +16,7 @@ import { SheetCell } from "../sheet-cell";
15
16
  * (torn merge/table/array, a non-blank cell pushed past `columnCount` — SHF-10) are decided by the
16
17
  * hook before this runs.
17
18
  */
18
- export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }) => {
19
+ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, onChangeCharts, }) => {
19
20
  return (sheetId, activeCell, selections) => {
20
21
  const saveHistory = createHistory();
21
22
  // We need to track this for history. Precedent cells
@@ -88,6 +89,14 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
88
89
  });
89
90
  return nextState;
90
91
  });
92
+ // Chart ranges wholly inside the shifted rows widen/shift like references; the frame stays put.
93
+ onChangeCharts?.((prevCharts) => {
94
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
95
+ shiftChartsOnCellShift(draft, sheetId, "column", "insert", c1, count, { startIndex: r1, endIndex: r2 });
96
+ });
97
+ saveHistory({ charts: { patches, inversePatches } });
98
+ return nextState;
99
+ });
91
100
  // Sheet data
92
101
  onChangeSheetData?.((prevSheetData) => {
93
102
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
@@ -2,6 +2,6 @@ import { Direction } from "@rowsncolumns/common-types";
2
2
  import type { CellData, Sheet, TableView } from "@rowsncolumns/spreadsheet";
3
3
  import type { UseOnInsertColumnProps } from "../hooks/use-on-insert-column";
4
4
  import type { UseOnTableProps } from "../hooks/use-on-table";
5
- export declare const insertColumn: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, maxColumnCount, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, generatedNames, }: UseOnInsertColumnProps<T, S>) => (sheetId: number, referenceColumnIndex: number, numColumns?: number) => void;
6
- export declare const insertTableColumn: <T extends CellData, S extends Sheet>({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }: Pick<UseOnTableProps<T, S>, "tables" | "columnCount" | "rowCount" | "locale" | "cellXfsRegistry" | "sharedStringRegistry" | "createHistory" | "onChangeTables" | "onChangeSheets" | "onChangeSheetData" | "enqueueCalculation" | "enqueueStructureChange" | "enqueueGraphOperation" | "getDependents" | "getSheetName" | "generatedNames">) => (tableView: TableView, dimensionIndex: number, direction: Direction.Left | Direction.Right) => void;
5
+ export declare const insertColumn: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, maxColumnCount, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeSlicers, onChangeCharts, onChangeProtectedRanges, generatedNames, }: UseOnInsertColumnProps<T, S>) => (sheetId: number, referenceColumnIndex: number, numColumns?: number) => void;
6
+ export declare const insertTableColumn: <T extends CellData, S extends Sheet>({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, onChangeCharts, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }: Pick<UseOnTableProps<T, S>, "tables" | "columnCount" | "rowCount" | "locale" | "cellXfsRegistry" | "sharedStringRegistry" | "createHistory" | "onChangeTables" | "onChangeSheets" | "onChangeSheetData" | "onChangeCharts" | "enqueueCalculation" | "enqueueStructureChange" | "enqueueGraphOperation" | "getDependents" | "getSheetName" | "generatedNames">) => (tableView: TableView, dimensionIndex: number, direction: Direction.Left | Direction.Right, count?: number) => void;
7
7
  //# sourceMappingURL=insert-column.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA6B5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,mgBA8B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SAmZtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
1
+ {"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,ohBA+B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SAobtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qRAkBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,gBAAgB,GAChB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAC3C,cAAS,SAwXZ,CAAC"}
@@ -1,19 +1,19 @@
1
1
  import { Direction } from "@rowsncolumns/common-types";
2
+ import { isNil } from "@rowsncolumns/utils";
2
3
  import { produceWithPatches } from "immer";
3
- import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
4
+ import { shiftChartsOnStructuralChange, shiftChartsOnTableEdit, shiftEmbedsOnStructuralChange, shiftSlicersOnStructuralChange, shiftProtectedRangesOnStructuralChange, tableBinding, } from "../api/anchored-objects";
4
5
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
5
6
  import { createSheetCellIdentifier, expandRangesInFormula, } from "../api/formula";
6
- import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
7
+ import { cloneCellWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
7
8
  import { expandMergesOnColumnInsert, moveMergedCells } from "../api/merges";
8
9
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
9
10
  import { shiftPivotsOnInsert } from "../api/pivot-range";
10
11
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
11
12
  import { moveFilterView } from "../api/selection";
12
13
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
13
- import { getGeneratedTableColumnName } from "../generated-names";
14
14
  import { getNextTableColumnName } from "../helpers";
15
15
  import { SheetCell } from "../sheet-cell";
16
- export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, generatedNames, }) => {
16
+ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeSlicers, onChangeCharts, onChangeProtectedRanges, generatedNames, }) => {
17
17
  return (sheetId, referenceColumnIndex, numColumns = 1) => {
18
18
  if (numColumns <= 0)
19
19
  return;
@@ -127,6 +127,13 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
127
127
  saveHistory({ embeds: { patches, inversePatches } });
128
128
  return nextState;
129
129
  });
130
+ onChangeSlicers?.((prevSlicers) => {
131
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSlicers, (draft) => {
132
+ shiftSlicersOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
133
+ });
134
+ saveHistory({ slicers: { patches, inversePatches } });
135
+ return nextState;
136
+ });
130
137
  onChangeCharts?.((prevCharts) => {
131
138
  const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
132
139
  shiftChartsOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
@@ -148,7 +155,11 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
148
155
  if (!sheet)
149
156
  return;
150
157
  if (sheet.columnMetadata) {
151
- sheet.columnMetadata.splice(referenceColumnIndex, 0, ...Array.from({ length: numColumns }, () => null));
158
+ // Excel "Format Same As Left" (FMT-02) covers the column width and
159
+ // hidden state: the inserted columns inherit the metadata of the
160
+ // column to the left (column A takes the pushed-right column's).
161
+ const inherited = inheritedDimensionMetadata(sheet.columnMetadata, referenceColumnIndex);
162
+ sheet.columnMetadata.splice(referenceColumnIndex, 0, ...Array.from({ length: numColumns }, () => inherited ? { ...inherited } : null));
152
163
  }
153
164
  if (sheet.basicFilter) {
154
165
  const { startColumnIndex, endColumnIndex } = sheet.basicFilter.range;
@@ -211,42 +222,47 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
211
222
  cellXfsRegistry,
212
223
  sharedStringRegistry,
213
224
  });
214
- // Insert columns into each row's values array.
225
+ // Insert columns into each row's values array. Excel "Format Same
226
+ // As Left" (FMT-02): every new cell takes the formatting (never the
227
+ // value) of the cell to its LEFT; only an insert at column A seeds
228
+ // from the column being pushed right.
215
229
  const sheetRows = draft[sheetId];
216
230
  if (sheetRows) {
231
+ const sourceColumnIndex = referenceColumnIndex > 1
232
+ ? referenceColumnIndex - 1
233
+ : referenceColumnIndex;
217
234
  for (let rowIndex = 1; rowIndex < sheetRows.length; rowIndex++) {
218
235
  const row = sheetRows[rowIndex];
219
236
  if (!row?.values)
220
237
  continue;
221
- if (row.values.length > referenceColumnIndex) {
222
- const formattingSource = row.values[referenceColumnIndex] ??
223
- row.values[referenceColumnIndex - 1] ??
224
- undefined;
225
- const newColumns = Array.from({ length: numColumns }, () => cloneCellWithFormatting(formattingSource));
226
- row.values.splice(referenceColumnIndex, 0, ...newColumns);
227
- }
238
+ const formattingSource = row.values[sourceColumnIndex] ?? undefined;
239
+ // Rows that end before the insertion point have nothing to
240
+ // shift; they only grow when there is a format to inherit.
241
+ const hasCellsToShift = row.values.length > referenceColumnIndex;
242
+ if (!hasCellsToShift && isNil(formattingSource))
243
+ continue;
244
+ const newColumns = Array.from({ length: numColumns }, () => cloneCellWithFormatting(formattingSource));
245
+ row.values.splice(referenceColumnIndex, 0, ...newColumns);
228
246
  }
229
247
  }
230
248
  // Add table column headers for any table whose header row was
231
249
  // affected by the insertion.
232
250
  for (const { range, sheetId: tSheetId, headerRow, columns } of tables ?? []) {
233
251
  if (tSheetId !== sheetId ||
234
- !headerRow ||
252
+ headerRow === false ||
235
253
  referenceColumnIndex <= range.startColumnIndex ||
236
254
  referenceColumnIndex > range.endColumnIndex) {
237
255
  continue;
238
256
  }
239
257
  const currentSheet = createSheetDraft(draft, tSheetId, range.startRowIndex);
258
+ // The same first-free `ColumnN` walk as the table's `columns`
259
+ // above: each generated name is reserved for the next one.
260
+ const existingColumns = [...(columns || [])];
240
261
  for (let i = 0; i < numColumns; i++) {
241
262
  const currentColumnIndex = referenceColumnIndex + i;
242
263
  const formattingSource = cloneCellWithFormatting(draft[tSheetId]?.[range.startRowIndex]?.values?.[currentColumnIndex]);
243
- const existingColumns = [...(columns || [])];
244
- for (let j = 0; j < i; j++) {
245
- existingColumns.push({
246
- name: getGeneratedTableColumnName(j + 1, generatedNames),
247
- });
248
- }
249
264
  const columnName = getNextTableColumnName(existingColumns, generatedNames);
265
+ existingColumns.push({ name: columnName });
250
266
  const sheetCell = new SheetCell(tSheetId, {
251
267
  rowIndex: range.startRowIndex,
252
268
  columnIndex: currentColumnIndex,
@@ -274,10 +290,21 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
274
290
  // existing table view) and uses the legacy three-pass logic below. Worth
275
291
  // migrating to the shared helper later but leaving it untouched here to keep
276
292
  // scope tight.
277
- export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }) => {
278
- return (tableView, dimensionIndex, direction) => {
293
+ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, onChangeCharts, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }) => {
294
+ return (tableView, dimensionIndex, direction, count = 1) => {
279
295
  const { sheetId } = tableView;
280
- const numColumns = 1;
296
+ const numColumns = Math.max(1, Math.floor(count));
297
+ // One generated name per inserted column, each unique against the
298
+ // table's columns and the names generated before it.
299
+ const newColumnNames = [];
300
+ {
301
+ const columns = [...(tableView.columns ?? [])];
302
+ for (let index = 0; index < numColumns; index++) {
303
+ const name = getNextTableColumnName(columns, generatedNames);
304
+ newColumnNames.push(name);
305
+ columns.push({ name });
306
+ }
307
+ }
281
308
  const saveHistory = createHistory();
282
309
  const recalcCells = new Map();
283
310
  let referenceColumnIndex = tableView.range.startColumnIndex + dimensionIndex;
@@ -309,8 +336,7 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
309
336
  if (referenceColumnIndex >= table.range.startColumnIndex &&
310
337
  referenceColumnIndex <= table.range.endColumnIndex + numColumns) {
311
338
  const tableColumnIndex = referenceColumnIndex - table.range.startColumnIndex;
312
- const columnName = getNextTableColumnName(table.columns ?? undefined, generatedNames);
313
- table.columns?.splice(tableColumnIndex, 0, { name: columnName });
339
+ table.columns?.splice(tableColumnIndex, 0, ...newColumnNames.map((name) => ({ name })));
314
340
  if (table.filterSpecs) {
315
341
  for (const spec of table.filterSpecs) {
316
342
  if (spec.columnIndex >= referenceColumnIndex) {
@@ -332,6 +358,15 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
332
358
  saveHistory({ tables: { patches, inversePatches } });
333
359
  return nextState;
334
360
  });
361
+ // Chart ranges inside the table's rows follow the shifted cells; a range reading the whole
362
+ // table (its body, or header + body, across every column) gains the column with it.
363
+ onChangeCharts?.((prevCharts) => {
364
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
365
+ shiftChartsOnTableEdit(draft, sheetId, tableBinding(tableView), "column", "insert", referenceColumnIndex, numColumns);
366
+ });
367
+ saveHistory({ charts: { patches, inversePatches } });
368
+ return nextState;
369
+ });
335
370
  onChangeSheets?.((prevSheets) => {
336
371
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
337
372
  const sheet = draft.find((sheet) => sheet.sheetId === sheetId);
@@ -501,14 +536,16 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
501
536
  referenceColumnIndex >= range.startColumnIndex &&
502
537
  referenceColumnIndex <= range.endColumnIndex + numColumns) {
503
538
  const currentSheet = createSheetDraft(draft, sheetId, range.startRowIndex);
504
- const columnName = getNextTableColumnName(tableView.columns ?? undefined, generatedNames);
505
- const sheetCell = new SheetCell(sheetId, {
506
- rowIndex: range.startRowIndex,
507
- columnIndex: referenceColumnIndex,
508
- }, cloneCellWithFormatting(draft[sheetId]?.[range.startRowIndex]?.values?.[referenceColumnIndex]));
509
- sheetCell.setUserEnteredValue(columnName);
510
- currentSheet[range.startRowIndex].values[referenceColumnIndex] =
511
- sheetCell.getCellData();
539
+ newColumnNames.forEach((columnName, index) => {
540
+ const columnIndex = referenceColumnIndex + index;
541
+ const sheetCell = new SheetCell(sheetId, {
542
+ rowIndex: range.startRowIndex,
543
+ columnIndex,
544
+ }, cloneCellWithFormatting(draft[sheetId]?.[range.startRowIndex]?.values?.[columnIndex]));
545
+ sheetCell.setUserEnteredValue(columnName);
546
+ currentSheet[range.startRowIndex].values[columnIndex] =
547
+ sheetCell.getCellData();
548
+ });
512
549
  }
513
550
  });
514
551
  saveHistory({