@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,22 +1,23 @@
1
- import { areaIntersects, selectionFromActiveCell } from "@rowsncolumns/grid";
1
+ import { areaIntersects, isAreasEqual, selectionFromActiveCell, } from "@rowsncolumns/grid";
2
2
  import { isCellWithinBounds } from "@rowsncolumns/grid";
3
- import { uuid } from "@rowsncolumns/utils";
3
+ import { tableIdDuplicateMessage, uuid, validateTableName, } from "@rowsncolumns/utils";
4
4
  import { produceWithPatches } from "immer";
5
5
  import { useCallback } from "react";
6
- import { getConfictingTable } from "../helpers";
7
- import { createTable } from "../interface/create-table";
6
+ import { getShiftCellsRefusal, getTableEditRefusal, getTableRangeRefusal, shiftBand, } from "../api/structural-guards";
7
+ import { createTable, resolveCreateTableRange, } from "../interface/create-table";
8
8
  import { deleteTableColumn } from "../interface/delete-table-column";
9
9
  import { insertTableColumn } from "../interface/insert-column";
10
10
  import { removeTable } from "../interface/remove-table";
11
- import { updateTable } from "../interface/update-table";
11
+ import { tableHeaderRowAboveIsFree, tableRowHasContent, } from "../interface/table-utils";
12
+ import { resolveUpdatedTableRange, updateTable, } from "../interface/update-table";
12
13
  import { useShowError } from "./../atoms/error-state.atom";
13
14
  import { SHEET_PROTECTION_ERROR_TITLE, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
14
15
  import { getHiddenRowsFromFilterSpecs } from "./use-on-filter-table";
15
- export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowCount, columnCount, tables, basicFilter, theme: spreadsheetTheme, idCreationStrategy, enqueueCalculation, enqueueStructureChange, createHistory, onChangeSheets, onChangeTables, onChangeSheetData, getFormattedValue, getEffectiveValue, onRequestCalculate, getDependents, enqueueGraphOperation, getContentfulRangeAroundCell, getSheetName, onCommand, generatedNames, }) => {
16
+ export const useOnTable = ({ locale, batchHistory, sheetData, sheets, getActiveCell, getSelections, onChangeCitations, onChangeCharts, cellXfsRegistry, sharedStringRegistry, rowCount, columnCount, tables, namedRanges, basicFilter, theme: spreadsheetTheme, idCreationStrategy, enqueueCalculation, enqueueStructureChange, createHistory, onChangeSheets, onChangeTables, onChangeSheetData, getFormattedValue, getEffectiveValue, onRequestCalculate, getDependents, getGraphNodes, getBandedCells, enqueueGraphOperation, getContentfulRangeAroundCell, getSheetName, onCommand, generatedNames, getArrayRanges, onChangeDataValidations, onChangeConditionalFormats, }) => {
16
17
  const showError = useShowError();
17
18
  const canPerformSheetAction = useCanPerformSheetAction();
18
19
  // Create a new table
19
- const onCreateTable = useCallback((sheetId, activeCell, selections, tableSpec, theme, bandedRange) => {
20
+ const onCreateTable = useCallback((sheetId, activeCell, selections, tableSpec, theme, bandedRange, options) => {
20
21
  // Validate
21
22
  const lastSelection = selections?.[selections.length - 1];
22
23
  // Check basicFilter intersection
@@ -28,31 +29,90 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
28
29
  });
29
30
  return;
30
31
  }
31
- // Check if this selection intersects
32
- const tableIntersects = tables?.find((table) => areaIntersects(table.range, lastSelection?.range) &&
33
- table.sheetId === sheetId);
34
- if (tableIntersects) {
32
+ if (tableSpec?.id !== undefined &&
33
+ tables?.some((table) => table.id === tableSpec.id)) {
35
34
  showError({
36
35
  title: "Error",
37
- message: "You cannot create a table that spans another table.",
36
+ message: tableIdDuplicateMessage(tableSpec.id),
38
37
  });
39
38
  return;
40
39
  }
41
- createTable({
40
+ const titleError = tableSpec?.title !== undefined
41
+ ? validateTableName(tableSpec.title, tables?.map((table) => table.title), namedRanges?.map((namedRange) => namedRange.name))
42
+ : undefined;
43
+ if (titleError) {
44
+ showError({ title: "Error", message: titleError });
45
+ return;
46
+ }
47
+ const dataRange = resolveCreateTableRange({
48
+ sheetId,
49
+ activeCell,
50
+ selections,
51
+ tableSpec,
52
+ getContentfulRangeAroundCell,
53
+ });
54
+ const merges = sheets?.find((sheet) => sheet.sheetId === sheetId)?.merges;
55
+ // "My table has headers" unchecked: the header row is inserted by shifting the range's
56
+ // columns down one row — refused (Excel) when that would tear a merge, table or array or
57
+ // push a non-blank cell off the sheet.
58
+ const insertsHeaderRow = options?.hasHeaders === false;
59
+ const headerRowInsert = insertsHeaderRow
60
+ ? { ...dataRange, endRowIndex: dataRange.startRowIndex }
61
+ : undefined;
62
+ if (headerRowInsert) {
63
+ const refusal = getShiftCellsRefusal({
64
+ direction: "down",
65
+ range: headerRowInsert,
66
+ sheetId,
67
+ rows: sheetData?.[sheetId],
68
+ rowCount,
69
+ merges,
70
+ tables,
71
+ });
72
+ if (refusal) {
73
+ showError({ title: refusal.title, message: refusal.message });
74
+ return;
75
+ }
76
+ }
77
+ // Excel: a table cannot overlap another table or cover merged cells (T-07) — judged on the
78
+ // range the table will cover; with an inserted header row, tables and merges wholly inside
79
+ // the shifted columns have moved down one row by then.
80
+ const rangeRefusal = getTableRangeRefusal({
81
+ sheetId,
82
+ range: headerRowInsert
83
+ ? { ...dataRange, endRowIndex: dataRange.endRowIndex + 1 }
84
+ : dataRange,
85
+ tables,
86
+ merges,
87
+ insertedRows: headerRowInsert
88
+ ? { band: shiftBand("down", headerRowInsert), count: 1 }
89
+ : undefined,
90
+ });
91
+ if (rangeRefusal) {
92
+ showError(rangeRefusal);
93
+ return;
94
+ }
95
+ const create = () => createTable({
42
96
  locale,
43
97
  rowCount,
44
98
  columnCount,
45
99
  tables,
100
+ namedRanges,
46
101
  basicFilter,
47
102
  cellXfsRegistry,
48
103
  sharedStringRegistry,
49
104
  theme: spreadsheetTheme,
50
105
  idCreationStrategy,
51
106
  enqueueCalculation,
107
+ enqueueStructureChange,
52
108
  createHistory,
53
109
  onChangeSheets,
54
110
  onChangeTables,
55
111
  onChangeSheetData,
112
+ onChangeCitations,
113
+ onChangeCharts,
114
+ getActiveCell,
115
+ getSelections,
56
116
  getFormattedValue,
57
117
  getEffectiveValue,
58
118
  onRequestCalculate,
@@ -61,7 +121,13 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
61
121
  getContentfulRangeAroundCell,
62
122
  getSheetName,
63
123
  generatedNames,
64
- })(sheetId, activeCell, selections, tableSpec, theme, bandedRange);
124
+ })(sheetId, activeCell, selections, tableSpec, theme, bandedRange, options);
125
+ if (insertsHeaderRow && batchHistory) {
126
+ batchHistory(create);
127
+ }
128
+ else {
129
+ create();
130
+ }
65
131
  onCommand?.({
66
132
  command: "create-table",
67
133
  sheetId,
@@ -70,10 +136,20 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
70
136
  tableSpec,
71
137
  theme,
72
138
  bandedRange,
139
+ hasHeaders: options?.hasHeaders,
73
140
  });
74
141
  }, [
75
142
  locale,
143
+ batchHistory,
144
+ sheetData,
145
+ sheets,
146
+ getActiveCell,
147
+ getSelections,
148
+ onChangeCitations,
149
+ onChangeCharts,
150
+ enqueueStructureChange,
76
151
  tables,
152
+ namedRanges,
77
153
  basicFilter,
78
154
  columnCount,
79
155
  cellXfsRegistry,
@@ -99,33 +175,133 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
99
175
  // Remove table
100
176
  const onRemoveTable = useCallback((tableView) => {
101
177
  removeTable({
178
+ locale,
179
+ cellXfsRegistry,
180
+ sharedStringRegistry,
181
+ getSheetName,
102
182
  onChangeTables,
103
183
  onChangeSheets,
184
+ onChangeSheetData,
104
185
  createHistory,
105
186
  getDependents,
187
+ getGraphNodes,
188
+ getBandedCells,
106
189
  enqueueCalculation,
190
+ enqueueGraphOperation,
107
191
  })(tableView);
108
192
  onCommand?.({ command: "remove-table", tableView });
109
193
  }, [
194
+ locale,
195
+ cellXfsRegistry,
196
+ sharedStringRegistry,
197
+ getSheetName,
110
198
  onChangeTables,
111
199
  getDependents,
200
+ getGraphNodes,
201
+ getBandedCells,
112
202
  enqueueCalculation,
203
+ enqueueGraphOperation,
113
204
  onChangeSheets,
205
+ onChangeSheetData,
114
206
  createHistory,
115
207
  onCommand,
116
208
  ]);
117
209
  // Update a table
118
210
  const onUpdateTable = useCallback((sheetId, tableId, updatedTable) => {
211
+ const table = tables?.find((table) => table.id === tableId);
212
+ const titleError = table &&
213
+ updatedTable.title !== undefined &&
214
+ updatedTable.title !== table.title
215
+ ? validateTableName(updatedTable.title, tables?.filter((t) => t.id !== tableId).map((t) => t.title), namedRanges?.map((namedRange) => namedRange.name))
216
+ : undefined;
217
+ if (titleError) {
218
+ showError({ title: "Error", message: titleError });
219
+ return;
220
+ }
221
+ // Switching Total Row on over an occupied row shifts the table's column
222
+ // band down (`updateTable`); Excel refuses that shift when it would tear
223
+ // another table, a merge or an array, or push content off the sheet.
224
+ const totalRowShift = table &&
225
+ !table.totalRow &&
226
+ updatedTable.totalRow === true &&
227
+ tableRowHasContent(sheetData?.[sheetId], table.range.endRowIndex + 1, table.range.startColumnIndex, table.range.endColumnIndex)
228
+ ? {
229
+ startRowIndex: table.range.endRowIndex + 1,
230
+ endRowIndex: table.range.endRowIndex + 1,
231
+ startColumnIndex: table.range.startColumnIndex,
232
+ endColumnIndex: table.range.endColumnIndex,
233
+ }
234
+ : undefined;
235
+ const merges = sheets?.find((sheet) => sheet.sheetId === sheetId)?.merges;
236
+ if (totalRowShift) {
237
+ const refusal = getShiftCellsRefusal({
238
+ direction: "down",
239
+ range: totalRowShift,
240
+ sheetId,
241
+ rows: sheetData?.[sheetId],
242
+ rowCount,
243
+ merges,
244
+ tables,
245
+ arrayRanges: getArrayRanges?.(sheetId),
246
+ });
247
+ if (refusal) {
248
+ showError({ title: refusal.title, message: refusal.message });
249
+ return;
250
+ }
251
+ }
252
+ // Excel: the table's new range (an edited range, a total row switched on, or a header row
253
+ // re-added above the data) cannot overlap another table or cover merged cells (T-07). An
254
+ // unchanged range is not re-judged; with the occupied-row shift above, tables and merges
255
+ // wholly inside the shifted band are judged one row lower.
256
+ const nextRange = table &&
257
+ resolveUpdatedTableRange(table, updatedTable, {
258
+ headerRowAboveIsFree: tableHeaderRowAboveIsFree({
259
+ sheetId,
260
+ table,
261
+ sheetData,
262
+ tables,
263
+ }),
264
+ });
265
+ const rangeRefusal = table && nextRange && !isAreasEqual(nextRange, table.range)
266
+ ? getTableRangeRefusal({
267
+ sheetId,
268
+ range: nextRange,
269
+ tables,
270
+ merges,
271
+ excludeTableId: tableId,
272
+ insertedRows: totalRowShift
273
+ ? { band: shiftBand("down", totalRowShift), count: 1 }
274
+ : undefined,
275
+ })
276
+ : undefined;
277
+ if (rangeRefusal) {
278
+ showError(rangeRefusal);
279
+ return;
280
+ }
119
281
  updateTable({
120
282
  locale,
121
283
  enqueueCalculation,
284
+ enqueueGraphOperation,
285
+ getGraphNodes,
122
286
  createHistory,
123
287
  onChangeTables,
124
288
  onChangeSheetData,
125
289
  getFormattedValue,
126
290
  getDependents,
127
291
  tables,
292
+ namedRanges,
128
293
  generatedNames,
294
+ sheetData,
295
+ rowCount,
296
+ columnCount,
297
+ cellXfsRegistry,
298
+ sharedStringRegistry,
299
+ getSheetName,
300
+ getActiveCell,
301
+ enqueueStructureChange,
302
+ onChangeSheets,
303
+ onChangeDataValidations,
304
+ onChangeConditionalFormats,
129
305
  })(sheetId, tableId, updatedTable);
130
306
  onCommand?.({
131
307
  command: "update-table",
@@ -136,14 +312,33 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
136
312
  }, [
137
313
  locale,
138
314
  tables,
315
+ namedRanges,
316
+ sheets,
317
+ showError,
139
318
  createHistory,
140
319
  getFormattedValue,
141
320
  onChangeTables,
142
321
  onChangeSheetData,
143
322
  enqueueCalculation,
323
+ enqueueGraphOperation,
324
+ getGraphNodes,
144
325
  getDependents,
145
326
  onCommand,
146
327
  generatedNames,
328
+ sheetData,
329
+ sheets,
330
+ getArrayRanges,
331
+ rowCount,
332
+ columnCount,
333
+ cellXfsRegistry,
334
+ sharedStringRegistry,
335
+ getSheetName,
336
+ getActiveCell,
337
+ enqueueGraphOperation,
338
+ enqueueStructureChange,
339
+ onChangeSheets,
340
+ onChangeDataValidations,
341
+ onChangeConditionalFormats,
147
342
  ]);
148
343
  /**
149
344
  * Create a basic filter
@@ -271,12 +466,16 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
271
466
  /**
272
467
  * Insert table column
273
468
  */
274
- const onInsertTableColumn = useCallback((tableView, dimensionIndex, direction) => {
275
- // Validate
276
- if (getConfictingTable(tables, tableView)) {
277
- showError({
278
- message: "You cannot insert or delete cells over part of a table.",
279
- });
469
+ const onInsertTableColumn = useCallback((tableView, dimensionIndex, direction, count) => {
470
+ // Excel refuses a table-column insert whose shifted band would tear another table (T-47).
471
+ const refusal = getTableEditRefusal({
472
+ sheetId: tableView.sheetId,
473
+ table: tableView,
474
+ axis: "column",
475
+ tables,
476
+ });
477
+ if (refusal) {
478
+ showError({ title: refusal.title, message: refusal.message });
280
479
  return;
281
480
  }
282
481
  insertTableColumn({
@@ -291,17 +490,19 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
291
490
  onChangeTables,
292
491
  onChangeSheets,
293
492
  onChangeSheetData,
493
+ onChangeCharts,
294
494
  enqueueCalculation,
295
495
  enqueueStructureChange,
296
496
  enqueueGraphOperation,
297
497
  getDependents,
298
498
  generatedNames,
299
- })(tableView, dimensionIndex, direction);
499
+ })(tableView, dimensionIndex, direction, count);
300
500
  onCommand?.({
301
501
  command: "insert-table-column",
302
502
  tableView,
303
503
  dimensionIndex,
304
504
  direction,
505
+ count,
305
506
  });
306
507
  }, [
307
508
  tables,
@@ -315,6 +516,7 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
315
516
  onChangeTables,
316
517
  onChangeSheets,
317
518
  onChangeSheetData,
519
+ onChangeCharts,
318
520
  enqueueCalculation,
319
521
  enqueueStructureChange,
320
522
  enqueueGraphOperation,
@@ -325,11 +527,15 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
325
527
  ]);
326
528
  // Delete a table column
327
529
  const onDeleteTableColumn = useCallback((tableView, dimensionIndex) => {
328
- // Validate - keep React-specific validation at hook level
329
- if (getConfictingTable(tables, tableView)) {
330
- showError({
331
- message: "You cannot insert or delete cells over part of a table.",
332
- });
530
+ // Excel refuses a table-column delete whose shifted band would tear another table (T-47).
531
+ const refusal = getTableEditRefusal({
532
+ sheetId: tableView.sheetId,
533
+ table: tableView,
534
+ axis: "column",
535
+ tables,
536
+ });
537
+ if (refusal) {
538
+ showError({ title: refusal.title, message: refusal.message });
333
539
  return;
334
540
  }
335
541
  deleteTableColumn({
@@ -343,6 +549,7 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
343
549
  onChangeTables,
344
550
  onChangeSheets,
345
551
  onChangeSheetData,
552
+ onChangeCharts,
346
553
  enqueueCalculation,
347
554
  enqueueStructureChange,
348
555
  enqueueGraphOperation,
@@ -365,6 +572,7 @@ export const useOnTable = ({ locale, cellXfsRegistry, sharedStringRegistry, rowC
365
572
  onChangeTables,
366
573
  onChangeSheets,
367
574
  onChangeSheetData,
575
+ onChangeCharts,
368
576
  enqueueCalculation,
369
577
  enqueueStructureChange,
370
578
  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,62 @@
1
+ import { produceWithPatches } from "immer";
2
+ import { useCallback } from "react";
3
+ import { createSheetCellIdentifier } from "../api/formula";
4
+ import { createSheetDraft } from "../api/immer-utils";
5
+ /**
6
+ * Excel's "Undo Calculated Column" (the AutoCorrect smart tag after a formula typed into a table
7
+ * column filled it): the fill alone reverts — every body cell the fill overwrote goes back to what
8
+ * it held (empty, or the column's previous formula) — and the column stops being a calculated
9
+ * column. The typed cell keeps its formula. One undo step.
10
+ */
11
+ export const useOnUndoCalculatedColumn = ({ tables, createHistory, batchHistory, onChangeSheetData, onChangeTables, enqueueCalculation, onCommand, }) => {
12
+ return useCallback((fill) => {
13
+ const { sheetId, tableId, columnIndex, previous } = fill;
14
+ const table = tables?.find((candidate) => candidate.id === tableId && candidate.sheetId === sheetId);
15
+ if (!table) {
16
+ return;
17
+ }
18
+ batchHistory(() => {
19
+ const saveHistory = createHistory();
20
+ const recalcCells = new Map();
21
+ onChangeSheetData?.((prevSheetData) => {
22
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
23
+ for (const { rowIndex, columnIndex: col, cell } of previous) {
24
+ const currentSheet = createSheetDraft(draft, sheetId, rowIndex);
25
+ currentSheet[rowIndex].values[col] = (cell ?? undefined);
26
+ const position = { sheetId, rowIndex, columnIndex: col };
27
+ enqueueCalculation({ type: cell ? "add" : "remove", position, force: true });
28
+ recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, col), {
29
+ ...position,
30
+ force: true,
31
+ });
32
+ }
33
+ });
34
+ saveHistory({
35
+ sheetData: { patches, inversePatches },
36
+ ...(recalcCells.size
37
+ ? { recalcCells: { undo: recalcCells, redo: recalcCells } }
38
+ : {}),
39
+ });
40
+ return nextState;
41
+ });
42
+ onChangeTables?.((prevTables) => {
43
+ const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
44
+ const current = draft.find((candidate) => candidate.id === tableId && candidate.sheetId === sheetId);
45
+ const column = current?.columns?.[columnIndex - current.range.startColumnIndex];
46
+ if (column) {
47
+ delete column.formula;
48
+ }
49
+ });
50
+ saveHistory({ tables: { patches, inversePatches } });
51
+ return nextState;
52
+ });
53
+ });
54
+ onCommand?.({
55
+ command: "undo-calculated-column",
56
+ sheetId,
57
+ tableId,
58
+ columnIndex,
59
+ previous,
60
+ });
61
+ }, [tables, createHistory, batchHistory, onChangeSheetData, onChangeTables, enqueueCalculation, onCommand]);
62
+ };
@@ -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"}
@@ -0,0 +1,75 @@
1
+ import { produceWithPatches } from "immer";
2
+ import { useCallback } from "react";
3
+ import { createSheetCellIdentifier } from "../api/formula";
4
+ import { createSheetDraft } from "../api/immer-utils";
5
+ import { SheetCell } from "../sheet-cell";
6
+ /**
7
+ * Excel's "Undo Table AutoExpansion" (the AutoCorrect smart tag after a table grew over a typed,
8
+ * pasted or filled cell): the table resizes back to the range it had before the growth, and the
9
+ * cells the growth itself wrote — the calculated-column formulas and generated header names it
10
+ * put into empty cells, the column formatting it copied onto cells that had none — are cleared.
11
+ * The user's own value stays, now a plain cell outside the table. One undo step.
12
+ */
13
+ export const useOnUndoTableAutoExpansion = ({ locale, cellXfsRegistry, tables, createHistory, batchHistory, onResizeTable, onChangeSheetData, enqueueCalculation, onCommand, }) => {
14
+ return useCallback((expansion) => {
15
+ const { sheetId, tableId, previousRange, writes } = expansion;
16
+ const table = tables?.find((candidate) => candidate.id === tableId && candidate.sheetId === sheetId);
17
+ if (!table) {
18
+ return;
19
+ }
20
+ batchHistory(() => {
21
+ onResizeTable(sheetId, table, previousRange);
22
+ const saveHistory = createHistory();
23
+ const recalcCells = new Map();
24
+ onChangeSheetData?.((prevSheetData) => {
25
+ const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
26
+ const sheetCell = new SheetCell();
27
+ for (const { rowIndex, columnIndex } of writes.values) {
28
+ const currentSheet = createSheetDraft(draft, sheetId, rowIndex);
29
+ currentSheet[rowIndex].values[columnIndex] = undefined;
30
+ const position = { sheetId, rowIndex, columnIndex };
31
+ enqueueCalculation({ type: "remove", position });
32
+ recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, columnIndex), position);
33
+ }
34
+ for (const { rowIndex, columnIndex } of writes.formats) {
35
+ const currentSheet = createSheetDraft(draft, sheetId, rowIndex);
36
+ const cellData = currentSheet[rowIndex].values?.[columnIndex];
37
+ if (!cellData) {
38
+ continue;
39
+ }
40
+ sheetCell.assign(sheetId, { rowIndex, columnIndex }, cellData, { locale, cellXfsRegistry });
41
+ sheetCell.clearUserEnteredFormat();
42
+ currentSheet[rowIndex].values[columnIndex] =
43
+ sheetCell.getCellData();
44
+ cellXfsRegistry?.unRegister(sheetCell);
45
+ }
46
+ });
47
+ saveHistory({
48
+ sheetData: { patches, inversePatches },
49
+ ...(recalcCells.size
50
+ ? { recalcCells: { undo: recalcCells, redo: recalcCells } }
51
+ : {}),
52
+ });
53
+ return nextState;
54
+ });
55
+ cellXfsRegistry?.getPatches(saveHistory);
56
+ });
57
+ onCommand?.({
58
+ command: "undo-table-auto-expansion",
59
+ sheetId,
60
+ tableId,
61
+ previousRange,
62
+ writes,
63
+ });
64
+ }, [
65
+ locale,
66
+ cellXfsRegistry,
67
+ tables,
68
+ createHistory,
69
+ batchHistory,
70
+ onResizeTable,
71
+ onChangeSheetData,
72
+ enqueueCalculation,
73
+ onCommand,
74
+ ]);
75
+ };
@@ -1,11 +1,13 @@
1
1
  import type { CellInterface } from "@rowsncolumns/common-types";
2
- import type { CellData, NamedRange } from "@rowsncolumns/spreadsheet";
2
+ import type { CellData, NamedRange, TableView } from "@rowsncolumns/spreadsheet";
3
3
  import type { OnCommand } from "../commands";
4
4
  import type { useCalculation } from "./use-calculation";
5
5
  import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
6
6
  import type { SpreadsheetPatch } from "./use-undo-redo";
7
7
  type UseOnUpdateNamedRangeProps<T extends CellData> = {
8
8
  locale?: string;
9
+ /** The workbook's tables — a defined name may not be renamed to one of them (Excel's single namespace). */
10
+ tables?: TableView[];
9
11
  enqueueCalculation: ReturnType<typeof useCalculation>["enqueueCalculation"];
10
12
  getActiveCell(): CellInterface;
11
13
  getDependents: ReturnType<typeof useCalculation>["getDependents"];
@@ -14,6 +16,6 @@ type UseOnUpdateNamedRangeProps<T extends CellData> = {
14
16
  createHistory(): (patches: SpreadsheetPatch) => void;
15
17
  onCommand?: OnCommand;
16
18
  };
17
- export declare const useOnUpdateNamedRange: <T extends CellData>({ locale, getDependents, enqueueCalculation, createHistory, onChangeNamedRanges, onChangeSheetData, onCommand, }: UseOnUpdateNamedRangeProps<T>) => (sheetId: number, namedRange: NamedRange, previousNamedRange: NamedRange) => void;
19
+ export declare const useOnUpdateNamedRange: <T extends CellData>({ locale, tables, getDependents, enqueueCalculation, createHistory, onChangeNamedRanges, onChangeSheetData, onCommand, }: UseOnUpdateNamedRangeProps<T>) => (sheetId: number, namedRange: NamedRange, previousNamedRange: NamedRange) => void;
18
20
  export {};
19
21
  //# sourceMappingURL=use-on-update-named-range.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-on-update-named-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-update-named-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAMtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,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,KAAK,0BAA0B,CAAC,CAAC,SAAS,QAAQ,IAAI;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,aAAa,IAAI,aAAa,CAAC;IAC/B,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACnE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,QAAQ,EAAE,kHAQvD,0BAA0B,CAAC,CAAC,CAAC,eAGlB,MAAM,cAAc,UAAU,sBAAsB,UAAU,SA+I3E,CAAC"}
1
+ {"version":3,"file":"use-on-update-named-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-update-named-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAQnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,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,KAAK,0BAA0B,CAAC,CAAC,SAAS,QAAQ,IAAI;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,aAAa,IAAI,aAAa,CAAC;IAC/B,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACnE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,QAAQ,EAAE,0HASvD,0BAA0B,CAAC,CAAC,CAAC,eAIlB,MAAM,cAAc,UAAU,sBAAsB,UAAU,SA4J3E,CAAC"}