@rowsncolumns/spreadsheet-state 29.0.0 → 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 (603) 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 +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 +9 -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 +17 -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 +322 -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 +10 -1
  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 +10 -1
  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 +81 -25
  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 +9 -2
  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 +223 -18
  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 +118 -1
  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 +10 -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 +10 -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 +67 -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 +9 -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 +122 -6
  303. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  304. package/dist/esm/api/anchored-objects.js +375 -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 +9 -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 +17 -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 +259 -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 +10 -1
  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 +10 -1
  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 +47 -14
  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 +9 -2
  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 +173 -15
  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 +113 -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 +10 -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 +10 -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 +48 -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 +9 -2
  572. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  573. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  574. package/dist/esm/interface/insert-table-row.js +67 -12
  575. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  576. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  577. package/dist/esm/interface/remove-duplicates.js +41 -6
  578. package/dist/esm/interface/remove-table.d.ts +1 -1
  579. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  580. package/dist/esm/interface/remove-table.js +58 -10
  581. package/dist/esm/interface/slicers.d.ts +12 -1
  582. package/dist/esm/interface/slicers.d.ts.map +1 -1
  583. package/dist/esm/interface/slicers.js +44 -2
  584. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  585. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  586. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  587. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  588. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  589. package/dist/esm/interface/table-totalrow.js +98 -68
  590. package/dist/esm/interface/table-utils.d.ts +59 -6
  591. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  592. package/dist/esm/interface/table-utils.js +155 -14
  593. package/dist/esm/interface/update-table.d.ts +16 -1
  594. package/dist/esm/interface/update-table.d.ts.map +1 -1
  595. package/dist/esm/interface/update-table.js +203 -42
  596. package/dist/esm/sheet-cell.d.ts.map +1 -1
  597. package/dist/esm/test-setup.d.ts.map +1 -1
  598. package/dist/esm/test-setup.js +6 -0
  599. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  600. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  601. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  602. package/dist/esm/validation-schema/table.schema.js +15 -2
  603. package/package.json +19 -11
@@ -1,24 +1,26 @@
1
1
  import { __assign, __awaiter, __generator, __read } from "tslib";
2
- import { areaIntersects, selectionFromActiveCell } from "@rowsncolumns/grid";
2
+ import { areaIntersects, isAreasEqual, selectionFromActiveCell, } from "@rowsncolumns/grid";
3
3
  import { isCellWithinBounds } from "@rowsncolumns/grid";
4
- import { uuid } from "@rowsncolumns/utils";
4
+ import { tableIdDuplicateMessage, uuid, validateTableName, } from "@rowsncolumns/utils";
5
5
  import { produceWithPatches } from "immer";
6
6
  import { useCallback } from "react";
7
- import { getConfictingTable } from "../helpers";
8
- import { createTable } from "../interface/create-table";
7
+ import { getShiftCellsRefusal, getTableEditRefusal, getTableRangeRefusal, shiftBand, } from "../api/structural-guards";
8
+ import { createTable, resolveCreateTableRange, } from "../interface/create-table";
9
9
  import { deleteTableColumn } from "../interface/delete-table-column";
10
10
  import { insertTableColumn } from "../interface/insert-column";
11
11
  import { removeTable } from "../interface/remove-table";
12
- import { updateTable } from "../interface/update-table";
12
+ import { tableHeaderRowAboveIsFree, tableRowHasContent, } from "../interface/table-utils";
13
+ import { resolveUpdatedTableRange, updateTable, } from "../interface/update-table";
13
14
  import { useShowError } from "./../atoms/error-state.atom";
14
15
  import { SHEET_PROTECTION_ERROR_TITLE, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
15
16
  import { getHiddenRowsFromFilterSpecs } from "./use-on-filter-table";
16
17
  export var useOnTable = function (_a) {
17
- var locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, rowCount = _a.rowCount, columnCount = _a.columnCount, tables = _a.tables, basicFilter = _a.basicFilter, spreadsheetTheme = _a.theme, idCreationStrategy = _a.idCreationStrategy, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, createHistory = _a.createHistory, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeSheetData = _a.onChangeSheetData, getFormattedValue = _a.getFormattedValue, getEffectiveValue = _a.getEffectiveValue, onRequestCalculate = _a.onRequestCalculate, getDependents = _a.getDependents, enqueueGraphOperation = _a.enqueueGraphOperation, getContentfulRangeAroundCell = _a.getContentfulRangeAroundCell, getSheetName = _a.getSheetName, onCommand = _a.onCommand, generatedNames = _a.generatedNames;
18
+ var locale = _a.locale, batchHistory = _a.batchHistory, sheetData = _a.sheetData, sheets = _a.sheets, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, onChangeCitations = _a.onChangeCitations, onChangeCharts = _a.onChangeCharts, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, rowCount = _a.rowCount, columnCount = _a.columnCount, tables = _a.tables, namedRanges = _a.namedRanges, basicFilter = _a.basicFilter, spreadsheetTheme = _a.theme, idCreationStrategy = _a.idCreationStrategy, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, createHistory = _a.createHistory, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeSheetData = _a.onChangeSheetData, getFormattedValue = _a.getFormattedValue, getEffectiveValue = _a.getEffectiveValue, onRequestCalculate = _a.onRequestCalculate, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getBandedCells = _a.getBandedCells, enqueueGraphOperation = _a.enqueueGraphOperation, getContentfulRangeAroundCell = _a.getContentfulRangeAroundCell, getSheetName = _a.getSheetName, onCommand = _a.onCommand, generatedNames = _a.generatedNames, getArrayRanges = _a.getArrayRanges, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats;
18
19
  var showError = useShowError();
19
20
  var canPerformSheetAction = useCanPerformSheetAction();
20
21
  // Create a new table
21
- var onCreateTable = useCallback(function (sheetId, activeCell, selections, tableSpec, theme, bandedRange) {
22
+ var onCreateTable = useCallback(function (sheetId, activeCell, selections, tableSpec, theme, bandedRange, options) {
23
+ var _a;
22
24
  // Validate
23
25
  var lastSelection = selections === null || selections === void 0 ? void 0 : selections[selections.length - 1];
24
26
  // Check basicFilter intersection
@@ -30,42 +32,105 @@ export var useOnTable = function (_a) {
30
32
  });
31
33
  return;
32
34
  }
33
- // Check if this selection intersects
34
- var tableIntersects = tables === null || tables === void 0 ? void 0 : tables.find(function (table) {
35
- return areaIntersects(table.range, lastSelection === null || lastSelection === void 0 ? void 0 : lastSelection.range) &&
36
- table.sheetId === sheetId;
37
- });
38
- if (tableIntersects) {
35
+ if ((tableSpec === null || tableSpec === void 0 ? void 0 : tableSpec.id) !== undefined &&
36
+ (tables === null || tables === void 0 ? void 0 : tables.some(function (table) { return table.id === tableSpec.id; }))) {
39
37
  showError({
40
38
  title: "Error",
41
- message: "You cannot create a table that spans another table.",
39
+ message: tableIdDuplicateMessage(tableSpec.id),
42
40
  });
43
41
  return;
44
42
  }
45
- createTable({
46
- locale: locale,
47
- rowCount: rowCount,
48
- columnCount: columnCount,
49
- tables: tables,
50
- basicFilter: basicFilter,
51
- cellXfsRegistry: cellXfsRegistry,
52
- sharedStringRegistry: sharedStringRegistry,
53
- theme: spreadsheetTheme,
54
- idCreationStrategy: idCreationStrategy,
55
- enqueueCalculation: enqueueCalculation,
56
- createHistory: createHistory,
57
- onChangeSheets: onChangeSheets,
58
- onChangeTables: onChangeTables,
59
- onChangeSheetData: onChangeSheetData,
60
- getFormattedValue: getFormattedValue,
61
- getEffectiveValue: getEffectiveValue,
62
- onRequestCalculate: onRequestCalculate,
63
- getDependents: getDependents,
64
- enqueueGraphOperation: enqueueGraphOperation,
43
+ var titleError = (tableSpec === null || tableSpec === void 0 ? void 0 : tableSpec.title) !== undefined
44
+ ? validateTableName(tableSpec.title, tables === null || tables === void 0 ? void 0 : tables.map(function (table) { return table.title; }), namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (namedRange) { return namedRange.name; }))
45
+ : undefined;
46
+ if (titleError) {
47
+ showError({ title: "Error", message: titleError });
48
+ return;
49
+ }
50
+ var dataRange = resolveCreateTableRange({
51
+ sheetId: sheetId,
52
+ activeCell: activeCell,
53
+ selections: selections,
54
+ tableSpec: tableSpec,
65
55
  getContentfulRangeAroundCell: getContentfulRangeAroundCell,
66
- getSheetName: getSheetName,
67
- generatedNames: generatedNames,
68
- })(sheetId, activeCell, selections, tableSpec, theme, bandedRange);
56
+ });
57
+ var merges = (_a = sheets === null || sheets === void 0 ? void 0 : sheets.find(function (sheet) { return sheet.sheetId === sheetId; })) === null || _a === void 0 ? void 0 : _a.merges;
58
+ // "My table has headers" unchecked: the header row is inserted by shifting the range's
59
+ // columns down one row — refused (Excel) when that would tear a merge, table or array or
60
+ // push a non-blank cell off the sheet.
61
+ var insertsHeaderRow = (options === null || options === void 0 ? void 0 : options.hasHeaders) === false;
62
+ var headerRowInsert = insertsHeaderRow
63
+ ? __assign(__assign({}, dataRange), { endRowIndex: dataRange.startRowIndex }) : undefined;
64
+ if (headerRowInsert) {
65
+ var refusal = getShiftCellsRefusal({
66
+ direction: "down",
67
+ range: headerRowInsert,
68
+ sheetId: sheetId,
69
+ rows: sheetData === null || sheetData === void 0 ? void 0 : sheetData[sheetId],
70
+ rowCount: rowCount,
71
+ merges: merges,
72
+ tables: tables,
73
+ });
74
+ if (refusal) {
75
+ showError({ title: refusal.title, message: refusal.message });
76
+ return;
77
+ }
78
+ }
79
+ // Excel: a table cannot overlap another table or cover merged cells (T-07) — judged on the
80
+ // range the table will cover; with an inserted header row, tables and merges wholly inside
81
+ // the shifted columns have moved down one row by then.
82
+ var rangeRefusal = getTableRangeRefusal({
83
+ sheetId: sheetId,
84
+ range: headerRowInsert
85
+ ? __assign(__assign({}, dataRange), { endRowIndex: dataRange.endRowIndex + 1 }) : dataRange,
86
+ tables: tables,
87
+ merges: merges,
88
+ insertedRows: headerRowInsert
89
+ ? { band: shiftBand("down", headerRowInsert), count: 1 }
90
+ : undefined,
91
+ });
92
+ if (rangeRefusal) {
93
+ showError(rangeRefusal);
94
+ return;
95
+ }
96
+ var create = function () {
97
+ return createTable({
98
+ locale: locale,
99
+ rowCount: rowCount,
100
+ columnCount: columnCount,
101
+ tables: tables,
102
+ namedRanges: namedRanges,
103
+ basicFilter: basicFilter,
104
+ cellXfsRegistry: cellXfsRegistry,
105
+ sharedStringRegistry: sharedStringRegistry,
106
+ theme: spreadsheetTheme,
107
+ idCreationStrategy: idCreationStrategy,
108
+ enqueueCalculation: enqueueCalculation,
109
+ enqueueStructureChange: enqueueStructureChange,
110
+ createHistory: createHistory,
111
+ onChangeSheets: onChangeSheets,
112
+ onChangeTables: onChangeTables,
113
+ onChangeSheetData: onChangeSheetData,
114
+ onChangeCitations: onChangeCitations,
115
+ onChangeCharts: onChangeCharts,
116
+ getActiveCell: getActiveCell,
117
+ getSelections: getSelections,
118
+ getFormattedValue: getFormattedValue,
119
+ getEffectiveValue: getEffectiveValue,
120
+ onRequestCalculate: onRequestCalculate,
121
+ getDependents: getDependents,
122
+ enqueueGraphOperation: enqueueGraphOperation,
123
+ getContentfulRangeAroundCell: getContentfulRangeAroundCell,
124
+ getSheetName: getSheetName,
125
+ generatedNames: generatedNames,
126
+ })(sheetId, activeCell, selections, tableSpec, theme, bandedRange, options);
127
+ };
128
+ if (insertsHeaderRow && batchHistory) {
129
+ batchHistory(create);
130
+ }
131
+ else {
132
+ create();
133
+ }
69
134
  onCommand === null || onCommand === void 0 ? void 0 : onCommand({
70
135
  command: "create-table",
71
136
  sheetId: sheetId,
@@ -74,10 +139,20 @@ export var useOnTable = function (_a) {
74
139
  tableSpec: tableSpec,
75
140
  theme: theme,
76
141
  bandedRange: bandedRange,
142
+ hasHeaders: options === null || options === void 0 ? void 0 : options.hasHeaders,
77
143
  });
78
144
  }, [
79
145
  locale,
146
+ batchHistory,
147
+ sheetData,
148
+ sheets,
149
+ getActiveCell,
150
+ getSelections,
151
+ onChangeCitations,
152
+ onChangeCharts,
153
+ enqueueStructureChange,
80
154
  tables,
155
+ namedRanges,
81
156
  basicFilter,
82
157
  columnCount,
83
158
  cellXfsRegistry,
@@ -103,33 +178,134 @@ export var useOnTable = function (_a) {
103
178
  // Remove table
104
179
  var onRemoveTable = useCallback(function (tableView) {
105
180
  removeTable({
181
+ locale: locale,
182
+ cellXfsRegistry: cellXfsRegistry,
183
+ sharedStringRegistry: sharedStringRegistry,
184
+ getSheetName: getSheetName,
106
185
  onChangeTables: onChangeTables,
107
186
  onChangeSheets: onChangeSheets,
187
+ onChangeSheetData: onChangeSheetData,
108
188
  createHistory: createHistory,
109
189
  getDependents: getDependents,
190
+ getGraphNodes: getGraphNodes,
191
+ getBandedCells: getBandedCells,
110
192
  enqueueCalculation: enqueueCalculation,
193
+ enqueueGraphOperation: enqueueGraphOperation,
111
194
  })(tableView);
112
195
  onCommand === null || onCommand === void 0 ? void 0 : onCommand({ command: "remove-table", tableView: tableView });
113
196
  }, [
197
+ locale,
198
+ cellXfsRegistry,
199
+ sharedStringRegistry,
200
+ getSheetName,
114
201
  onChangeTables,
115
202
  getDependents,
203
+ getGraphNodes,
204
+ getBandedCells,
116
205
  enqueueCalculation,
206
+ enqueueGraphOperation,
117
207
  onChangeSheets,
208
+ onChangeSheetData,
118
209
  createHistory,
119
210
  onCommand,
120
211
  ]);
121
212
  // Update a table
122
213
  var onUpdateTable = useCallback(function (sheetId, tableId, updatedTable) {
214
+ var _a;
215
+ var table = tables === null || tables === void 0 ? void 0 : tables.find(function (table) { return table.id === tableId; });
216
+ var titleError = table &&
217
+ updatedTable.title !== undefined &&
218
+ updatedTable.title !== table.title
219
+ ? validateTableName(updatedTable.title, tables === null || tables === void 0 ? void 0 : tables.filter(function (t) { return t.id !== tableId; }).map(function (t) { return t.title; }), namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (namedRange) { return namedRange.name; }))
220
+ : undefined;
221
+ if (titleError) {
222
+ showError({ title: "Error", message: titleError });
223
+ return;
224
+ }
225
+ // Switching Total Row on over an occupied row shifts the table's column
226
+ // band down (`updateTable`); Excel refuses that shift when it would tear
227
+ // another table, a merge or an array, or push content off the sheet.
228
+ var totalRowShift = table &&
229
+ !table.totalRow &&
230
+ updatedTable.totalRow === true &&
231
+ tableRowHasContent(sheetData === null || sheetData === void 0 ? void 0 : sheetData[sheetId], table.range.endRowIndex + 1, table.range.startColumnIndex, table.range.endColumnIndex)
232
+ ? {
233
+ startRowIndex: table.range.endRowIndex + 1,
234
+ endRowIndex: table.range.endRowIndex + 1,
235
+ startColumnIndex: table.range.startColumnIndex,
236
+ endColumnIndex: table.range.endColumnIndex,
237
+ }
238
+ : undefined;
239
+ var merges = (_a = sheets === null || sheets === void 0 ? void 0 : sheets.find(function (sheet) { return sheet.sheetId === sheetId; })) === null || _a === void 0 ? void 0 : _a.merges;
240
+ if (totalRowShift) {
241
+ var refusal = getShiftCellsRefusal({
242
+ direction: "down",
243
+ range: totalRowShift,
244
+ sheetId: sheetId,
245
+ rows: sheetData === null || sheetData === void 0 ? void 0 : sheetData[sheetId],
246
+ rowCount: rowCount,
247
+ merges: merges,
248
+ tables: tables,
249
+ arrayRanges: getArrayRanges === null || getArrayRanges === void 0 ? void 0 : getArrayRanges(sheetId),
250
+ });
251
+ if (refusal) {
252
+ showError({ title: refusal.title, message: refusal.message });
253
+ return;
254
+ }
255
+ }
256
+ // Excel: the table's new range (an edited range, a total row switched on, or a header row
257
+ // re-added above the data) cannot overlap another table or cover merged cells (T-07). An
258
+ // unchanged range is not re-judged; with the occupied-row shift above, tables and merges
259
+ // wholly inside the shifted band are judged one row lower.
260
+ var nextRange = table &&
261
+ resolveUpdatedTableRange(table, updatedTable, {
262
+ headerRowAboveIsFree: tableHeaderRowAboveIsFree({
263
+ sheetId: sheetId,
264
+ table: table,
265
+ sheetData: sheetData,
266
+ tables: tables,
267
+ }),
268
+ });
269
+ var rangeRefusal = table && nextRange && !isAreasEqual(nextRange, table.range)
270
+ ? getTableRangeRefusal({
271
+ sheetId: sheetId,
272
+ range: nextRange,
273
+ tables: tables,
274
+ merges: merges,
275
+ excludeTableId: tableId,
276
+ insertedRows: totalRowShift
277
+ ? { band: shiftBand("down", totalRowShift), count: 1 }
278
+ : undefined,
279
+ })
280
+ : undefined;
281
+ if (rangeRefusal) {
282
+ showError(rangeRefusal);
283
+ return;
284
+ }
123
285
  updateTable({
124
286
  locale: locale,
125
287
  enqueueCalculation: enqueueCalculation,
288
+ enqueueGraphOperation: enqueueGraphOperation,
289
+ getGraphNodes: getGraphNodes,
126
290
  createHistory: createHistory,
127
291
  onChangeTables: onChangeTables,
128
292
  onChangeSheetData: onChangeSheetData,
129
293
  getFormattedValue: getFormattedValue,
130
294
  getDependents: getDependents,
131
295
  tables: tables,
296
+ namedRanges: namedRanges,
132
297
  generatedNames: generatedNames,
298
+ sheetData: sheetData,
299
+ rowCount: rowCount,
300
+ columnCount: columnCount,
301
+ cellXfsRegistry: cellXfsRegistry,
302
+ sharedStringRegistry: sharedStringRegistry,
303
+ getSheetName: getSheetName,
304
+ getActiveCell: getActiveCell,
305
+ enqueueStructureChange: enqueueStructureChange,
306
+ onChangeSheets: onChangeSheets,
307
+ onChangeDataValidations: onChangeDataValidations,
308
+ onChangeConditionalFormats: onChangeConditionalFormats,
133
309
  })(sheetId, tableId, updatedTable);
134
310
  onCommand === null || onCommand === void 0 ? void 0 : onCommand({
135
311
  command: "update-table",
@@ -140,14 +316,33 @@ export var useOnTable = function (_a) {
140
316
  }, [
141
317
  locale,
142
318
  tables,
319
+ namedRanges,
320
+ sheets,
321
+ showError,
143
322
  createHistory,
144
323
  getFormattedValue,
145
324
  onChangeTables,
146
325
  onChangeSheetData,
147
326
  enqueueCalculation,
327
+ enqueueGraphOperation,
328
+ getGraphNodes,
148
329
  getDependents,
149
330
  onCommand,
150
331
  generatedNames,
332
+ sheetData,
333
+ sheets,
334
+ getArrayRanges,
335
+ rowCount,
336
+ columnCount,
337
+ cellXfsRegistry,
338
+ sharedStringRegistry,
339
+ getSheetName,
340
+ getActiveCell,
341
+ enqueueGraphOperation,
342
+ enqueueStructureChange,
343
+ onChangeSheets,
344
+ onChangeDataValidations,
345
+ onChangeConditionalFormats,
151
346
  ]);
152
347
  /**
153
348
  * Create a basic filter
@@ -273,12 +468,16 @@ export var useOnTable = function (_a) {
273
468
  /**
274
469
  * Insert table column
275
470
  */
276
- var onInsertTableColumn = useCallback(function (tableView, dimensionIndex, direction) {
277
- // Validate
278
- if (getConfictingTable(tables, tableView)) {
279
- showError({
280
- message: "You cannot insert or delete cells over part of a table.",
281
- });
471
+ var onInsertTableColumn = useCallback(function (tableView, dimensionIndex, direction, count) {
472
+ // Excel refuses a table-column insert whose shifted band would tear another table (T-47).
473
+ var refusal = getTableEditRefusal({
474
+ sheetId: tableView.sheetId,
475
+ table: tableView,
476
+ axis: "column",
477
+ tables: tables,
478
+ });
479
+ if (refusal) {
480
+ showError({ title: refusal.title, message: refusal.message });
282
481
  return;
283
482
  }
284
483
  insertTableColumn({
@@ -293,17 +492,19 @@ export var useOnTable = function (_a) {
293
492
  onChangeTables: onChangeTables,
294
493
  onChangeSheets: onChangeSheets,
295
494
  onChangeSheetData: onChangeSheetData,
495
+ onChangeCharts: onChangeCharts,
296
496
  enqueueCalculation: enqueueCalculation,
297
497
  enqueueStructureChange: enqueueStructureChange,
298
498
  enqueueGraphOperation: enqueueGraphOperation,
299
499
  getDependents: getDependents,
300
500
  generatedNames: generatedNames,
301
- })(tableView, dimensionIndex, direction);
501
+ })(tableView, dimensionIndex, direction, count);
302
502
  onCommand === null || onCommand === void 0 ? void 0 : onCommand({
303
503
  command: "insert-table-column",
304
504
  tableView: tableView,
305
505
  dimensionIndex: dimensionIndex,
306
506
  direction: direction,
507
+ count: count,
307
508
  });
308
509
  }, [
309
510
  tables,
@@ -317,6 +518,7 @@ export var useOnTable = function (_a) {
317
518
  onChangeTables,
318
519
  onChangeSheets,
319
520
  onChangeSheetData,
521
+ onChangeCharts,
320
522
  enqueueCalculation,
321
523
  enqueueStructureChange,
322
524
  enqueueGraphOperation,
@@ -327,11 +529,15 @@ export var useOnTable = function (_a) {
327
529
  ]);
328
530
  // Delete a table column
329
531
  var onDeleteTableColumn = useCallback(function (tableView, dimensionIndex) {
330
- // Validate - keep React-specific validation at hook level
331
- if (getConfictingTable(tables, tableView)) {
332
- showError({
333
- message: "You cannot insert or delete cells over part of a table.",
334
- });
532
+ // Excel refuses a table-column delete whose shifted band would tear another table (T-47).
533
+ var refusal = getTableEditRefusal({
534
+ sheetId: tableView.sheetId,
535
+ table: tableView,
536
+ axis: "column",
537
+ tables: tables,
538
+ });
539
+ if (refusal) {
540
+ showError({ title: refusal.title, message: refusal.message });
335
541
  return;
336
542
  }
337
543
  deleteTableColumn({
@@ -345,6 +551,7 @@ export var useOnTable = function (_a) {
345
551
  onChangeTables: onChangeTables,
346
552
  onChangeSheets: onChangeSheets,
347
553
  onChangeSheetData: onChangeSheetData,
554
+ onChangeCharts: onChangeCharts,
348
555
  enqueueCalculation: enqueueCalculation,
349
556
  enqueueStructureChange: enqueueStructureChange,
350
557
  enqueueGraphOperation: enqueueGraphOperation,
@@ -367,6 +574,7 @@ export var useOnTable = function (_a) {
367
574
  onChangeTables,
368
575
  onChangeSheets,
369
576
  onChangeSheetData,
577
+ onChangeCharts,
370
578
  enqueueCalculation,
371
579
  enqueueStructureChange,
372
580
  enqueueGraphOperation,
@@ -0,0 +1,23 @@
1
+ import type { CalculatedColumnFill, CellData, Sheet, TableView } from "@rowsncolumns/spreadsheet";
2
+ import type { OnCommand } from "../commands";
3
+ import type { useCalculation } from "./use-calculation";
4
+ import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
5
+ import type { SpreadsheetPatch } from "./use-undo-redo";
6
+ export type UseOnUndoCalculatedColumnProps<T extends CellData, S extends Sheet> = {
7
+ tables?: TableView[];
8
+ createHistory: () => (patches: SpreadsheetPatch) => void;
9
+ /** `useUndoRedo`'s `batchHistory`: the restored cells and the dropped column formula undo as one step. */
10
+ batchHistory: <R>(action: () => R) => R;
11
+ onChangeSheetData: UseSpreadsheetProps<T, S>["onChangeSheetData"];
12
+ onChangeTables: UseSpreadsheetProps<T, S>["onChangeTables"];
13
+ enqueueCalculation: ReturnType<typeof useCalculation>["enqueueCalculation"];
14
+ onCommand?: OnCommand;
15
+ };
16
+ /**
17
+ * Excel's "Undo Calculated Column" (the AutoCorrect smart tag after a formula typed into a table
18
+ * column filled it): the fill alone reverts — every body cell the fill overwrote goes back to what
19
+ * it held (empty, or the column's previous formula) — and the column stops being a calculated
20
+ * column. The typed cell keeps its formula. One undo step.
21
+ */
22
+ export declare const useOnUndoCalculatedColumn: <T extends CellData, S extends Sheet>({ tables, createHistory, batchHistory, onChangeSheetData, onChangeTables, enqueueCalculation, onCommand, }: UseOnUndoCalculatedColumnProps<T, S>) => (fill: CalculatedColumnFill) => void;
23
+ //# sourceMappingURL=use-on-undo-calculated-column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-undo-calculated-column.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-undo-calculated-column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,QAAQ,EACR,KAAK,EACL,SAAS,EACV,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,8BAA8B,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,0GAA0G;IAC1G,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,4GAQ5E,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,YAE5B,oBAAoB,SAgE9B,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { __assign, __read, __values } from "tslib";
2
+ import { produceWithPatches } from "immer";
3
+ import { useCallback } from "react";
4
+ import { createSheetCellIdentifier } from "../api/formula";
5
+ import { createSheetDraft } from "../api/immer-utils";
6
+ /**
7
+ * Excel's "Undo Calculated Column" (the AutoCorrect smart tag after a formula typed into a table
8
+ * column filled it): the fill alone reverts — every body cell the fill overwrote goes back to what
9
+ * it held (empty, or the column's previous formula) — and the column stops being a calculated
10
+ * column. The typed cell keeps its formula. One undo step.
11
+ */
12
+ export var useOnUndoCalculatedColumn = function (_a) {
13
+ var tables = _a.tables, createHistory = _a.createHistory, batchHistory = _a.batchHistory, onChangeSheetData = _a.onChangeSheetData, onChangeTables = _a.onChangeTables, enqueueCalculation = _a.enqueueCalculation, onCommand = _a.onCommand;
14
+ return useCallback(function (fill) {
15
+ var sheetId = fill.sheetId, tableId = fill.tableId, columnIndex = fill.columnIndex, previous = fill.previous;
16
+ var table = tables === null || tables === void 0 ? void 0 : tables.find(function (candidate) { return candidate.id === tableId && candidate.sheetId === sheetId; });
17
+ if (!table) {
18
+ return;
19
+ }
20
+ batchHistory(function () {
21
+ var saveHistory = createHistory();
22
+ var recalcCells = new Map();
23
+ onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
24
+ var _a = __read(produceWithPatches(prevSheetData, function (draft) {
25
+ var e_1, _a;
26
+ try {
27
+ for (var previous_1 = __values(previous), previous_1_1 = previous_1.next(); !previous_1_1.done; previous_1_1 = previous_1.next()) {
28
+ var _b = previous_1_1.value, rowIndex = _b.rowIndex, col = _b.columnIndex, cell = _b.cell;
29
+ var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
30
+ currentSheet[rowIndex].values[col] = (cell !== null && cell !== void 0 ? cell : undefined);
31
+ var position = { sheetId: sheetId, rowIndex: rowIndex, columnIndex: col };
32
+ enqueueCalculation({ type: cell ? "add" : "remove", position: position, force: true });
33
+ recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, col), __assign(__assign({}, position), { force: true }));
34
+ }
35
+ }
36
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
37
+ finally {
38
+ try {
39
+ if (previous_1_1 && !previous_1_1.done && (_a = previous_1.return)) _a.call(previous_1);
40
+ }
41
+ finally { if (e_1) throw e_1.error; }
42
+ }
43
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
44
+ saveHistory(__assign({ sheetData: { patches: patches, inversePatches: inversePatches } }, (recalcCells.size
45
+ ? { recalcCells: { undo: recalcCells, redo: recalcCells } }
46
+ : {})));
47
+ return nextState;
48
+ });
49
+ onChangeTables === null || onChangeTables === void 0 ? void 0 : onChangeTables(function (prevTables) {
50
+ var _a = __read(produceWithPatches(prevTables, function (draft) {
51
+ var _a;
52
+ var current = draft.find(function (candidate) { return candidate.id === tableId && candidate.sheetId === sheetId; });
53
+ var column = (_a = current === null || current === void 0 ? void 0 : current.columns) === null || _a === void 0 ? void 0 : _a[columnIndex - current.range.startColumnIndex];
54
+ if (column) {
55
+ delete column.formula;
56
+ }
57
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
58
+ saveHistory({ tables: { patches: patches, inversePatches: inversePatches } });
59
+ return nextState;
60
+ });
61
+ });
62
+ onCommand === null || onCommand === void 0 ? void 0 : onCommand({
63
+ command: "undo-calculated-column",
64
+ sheetId: sheetId,
65
+ tableId: tableId,
66
+ columnIndex: columnIndex,
67
+ previous: previous,
68
+ });
69
+ }, [tables, createHistory, batchHistory, onChangeSheetData, onChangeTables, enqueueCalculation, onCommand]);
70
+ };
@@ -0,0 +1,28 @@
1
+ import type { GridRange } from "@rowsncolumns/common-types";
2
+ import type { CellData, Sheet, TableAutoExpansion, TableView } from "@rowsncolumns/spreadsheet";
3
+ import type { OnCommand } from "../commands";
4
+ import type { useCalculation } from "./use-calculation";
5
+ import type { CellXfsRegistry } from "./use-cellxfs-registry";
6
+ import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
7
+ import type { SpreadsheetPatch } from "./use-undo-redo";
8
+ export type UseOnUndoTableAutoExpansionProps<T extends CellData, S extends Sheet> = {
9
+ locale?: string;
10
+ cellXfsRegistry?: CellXfsRegistry;
11
+ tables?: TableView[];
12
+ createHistory: () => (patches: SpreadsheetPatch) => void;
13
+ /** `useUndoRedo`'s `batchHistory`: the resize and the cell clears undo as one step. */
14
+ batchHistory: <R>(action: () => R) => R;
15
+ onResizeTable: (sheetId: number, table: TableView, range: GridRange) => void;
16
+ onChangeSheetData: UseSpreadsheetProps<T, S>["onChangeSheetData"];
17
+ enqueueCalculation: ReturnType<typeof useCalculation>["enqueueCalculation"];
18
+ onCommand?: OnCommand;
19
+ };
20
+ /**
21
+ * Excel's "Undo Table AutoExpansion" (the AutoCorrect smart tag after a table grew over a typed,
22
+ * pasted or filled cell): the table resizes back to the range it had before the growth, and the
23
+ * cells the growth itself wrote — the calculated-column formulas and generated header names it
24
+ * put into empty cells, the column formatting it copied onto cells that had none — are cleared.
25
+ * The user's own value stays, now a plain cell outside the table. One undo step.
26
+ */
27
+ export declare const useOnUndoTableAutoExpansion: <T extends CellData, S extends Sheet>({ locale, cellXfsRegistry, tables, createHistory, batchHistory, onResizeTable, onChangeSheetData, enqueueCalculation, onCommand, }: UseOnUndoTableAutoExpansionProps<T, S>) => (expansion: TableAutoExpansion) => void;
28
+ //# sourceMappingURL=use-on-undo-table-auto-expansion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-undo-table-auto-expansion.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-undo-table-auto-expansion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EACV,QAAQ,EACR,KAAK,EACL,kBAAkB,EAClB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,gCAAgC,CAC1C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,IACb;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,uFAAuF;IACvF,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7E,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oIAU9E,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAEzB,kBAAkB,SA4EjC,CAAC"}