@rowsncolumns/spreadsheet-state 29.0.0 → 29.1.1

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 (603) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +131 -7
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +488 -43
  4. package/dist/cjs/api/copy-paste.d.ts +1 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +1 -3
  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/paint-format.d.ts +22 -1
  14. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  15. package/dist/cjs/api/paint-format.js +57 -1
  16. package/dist/cjs/api/sort.d.ts +23 -1
  17. package/dist/cjs/api/sort.d.ts.map +1 -1
  18. package/dist/cjs/api/sort.js +52 -6
  19. package/dist/cjs/api/structural-guards.d.ts +57 -0
  20. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  21. package/dist/cjs/api/structural-guards.js +93 -1
  22. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  23. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  24. package/dist/cjs/api/structural-table-refs.js +177 -16
  25. package/dist/cjs/api/table.d.ts +26 -2
  26. package/dist/cjs/api/table.d.ts.map +1 -1
  27. package/dist/cjs/api/table.js +93 -60
  28. package/dist/cjs/api/validation.d.ts.map +1 -1
  29. package/dist/cjs/api/validation.js +53 -8
  30. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  31. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  32. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  33. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  34. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  35. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  36. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  37. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  39. package/dist/cjs/atoms/index.d.ts +4 -0
  40. package/dist/cjs/atoms/index.d.ts.map +1 -1
  41. package/dist/cjs/atoms/index.js +4 -0
  42. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  43. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  45. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  47. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  48. package/dist/cjs/commands.d.ts +129 -2
  49. package/dist/cjs/commands.d.ts.map +1 -1
  50. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  51. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  52. package/dist/cjs/components/editors/embed-editor.js +38 -9
  53. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  54. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  55. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  56. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  57. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  58. package/dist/cjs/components/editors/table-editor.js +261 -20
  59. package/dist/cjs/components/index.d.ts +1 -0
  60. package/dist/cjs/components/index.d.ts.map +1 -1
  61. package/dist/cjs/components/index.js +1 -0
  62. package/dist/cjs/constants.d.ts +9 -1
  63. package/dist/cjs/constants.d.ts.map +1 -1
  64. package/dist/cjs/constants.js +12 -0
  65. package/dist/cjs/generated-names.d.ts +13 -3
  66. package/dist/cjs/generated-names.d.ts.map +1 -1
  67. package/dist/cjs/generated-names.js +3 -1
  68. package/dist/cjs/helpers.d.ts +5 -0
  69. package/dist/cjs/helpers.d.ts.map +1 -1
  70. package/dist/cjs/helpers.js +10 -1
  71. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  72. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  73. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  74. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  75. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  76. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  77. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  78. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  79. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  80. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  81. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  82. package/dist/cjs/hooks/use-on-change.js +218 -136
  83. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  84. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  85. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  86. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  87. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  89. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  90. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  92. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  93. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  95. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  96. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  98. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  99. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  100. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  101. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +10 -1
  102. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-delete-sheet.js +19 -1
  104. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  105. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  107. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  108. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete.js +5 -1
  110. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  111. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  113. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  114. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-fill.js +29 -15
  116. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  118. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  119. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  120. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  121. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  122. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  123. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  124. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  125. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  126. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  127. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  128. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  129. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  130. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  131. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  133. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  134. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  136. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  137. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  139. package/dist/cjs/hooks/use-on-move-columns.d.ts +3 -1
  140. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-move-columns.js +14 -1
  142. package/dist/cjs/hooks/use-on-move-rows.d.ts +3 -1
  143. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-move-rows.js +14 -1
  145. package/dist/cjs/hooks/use-on-move-selection.d.ts +3 -1
  146. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-move-selection.js +88 -25
  148. package/dist/cjs/hooks/use-on-paste.d.ts +22 -1
  149. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-paste.js +993 -776
  151. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  152. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  154. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  155. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  156. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  157. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  158. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  159. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  160. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  161. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  162. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  163. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  164. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  166. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  167. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  169. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  170. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  171. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  172. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  173. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  174. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  175. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  176. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  177. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  178. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  179. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-table.js +257 -49
  181. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  182. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  183. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  184. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  185. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  186. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  187. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  188. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  190. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  191. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  193. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  194. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-slicers.js +17 -26
  196. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  197. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  199. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +56 -10
  200. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  201. package/dist/cjs/hooks/use-spreadsheet-state.js +323 -100
  202. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  203. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  204. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  205. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  207. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  208. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  209. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  210. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  211. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  212. package/dist/cjs/index.d.ts +7 -0
  213. package/dist/cjs/index.d.ts.map +1 -1
  214. package/dist/cjs/index.js +8 -0
  215. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  216. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  217. package/dist/cjs/interface/apply-fill.js +207 -98
  218. package/dist/cjs/interface/change-batch.d.ts +1 -1
  219. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  220. package/dist/cjs/interface/change-batch.js +112 -15
  221. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  222. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  223. package/dist/cjs/interface/change-calculated-column.js +87 -17
  224. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  225. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  226. package/dist/cjs/interface/change-table-column.js +336 -76
  227. package/dist/cjs/interface/create-table.d.ts +15 -3
  228. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  229. package/dist/cjs/interface/create-table.js +100 -25
  230. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  231. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  232. package/dist/cjs/interface/delete-cells-shift-left.js +17 -2
  233. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  234. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  235. package/dist/cjs/interface/delete-cells-shift-up.js +17 -2
  236. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  237. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  238. package/dist/cjs/interface/delete-cells.js +106 -44
  239. package/dist/cjs/interface/delete-column.d.ts +1 -1
  240. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/delete-column.js +16 -3
  242. package/dist/cjs/interface/delete-row.d.ts +1 -1
  243. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  244. package/dist/cjs/interface/delete-row.js +230 -19
  245. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  246. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-sheet.js +149 -2
  248. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  249. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-table-column.js +11 -1
  251. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  252. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-table-row.js +361 -275
  254. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  255. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  256. package/dist/cjs/interface/embeds.d.ts +10 -1
  257. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  258. package/dist/cjs/interface/embeds.js +120 -6
  259. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  260. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  261. package/dist/cjs/interface/insert-cells-shift-down.js +11 -1
  262. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  263. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  264. package/dist/cjs/interface/insert-cells-shift-right.js +11 -1
  265. package/dist/cjs/interface/insert-column.d.ts +2 -2
  266. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  267. package/dist/cjs/interface/insert-column.js +68 -38
  268. package/dist/cjs/interface/insert-row.d.ts +1 -1
  269. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  270. package/dist/cjs/interface/insert-row.js +10 -2
  271. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  272. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  273. package/dist/cjs/interface/insert-table-row.js +70 -19
  274. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  275. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  276. package/dist/cjs/interface/remove-duplicates.js +46 -6
  277. package/dist/cjs/interface/remove-table.d.ts +1 -1
  278. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  279. package/dist/cjs/interface/remove-table.js +72 -16
  280. package/dist/cjs/interface/slicers.d.ts +12 -1
  281. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  282. package/dist/cjs/interface/slicers.js +47 -2
  283. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  284. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  285. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  286. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  287. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  288. package/dist/cjs/interface/table-totalrow.js +107 -73
  289. package/dist/cjs/interface/table-utils.d.ts +59 -6
  290. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  291. package/dist/cjs/interface/table-utils.js +211 -15
  292. package/dist/cjs/interface/update-table.d.ts +16 -1
  293. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/update-table.js +190 -44
  295. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  296. package/dist/cjs/test-setup.d.ts.map +1 -1
  297. package/dist/cjs/test-setup.js +6 -0
  298. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  299. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  300. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  301. package/dist/cjs/validation-schema/table.schema.js +20 -3
  302. package/dist/esm/api/anchored-objects.d.ts +131 -7
  303. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  304. package/dist/esm/api/anchored-objects.js +399 -15
  305. package/dist/esm/api/copy-paste.d.ts +1 -2
  306. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  307. package/dist/esm/api/copy-paste.js +1 -3
  308. package/dist/esm/api/filter.d.ts +15 -1
  309. package/dist/esm/api/filter.d.ts.map +1 -1
  310. package/dist/esm/api/filter.js +28 -0
  311. package/dist/esm/api/formula.d.ts +63 -0
  312. package/dist/esm/api/formula.d.ts.map +1 -1
  313. package/dist/esm/api/formula.js +235 -8
  314. package/dist/esm/api/paint-format.d.ts +22 -1
  315. package/dist/esm/api/paint-format.d.ts.map +1 -1
  316. package/dist/esm/api/paint-format.js +44 -1
  317. package/dist/esm/api/sort.d.ts +23 -1
  318. package/dist/esm/api/sort.d.ts.map +1 -1
  319. package/dist/esm/api/sort.js +45 -6
  320. package/dist/esm/api/structural-guards.d.ts +57 -0
  321. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  322. package/dist/esm/api/structural-guards.js +85 -0
  323. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  324. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  325. package/dist/esm/api/structural-table-refs.js +126 -6
  326. package/dist/esm/api/table.d.ts +26 -2
  327. package/dist/esm/api/table.d.ts.map +1 -1
  328. package/dist/esm/api/table.js +70 -48
  329. package/dist/esm/api/validation.d.ts.map +1 -1
  330. package/dist/esm/api/validation.js +53 -8
  331. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  332. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  333. package/dist/esm/atoms/creating-table.atom.js +4 -0
  334. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  335. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  336. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  337. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  338. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  339. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  340. package/dist/esm/atoms/index.d.ts +4 -0
  341. package/dist/esm/atoms/index.d.ts.map +1 -1
  342. package/dist/esm/atoms/index.js +4 -0
  343. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  344. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  345. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  346. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  347. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  348. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  349. package/dist/esm/commands.d.ts +129 -2
  350. package/dist/esm/commands.d.ts.map +1 -1
  351. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  352. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  353. package/dist/esm/components/editors/embed-editor.js +40 -6
  354. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  355. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  356. package/dist/esm/components/editors/slicer-editor.js +85 -0
  357. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  358. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  359. package/dist/esm/components/editors/table-editor.js +243 -19
  360. package/dist/esm/components/index.d.ts +1 -0
  361. package/dist/esm/components/index.d.ts.map +1 -1
  362. package/dist/esm/components/index.js +1 -0
  363. package/dist/esm/constants.d.ts +9 -1
  364. package/dist/esm/constants.d.ts.map +1 -1
  365. package/dist/esm/constants.js +12 -0
  366. package/dist/esm/generated-names.d.ts +13 -3
  367. package/dist/esm/generated-names.d.ts.map +1 -1
  368. package/dist/esm/generated-names.js +3 -1
  369. package/dist/esm/helpers.d.ts +5 -0
  370. package/dist/esm/helpers.d.ts.map +1 -1
  371. package/dist/esm/helpers.js +7 -1
  372. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  373. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  374. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  375. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  376. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  377. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  378. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  379. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  380. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  381. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  382. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  383. package/dist/esm/hooks/use-on-change.js +214 -124
  384. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  385. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  386. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  387. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  388. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  389. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  390. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  391. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  392. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  393. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  394. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  395. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  396. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  397. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  398. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  399. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  400. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  402. package/dist/esm/hooks/use-on-delete-sheet.d.ts +10 -1
  403. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-delete-sheet.js +19 -1
  405. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  406. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  408. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  409. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-delete.js +5 -1
  411. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  412. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-embeds.js +23 -6
  414. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  415. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-on-fill.js +27 -1
  417. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  419. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  420. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  422. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  423. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  424. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  425. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  426. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  428. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  429. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  430. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  431. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  432. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  433. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  434. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  435. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  436. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  437. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  438. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  439. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  440. package/dist/esm/hooks/use-on-move-columns.d.ts +3 -1
  441. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  442. package/dist/esm/hooks/use-on-move-columns.js +14 -1
  443. package/dist/esm/hooks/use-on-move-rows.d.ts +3 -1
  444. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  445. package/dist/esm/hooks/use-on-move-rows.js +14 -1
  446. package/dist/esm/hooks/use-on-move-selection.d.ts +3 -1
  447. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-move-selection.js +44 -1
  449. package/dist/esm/hooks/use-on-paste.d.ts +22 -1
  450. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-paste.js +815 -672
  452. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  453. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  455. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  456. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  457. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  458. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  459. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  460. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  461. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  462. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  463. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  464. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  465. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  467. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  468. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  470. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  471. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  473. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  476. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  477. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  479. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  480. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-table.js +234 -26
  482. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  483. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  484. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  485. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  486. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  488. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  489. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  490. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  491. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  492. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  493. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  494. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  495. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-slicers.js +16 -8
  497. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  498. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  499. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  500. package/dist/esm/hooks/use-spreadsheet-state.d.ts +56 -10
  501. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-spreadsheet-state.js +260 -30
  503. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  504. package/dist/esm/hooks/use-structured-reference.js +17 -0
  505. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  506. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  507. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  508. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  509. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  510. package/dist/esm/hooks/use-undo-redo.js +158 -7
  511. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  512. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  513. package/dist/esm/index.d.ts +7 -0
  514. package/dist/esm/index.d.ts.map +1 -1
  515. package/dist/esm/index.js +8 -0
  516. package/dist/esm/interface/apply-fill.d.ts +26 -3
  517. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  518. package/dist/esm/interface/apply-fill.js +188 -88
  519. package/dist/esm/interface/change-batch.d.ts +1 -1
  520. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  521. package/dist/esm/interface/change-batch.js +89 -8
  522. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  523. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  524. package/dist/esm/interface/change-calculated-column.js +81 -16
  525. package/dist/esm/interface/change-table-column.d.ts +81 -7
  526. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  527. package/dist/esm/interface/change-table-column.js +295 -67
  528. package/dist/esm/interface/create-table.d.ts +15 -3
  529. package/dist/esm/interface/create-table.d.ts.map +1 -1
  530. package/dist/esm/interface/create-table.js +103 -27
  531. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  532. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  533. package/dist/esm/interface/delete-cells-shift-left.js +17 -2
  534. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  535. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  536. package/dist/esm/interface/delete-cells-shift-up.js +17 -2
  537. package/dist/esm/interface/delete-cells.d.ts +1 -1
  538. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  539. package/dist/esm/interface/delete-cells.js +69 -30
  540. package/dist/esm/interface/delete-column.d.ts +1 -1
  541. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  542. package/dist/esm/interface/delete-column.js +16 -3
  543. package/dist/esm/interface/delete-row.d.ts +1 -1
  544. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  545. package/dist/esm/interface/delete-row.js +180 -16
  546. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  547. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  548. package/dist/esm/interface/delete-sheet.js +132 -1
  549. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  550. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  551. package/dist/esm/interface/delete-table-column.js +11 -1
  552. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  553. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  554. package/dist/esm/interface/delete-table-row.js +312 -232
  555. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  556. package/dist/esm/interface/duplicate-sheet.js +73 -26
  557. package/dist/esm/interface/embeds.d.ts +10 -1
  558. package/dist/esm/interface/embeds.d.ts.map +1 -1
  559. package/dist/esm/interface/embeds.js +84 -5
  560. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  561. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  562. package/dist/esm/interface/insert-cells-shift-down.js +11 -1
  563. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  564. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  565. package/dist/esm/interface/insert-cells-shift-right.js +11 -1
  566. package/dist/esm/interface/insert-column.d.ts +2 -2
  567. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  568. package/dist/esm/interface/insert-column.js +49 -23
  569. package/dist/esm/interface/insert-row.d.ts +1 -1
  570. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  571. package/dist/esm/interface/insert-row.js +10 -2
  572. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  573. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  574. package/dist/esm/interface/insert-table-row.js +67 -12
  575. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  576. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  577. package/dist/esm/interface/remove-duplicates.js +41 -6
  578. package/dist/esm/interface/remove-table.d.ts +1 -1
  579. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  580. package/dist/esm/interface/remove-table.js +58 -10
  581. package/dist/esm/interface/slicers.d.ts +12 -1
  582. package/dist/esm/interface/slicers.d.ts.map +1 -1
  583. package/dist/esm/interface/slicers.js +44 -2
  584. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  585. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  586. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  587. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  588. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  589. package/dist/esm/interface/table-totalrow.js +98 -68
  590. package/dist/esm/interface/table-utils.d.ts +59 -6
  591. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  592. package/dist/esm/interface/table-utils.js +155 -14
  593. package/dist/esm/interface/update-table.d.ts +16 -1
  594. package/dist/esm/interface/update-table.d.ts.map +1 -1
  595. package/dist/esm/interface/update-table.js +203 -42
  596. package/dist/esm/sheet-cell.d.ts.map +1 -1
  597. package/dist/esm/test-setup.d.ts.map +1 -1
  598. package/dist/esm/test-setup.js +6 -0
  599. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  600. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  601. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  602. package/dist/esm/validation-schema/table.schema.js +15 -2
  603. package/package.json +19 -11
@@ -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,SAyRnD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { produceWithPatches } from "immer";
2
+ import { refreshCitationAnchor, 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
@@ -78,6 +79,7 @@ export const insertCellsShiftDown = ({ rowCount, columnCount, locale, cellXfsReg
78
79
  if (citation.range.startRowIndex >= r1) {
79
80
  citation.range.startRowIndex += count;
80
81
  citation.range.endRowIndex += count;
82
+ refreshCitationAnchor(citation);
81
83
  }
82
84
  }
83
85
  }
@@ -87,6 +89,14 @@ export const insertCellsShiftDown = ({ rowCount, columnCount, locale, cellXfsReg
87
89
  });
88
90
  return nextState;
89
91
  });
92
+ // Chart ranges wholly inside the shifted columns grow/shift like references; the frame stays put.
93
+ onChangeCharts?.((prevCharts) => {
94
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
95
+ shiftChartsOnCellShift(draft, sheetId, "row", "insert", r1, count, { startIndex: c1, endIndex: c2 });
96
+ });
97
+ saveHistory({ charts: { patches, inversePatches } });
98
+ return nextState;
99
+ });
90
100
  // Sheet data
91
101
  onChangeSheetData?.((prevSheetData) => {
92
102
  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,SA0RnD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { createArrayRange } from "@rowsncolumns/utils";
2
2
  import { produceWithPatches } from "immer";
3
+ import { refreshCitationAnchor, 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
@@ -79,6 +80,7 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
79
80
  if (citation.range.startColumnIndex >= c1) {
80
81
  citation.range.startColumnIndex += count;
81
82
  citation.range.endColumnIndex += count;
83
+ refreshCitationAnchor(citation);
82
84
  }
83
85
  }
84
86
  }
@@ -88,6 +90,14 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
88
90
  });
89
91
  return nextState;
90
92
  });
93
+ // Chart ranges wholly inside the shifted rows widen/shift like references; the frame stays put.
94
+ onChangeCharts?.((prevCharts) => {
95
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
96
+ shiftChartsOnCellShift(draft, sheetId, "column", "insert", c1, count, { startIndex: r1, endIndex: r2 });
97
+ });
98
+ saveHistory({ charts: { patches, inversePatches } });
99
+ return nextState;
100
+ });
91
101
  // Sheet data
92
102
  onChangeSheetData?.((prevSheetData) => {
93
103
  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;AAkC5E,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,SAoatE,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;AAqC5E,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,SAqbtE,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,7 +1,7 @@
1
1
  import { Direction } from "@rowsncolumns/common-types";
2
2
  import { isNil } from "@rowsncolumns/utils";
3
3
  import { produceWithPatches } from "immer";
4
- import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
4
+ import { shiftChartsOnStructuralChange, shiftChartsOnTableEdit, shiftEmbedsOnStructuralChange, shiftSlicersOnStructuralChange, shiftProtectedRangesOnStructuralChange, refreshCitationAnchor, tableBinding, } from "../api/anchored-objects";
5
5
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
6
6
  import { createSheetCellIdentifier, expandRangesInFormula, } from "../api/formula";
7
7
  import { cloneCellWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
@@ -11,10 +11,9 @@ import { shiftPivotsOnInsert } from "../api/pivot-range";
11
11
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
12
12
  import { moveFilterView } from "../api/selection";
13
13
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
14
- import { getGeneratedTableColumnName } from "../generated-names";
15
14
  import { getNextTableColumnName } from "../helpers";
16
15
  import { SheetCell } from "../sheet-cell";
17
- 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, }) => {
18
17
  return (sheetId, referenceColumnIndex, numColumns = 1) => {
19
18
  if (numColumns <= 0)
20
19
  return;
@@ -111,6 +110,7 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
111
110
  if (referenceColumnIndex <= citation.range.startColumnIndex) {
112
111
  citation.range.startColumnIndex += numColumns;
113
112
  citation.range.endColumnIndex += numColumns;
113
+ refreshCitationAnchor(citation);
114
114
  }
115
115
  }
116
116
  });
@@ -128,6 +128,13 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
128
128
  saveHistory({ embeds: { patches, inversePatches } });
129
129
  return nextState;
130
130
  });
131
+ onChangeSlicers?.((prevSlicers) => {
132
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSlicers, (draft) => {
133
+ shiftSlicersOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
134
+ });
135
+ saveHistory({ slicers: { patches, inversePatches } });
136
+ return nextState;
137
+ });
131
138
  onChangeCharts?.((prevCharts) => {
132
139
  const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
133
140
  shiftChartsOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
@@ -243,22 +250,20 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
243
250
  // affected by the insertion.
244
251
  for (const { range, sheetId: tSheetId, headerRow, columns } of tables ?? []) {
245
252
  if (tSheetId !== sheetId ||
246
- !headerRow ||
253
+ headerRow === false ||
247
254
  referenceColumnIndex <= range.startColumnIndex ||
248
255
  referenceColumnIndex > range.endColumnIndex) {
249
256
  continue;
250
257
  }
251
258
  const currentSheet = createSheetDraft(draft, tSheetId, range.startRowIndex);
259
+ // The same first-free `ColumnN` walk as the table's `columns`
260
+ // above: each generated name is reserved for the next one.
261
+ const existingColumns = [...(columns || [])];
252
262
  for (let i = 0; i < numColumns; i++) {
253
263
  const currentColumnIndex = referenceColumnIndex + i;
254
264
  const formattingSource = cloneCellWithFormatting(draft[tSheetId]?.[range.startRowIndex]?.values?.[currentColumnIndex]);
255
- const existingColumns = [...(columns || [])];
256
- for (let j = 0; j < i; j++) {
257
- existingColumns.push({
258
- name: getGeneratedTableColumnName(j + 1, generatedNames),
259
- });
260
- }
261
265
  const columnName = getNextTableColumnName(existingColumns, generatedNames);
266
+ existingColumns.push({ name: columnName });
262
267
  const sheetCell = new SheetCell(tSheetId, {
263
268
  rowIndex: range.startRowIndex,
264
269
  columnIndex: currentColumnIndex,
@@ -286,10 +291,21 @@ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, ta
286
291
  // existing table view) and uses the legacy three-pass logic below. Worth
287
292
  // migrating to the shared helper later but leaving it untouched here to keep
288
293
  // scope tight.
289
- export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }) => {
290
- return (tableView, dimensionIndex, direction) => {
294
+ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, onChangeCharts, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }) => {
295
+ return (tableView, dimensionIndex, direction, count = 1) => {
291
296
  const { sheetId } = tableView;
292
- const numColumns = 1;
297
+ const numColumns = Math.max(1, Math.floor(count));
298
+ // One generated name per inserted column, each unique against the
299
+ // table's columns and the names generated before it.
300
+ const newColumnNames = [];
301
+ {
302
+ const columns = [...(tableView.columns ?? [])];
303
+ for (let index = 0; index < numColumns; index++) {
304
+ const name = getNextTableColumnName(columns, generatedNames);
305
+ newColumnNames.push(name);
306
+ columns.push({ name });
307
+ }
308
+ }
293
309
  const saveHistory = createHistory();
294
310
  const recalcCells = new Map();
295
311
  let referenceColumnIndex = tableView.range.startColumnIndex + dimensionIndex;
@@ -321,8 +337,7 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
321
337
  if (referenceColumnIndex >= table.range.startColumnIndex &&
322
338
  referenceColumnIndex <= table.range.endColumnIndex + numColumns) {
323
339
  const tableColumnIndex = referenceColumnIndex - table.range.startColumnIndex;
324
- const columnName = getNextTableColumnName(table.columns ?? undefined, generatedNames);
325
- table.columns?.splice(tableColumnIndex, 0, { name: columnName });
340
+ table.columns?.splice(tableColumnIndex, 0, ...newColumnNames.map((name) => ({ name })));
326
341
  if (table.filterSpecs) {
327
342
  for (const spec of table.filterSpecs) {
328
343
  if (spec.columnIndex >= referenceColumnIndex) {
@@ -344,6 +359,15 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
344
359
  saveHistory({ tables: { patches, inversePatches } });
345
360
  return nextState;
346
361
  });
362
+ // Chart ranges inside the table's rows follow the shifted cells; a range reading the whole
363
+ // table (its body, or header + body, across every column) gains the column with it.
364
+ onChangeCharts?.((prevCharts) => {
365
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
366
+ shiftChartsOnTableEdit(draft, sheetId, tableBinding(tableView), "column", "insert", referenceColumnIndex, numColumns);
367
+ });
368
+ saveHistory({ charts: { patches, inversePatches } });
369
+ return nextState;
370
+ });
347
371
  onChangeSheets?.((prevSheets) => {
348
372
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
349
373
  const sheet = draft.find((sheet) => sheet.sheetId === sheetId);
@@ -513,14 +537,16 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
513
537
  referenceColumnIndex >= range.startColumnIndex &&
514
538
  referenceColumnIndex <= range.endColumnIndex + numColumns) {
515
539
  const currentSheet = createSheetDraft(draft, sheetId, range.startRowIndex);
516
- const columnName = getNextTableColumnName(tableView.columns ?? undefined, generatedNames);
517
- const sheetCell = new SheetCell(sheetId, {
518
- rowIndex: range.startRowIndex,
519
- columnIndex: referenceColumnIndex,
520
- }, cloneCellWithFormatting(draft[sheetId]?.[range.startRowIndex]?.values?.[referenceColumnIndex]));
521
- sheetCell.setUserEnteredValue(columnName);
522
- currentSheet[range.startRowIndex].values[referenceColumnIndex] =
523
- sheetCell.getCellData();
540
+ newColumnNames.forEach((columnName, index) => {
541
+ const columnIndex = referenceColumnIndex + index;
542
+ const sheetCell = new SheetCell(sheetId, {
543
+ rowIndex: range.startRowIndex,
544
+ columnIndex,
545
+ }, cloneCellWithFormatting(draft[sheetId]?.[range.startRowIndex]?.values?.[columnIndex]));
546
+ sheetCell.setUserEnteredValue(columnName);
547
+ currentSheet[range.startRowIndex].values[columnIndex] =
548
+ sheetCell.getCellData();
549
+ });
524
550
  }
525
551
  });
526
552
  saveHistory({
@@ -1,4 +1,4 @@
1
1
  import type { CellData, Sheet } from "@rowsncolumns/spreadsheet";
2
2
  import type { UseOnInsertRowProps } from "../hooks/use-on-insert-row";
3
- export declare const insertRow: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, maxRowCount, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getSelections, getDependents, getGraphNodes, getGraphNodesInSheet, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, }: UseOnInsertRowProps<T, S>) => (sheetId: number, referenceRowIndex: number, numRows?: number) => void;
3
+ export declare const insertRow: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, maxRowCount, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getSelections, getDependents, getGraphNodes, getGraphNodesInSheet, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeSlicers, onChangeCharts, onChangeProtectedRanges, }: UseOnInsertRowProps<T, S>) => (sheetId: number, referenceRowIndex: number, numRows?: number) => void;
4
4
  //# sourceMappingURL=insert-row.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAsBjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,weA4B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,mBAAmB,MAAM,EAAE,gBAAW,SA0ThE,CAAC"}
1
+ {"version":3,"file":"insert-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAwBjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,yfA6B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,mBAAmB,MAAM,EAAE,gBAAW,SA6UhE,CAAC"}