@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
@@ -2,7 +2,7 @@ import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { Direction } from "@rowsncolumns/common-types";
3
3
  import { isNil } from "@rowsncolumns/utils";
4
4
  import { produceWithPatches } from "immer";
5
- import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
5
+ import { shiftChartsOnStructuralChange, shiftChartsOnTableEdit, shiftEmbedsOnStructuralChange, shiftSlicersOnStructuralChange, shiftProtectedRangesOnStructuralChange, refreshCitationAnchor, tableBinding, } from "../api/anchored-objects";
6
6
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
7
7
  import { createSheetCellIdentifier, expandRangesInFormula, } from "../api/formula";
8
8
  import { cloneCellWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
@@ -12,11 +12,10 @@ import { shiftPivotsOnInsert } from "../api/pivot-range";
12
12
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
13
13
  import { moveFilterView } from "../api/selection";
14
14
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
15
- import { getGeneratedTableColumnName } from "../generated-names";
16
15
  import { getNextTableColumnName } from "../helpers";
17
16
  import { SheetCell } from "../sheet-cell";
18
17
  export var insertColumn = function (_a) {
19
- var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, maxColumnCount = _a.maxColumnCount, tables = _a.tables, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getGraphNodesInSheet = _a.getGraphNodesInSheet, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeEmbeds = _a.onChangeEmbeds, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges, generatedNames = _a.generatedNames;
18
+ var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, maxColumnCount = _a.maxColumnCount, tables = _a.tables, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getGraphNodesInSheet = _a.getGraphNodesInSheet, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeEmbeds = _a.onChangeEmbeds, onChangeSlicers = _a.onChangeSlicers, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges, generatedNames = _a.generatedNames;
20
19
  return function (sheetId, referenceColumnIndex, numColumns) {
21
20
  if (numColumns === void 0) { numColumns = 1; }
22
21
  if (numColumns <= 0)
@@ -149,6 +148,7 @@ export var insertColumn = function (_a) {
149
148
  if (referenceColumnIndex <= citation.range.startColumnIndex) {
150
149
  citation.range.startColumnIndex += numColumns;
151
150
  citation.range.endColumnIndex += numColumns;
151
+ refreshCitationAnchor(citation);
152
152
  }
153
153
  }
154
154
  }
@@ -174,6 +174,13 @@ export var insertColumn = function (_a) {
174
174
  saveHistory({ embeds: { patches: patches, inversePatches: inversePatches } });
175
175
  return nextState;
176
176
  });
177
+ onChangeSlicers === null || onChangeSlicers === void 0 ? void 0 : onChangeSlicers(function (prevSlicers) {
178
+ var _a = __read(produceWithPatches(prevSlicers, function (draft) {
179
+ shiftSlicersOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
180
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
181
+ saveHistory({ slicers: { patches: patches, inversePatches: inversePatches } });
182
+ return nextState;
183
+ });
177
184
  onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
178
185
  var _a = __read(produceWithPatches(prevCharts, function (draft) {
179
186
  shiftChartsOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
@@ -324,22 +331,20 @@ export var insertColumn = function (_a) {
324
331
  for (var _f = __values(tables !== null && tables !== void 0 ? tables : []), _g = _f.next(); !_g.done; _g = _f.next()) {
325
332
  var _h = _g.value, range = _h.range, tSheetId = _h.sheetId, headerRow = _h.headerRow, columns = _h.columns;
326
333
  if (tSheetId !== sheetId ||
327
- !headerRow ||
334
+ headerRow === false ||
328
335
  referenceColumnIndex <= range.startColumnIndex ||
329
336
  referenceColumnIndex > range.endColumnIndex) {
330
337
  continue;
331
338
  }
332
339
  var currentSheet = createSheetDraft(draft, tSheetId, range.startRowIndex);
340
+ // The same first-free `ColumnN` walk as the table's `columns`
341
+ // above: each generated name is reserved for the next one.
342
+ var existingColumns = __spreadArray([], __read((columns || [])), false);
333
343
  for (var i = 0; i < numColumns; i++) {
334
344
  var currentColumnIndex = referenceColumnIndex + i;
335
345
  var formattingSource = cloneCellWithFormatting((_e = (_d = (_c = draft[tSheetId]) === null || _c === void 0 ? void 0 : _c[range.startRowIndex]) === null || _d === void 0 ? void 0 : _d.values) === null || _e === void 0 ? void 0 : _e[currentColumnIndex]);
336
- var existingColumns = __spreadArray([], __read((columns || [])), false);
337
- for (var j = 0; j < i; j++) {
338
- existingColumns.push({
339
- name: getGeneratedTableColumnName(j + 1, generatedNames),
340
- });
341
- }
342
346
  var columnName = getNextTableColumnName(existingColumns, generatedNames);
347
+ existingColumns.push({ name: columnName });
343
348
  var sheetCell = new SheetCell(tSheetId, {
344
349
  rowIndex: range.startRowIndex,
345
350
  columnIndex: currentColumnIndex,
@@ -376,10 +381,23 @@ export var insertColumn = function (_a) {
376
381
  // migrating to the shared helper later but leaving it untouched here to keep
377
382
  // scope tight.
378
383
  export var insertTableColumn = function (_a) {
379
- var tables = _a.tables, columnCount = _a.columnCount, rowCount = _a.rowCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, createHistory = _a.createHistory, onChangeTables = _a.onChangeTables, onChangeSheets = _a.onChangeSheets, onChangeSheetData = _a.onChangeSheetData, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, getDependents = _a.getDependents, generatedNames = _a.generatedNames;
380
- return function (tableView, dimensionIndex, direction) {
384
+ var tables = _a.tables, columnCount = _a.columnCount, rowCount = _a.rowCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, createHistory = _a.createHistory, onChangeTables = _a.onChangeTables, onChangeSheets = _a.onChangeSheets, onChangeSheetData = _a.onChangeSheetData, onChangeCharts = _a.onChangeCharts, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, getDependents = _a.getDependents, generatedNames = _a.generatedNames;
385
+ return function (tableView, dimensionIndex, direction, count) {
386
+ var _a;
387
+ if (count === void 0) { count = 1; }
381
388
  var sheetId = tableView.sheetId;
382
- var numColumns = 1;
389
+ var numColumns = Math.max(1, Math.floor(count));
390
+ // One generated name per inserted column, each unique against the
391
+ // table's columns and the names generated before it.
392
+ var newColumnNames = [];
393
+ {
394
+ var columns = __spreadArray([], __read(((_a = tableView.columns) !== null && _a !== void 0 ? _a : [])), false);
395
+ for (var index = 0; index < numColumns; index++) {
396
+ var name_1 = getNextTableColumnName(columns, generatedNames);
397
+ newColumnNames.push(name_1);
398
+ columns.push({ name: name_1 });
399
+ }
400
+ }
383
401
  var saveHistory = createHistory();
384
402
  var recalcCells = new Map();
385
403
  var referenceColumnIndex = tableView.range.startColumnIndex + dimensionIndex;
@@ -399,7 +417,7 @@ export var insertTableColumn = function (_a) {
399
417
  onChangeTables === null || onChangeTables === void 0 ? void 0 : onChangeTables(function (prevTables) {
400
418
  var _a = __read(produceWithPatches(prevTables, function (draft) {
401
419
  var e_8, _a, e_9, _b, e_10, _c;
402
- var _d, _e;
420
+ var _d;
403
421
  try {
404
422
  for (var draft_3 = __values(draft), draft_3_1 = draft_3.next(); !draft_3_1.done; draft_3_1 = draft_3.next()) {
405
423
  var table_1 = draft_3_1.value;
@@ -423,12 +441,12 @@ export var insertTableColumn = function (_a) {
423
441
  if (referenceColumnIndex >= table.range.startColumnIndex &&
424
442
  referenceColumnIndex <= table.range.endColumnIndex + numColumns) {
425
443
  var tableColumnIndex = referenceColumnIndex - table.range.startColumnIndex;
426
- var columnName = getNextTableColumnName((_d = table.columns) !== null && _d !== void 0 ? _d : undefined, generatedNames);
427
- (_e = table.columns) === null || _e === void 0 ? void 0 : _e.splice(tableColumnIndex, 0, { name: columnName });
444
+ (_d = table.columns) === null || _d === void 0 ? void 0 : _d.splice.apply(_d, __spreadArray([tableColumnIndex,
445
+ 0], __read(newColumnNames.map(function (name) { return ({ name: name }); })), false));
428
446
  if (table.filterSpecs) {
429
447
  try {
430
- for (var _f = __values(table.filterSpecs), _g = _f.next(); !_g.done; _g = _f.next()) {
431
- var spec = _g.value;
448
+ for (var _e = __values(table.filterSpecs), _f = _e.next(); !_f.done; _f = _e.next()) {
449
+ var spec = _f.value;
432
450
  if (spec.columnIndex >= referenceColumnIndex) {
433
451
  spec.columnIndex += numColumns;
434
452
  }
@@ -437,15 +455,15 @@ export var insertTableColumn = function (_a) {
437
455
  catch (e_9_1) { e_9 = { error: e_9_1 }; }
438
456
  finally {
439
457
  try {
440
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
458
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
441
459
  }
442
460
  finally { if (e_9) throw e_9.error; }
443
461
  }
444
462
  }
445
463
  if (table.sortSpecs) {
446
464
  try {
447
- for (var _h = __values(table.sortSpecs), _j = _h.next(); !_j.done; _j = _h.next()) {
448
- var spec = _j.value;
465
+ for (var _g = __values(table.sortSpecs), _h = _g.next(); !_h.done; _h = _g.next()) {
466
+ var spec = _h.value;
449
467
  if (spec.dimensionIndex >= referenceColumnIndex) {
450
468
  spec.dimensionIndex += numColumns;
451
469
  }
@@ -454,7 +472,7 @@ export var insertTableColumn = function (_a) {
454
472
  catch (e_10_1) { e_10 = { error: e_10_1 }; }
455
473
  finally {
456
474
  try {
457
- if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
475
+ if (_h && !_h.done && (_c = _g.return)) _c.call(_g);
458
476
  }
459
477
  finally { if (e_10) throw e_10.error; }
460
478
  }
@@ -466,6 +484,15 @@ export var insertTableColumn = function (_a) {
466
484
  saveHistory({ tables: { patches: patches, inversePatches: inversePatches } });
467
485
  return nextState;
468
486
  });
487
+ // Chart ranges inside the table's rows follow the shifted cells; a range reading the whole
488
+ // table (its body, or header + body, across every column) gains the column with it.
489
+ onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
490
+ var _a = __read(produceWithPatches(prevCharts, function (draft) {
491
+ shiftChartsOnTableEdit(draft, sheetId, tableBinding(tableView), "column", "insert", referenceColumnIndex, numColumns);
492
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
493
+ saveHistory({ charts: { patches: patches, inversePatches: inversePatches } });
494
+ return nextState;
495
+ });
469
496
  onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
470
497
  var _a = __read(produceWithPatches(prevSheets, function (draft) {
471
498
  var _a, e_11, _b, e_12, _c;
@@ -536,7 +563,7 @@ export var insertTableColumn = function (_a) {
536
563
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
537
564
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
538
565
  var e_13, _a, e_14, _b;
539
- var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
566
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
540
567
  var range = tableView.range;
541
568
  var headerRow = (_c = tableView.headerRow) !== null && _c !== void 0 ? _c : true;
542
569
  // The moved region is every cell at/after the insertion point within the table's
@@ -558,8 +585,8 @@ export var insertTableColumn = function (_a) {
558
585
  });
559
586
  var sheetCell = new SheetCell();
560
587
  try {
561
- for (var _1 = __values(formulasToExpand.values()), _2 = _1.next(); !_2.done; _2 = _1.next()) {
562
- var pos = _2.value;
588
+ for (var _x = __values(formulasToExpand.values()), _y = _x.next(); !_y.done; _y = _x.next()) {
589
+ var pos = _y.value;
563
590
  var currentSheet = createSheetDraft(draft, sheetId, pos.rowIndex);
564
591
  var cellData = (_e = (_d = currentSheet[pos.rowIndex]) === null || _d === void 0 ? void 0 : _d.values) === null || _e === void 0 ? void 0 : _e[pos.columnIndex];
565
592
  if (!cellData)
@@ -599,7 +626,7 @@ export var insertTableColumn = function (_a) {
599
626
  catch (e_13_1) { e_13 = { error: e_13_1 }; }
600
627
  finally {
601
628
  try {
602
- if (_2 && !_2.done && (_a = _1.return)) _a.call(_1);
629
+ if (_y && !_y.done && (_a = _x.return)) _a.call(_x);
603
630
  }
604
631
  finally { if (e_13) throw e_13.error; }
605
632
  }
@@ -611,8 +638,8 @@ export var insertTableColumn = function (_a) {
611
638
  getDependents: getDependents,
612
639
  });
613
640
  try {
614
- for (var _3 = __values(tableDependents.values()), _4 = _3.next(); !_4.done; _4 = _3.next()) {
615
- var pos = _4.value;
641
+ for (var _z = __values(tableDependents.values()), _0 = _z.next(); !_0.done; _0 = _z.next()) {
642
+ var pos = _0.value;
616
643
  moveFormulaAtPosition({
617
644
  draft: draft,
618
645
  position: pos,
@@ -635,7 +662,7 @@ export var insertTableColumn = function (_a) {
635
662
  catch (e_14_1) { e_14 = { error: e_14_1 }; }
636
663
  finally {
637
664
  try {
638
- if (_4 && !_4.done && (_b = _3.return)) _b.call(_3);
665
+ if (_0 && !_0.done && (_b = _z.return)) _b.call(_z);
639
666
  }
640
667
  finally { if (e_14) throw e_14.error; }
641
668
  }
@@ -679,15 +706,18 @@ export var insertTableColumn = function (_a) {
679
706
  if (headerRow &&
680
707
  referenceColumnIndex >= range.startColumnIndex &&
681
708
  referenceColumnIndex <= range.endColumnIndex + numColumns) {
682
- var currentSheet = createSheetDraft(draft, sheetId, range.startRowIndex);
683
- var columnName = getNextTableColumnName((_x = tableView.columns) !== null && _x !== void 0 ? _x : undefined, generatedNames);
684
- var sheetCell_1 = new SheetCell(sheetId, {
685
- rowIndex: range.startRowIndex,
686
- columnIndex: referenceColumnIndex,
687
- }, cloneCellWithFormatting((_0 = (_z = (_y = draft[sheetId]) === null || _y === void 0 ? void 0 : _y[range.startRowIndex]) === null || _z === void 0 ? void 0 : _z.values) === null || _0 === void 0 ? void 0 : _0[referenceColumnIndex]));
688
- sheetCell_1.setUserEnteredValue(columnName);
689
- currentSheet[range.startRowIndex].values[referenceColumnIndex] =
690
- sheetCell_1.getCellData();
709
+ var currentSheet_1 = createSheetDraft(draft, sheetId, range.startRowIndex);
710
+ newColumnNames.forEach(function (columnName, index) {
711
+ var _a, _b, _c;
712
+ var columnIndex = referenceColumnIndex + index;
713
+ var sheetCell = new SheetCell(sheetId, {
714
+ rowIndex: range.startRowIndex,
715
+ columnIndex: columnIndex,
716
+ }, cloneCellWithFormatting((_c = (_b = (_a = draft[sheetId]) === null || _a === void 0 ? void 0 : _a[range.startRowIndex]) === null || _b === void 0 ? void 0 : _b.values) === null || _c === void 0 ? void 0 : _c[columnIndex]));
717
+ sheetCell.setUserEnteredValue(columnName);
718
+ currentSheet_1[range.startRowIndex].values[columnIndex] =
719
+ sheetCell.getCellData();
720
+ });
691
721
  }
692
722
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
693
723
  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"}
@@ -1,7 +1,7 @@
1
1
  import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { Direction } from "@rowsncolumns/common-types";
3
3
  import { produceWithPatches } from "immer";
4
- import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
4
+ import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftSlicersOnStructuralChange, shiftProtectedRangesOnStructuralChange, refreshCitationAnchor, } from "../api/anchored-objects";
5
5
  import { cloneRowWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
6
6
  import { expandMergesOnRowInsert } from "../api/merges";
7
7
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
@@ -10,7 +10,7 @@ import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
10
10
  import { moveFilterView } from "../api/selection";
11
11
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
12
12
  export var insertRow = function (_a) {
13
- var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, maxRowCount = _a.maxRowCount, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getGraphNodesInSheet = _a.getGraphNodesInSheet, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeEmbeds = _a.onChangeEmbeds, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges;
13
+ var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, maxRowCount = _a.maxRowCount, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getGraphNodesInSheet = _a.getGraphNodesInSheet, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeEmbeds = _a.onChangeEmbeds, onChangeSlicers = _a.onChangeSlicers, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges;
14
14
  return function (sheetId, referenceRowIndex, numRows) {
15
15
  if (numRows === void 0) { numRows = 1; }
16
16
  if (numRows <= 0)
@@ -104,6 +104,7 @@ export var insertRow = function (_a) {
104
104
  if (referenceRowIndex <= citation.range.startRowIndex) {
105
105
  citation.range.startRowIndex += numRows;
106
106
  citation.range.endRowIndex += numRows;
107
+ refreshCitationAnchor(citation);
107
108
  }
108
109
  }
109
110
  }
@@ -129,6 +130,13 @@ export var insertRow = function (_a) {
129
130
  saveHistory({ embeds: { patches: patches, inversePatches: inversePatches } });
130
131
  return nextState;
131
132
  });
133
+ onChangeSlicers === null || onChangeSlicers === void 0 ? void 0 : onChangeSlicers(function (prevSlicers) {
134
+ var _a = __read(produceWithPatches(prevSlicers, function (draft) {
135
+ shiftSlicersOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
136
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
137
+ saveHistory({ slicers: { patches: patches, inversePatches: inversePatches } });
138
+ return nextState;
139
+ });
132
140
  onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
133
141
  var _a = __read(produceWithPatches(prevCharts, function (draft) {
134
142
  shiftChartsOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
@@ -1,4 +1,5 @@
1
1
  import type { CellData, Sheet, TableView } from "@rowsncolumns/spreadsheet";
2
2
  import type { UseOnInsertTableRowProps } from "../hooks/use-on-insert-table-row";
3
- export declare const insertTableRow: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getDependents, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, }: UseOnInsertTableRowProps<T, S>) => (tableView: TableView, relativeRowIndex?: number, rowData?: Record<string, string | undefined | null>[]) => void;
3
+ import type { SpreadsheetPatch } from "../hooks/use-undo-redo";
4
+ export declare const insertTableRow: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getDependents, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCharts, onChangeDataValidations, onChangeConditionalFormats, }: UseOnInsertTableRowProps<T, S>) => (tableView: TableView, relativeRowIndex?: number, rowData?: Record<string, string | undefined | null>[], saveHistory?: (patches: SpreadsheetPatch) => void) => void;
4
5
  //# sourceMappingURL=insert-table-row.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-table-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAa5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iTAkBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE7B,WAAW,SAAS,EACpB,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,SAubxD,CAAC"}
1
+ {"version":3,"file":"insert-table-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAc5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iUAmBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE7B,WAAW,SAAS,EACpB,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAIrD,cAAa,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAsB,SAugBrE,CAAC"}
@@ -2,6 +2,7 @@ import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { Direction } from "@rowsncolumns/common-types";
3
3
  import { getCellUserEnteredValue, getExtendedValueFormula } from "@rowsncolumns/utils";
4
4
  import { produceWithPatches } from "immer";
5
+ import { shiftChartsOnTableEdit, tableBinding } from "../api/anchored-objects";
5
6
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
6
7
  import { createSheetCellIdentifier, expandRangesInFormula } from "../api/formula";
7
8
  import { createSheetDraft } from "../api/immer-utils";
@@ -9,12 +10,26 @@ import { moveMergedCells } from "../api/merges";
9
10
  import { updateSheetRangeOnInsert } from "../api/range";
10
11
  import { moveFilterView } from "../api/selection";
11
12
  import { SheetCell } from "../sheet-cell";
13
+ import { getCalculatedColumnTemplate, getRowRelativeFormula, getTableFirstBodyRowIndex, } from "./change-table-column";
12
14
  export var insertTableRow = function (_a) {
13
- var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, getActiveCell = _a.getActiveCell, getDependents = _a.getDependents, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats;
14
- return function (tableView, relativeRowIndex, rowData) {
15
+ var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, getActiveCell = _a.getActiveCell, getDependents = _a.getDependents, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCharts = _a.onChangeCharts, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats;
16
+ return function (tableView, relativeRowIndex, rowData,
17
+ // A caller folding the insert into its own history step (the totals-row
18
+ // toggle that must first shift occupied cells out of the way) passes its
19
+ // `saveHistory`; otherwise the insert is one undo step of its own.
20
+ saveHistory) {
15
21
  var _a;
16
- var referenceRowIndex = tableView.range.startRowIndex +
17
- (relativeRowIndex !== null && relativeRowIndex !== void 0 ? relativeRowIndex : tableView.range.endRowIndex - tableView.range.startRowIndex + 1);
22
+ if (saveHistory === void 0) { saveHistory = createHistory(); }
23
+ // `relativeRowIndex` counts from `range.startRowIndex` (the header row when
24
+ // there is one), clamped to the body: never above the first body row and,
25
+ // with a totals row, never below it — the new data row goes ABOVE the
26
+ // totals row, which moves down (Excel never inserts a data row below the
27
+ // totals).
28
+ var firstBodyRowIndex = tableView.range.startRowIndex + (tableView.headerRow ? 1 : 0);
29
+ var lastInsertRowIndex = tableView.range.endRowIndex + (tableView.totalRow ? 0 : 1);
30
+ var referenceRowIndex = Math.min(Math.max(tableView.range.startRowIndex +
31
+ (relativeRowIndex !== null && relativeRowIndex !== void 0 ? relativeRowIndex : tableView.range.endRowIndex - tableView.range.startRowIndex + 1), Math.min(firstBodyRowIndex, lastInsertRowIndex)), lastInsertRowIndex);
32
+ var insertsAboveTotalRow = !!tableView.totalRow && referenceRowIndex === tableView.range.endRowIndex;
18
33
  var numRows = (_a = rowData === null || rowData === void 0 ? void 0 : rowData.length) !== null && _a !== void 0 ? _a : 1;
19
34
  var sheetId = tableView.sheetId;
20
35
  var _b = tableView.range, startColumnIndex = _b.startColumnIndex, endColumnIndex = _b.endColumnIndex;
@@ -22,6 +37,7 @@ export var insertTableRow = function (_a) {
22
37
  return range.startColumnIndex >= startColumnIndex &&
23
38
  range.endColumnIndex <= endColumnIndex;
24
39
  };
40
+ var binding = tableBinding(tableView);
25
41
  enqueueStructureChange === null || enqueueStructureChange === void 0 ? void 0 : enqueueStructureChange({
26
42
  kind: "insert-table-row",
27
43
  sheetId: sheetId,
@@ -31,7 +47,6 @@ export var insertTableRow = function (_a) {
31
47
  startColumnIndex: tableView.range.startColumnIndex,
32
48
  endColumnIndex: tableView.range.endColumnIndex,
33
49
  });
34
- var saveHistory = createHistory();
35
50
  // We need to track this for history. Precedent cells
36
51
  var recalcCells = new Map();
37
52
  // Update table position
@@ -66,6 +81,15 @@ export var insertTableRow = function (_a) {
66
81
  });
67
82
  return nextState;
68
83
  });
84
+ // Chart ranges inside the table's columns follow the shifted cells; a range bound to the table
85
+ // (a column's body, or header + body) grows with it even when the rows land below the last one.
86
+ onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
87
+ var _a = __read(produceWithPatches(prevCharts, function (draft) {
88
+ shiftChartsOnTableEdit(draft, sheetId, binding, "row", "insert", referenceRowIndex, numRows);
89
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
90
+ saveHistory({ charts: { patches: patches, inversePatches: inversePatches } });
91
+ return nextState;
92
+ });
69
93
  // Update data validations
70
94
  onChangeDataValidations === null || onChangeDataValidations === void 0 ? void 0 : onChangeDataValidations(function (prevValidations) {
71
95
  var _a = __read(produceWithPatches(prevValidations, function (draft) {
@@ -158,8 +182,28 @@ export var insertTableRow = function (_a) {
158
182
  var e_2, _a, e_3, _b;
159
183
  var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
160
184
  var totalRows = (_d = (_c = draft[sheetId]) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : rowCount;
161
- var sourceRange = __assign(__assign({}, tableView.range), { startRowIndex: referenceRowIndex });
185
+ // Every cell of the table's columns from the insertion point shifts down — through the
186
+ // sheet's last used row, not just the table's — so formulas inside that band and
187
+ // references into it re-anchor over the whole band (mirrors `deleteTableRow`).
188
+ var sourceRange = __assign(__assign({}, tableView.range), { startRowIndex: referenceRowIndex, endRowIndex: Math.max(tableView.range.endRowIndex, totalRows - 1) });
162
189
  var movedKeys = new Set();
190
+ // Each calculated column's formula (written for the first body row), read from the
191
+ // body BEFORE the shift: the inserted rows inherit it (Excel).
192
+ var activeSheetName = getSheetName(sheetId);
193
+ var firstBodyRowIndex = getTableFirstBodyRowIndex(tableView);
194
+ var calculatedTemplates = new Map();
195
+ for (var columnIndex = tableView.range.startColumnIndex; columnIndex <= tableView.range.endColumnIndex; columnIndex++) {
196
+ var template = getCalculatedColumnTemplate({
197
+ draft: draft,
198
+ sheetId: sheetId,
199
+ table: tableView,
200
+ columnIndex: columnIndex,
201
+ activeSheetName: activeSheetName,
202
+ });
203
+ if (template) {
204
+ calculatedTemplates.set(columnIndex, template);
205
+ }
206
+ }
163
207
  /**
164
208
  * THREE-PASS FORMULA UPDATE STRATEGY:
165
209
  *
@@ -204,8 +248,8 @@ export var insertTableRow = function (_a) {
204
248
  sheetCell.assign(pos.sheetId, { rowIndex: pos.rowIndex, columnIndex: pos.columnIndex }, cellData);
205
249
  var formulaValue = sheetCell.formula;
206
250
  if (formulaValue) {
207
- var activeSheetName = getSheetName(pos.sheetId);
208
- var expandedFormula = expandRangesInFormula(formulaValue, referenceRowIndex, numRows, "row", activeSheetName);
251
+ var activeSheetName_1 = getSheetName(pos.sheetId);
252
+ var expandedFormula = expandRangesInFormula(formulaValue, referenceRowIndex, numRows, "row", activeSheetName_1);
209
253
  // Update the formula if it changed
210
254
  if (expandedFormula && expandedFormula !== formulaValue) {
211
255
  // Preserve stale effective value until recalculation completes
@@ -280,12 +324,12 @@ export var insertTableRow = function (_a) {
280
324
  finally { if (e_3) throw e_3.error; }
281
325
  }
282
326
  // PASS 3: Process formulas WITHIN the moved cells themselves
283
- for (var rowIndex = referenceRowIndex; rowIndex < tableView.range.endRowIndex; rowIndex++) {
327
+ for (var rowIndex = referenceRowIndex; rowIndex <= sourceRange.endRowIndex; rowIndex++) {
284
328
  var rowValues = (_h = (_g = draft[sheetId]) === null || _g === void 0 ? void 0 : _g[rowIndex]) === null || _h === void 0 ? void 0 : _h.values;
285
329
  if (!rowValues) {
286
330
  continue;
287
331
  }
288
- for (var columnIndex = tableView.range.startColumnIndex; columnIndex < tableView.range.endColumnIndex; columnIndex++) {
332
+ for (var columnIndex = tableView.range.startColumnIndex; columnIndex <= tableView.range.endColumnIndex; columnIndex++) {
289
333
  var cellData = rowValues === null || rowValues === void 0 ? void 0 : rowValues[columnIndex];
290
334
  var hasFormula = !!getExtendedValueFormula(getCellUserEnteredValue(cellData));
291
335
  if (!hasFormula) {
@@ -317,29 +361,39 @@ export var insertTableRow = function (_a) {
317
361
  currentSheet[rowIndex].values[columnIndex] = previousValue;
318
362
  }
319
363
  }
320
- // Inserted rows: clone formatting from the row that shifted down (referenceRowIndex + numRows)
364
+ // Inserted rows: clone formatting from the row that shifted down (referenceRowIndex + numRows);
365
+ // when that row is the totals row, from the last data row above instead.
321
366
  for (var r = 0; r < numRows; r++) {
322
367
  var rowIndex = referenceRowIndex + r;
323
368
  var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
324
369
  var input = rowData === null || rowData === void 0 ? void 0 : rowData[r];
370
+ var formatSourceRowIndex = insertsAboveTotalRow
371
+ ? referenceRowIndex - 1
372
+ : rowIndex + numRows;
325
373
  // Clone entire row formatting once
326
- var formatSourceRow = createSheetDraft(draft, sheetId, rowIndex + numRows);
374
+ var formatSourceRow = createSheetDraft(draft, sheetId, formatSourceRowIndex);
327
375
  var tempCell = new SheetCell();
328
376
  for (var columnIndex = tableView.range.startColumnIndex; columnIndex <= tableView.range.endColumnIndex; columnIndex++) {
329
- var sourceCell = (_m = (_l = formatSourceRow[rowIndex + numRows]) === null || _l === void 0 ? void 0 : _l.values) === null || _m === void 0 ? void 0 : _m[columnIndex];
377
+ var sourceCell = (_m = (_l = formatSourceRow[formatSourceRowIndex]) === null || _l === void 0 ? void 0 : _l.values) === null || _m === void 0 ? void 0 : _m[columnIndex];
330
378
  var cloned = tempCell
331
379
  .assign(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, sourceCell)
332
380
  .cloneWithFormatting();
333
381
  var relativeColumnIndex = columnIndex - tableView.range.startColumnIndex;
334
382
  var columnName = (_p = (_o = tableView.columns) === null || _o === void 0 ? void 0 : _o[relativeColumnIndex]) === null || _p === void 0 ? void 0 : _p.name;
335
383
  var cellValue = columnName ? input === null || input === void 0 ? void 0 : input[columnName] : undefined;
384
+ var template = calculatedTemplates.get(columnIndex);
385
+ var inherited = false;
336
386
  if (cellValue !== undefined && cellValue !== null) {
337
387
  cloned.setUserEnteredValue(cellValue);
338
388
  }
389
+ else if (template) {
390
+ cloned.setUserEnteredValue(getRowRelativeFormula(template, columnIndex, firstBodyRowIndex, rowIndex, activeSheetName));
391
+ inherited = true;
392
+ }
339
393
  currentSheet[rowIndex].values[columnIndex] = cloned.getCellData();
340
394
  // Enqueue for calculation
341
395
  enqueueCalculation({
342
- type: "dirty",
396
+ type: inherited ? "add" : "dirty",
343
397
  position: { rowIndex: rowIndex, columnIndex: columnIndex, sheetId: sheetId },
344
398
  });
345
399
  recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, columnIndex), { sheetId: sheetId, rowIndex: rowIndex, columnIndex: columnIndex });
@@ -347,11 +401,8 @@ export var insertTableRow = function (_a) {
347
401
  }
348
402
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
349
403
  // Save history
350
- saveHistory({
351
- sheetData: { patches: patches, inversePatches: inversePatches },
352
- recalcCells: { undo: recalcCells, redo: recalcCells },
353
- activeCell: { undo: getActiveCell(), redo: getActiveCell() },
354
- });
404
+ var activeCell = getActiveCell === null || getActiveCell === void 0 ? void 0 : getActiveCell();
405
+ saveHistory(__assign({ sheetData: { patches: patches, inversePatches: inversePatches }, recalcCells: { undo: recalcCells, redo: recalcCells } }, (activeCell ? { activeCell: { undo: activeCell, redo: activeCell } } : {})));
355
406
  return nextState;
356
407
  });
357
408
  };
@@ -8,5 +8,5 @@ export type RemoveDuplicatesResult = {
8
8
  uniqueRemaining: number;
9
9
  };
10
10
  export type { RemoveDuplicatesOptions };
11
- export declare const removeDuplicates: <T extends CellData>({ getFormattedValue, onChangeSheetData, enqueueCalculation, createHistory, }: UseOnRemoveDuplicatesProps<T>) => (sheetId: number, activeCell: CellInterface, selections?: SelectionArea<SelectionAttributes>[], options?: RemoveDuplicatesOptions) => RemoveDuplicatesResult;
11
+ export declare const removeDuplicates: <T extends CellData>({ getFormattedValue, onChangeSheetData, onChangeTables, enqueueCalculation, createHistory, tables, }: UseOnRemoveDuplicatesProps<T>) => (sheetId: number, activeCell: CellInterface, selections?: SelectionArea<SelectionAttributes>[], options?: RemoveDuplicatesOptions) => RemoveDuplicatesResult;
12
12
  //# sourceMappingURL=remove-duplicates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove-duplicates.d.ts","sourceRoot":"","sources":["../../../interface/remove-duplicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,QAAQ,EACR,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAGpF,MAAM,MAAM,sBAAsB,GAAG;IACnC,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAiCxC,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,8EAKlD,0BAA0B,CAAC,CAAC,CAAC,MAE5B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,aAAa,aAAa,CAAC,mBAAmB,CAAC,EAAE,EACjD,UAAU,uBAAuB,KAChC,sBAyKJ,CAAC"}
1
+ {"version":3,"file":"remove-duplicates.d.ts","sourceRoot":"","sources":["../../../interface/remove-duplicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,QAAQ,EACR,uBAAuB,EACvB,mBAAmB,EAEpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAGpF,MAAM,MAAM,sBAAsB,GAAG;IACnC,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAgDxC,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,sGAOlD,0BAA0B,CAAC,CAAC,CAAC,MAE5B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,aAAa,aAAa,CAAC,mBAAmB,CAAC,EAAE,EACjD,UAAU,uBAAuB,KAChC,sBA0MJ,CAAC"}
@@ -26,18 +26,43 @@ var resolveCompareColumns = function (compareColumns, range) {
26
26
  }));
27
27
  return inRange.size ? inRange : undefined;
28
28
  };
29
+ /** The table on `sheetId` whose range holds `cell`. */
30
+ var findTableAtCell = function (tables, sheetId, cell) {
31
+ return tables === null || tables === void 0 ? void 0 : tables.find(function (_a) {
32
+ var tableSheetId = _a.sheetId, range = _a.range;
33
+ return tableSheetId === sheetId &&
34
+ cell.rowIndex >= range.startRowIndex &&
35
+ cell.rowIndex <= range.endRowIndex &&
36
+ cell.columnIndex >= range.startColumnIndex &&
37
+ cell.columnIndex <= range.endColumnIndex;
38
+ });
39
+ };
29
40
  export var removeDuplicates = function (_a) {
30
- var getFormattedValue = _a.getFormattedValue, onChangeSheetData = _a.onChangeSheetData, enqueueCalculation = _a.enqueueCalculation, createHistory = _a.createHistory;
41
+ var getFormattedValue = _a.getFormattedValue, onChangeSheetData = _a.onChangeSheetData, onChangeTables = _a.onChangeTables, enqueueCalculation = _a.enqueueCalculation, createHistory = _a.createHistory, tables = _a.tables;
31
42
  return function (sheetId, activeCell, selections, options) {
32
43
  var e_1, _a;
33
44
  var _b;
34
- var finalSelections = (selections === null || selections === void 0 ? void 0 : selections.length)
35
- ? selections
36
- : selectionFromActiveCell(activeCell);
45
+ // Excel de-dupes the TABLE the active cell sits in, not the selection: the
46
+ // header row is pinned ("My data has headers" is forced on), the totals row
47
+ // stays out of the comparison and closes up under the survivors, and the
48
+ // table shrinks by the removed rows. Cells below the table never move.
49
+ var table = findTableAtCell(tables, sheetId, activeCell);
50
+ var finalSelections = table
51
+ ? [{ range: table.range }]
52
+ : (selections === null || selections === void 0 ? void 0 : selections.length)
53
+ ? selections
54
+ : selectionFromActiveCell(activeCell);
37
55
  var compareColumns = ((_b = options === null || options === void 0 ? void 0 : options.columnIndices) === null || _b === void 0 ? void 0 : _b.length)
38
56
  ? new Set(options.columnIndices)
39
57
  : undefined;
40
- var headerOffset = (options === null || options === void 0 ? void 0 : options.hasHeader) ? 1 : 0;
58
+ var headerOffset = table
59
+ ? table.headerRow !== false
60
+ ? 1
61
+ : 0
62
+ : (options === null || options === void 0 ? void 0 : options.hasHeader)
63
+ ? 1
64
+ : 0;
65
+ var pinnedTail = (table === null || table === void 0 ? void 0 : table.totalRow) ? 1 : 0;
41
66
  var saveHistory = createHistory();
42
67
  var recalcCells = new Map();
43
68
  var seenRows = new Set();
@@ -47,7 +72,7 @@ export var removeDuplicates = function (_a) {
47
72
  for (var finalSelections_1 = __values(finalSelections), finalSelections_1_1 = finalSelections_1.next(); !finalSelections_1_1.done; finalSelections_1_1 = finalSelections_1.next()) {
48
73
  var sel = finalSelections_1_1.value;
49
74
  var selectionCompareColumns = resolveCompareColumns(compareColumns, sel.range);
50
- for (var rowIndex = sel.range.startRowIndex + headerOffset; rowIndex <= sel.range.endRowIndex; rowIndex++) {
75
+ for (var rowIndex = sel.range.startRowIndex + headerOffset; rowIndex <= sel.range.endRowIndex - pinnedTail; rowIndex++) {
51
76
  var rowValues = [];
52
77
  for (var columnIndex = sel.range.startColumnIndex; columnIndex <= sel.range.endColumnIndex; columnIndex++) {
53
78
  if (selectionCompareColumns &&
@@ -161,6 +186,21 @@ export var removeDuplicates = function (_a) {
161
186
  });
162
187
  return nextState;
163
188
  });
189
+ // The pinned totals row closed up under the survivors; the table shrinks
190
+ // onto it (the first occurrence of every row survives, so at least one data
191
+ // row always remains).
192
+ if (table) {
193
+ onChangeTables === null || onChangeTables === void 0 ? void 0 : onChangeTables(function (prevTables) {
194
+ var _a = __read(produceWithPatches(prevTables, function (draft) {
195
+ var current = draft.find(function (t) { return t.id === table.id; });
196
+ if (current) {
197
+ current.range.endRowIndex -= duplicateRows.size;
198
+ }
199
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
200
+ saveHistory({ tables: { patches: patches, inversePatches: inversePatches } });
201
+ return nextState;
202
+ });
203
+ }
164
204
  return result;
165
205
  };
166
206
  };
@@ -1,4 +1,4 @@
1
1
  import type { CellData, Sheet, TableView } from "@rowsncolumns/spreadsheet";
2
2
  import type { UseOnTableProps } from "../hooks/use-on-table";
3
- export declare const removeTable: <T extends CellData, S extends Sheet>({ onChangeTables, onChangeSheets, createHistory, getDependents, enqueueCalculation, }: Pick<UseOnTableProps<T, S>, "onChangeTables" | "onChangeSheets" | "getDependents" | "enqueueCalculation" | "createHistory">) => (tableView: TableView) => void;
3
+ export declare const removeTable: <T extends CellData, S extends Sheet>({ locale, cellXfsRegistry, sharedStringRegistry, getSheetName, onChangeTables, onChangeSheets, onChangeSheetData, createHistory, getDependents, getGraphNodes, getBandedCells, enqueueCalculation, enqueueGraphOperation, }: Pick<UseOnTableProps<T, S>, "locale" | "cellXfsRegistry" | "sharedStringRegistry" | "getSheetName" | "onChangeTables" | "onChangeSheets" | "onChangeSheetData" | "getDependents" | "getGraphNodes" | "getBandedCells" | "enqueueCalculation" | "enqueueGraphOperation" | "createHistory">) => (tableView: TableView) => void;
4
4
  //# sourceMappingURL=remove-table.d.ts.map