@rowsncolumns/spreadsheet-state 28.0.76 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +122 -6
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +464 -43
  4. package/dist/cjs/api/copy-paste.d.ts +8 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +4 -4
  7. package/dist/cjs/api/filter.d.ts +15 -1
  8. package/dist/cjs/api/filter.d.ts.map +1 -1
  9. package/dist/cjs/api/filter.js +32 -2
  10. package/dist/cjs/api/formula.d.ts +63 -0
  11. package/dist/cjs/api/formula.d.ts.map +1 -1
  12. package/dist/cjs/api/formula.js +278 -8
  13. package/dist/cjs/api/immer-utils.d.ts +11 -1
  14. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  15. package/dist/cjs/api/immer-utils.js +17 -1
  16. package/dist/cjs/api/insert-cut-cells.d.ts +35 -0
  17. package/dist/cjs/api/insert-cut-cells.d.ts.map +1 -0
  18. package/dist/cjs/api/insert-cut-cells.js +60 -0
  19. package/dist/cjs/api/merges.d.ts +8 -0
  20. package/dist/cjs/api/merges.d.ts.map +1 -1
  21. package/dist/cjs/api/merges.js +11 -0
  22. package/dist/cjs/api/paint-format.d.ts +22 -1
  23. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  24. package/dist/cjs/api/paint-format.js +57 -1
  25. package/dist/cjs/api/sort.d.ts +23 -1
  26. package/dist/cjs/api/sort.d.ts.map +1 -1
  27. package/dist/cjs/api/sort.js +52 -6
  28. package/dist/cjs/api/structural-guards.d.ts +57 -0
  29. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  30. package/dist/cjs/api/structural-guards.js +93 -1
  31. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  32. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  33. package/dist/cjs/api/structural-table-refs.js +177 -16
  34. package/dist/cjs/api/subtotal.d.ts +20 -13
  35. package/dist/cjs/api/subtotal.d.ts.map +1 -1
  36. package/dist/cjs/api/subtotal.js +26 -19
  37. package/dist/cjs/api/table.d.ts +26 -2
  38. package/dist/cjs/api/table.d.ts.map +1 -1
  39. package/dist/cjs/api/table.js +93 -60
  40. package/dist/cjs/api/validation.d.ts.map +1 -1
  41. package/dist/cjs/api/validation.js +53 -8
  42. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  43. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  45. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  47. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  48. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  49. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  50. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  51. package/dist/cjs/atoms/index.d.ts +4 -0
  52. package/dist/cjs/atoms/index.d.ts.map +1 -1
  53. package/dist/cjs/atoms/index.js +4 -0
  54. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  55. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  56. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  57. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  58. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  59. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  60. package/dist/cjs/commands.d.ts +138 -2
  61. package/dist/cjs/commands.d.ts.map +1 -1
  62. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  63. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  64. package/dist/cjs/components/editors/embed-editor.js +38 -9
  65. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  66. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  67. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  68. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  69. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  70. package/dist/cjs/components/editors/table-editor.js +261 -20
  71. package/dist/cjs/components/index.d.ts +1 -0
  72. package/dist/cjs/components/index.d.ts.map +1 -1
  73. package/dist/cjs/components/index.js +1 -0
  74. package/dist/cjs/constants.d.ts +9 -1
  75. package/dist/cjs/constants.d.ts.map +1 -1
  76. package/dist/cjs/constants.js +12 -0
  77. package/dist/cjs/generated-names.d.ts +13 -3
  78. package/dist/cjs/generated-names.d.ts.map +1 -1
  79. package/dist/cjs/generated-names.js +3 -1
  80. package/dist/cjs/helpers.d.ts +5 -0
  81. package/dist/cjs/helpers.d.ts.map +1 -1
  82. package/dist/cjs/helpers.js +10 -1
  83. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  84. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  85. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  86. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  87. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  89. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  90. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  92. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  93. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-change.js +218 -136
  95. package/dist/cjs/hooks/use-on-copy.d.ts +1 -1
  96. package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-copy.js +2 -3
  98. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  99. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  100. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  101. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  102. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  104. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  105. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  107. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  108. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  110. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  111. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  113. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  114. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  116. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +9 -1
  117. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  118. package/dist/cjs/hooks/use-on-delete-sheet.js +17 -1
  119. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  120. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  121. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  122. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  123. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  124. package/dist/cjs/hooks/use-on-delete.js +5 -1
  125. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  126. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  127. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  128. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  129. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  130. package/dist/cjs/hooks/use-on-fill.js +29 -15
  131. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  133. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  134. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  136. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  137. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  139. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  140. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  142. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  143. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  145. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  146. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  148. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  149. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  151. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  152. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  154. package/dist/cjs/hooks/use-on-move-columns.d.ts +4 -1
  155. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  156. package/dist/cjs/hooks/use-on-move-columns.js +28 -6
  157. package/dist/cjs/hooks/use-on-move-rows.d.ts +18 -1
  158. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  159. package/dist/cjs/hooks/use-on-move-rows.js +44 -6
  160. package/dist/cjs/hooks/use-on-move-selection.d.ts +9 -2
  161. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  162. package/dist/cjs/hooks/use-on-move-selection.js +101 -25
  163. package/dist/cjs/hooks/use-on-paste.d.ts +33 -2
  164. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-paste.js +1005 -740
  166. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  167. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  169. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  170. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  171. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  172. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  173. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  174. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  175. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  176. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  177. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  178. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  179. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  181. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  182. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  184. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  185. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  187. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  188. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  190. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  191. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  193. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  194. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-on-table.js +257 -49
  196. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  197. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  199. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  200. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  201. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  202. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  203. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  204. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  205. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  206. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  207. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  208. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  209. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  210. package/dist/cjs/hooks/use-slicers.js +17 -26
  211. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  212. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  213. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  214. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +69 -12
  215. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  216. package/dist/cjs/hooks/use-spreadsheet-state.js +383 -84
  217. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  218. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  219. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  220. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  221. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  222. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  223. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  224. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  225. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  226. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  227. package/dist/cjs/index.d.ts +8 -0
  228. package/dist/cjs/index.d.ts.map +1 -1
  229. package/dist/cjs/index.js +9 -0
  230. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  231. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  232. package/dist/cjs/interface/apply-fill.js +207 -98
  233. package/dist/cjs/interface/change-batch.d.ts +1 -1
  234. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  235. package/dist/cjs/interface/change-batch.js +112 -15
  236. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  237. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  238. package/dist/cjs/interface/change-calculated-column.js +87 -17
  239. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  240. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/change-table-column.js +336 -76
  242. package/dist/cjs/interface/create-table.d.ts +15 -3
  243. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  244. package/dist/cjs/interface/create-table.js +100 -25
  245. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  246. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-cells-shift-left.js +10 -1
  248. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  249. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-cells-shift-up.js +10 -1
  251. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  252. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-cells.js +81 -25
  254. package/dist/cjs/interface/delete-column.d.ts +1 -1
  255. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  256. package/dist/cjs/interface/delete-column.js +29 -22
  257. package/dist/cjs/interface/delete-row.d.ts +1 -1
  258. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  259. package/dist/cjs/interface/delete-row.js +244 -39
  260. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  261. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  262. package/dist/cjs/interface/delete-sheet.js +118 -1
  263. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  264. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  265. package/dist/cjs/interface/delete-table-column.js +11 -1
  266. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  267. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  268. package/dist/cjs/interface/delete-table-row.js +361 -275
  269. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  270. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  271. package/dist/cjs/interface/embeds.d.ts +10 -1
  272. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  273. package/dist/cjs/interface/embeds.js +120 -6
  274. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  275. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  276. package/dist/cjs/interface/insert-cells-shift-down.js +10 -1
  277. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  278. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  279. package/dist/cjs/interface/insert-cells-shift-right.js +10 -1
  280. package/dist/cjs/interface/insert-column.d.ts +2 -2
  281. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  282. package/dist/cjs/interface/insert-column.js +101 -56
  283. package/dist/cjs/interface/insert-row.d.ts +1 -1
  284. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  285. package/dist/cjs/interface/insert-row.js +25 -7
  286. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  287. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  288. package/dist/cjs/interface/insert-table-row.js +70 -19
  289. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  290. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  291. package/dist/cjs/interface/remove-duplicates.js +46 -6
  292. package/dist/cjs/interface/remove-table.d.ts +1 -1
  293. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/remove-table.js +72 -16
  295. package/dist/cjs/interface/slicers.d.ts +12 -1
  296. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  297. package/dist/cjs/interface/slicers.js +47 -2
  298. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  299. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  300. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  301. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  302. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  303. package/dist/cjs/interface/table-totalrow.js +107 -73
  304. package/dist/cjs/interface/table-utils.d.ts +59 -6
  305. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  306. package/dist/cjs/interface/table-utils.js +211 -15
  307. package/dist/cjs/interface/update-table.d.ts +16 -1
  308. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  309. package/dist/cjs/interface/update-table.js +190 -44
  310. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  311. package/dist/cjs/test-setup.d.ts.map +1 -1
  312. package/dist/cjs/test-setup.js +6 -0
  313. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  314. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  315. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  316. package/dist/cjs/validation-schema/table.schema.js +20 -3
  317. package/dist/esm/api/anchored-objects.d.ts +122 -6
  318. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  319. package/dist/esm/api/anchored-objects.js +375 -15
  320. package/dist/esm/api/copy-paste.d.ts +8 -2
  321. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  322. package/dist/esm/api/copy-paste.js +4 -4
  323. package/dist/esm/api/filter.d.ts +15 -1
  324. package/dist/esm/api/filter.d.ts.map +1 -1
  325. package/dist/esm/api/filter.js +28 -0
  326. package/dist/esm/api/formula.d.ts +63 -0
  327. package/dist/esm/api/formula.d.ts.map +1 -1
  328. package/dist/esm/api/formula.js +235 -8
  329. package/dist/esm/api/immer-utils.d.ts +11 -1
  330. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  331. package/dist/esm/api/immer-utils.js +16 -0
  332. package/dist/esm/api/insert-cut-cells.d.ts +35 -0
  333. package/dist/esm/api/insert-cut-cells.d.ts.map +1 -0
  334. package/dist/esm/api/insert-cut-cells.js +67 -0
  335. package/dist/esm/api/merges.d.ts +8 -0
  336. package/dist/esm/api/merges.d.ts.map +1 -1
  337. package/dist/esm/api/merges.js +9 -0
  338. package/dist/esm/api/paint-format.d.ts +22 -1
  339. package/dist/esm/api/paint-format.d.ts.map +1 -1
  340. package/dist/esm/api/paint-format.js +44 -1
  341. package/dist/esm/api/sort.d.ts +23 -1
  342. package/dist/esm/api/sort.d.ts.map +1 -1
  343. package/dist/esm/api/sort.js +45 -6
  344. package/dist/esm/api/structural-guards.d.ts +57 -0
  345. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  346. package/dist/esm/api/structural-guards.js +85 -0
  347. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  348. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  349. package/dist/esm/api/structural-table-refs.js +126 -6
  350. package/dist/esm/api/subtotal.d.ts +20 -13
  351. package/dist/esm/api/subtotal.d.ts.map +1 -1
  352. package/dist/esm/api/subtotal.js +15 -8
  353. package/dist/esm/api/table.d.ts +26 -2
  354. package/dist/esm/api/table.d.ts.map +1 -1
  355. package/dist/esm/api/table.js +70 -48
  356. package/dist/esm/api/validation.d.ts.map +1 -1
  357. package/dist/esm/api/validation.js +53 -8
  358. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  359. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  360. package/dist/esm/atoms/creating-table.atom.js +4 -0
  361. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  362. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  363. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  364. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  365. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  366. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  367. package/dist/esm/atoms/index.d.ts +4 -0
  368. package/dist/esm/atoms/index.d.ts.map +1 -1
  369. package/dist/esm/atoms/index.js +4 -0
  370. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  371. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  372. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  373. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  374. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  375. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  376. package/dist/esm/commands.d.ts +138 -2
  377. package/dist/esm/commands.d.ts.map +1 -1
  378. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  379. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  380. package/dist/esm/components/editors/embed-editor.js +40 -6
  381. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  382. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  383. package/dist/esm/components/editors/slicer-editor.js +85 -0
  384. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  385. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  386. package/dist/esm/components/editors/table-editor.js +243 -19
  387. package/dist/esm/components/index.d.ts +1 -0
  388. package/dist/esm/components/index.d.ts.map +1 -1
  389. package/dist/esm/components/index.js +1 -0
  390. package/dist/esm/constants.d.ts +9 -1
  391. package/dist/esm/constants.d.ts.map +1 -1
  392. package/dist/esm/constants.js +12 -0
  393. package/dist/esm/generated-names.d.ts +13 -3
  394. package/dist/esm/generated-names.d.ts.map +1 -1
  395. package/dist/esm/generated-names.js +3 -1
  396. package/dist/esm/helpers.d.ts +5 -0
  397. package/dist/esm/helpers.d.ts.map +1 -1
  398. package/dist/esm/helpers.js +7 -1
  399. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  400. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  402. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  403. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  405. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  406. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  408. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  409. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-change.js +214 -124
  411. package/dist/esm/hooks/use-on-copy.d.ts +1 -1
  412. package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-copy.js +2 -3
  414. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  415. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  416. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  417. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  418. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  419. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  420. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  421. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  422. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  423. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  424. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  425. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  426. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  427. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  428. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  429. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  430. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  431. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  432. package/dist/esm/hooks/use-on-delete-sheet.d.ts +9 -1
  433. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  434. package/dist/esm/hooks/use-on-delete-sheet.js +17 -1
  435. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  436. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  437. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  438. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  439. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  440. package/dist/esm/hooks/use-on-delete.js +5 -1
  441. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  442. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  443. package/dist/esm/hooks/use-on-embeds.js +23 -6
  444. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  445. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  446. package/dist/esm/hooks/use-on-fill.js +27 -1
  447. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  449. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  450. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  452. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  453. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  455. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  456. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  457. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  458. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  459. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  460. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  461. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  462. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  463. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  464. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  465. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  467. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  468. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  470. package/dist/esm/hooks/use-on-move-columns.d.ts +4 -1
  471. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-move-columns.js +28 -6
  473. package/dist/esm/hooks/use-on-move-rows.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-move-rows.js +44 -6
  476. package/dist/esm/hooks/use-on-move-selection.d.ts +9 -2
  477. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-move-selection.js +57 -1
  479. package/dist/esm/hooks/use-on-paste.d.ts +33 -2
  480. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-paste.js +825 -643
  482. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  483. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  484. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  485. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  486. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  488. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  489. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  490. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  491. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  492. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  493. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  494. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  495. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  497. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  498. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  499. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  500. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  501. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  503. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  504. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  505. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  506. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  507. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  508. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  509. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  510. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  511. package/dist/esm/hooks/use-on-table.js +234 -26
  512. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  513. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  514. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  515. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  516. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  517. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  518. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  519. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  520. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  521. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  522. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  523. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  524. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  525. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  526. package/dist/esm/hooks/use-slicers.js +16 -8
  527. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  528. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  529. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  530. package/dist/esm/hooks/use-spreadsheet-state.d.ts +69 -12
  531. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  532. package/dist/esm/hooks/use-spreadsheet-state.js +321 -14
  533. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  534. package/dist/esm/hooks/use-structured-reference.js +17 -0
  535. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  536. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  537. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  538. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  539. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  540. package/dist/esm/hooks/use-undo-redo.js +158 -7
  541. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  542. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  543. package/dist/esm/index.d.ts +8 -0
  544. package/dist/esm/index.d.ts.map +1 -1
  545. package/dist/esm/index.js +9 -0
  546. package/dist/esm/interface/apply-fill.d.ts +26 -3
  547. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  548. package/dist/esm/interface/apply-fill.js +188 -88
  549. package/dist/esm/interface/change-batch.d.ts +1 -1
  550. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  551. package/dist/esm/interface/change-batch.js +89 -8
  552. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  553. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  554. package/dist/esm/interface/change-calculated-column.js +81 -16
  555. package/dist/esm/interface/change-table-column.d.ts +81 -7
  556. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  557. package/dist/esm/interface/change-table-column.js +295 -67
  558. package/dist/esm/interface/create-table.d.ts +15 -3
  559. package/dist/esm/interface/create-table.d.ts.map +1 -1
  560. package/dist/esm/interface/create-table.js +103 -27
  561. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  562. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  563. package/dist/esm/interface/delete-cells-shift-left.js +10 -1
  564. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  565. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  566. package/dist/esm/interface/delete-cells-shift-up.js +10 -1
  567. package/dist/esm/interface/delete-cells.d.ts +1 -1
  568. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  569. package/dist/esm/interface/delete-cells.js +47 -14
  570. package/dist/esm/interface/delete-column.d.ts +1 -1
  571. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  572. package/dist/esm/interface/delete-column.js +26 -30
  573. package/dist/esm/interface/delete-row.d.ts +1 -1
  574. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  575. package/dist/esm/interface/delete-row.js +191 -44
  576. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  577. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  578. package/dist/esm/interface/delete-sheet.js +113 -1
  579. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  580. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  581. package/dist/esm/interface/delete-table-column.js +11 -1
  582. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  583. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  584. package/dist/esm/interface/delete-table-row.js +312 -232
  585. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  586. package/dist/esm/interface/duplicate-sheet.js +73 -26
  587. package/dist/esm/interface/embeds.d.ts +10 -1
  588. package/dist/esm/interface/embeds.d.ts.map +1 -1
  589. package/dist/esm/interface/embeds.js +84 -5
  590. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  591. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  592. package/dist/esm/interface/insert-cells-shift-down.js +10 -1
  593. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  594. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  595. package/dist/esm/interface/insert-cells-shift-right.js +10 -1
  596. package/dist/esm/interface/insert-column.d.ts +2 -2
  597. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  598. package/dist/esm/interface/insert-column.js +70 -33
  599. package/dist/esm/interface/insert-row.d.ts +1 -1
  600. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  601. package/dist/esm/interface/insert-row.js +22 -6
  602. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  603. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  604. package/dist/esm/interface/insert-table-row.js +67 -12
  605. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  606. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  607. package/dist/esm/interface/remove-duplicates.js +41 -6
  608. package/dist/esm/interface/remove-table.d.ts +1 -1
  609. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  610. package/dist/esm/interface/remove-table.js +58 -10
  611. package/dist/esm/interface/slicers.d.ts +12 -1
  612. package/dist/esm/interface/slicers.d.ts.map +1 -1
  613. package/dist/esm/interface/slicers.js +44 -2
  614. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  615. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  616. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  617. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  618. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  619. package/dist/esm/interface/table-totalrow.js +98 -68
  620. package/dist/esm/interface/table-utils.d.ts +59 -6
  621. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  622. package/dist/esm/interface/table-utils.js +155 -14
  623. package/dist/esm/interface/update-table.d.ts +16 -1
  624. package/dist/esm/interface/update-table.d.ts.map +1 -1
  625. package/dist/esm/interface/update-table.js +203 -42
  626. package/dist/esm/sheet-cell.d.ts.map +1 -1
  627. package/dist/esm/test-setup.d.ts.map +1 -1
  628. package/dist/esm/test-setup.js +6 -0
  629. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  630. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  631. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  632. package/dist/esm/validation-schema/table.schema.js +15 -2
  633. package/package.json +25 -17
@@ -1,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;AAkBjE,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,SA4ShE,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;AAuBjE,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,SA4UhE,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import { Direction } from "@rowsncolumns/common-types";
2
2
  import { produceWithPatches } from "immer";
3
- import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
4
- import { cloneRowWithFormatting, createSheetDraft } from "../api/immer-utils";
3
+ import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftSlicersOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
4
+ import { cloneRowWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
5
5
  import { expandMergesOnRowInsert } from "../api/merges";
6
6
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
7
7
  import { shiftPivotsOnInsert } from "../api/pivot-range";
8
8
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
9
9
  import { moveFilterView } from "../api/selection";
10
10
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
11
- export const insertRow = ({ 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, }) => {
11
+ export const insertRow = ({ 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, }) => {
12
12
  return (sheetId, referenceRowIndex, numRows = 1) => {
13
13
  if (numRows <= 0)
14
14
  return;
@@ -104,6 +104,13 @@ export const insertRow = ({ rowCount, columnCount, locale, maxRowCount, cellXfsR
104
104
  saveHistory({ embeds: { patches, inversePatches } });
105
105
  return nextState;
106
106
  });
107
+ onChangeSlicers?.((prevSlicers) => {
108
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSlicers, (draft) => {
109
+ shiftSlicersOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
110
+ });
111
+ saveHistory({ slicers: { patches, inversePatches } });
112
+ return nextState;
113
+ });
107
114
  onChangeCharts?.((prevCharts) => {
108
115
  const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
109
116
  shiftChartsOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
@@ -125,7 +132,11 @@ export const insertRow = ({ rowCount, columnCount, locale, maxRowCount, cellXfsR
125
132
  if (!sheet)
126
133
  return;
127
134
  if (sheet.rowMetadata) {
128
- sheet.rowMetadata.splice(referenceRowIndex, 0, ...Array.from({ length: numRows }, () => null));
135
+ // Excel "Format Same As Above" (FMT-01) covers the row height and
136
+ // hidden state too: the inserted rows inherit the row above's
137
+ // metadata (row 1 has none above and takes the pushed-down row's).
138
+ const inherited = inheritedDimensionMetadata(sheet.rowMetadata, referenceRowIndex);
139
+ sheet.rowMetadata.splice(referenceRowIndex, 0, ...Array.from({ length: numRows }, () => inherited ? { ...inherited } : null));
129
140
  }
130
141
  if (sheet.basicFilter) {
131
142
  const { startRowIndex, endRowIndex } = sheet.basicFilter.range;
@@ -175,8 +186,13 @@ export const insertRow = ({ rowCount, columnCount, locale, maxRowCount, cellXfsR
175
186
  sharedStringRegistry,
176
187
  });
177
188
  const currentSheet = createSheetDraft(draft, sheetId, referenceRowIndex);
178
- const formattingSourceRow = currentSheet[referenceRowIndex] ??
179
- currentSheet[referenceRowIndex - 1];
189
+ // Excel "Format Same As Above" (FMT-01): the new rows take the
190
+ // per-cell formatting (never values) of the row ABOVE the insertion
191
+ // point. Only an insert at row 1 has no row above and seeds from the
192
+ // row being pushed down instead.
193
+ const formattingSourceRow = referenceRowIndex > 1
194
+ ? currentSheet[referenceRowIndex - 1]
195
+ : currentSheet[referenceRowIndex];
180
196
  const newRows = Array.from({ length: numRows }, () => cloneRowWithFormatting(formattingSourceRow));
181
197
  currentSheet.splice(referenceRowIndex, 0, ...newRows);
182
198
  });
@@ -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"}
@@ -1,6 +1,7 @@
1
1
  import { Direction } from "@rowsncolumns/common-types";
2
2
  import { getCellUserEnteredValue, getExtendedValueFormula } from "@rowsncolumns/utils";
3
3
  import { produceWithPatches } from "immer";
4
+ import { shiftChartsOnTableEdit, tableBinding } from "../api/anchored-objects";
4
5
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
5
6
  import { createSheetCellIdentifier, expandRangesInFormula } from "../api/formula";
6
7
  import { createSheetDraft } from "../api/immer-utils";
@@ -8,16 +9,30 @@ import { moveMergedCells } from "../api/merges";
8
9
  import { updateSheetRangeOnInsert } from "../api/range";
9
10
  import { moveFilterView } from "../api/selection";
10
11
  import { SheetCell } from "../sheet-cell";
11
- export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getDependents, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, }) => {
12
- return (tableView, relativeRowIndex, rowData) => {
13
- const referenceRowIndex = tableView.range.startRowIndex +
12
+ import { getCalculatedColumnTemplate, getRowRelativeFormula, getTableFirstBodyRowIndex, } from "./change-table-column";
13
+ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getDependents, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCharts, onChangeDataValidations, onChangeConditionalFormats, }) => {
14
+ return (tableView, relativeRowIndex, rowData,
15
+ // A caller folding the insert into its own history step (the totals-row
16
+ // toggle that must first shift occupied cells out of the way) passes its
17
+ // `saveHistory`; otherwise the insert is one undo step of its own.
18
+ saveHistory = createHistory()) => {
19
+ // `relativeRowIndex` counts from `range.startRowIndex` (the header row when
20
+ // there is one), clamped to the body: never above the first body row and,
21
+ // with a totals row, never below it — the new data row goes ABOVE the
22
+ // totals row, which moves down (Excel never inserts a data row below the
23
+ // totals).
24
+ const firstBodyRowIndex = tableView.range.startRowIndex + (tableView.headerRow ? 1 : 0);
25
+ const lastInsertRowIndex = tableView.range.endRowIndex + (tableView.totalRow ? 0 : 1);
26
+ const referenceRowIndex = Math.min(Math.max(tableView.range.startRowIndex +
14
27
  (relativeRowIndex ??
15
- tableView.range.endRowIndex - tableView.range.startRowIndex + 1);
28
+ tableView.range.endRowIndex - tableView.range.startRowIndex + 1), Math.min(firstBodyRowIndex, lastInsertRowIndex)), lastInsertRowIndex);
29
+ const insertsAboveTotalRow = !!tableView.totalRow && referenceRowIndex === tableView.range.endRowIndex;
16
30
  const numRows = rowData?.length ?? 1;
17
31
  const { sheetId } = tableView;
18
32
  const { startColumnIndex, endColumnIndex } = tableView.range;
19
33
  const isInsideColumnBand = (range) => range.startColumnIndex >= startColumnIndex &&
20
34
  range.endColumnIndex <= endColumnIndex;
35
+ const binding = tableBinding(tableView);
21
36
  enqueueStructureChange?.({
22
37
  kind: "insert-table-row",
23
38
  sheetId,
@@ -27,7 +42,6 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
27
42
  startColumnIndex: tableView.range.startColumnIndex,
28
43
  endColumnIndex: tableView.range.endColumnIndex,
29
44
  });
30
- const saveHistory = createHistory();
31
45
  // We need to track this for history. Precedent cells
32
46
  const recalcCells = new Map();
33
47
  // Update table position
@@ -51,6 +65,15 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
51
65
  });
52
66
  return nextState;
53
67
  });
68
+ // Chart ranges inside the table's columns follow the shifted cells; a range bound to the table
69
+ // (a column's body, or header + body) grows with it even when the rows land below the last one.
70
+ onChangeCharts?.((prevCharts) => {
71
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
72
+ shiftChartsOnTableEdit(draft, sheetId, binding, "row", "insert", referenceRowIndex, numRows);
73
+ });
74
+ saveHistory({ charts: { patches, inversePatches } });
75
+ return nextState;
76
+ });
54
77
  // Update data validations
55
78
  onChangeDataValidations?.((prevValidations) => {
56
79
  const [nextState, patches, inversePatches] = produceWithPatches(prevValidations, (draft) => {
@@ -139,11 +162,32 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
139
162
  onChangeSheetData?.((prevSheetData) => {
140
163
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
141
164
  const totalRows = draft[sheetId]?.length ?? rowCount;
165
+ // Every cell of the table's columns from the insertion point shifts down — through the
166
+ // sheet's last used row, not just the table's — so formulas inside that band and
167
+ // references into it re-anchor over the whole band (mirrors `deleteTableRow`).
142
168
  const sourceRange = {
143
169
  ...tableView.range,
144
170
  startRowIndex: referenceRowIndex,
171
+ endRowIndex: Math.max(tableView.range.endRowIndex, totalRows - 1),
145
172
  };
146
173
  const movedKeys = new Set();
174
+ // Each calculated column's formula (written for the first body row), read from the
175
+ // body BEFORE the shift: the inserted rows inherit it (Excel).
176
+ const activeSheetName = getSheetName(sheetId);
177
+ const firstBodyRowIndex = getTableFirstBodyRowIndex(tableView);
178
+ const calculatedTemplates = new Map();
179
+ for (let columnIndex = tableView.range.startColumnIndex; columnIndex <= tableView.range.endColumnIndex; columnIndex++) {
180
+ const template = getCalculatedColumnTemplate({
181
+ draft,
182
+ sheetId,
183
+ table: tableView,
184
+ columnIndex,
185
+ activeSheetName,
186
+ });
187
+ if (template) {
188
+ calculatedTemplates.set(columnIndex, template);
189
+ }
190
+ }
147
191
  /**
148
192
  * THREE-PASS FORMULA UPDATE STRATEGY:
149
193
  *
@@ -244,12 +288,12 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
244
288
  });
245
289
  }
246
290
  // PASS 3: Process formulas WITHIN the moved cells themselves
247
- for (let rowIndex = referenceRowIndex; rowIndex < tableView.range.endRowIndex; rowIndex++) {
291
+ for (let rowIndex = referenceRowIndex; rowIndex <= sourceRange.endRowIndex; rowIndex++) {
248
292
  const rowValues = draft[sheetId]?.[rowIndex]?.values;
249
293
  if (!rowValues) {
250
294
  continue;
251
295
  }
252
- for (let columnIndex = tableView.range.startColumnIndex; columnIndex < tableView.range.endColumnIndex; columnIndex++) {
296
+ for (let columnIndex = tableView.range.startColumnIndex; columnIndex <= tableView.range.endColumnIndex; columnIndex++) {
253
297
  const cellData = rowValues?.[columnIndex];
254
298
  const hasFormula = !!getExtendedValueFormula(getCellUserEnteredValue(cellData));
255
299
  if (!hasFormula) {
@@ -281,29 +325,39 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
281
325
  currentSheet[rowIndex].values[columnIndex] = previousValue;
282
326
  }
283
327
  }
284
- // Inserted rows: clone formatting from the row that shifted down (referenceRowIndex + numRows)
328
+ // Inserted rows: clone formatting from the row that shifted down (referenceRowIndex + numRows);
329
+ // when that row is the totals row, from the last data row above instead.
285
330
  for (let r = 0; r < numRows; r++) {
286
331
  const rowIndex = referenceRowIndex + r;
287
332
  const currentSheet = createSheetDraft(draft, sheetId, rowIndex);
288
333
  const input = rowData?.[r];
334
+ const formatSourceRowIndex = insertsAboveTotalRow
335
+ ? referenceRowIndex - 1
336
+ : rowIndex + numRows;
289
337
  // Clone entire row formatting once
290
- const formatSourceRow = createSheetDraft(draft, sheetId, rowIndex + numRows);
338
+ const formatSourceRow = createSheetDraft(draft, sheetId, formatSourceRowIndex);
291
339
  const tempCell = new SheetCell();
292
340
  for (let columnIndex = tableView.range.startColumnIndex; columnIndex <= tableView.range.endColumnIndex; columnIndex++) {
293
- const sourceCell = formatSourceRow[rowIndex + numRows]?.values?.[columnIndex];
341
+ const sourceCell = formatSourceRow[formatSourceRowIndex]?.values?.[columnIndex];
294
342
  const cloned = tempCell
295
343
  .assign(sheetId, { rowIndex, columnIndex }, sourceCell)
296
344
  .cloneWithFormatting();
297
345
  const relativeColumnIndex = columnIndex - tableView.range.startColumnIndex;
298
346
  const columnName = tableView.columns?.[relativeColumnIndex]?.name;
299
347
  const cellValue = columnName ? input?.[columnName] : undefined;
348
+ const template = calculatedTemplates.get(columnIndex);
349
+ let inherited = false;
300
350
  if (cellValue !== undefined && cellValue !== null) {
301
351
  cloned.setUserEnteredValue(cellValue);
302
352
  }
353
+ else if (template) {
354
+ cloned.setUserEnteredValue(getRowRelativeFormula(template, columnIndex, firstBodyRowIndex, rowIndex, activeSheetName));
355
+ inherited = true;
356
+ }
303
357
  currentSheet[rowIndex].values[columnIndex] = cloned.getCellData();
304
358
  // Enqueue for calculation
305
359
  enqueueCalculation({
306
- type: "dirty",
360
+ type: inherited ? "add" : "dirty",
307
361
  position: { rowIndex, columnIndex, sheetId },
308
362
  });
309
363
  recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, columnIndex), { sheetId, rowIndex, columnIndex });
@@ -311,10 +365,11 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
311
365
  }
312
366
  });
313
367
  // Save history
368
+ const activeCell = getActiveCell?.();
314
369
  saveHistory({
315
370
  sheetData: { patches, inversePatches },
316
371
  recalcCells: { undo: recalcCells, redo: recalcCells },
317
- activeCell: { undo: getActiveCell(), redo: getActiveCell() },
372
+ ...(activeCell ? { activeCell: { undo: activeCell, redo: activeCell } } : {}),
318
373
  });
319
374
  return nextState;
320
375
  });
@@ -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"}
@@ -23,15 +23,35 @@ const resolveCompareColumns = (compareColumns, range) => {
23
23
  columnIndex <= range.endColumnIndex));
24
24
  return inRange.size ? inRange : undefined;
25
25
  };
26
- export const removeDuplicates = ({ getFormattedValue, onChangeSheetData, enqueueCalculation, createHistory, }) => {
26
+ /** The table on `sheetId` whose range holds `cell`. */
27
+ const findTableAtCell = (tables, sheetId, cell) => tables?.find(({ sheetId: tableSheetId, range }) => tableSheetId === sheetId &&
28
+ cell.rowIndex >= range.startRowIndex &&
29
+ cell.rowIndex <= range.endRowIndex &&
30
+ cell.columnIndex >= range.startColumnIndex &&
31
+ cell.columnIndex <= range.endColumnIndex);
32
+ export const removeDuplicates = ({ getFormattedValue, onChangeSheetData, onChangeTables, enqueueCalculation, createHistory, tables, }) => {
27
33
  return (sheetId, activeCell, selections, options) => {
28
- const finalSelections = selections?.length
29
- ? selections
30
- : selectionFromActiveCell(activeCell);
34
+ // Excel de-dupes the TABLE the active cell sits in, not the selection: the
35
+ // header row is pinned ("My data has headers" is forced on), the totals row
36
+ // stays out of the comparison and closes up under the survivors, and the
37
+ // table shrinks by the removed rows. Cells below the table never move.
38
+ const table = findTableAtCell(tables, sheetId, activeCell);
39
+ const finalSelections = table
40
+ ? [{ range: table.range }]
41
+ : selections?.length
42
+ ? selections
43
+ : selectionFromActiveCell(activeCell);
31
44
  const compareColumns = options?.columnIndices?.length
32
45
  ? new Set(options.columnIndices)
33
46
  : undefined;
34
- const headerOffset = options?.hasHeader ? 1 : 0;
47
+ const headerOffset = table
48
+ ? table.headerRow !== false
49
+ ? 1
50
+ : 0
51
+ : options?.hasHeader
52
+ ? 1
53
+ : 0;
54
+ const pinnedTail = table?.totalRow ? 1 : 0;
35
55
  const saveHistory = createHistory();
36
56
  const recalcCells = new Map();
37
57
  const seenRows = new Set();
@@ -39,7 +59,7 @@ export const removeDuplicates = ({ getFormattedValue, onChangeSheetData, enqueue
39
59
  // First pass: collect all row data and identify duplicates
40
60
  for (const sel of finalSelections) {
41
61
  const selectionCompareColumns = resolveCompareColumns(compareColumns, sel.range);
42
- for (let rowIndex = sel.range.startRowIndex + headerOffset; rowIndex <= sel.range.endRowIndex; rowIndex++) {
62
+ for (let rowIndex = sel.range.startRowIndex + headerOffset; rowIndex <= sel.range.endRowIndex - pinnedTail; rowIndex++) {
43
63
  const rowValues = [];
44
64
  for (let columnIndex = sel.range.startColumnIndex; columnIndex <= sel.range.endColumnIndex; columnIndex++) {
45
65
  if (selectionCompareColumns &&
@@ -133,6 +153,21 @@ export const removeDuplicates = ({ getFormattedValue, onChangeSheetData, enqueue
133
153
  });
134
154
  return nextState;
135
155
  });
156
+ // The pinned totals row closed up under the survivors; the table shrinks
157
+ // onto it (the first occurrence of every row survives, so at least one data
158
+ // row always remains).
159
+ if (table) {
160
+ onChangeTables?.((prevTables) => {
161
+ const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
162
+ const current = draft.find((t) => t.id === table.id);
163
+ if (current) {
164
+ current.range.endRowIndex -= duplicateRows.size;
165
+ }
166
+ });
167
+ saveHistory({ tables: { patches, inversePatches } });
168
+ return nextState;
169
+ });
170
+ }
136
171
  return result;
137
172
  };
138
173
  };
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"remove-table.d.ts","sourceRoot":"","sources":["../../../interface/remove-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,uFAM9D,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,eAAe,CAClB,MACS,WAAW,SAAS,SAmE7B,CAAC"}
1
+ {"version":3,"file":"remove-table.d.ts","sourceRoot":"","sources":["../../../interface/remove-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6NAc9D,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,eAAe,CAClB,MACS,WAAW,SAAS,SAwH7B,CAAC"}
@@ -1,7 +1,48 @@
1
1
  import { produceWithPatches } from "immer";
2
- export const removeTable = ({ onChangeTables, onChangeSheets, createHistory, getDependents, enqueueCalculation, }) => {
2
+ import { bakeBandedFormats } from "../api/paint-format";
3
+ import { convertTableReferencesToA1InFormulas } from "../api/structural-table-refs";
4
+ import { markTableAsDirty } from "./helpers";
5
+ export const removeTable = ({ locale, cellXfsRegistry, sharedStringRegistry, getSheetName, onChangeTables, onChangeSheets, onChangeSheetData, createHistory, getDependents, getGraphNodes, getBandedCells, enqueueCalculation, enqueueGraphOperation, }) => {
3
6
  return (tableView) => {
4
7
  const saveHistory = createHistory();
8
+ const recalcCells = new Map();
9
+ // Convert to Range keeps every formula working and the table's look (Excel):
10
+ // the structured references into the table become the A1 ranges they
11
+ // resolved to, and the banding the grid painted under it becomes static cell
12
+ // formats, in this same history step, before the table (and with it their
13
+ // resolution and its style) goes away.
14
+ const bandedCells = getBandedCells?.(tableView.sheetId);
15
+ onChangeSheetData?.((prevSheetData) => {
16
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
17
+ convertTableReferencesToA1InFormulas({
18
+ draft,
19
+ table: tableView,
20
+ getSheetName,
21
+ getGraphNodes,
22
+ enqueueCalculation,
23
+ enqueueGraphOperation,
24
+ recalcCells,
25
+ locale,
26
+ cellXfsRegistry,
27
+ sharedStringRegistry,
28
+ });
29
+ bakeBandedFormats({
30
+ draft,
31
+ sheetId: tableView.sheetId,
32
+ range: tableView.range,
33
+ bandedCells,
34
+ locale,
35
+ cellXfsRegistry,
36
+ sharedStringRegistry,
37
+ });
38
+ });
39
+ saveHistory({
40
+ sheetData: { patches, inversePatches },
41
+ recalcCells: { undo: recalcCells, redo: recalcCells },
42
+ });
43
+ return nextState;
44
+ });
45
+ cellXfsRegistry?.getPatches(saveHistory);
5
46
  // Move tables if necessary
6
47
  onChangeTables?.((prevTables) => {
7
48
  const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
@@ -11,20 +52,16 @@ export const removeTable = ({ onChangeTables, onChangeSheets, createHistory, get
11
52
  draft.splice(tableIndex, 1);
12
53
  }
13
54
  });
14
- // Mark table cells as dirty
15
- // const recalcCells = markTableAsDirty(
16
- // tableView.sheetId,
17
- // tableView.range,
18
- // getDependents,
19
- // enqueueCalculation
20
- // );
21
55
  saveHistory({
22
56
  tables: { patches, inversePatches },
23
- // recalcCells: { undo: recalcCells, redo: recalcCells },
24
57
  });
25
58
  return nextState;
26
59
  });
27
- // Remove hidden columns if user is removing table
60
+ // The table's filter goes with it: rows it hid become visible again. Their values did not
61
+ // change, so only the formulas that read visibility — `SUBTOTAL(101…111)` / `AGGREGATE` over
62
+ // those rows — are stale; dirtying the un-hidden cells recalculates exactly those dependents
63
+ // (the rewritten structured references were re-entered above with `force`).
64
+ const unhiddenRecalcCells = new Map();
28
65
  onChangeSheets((prevSheets) => {
29
66
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
30
67
  const sheet = draft.find((sheet) => sheet.sheetId === tableView.sheetId);
@@ -36,6 +73,9 @@ export const removeTable = ({ onChangeTables, onChangeSheets, createHistory, get
36
73
  for (let rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
37
74
  if (sheet.rowMetadata[rowIndex]?.hiddenByFilter) {
38
75
  sheet.rowMetadata[rowIndex].hiddenByFilter = false;
76
+ for (const [key, position] of markTableAsDirty(tableView.sheetId, { ...range, startRowIndex: rowIndex, endRowIndex: rowIndex }, getDependents, enqueueCalculation)) {
77
+ unhiddenRecalcCells.set(key, position);
78
+ }
39
79
  }
40
80
  }
41
81
  }
@@ -43,6 +83,14 @@ export const removeTable = ({ onChangeTables, onChangeSheets, createHistory, get
43
83
  // Save to history
44
84
  saveHistory({
45
85
  sheets: { patches, inversePatches },
86
+ ...(unhiddenRecalcCells.size
87
+ ? {
88
+ recalcCells: {
89
+ undo: unhiddenRecalcCells,
90
+ redo: unhiddenRecalcCells,
91
+ },
92
+ }
93
+ : {}),
46
94
  });
47
95
  return nextState;
48
96
  });
@@ -1,6 +1,17 @@
1
- import type { Slicer } from "@rowsncolumns/spreadsheet";
1
+ import type { Slicer, TableView } from "@rowsncolumns/spreadsheet";
2
2
  import { type CanvasGridProps, type CellData } from "@rowsncolumns/spreadsheet";
3
3
  import type { UseOnSlicersProps } from "../hooks/use-slicers";
4
+ /** Excel's default slicer frame, and the cascade step between slicers inserted together. */
5
+ export declare const TABLE_SLICER_WIDTH_PIXELS = 160;
6
+ export declare const TABLE_SLICER_HEIGHT_PIXELS = 220;
7
+ /** The column names Excel's Insert Slicers dialog lists for `table` (its columns, `Column N` for a gap). */
8
+ export declare const getTableSlicerColumnNames: (table: TableView) => string[];
9
+ /**
10
+ * The slicers Excel's Insert Slicers dialog creates for the checked `columnIndexes` (table-relative,
11
+ * 0-based) of `table`: one table-bound slicer per column, titled after the column, placed as a
12
+ * floating object just right of the table and cascaded so they don't stack exactly.
13
+ */
14
+ export declare const buildTableSlicers: (table: TableView, columnIndexes: number[], createId?: (columnIndex: number) => Slicer["slicerId"]) => Slicer[];
4
15
  export declare const deleteSlicer: <T extends CellData>({ onChangeSlicers, createHistory, }: Omit<UseOnSlicersProps<T>, "sheetId">) => (slicerId: Slicer["slicerId"]) => void;
5
16
  export declare const updateSlicer: <T extends CellData>({ onChangeSlicers, createHistory, }: Omit<UseOnSlicersProps<T>, "sheetId">) => (slicer: Slicer) => void;
6
17
  export declare const moveSlicer: <T extends CellData>({ onChangeSlicers, createHistory, }: UseOnSlicersProps<T>) => NonNullable<CanvasGridProps["onMoveSlicer"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"slicers.d.ts","sourceRoot":"","sources":["../../../interface/slicers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC9B,UAAU,MAAM,CAAC,UAAU,CAAC,SAsBrC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC9B,QAAQ,MAAM,SAsBvB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG5C,iBAAiB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CA6BpE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,iBAAiB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAuCtE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC9B,MAAM,MAAM,SAiBrB,CAAC"}
1
+ {"version":3,"file":"slicers.d.ts","sourceRoot":"","sources":["../../../interface/slicers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAG9C,4GAA4G;AAC5G,eAAO,MAAM,yBAAyB,GAAI,OAAO,SAAS,KAAG,MAAM,EAOlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,EAChB,eAAe,MAAM,EAAE,EACvB,WAAU,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,UAAU,CACY,KAC/D,MAAM,EAwBR,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC9B,UAAU,MAAM,CAAC,UAAU,CAAC,SAsBrC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC9B,QAAQ,MAAM,SAsBvB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG5C,iBAAiB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAqCpE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,iBAAiB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAyCtE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,qCAG9C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAC9B,MAAM,MAAM,SAiBrB,CAAC"}
@@ -1,10 +1,50 @@
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,
6
7
  widthPixels: 400,
7
8
  };
9
+ /** Excel's default slicer frame, and the cascade step between slicers inserted together. */
10
+ export const TABLE_SLICER_WIDTH_PIXELS = 160;
11
+ export const TABLE_SLICER_HEIGHT_PIXELS = 220;
12
+ const TABLE_SLICER_CASCADE_PIXELS = 24;
13
+ /** The column names Excel's Insert Slicers dialog lists for `table` (its columns, `Column N` for a gap). */
14
+ export const getTableSlicerColumnNames = (table) => {
15
+ const count = table.range.endColumnIndex - table.range.startColumnIndex + 1;
16
+ return Array.from({ length: count }, (_, index) => table.columns?.[index]?.name || `Column${index + 1}`);
17
+ };
18
+ /**
19
+ * The slicers Excel's Insert Slicers dialog creates for the checked `columnIndexes` (table-relative,
20
+ * 0-based) of `table`: one table-bound slicer per column, titled after the column, placed as a
21
+ * floating object just right of the table and cascaded so they don't stack exactly.
22
+ */
23
+ export const buildTableSlicers = (table, columnIndexes, createId = (columnIndex) => `slicer-${table.id}-${columnIndex}-${Date.now().toString(36)}`) => {
24
+ const names = getTableSlicerColumnNames(table);
25
+ return columnIndexes.map((columnIndex, order) => ({
26
+ slicerId: createId(columnIndex),
27
+ spec: {
28
+ type: "table",
29
+ tableIds: [table.id],
30
+ columnIndex,
31
+ title: names[columnIndex],
32
+ },
33
+ position: {
34
+ sheetId: table.sheetId,
35
+ overlayPosition: {
36
+ anchorCell: {
37
+ rowIndex: table.range.startRowIndex,
38
+ columnIndex: table.range.endColumnIndex + 1,
39
+ },
40
+ offsetXPixels: TABLE_SLICER_CASCADE_PIXELS * (order + 1),
41
+ offsetYPixels: TABLE_SLICER_CASCADE_PIXELS * order,
42
+ widthPixels: TABLE_SLICER_WIDTH_PIXELS,
43
+ heightPixels: TABLE_SLICER_HEIGHT_PIXELS,
44
+ },
45
+ },
46
+ }));
47
+ };
8
48
  export const deleteSlicer = ({ onChangeSlicers, createHistory, }) => {
9
49
  return (slicerId) => {
10
50
  const saveHistory = createHistory();
@@ -40,7 +80,7 @@ export const updateSlicer = ({ onChangeSlicers, createHistory, }) => {
40
80
  };
41
81
  };
42
82
  export const moveSlicer = ({ onChangeSlicers, createHistory, }) => {
43
- return (slicerId, sheetId, anchorCell, offsetXPixels, offsetYPixels) => {
83
+ return (slicerId, sheetId, anchorCell, offsetXPixels, offsetYPixels, toAnchor) => {
44
84
  const saveHistory = createHistory();
45
85
  onChangeSlicers?.((prevSlicers) => {
46
86
  const [nextState, patches, inversePatches] = produceWithPatches(prevSlicers, (draft) => {
@@ -55,6 +95,7 @@ export const moveSlicer = ({ onChangeSlicers, createHistory, }) => {
55
95
  slicer.position.overlayPosition.anchorCell = anchorCell;
56
96
  slicer.position.overlayPosition.offsetXPixels = offsetXPixels;
57
97
  slicer.position.overlayPosition.offsetYPixels = offsetYPixels;
98
+ setOverlayToAnchor(slicer.position.overlayPosition, toAnchor);
58
99
  }
59
100
  });
60
101
  saveHistory({
@@ -65,7 +106,7 @@ export const moveSlicer = ({ onChangeSlicers, createHistory, }) => {
65
106
  };
66
107
  };
67
108
  export const resizeSlicer = ({ onChangeSlicers, createHistory, }) => {
68
- return (slicerId, sheetId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
109
+ return (slicerId, sheetId, anchorCell, offsetXPixels, offsetYPixels, width, height, toAnchor) => {
69
110
  const saveHistory = createHistory();
70
111
  onChangeSlicers?.((prevSlicers) => {
71
112
  const [nextState, patches, inversePatches] = produceWithPatches(prevSlicers, (draft) => {
@@ -82,6 +123,7 @@ export const resizeSlicer = ({ onChangeSlicers, createHistory, }) => {
82
123
  slicer.position.overlayPosition.offsetYPixels = offsetYPixels;
83
124
  slicer.position.overlayPosition.widthPixels = width;
84
125
  slicer.position.overlayPosition.heightPixels = height;
126
+ setOverlayToAnchor(slicer.position.overlayPosition, toAnchor);
85
127
  }
86
128
  });
87
129
  saveHistory({
@@ -8,7 +8,7 @@ import type { Patch } from "immer";
8
8
  import { type AutoFillType } from "../api/fill";
9
9
  import type { CalculationOperation, CalculationResult, StructureChange } from "../hooks/use-calculation";
10
10
  import type { OnChangeFormattingWithCellFormat, OnChangeFormattingWithTypeValue } from "../hooks/use-on-change-formatting";
11
- import type { SheetData } from "../hooks/use-spreadsheet-state";
11
+ import { type SheetData } from "../hooks/use-spreadsheet-state";
12
12
  import type { HistoryType, SpreadsheetPatch } from "../hooks/use-undo-redo";
13
13
  import { CellXfsRegistry } from "../cellxfs-registry";
14
14
  import { SharedStringRegistry } from "../shared-string-registry";