@rowsncolumns/spreadsheet-state 29.0.0 → 29.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +131 -7
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +488 -43
  4. package/dist/cjs/api/copy-paste.d.ts +1 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +1 -3
  7. package/dist/cjs/api/filter.d.ts +15 -1
  8. package/dist/cjs/api/filter.d.ts.map +1 -1
  9. package/dist/cjs/api/filter.js +32 -2
  10. package/dist/cjs/api/formula.d.ts +63 -0
  11. package/dist/cjs/api/formula.d.ts.map +1 -1
  12. package/dist/cjs/api/formula.js +278 -8
  13. package/dist/cjs/api/paint-format.d.ts +22 -1
  14. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  15. package/dist/cjs/api/paint-format.js +57 -1
  16. package/dist/cjs/api/sort.d.ts +23 -1
  17. package/dist/cjs/api/sort.d.ts.map +1 -1
  18. package/dist/cjs/api/sort.js +52 -6
  19. package/dist/cjs/api/structural-guards.d.ts +57 -0
  20. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  21. package/dist/cjs/api/structural-guards.js +93 -1
  22. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  23. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  24. package/dist/cjs/api/structural-table-refs.js +177 -16
  25. package/dist/cjs/api/table.d.ts +26 -2
  26. package/dist/cjs/api/table.d.ts.map +1 -1
  27. package/dist/cjs/api/table.js +93 -60
  28. package/dist/cjs/api/validation.d.ts.map +1 -1
  29. package/dist/cjs/api/validation.js +53 -8
  30. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  31. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  32. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  33. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  34. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  35. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  36. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  37. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  39. package/dist/cjs/atoms/index.d.ts +4 -0
  40. package/dist/cjs/atoms/index.d.ts.map +1 -1
  41. package/dist/cjs/atoms/index.js +4 -0
  42. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  43. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  45. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  47. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  48. package/dist/cjs/commands.d.ts +129 -2
  49. package/dist/cjs/commands.d.ts.map +1 -1
  50. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  51. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  52. package/dist/cjs/components/editors/embed-editor.js +38 -9
  53. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  54. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  55. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  56. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  57. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  58. package/dist/cjs/components/editors/table-editor.js +261 -20
  59. package/dist/cjs/components/index.d.ts +1 -0
  60. package/dist/cjs/components/index.d.ts.map +1 -1
  61. package/dist/cjs/components/index.js +1 -0
  62. package/dist/cjs/constants.d.ts +9 -1
  63. package/dist/cjs/constants.d.ts.map +1 -1
  64. package/dist/cjs/constants.js +12 -0
  65. package/dist/cjs/generated-names.d.ts +13 -3
  66. package/dist/cjs/generated-names.d.ts.map +1 -1
  67. package/dist/cjs/generated-names.js +3 -1
  68. package/dist/cjs/helpers.d.ts +5 -0
  69. package/dist/cjs/helpers.d.ts.map +1 -1
  70. package/dist/cjs/helpers.js +10 -1
  71. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  72. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  73. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  74. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  75. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  76. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  77. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  78. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  79. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  80. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  81. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  82. package/dist/cjs/hooks/use-on-change.js +218 -136
  83. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  84. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  85. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  86. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  87. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  89. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  90. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  92. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  93. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  95. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  96. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  98. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  99. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  100. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  101. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +10 -1
  102. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-delete-sheet.js +19 -1
  104. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  105. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  107. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  108. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete.js +5 -1
  110. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  111. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  113. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  114. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-fill.js +29 -15
  116. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  118. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  119. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  120. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  121. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  122. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  123. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  124. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  125. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  126. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  127. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  128. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  129. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  130. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  131. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  133. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  134. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  136. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  137. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  139. package/dist/cjs/hooks/use-on-move-columns.d.ts +3 -1
  140. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-move-columns.js +14 -1
  142. package/dist/cjs/hooks/use-on-move-rows.d.ts +3 -1
  143. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-move-rows.js +14 -1
  145. package/dist/cjs/hooks/use-on-move-selection.d.ts +3 -1
  146. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-move-selection.js +88 -25
  148. package/dist/cjs/hooks/use-on-paste.d.ts +22 -1
  149. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-paste.js +993 -776
  151. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  152. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  154. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  155. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  156. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  157. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  158. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  159. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  160. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  161. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  162. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  163. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  164. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  166. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  167. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  169. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  170. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  171. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  172. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  173. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  174. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  175. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  176. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  177. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  178. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  179. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-table.js +257 -49
  181. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  182. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  183. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  184. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  185. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  186. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  187. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  188. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  190. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  191. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  193. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  194. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-slicers.js +17 -26
  196. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  197. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  199. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +56 -10
  200. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  201. package/dist/cjs/hooks/use-spreadsheet-state.js +323 -100
  202. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  203. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  204. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  205. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  207. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  208. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  209. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  210. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  211. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  212. package/dist/cjs/index.d.ts +7 -0
  213. package/dist/cjs/index.d.ts.map +1 -1
  214. package/dist/cjs/index.js +8 -0
  215. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  216. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  217. package/dist/cjs/interface/apply-fill.js +207 -98
  218. package/dist/cjs/interface/change-batch.d.ts +1 -1
  219. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  220. package/dist/cjs/interface/change-batch.js +112 -15
  221. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  222. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  223. package/dist/cjs/interface/change-calculated-column.js +87 -17
  224. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  225. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  226. package/dist/cjs/interface/change-table-column.js +336 -76
  227. package/dist/cjs/interface/create-table.d.ts +15 -3
  228. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  229. package/dist/cjs/interface/create-table.js +100 -25
  230. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  231. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  232. package/dist/cjs/interface/delete-cells-shift-left.js +17 -2
  233. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  234. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  235. package/dist/cjs/interface/delete-cells-shift-up.js +17 -2
  236. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  237. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  238. package/dist/cjs/interface/delete-cells.js +106 -44
  239. package/dist/cjs/interface/delete-column.d.ts +1 -1
  240. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/delete-column.js +16 -3
  242. package/dist/cjs/interface/delete-row.d.ts +1 -1
  243. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  244. package/dist/cjs/interface/delete-row.js +230 -19
  245. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  246. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-sheet.js +149 -2
  248. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  249. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-table-column.js +11 -1
  251. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  252. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-table-row.js +361 -275
  254. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  255. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  256. package/dist/cjs/interface/embeds.d.ts +10 -1
  257. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  258. package/dist/cjs/interface/embeds.js +120 -6
  259. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  260. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  261. package/dist/cjs/interface/insert-cells-shift-down.js +11 -1
  262. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  263. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  264. package/dist/cjs/interface/insert-cells-shift-right.js +11 -1
  265. package/dist/cjs/interface/insert-column.d.ts +2 -2
  266. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  267. package/dist/cjs/interface/insert-column.js +68 -38
  268. package/dist/cjs/interface/insert-row.d.ts +1 -1
  269. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  270. package/dist/cjs/interface/insert-row.js +10 -2
  271. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  272. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  273. package/dist/cjs/interface/insert-table-row.js +70 -19
  274. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  275. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  276. package/dist/cjs/interface/remove-duplicates.js +46 -6
  277. package/dist/cjs/interface/remove-table.d.ts +1 -1
  278. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  279. package/dist/cjs/interface/remove-table.js +72 -16
  280. package/dist/cjs/interface/slicers.d.ts +12 -1
  281. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  282. package/dist/cjs/interface/slicers.js +47 -2
  283. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  284. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  285. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  286. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  287. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  288. package/dist/cjs/interface/table-totalrow.js +107 -73
  289. package/dist/cjs/interface/table-utils.d.ts +59 -6
  290. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  291. package/dist/cjs/interface/table-utils.js +211 -15
  292. package/dist/cjs/interface/update-table.d.ts +16 -1
  293. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/update-table.js +190 -44
  295. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  296. package/dist/cjs/test-setup.d.ts.map +1 -1
  297. package/dist/cjs/test-setup.js +6 -0
  298. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  299. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  300. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  301. package/dist/cjs/validation-schema/table.schema.js +20 -3
  302. package/dist/esm/api/anchored-objects.d.ts +131 -7
  303. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  304. package/dist/esm/api/anchored-objects.js +399 -15
  305. package/dist/esm/api/copy-paste.d.ts +1 -2
  306. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  307. package/dist/esm/api/copy-paste.js +1 -3
  308. package/dist/esm/api/filter.d.ts +15 -1
  309. package/dist/esm/api/filter.d.ts.map +1 -1
  310. package/dist/esm/api/filter.js +28 -0
  311. package/dist/esm/api/formula.d.ts +63 -0
  312. package/dist/esm/api/formula.d.ts.map +1 -1
  313. package/dist/esm/api/formula.js +235 -8
  314. package/dist/esm/api/paint-format.d.ts +22 -1
  315. package/dist/esm/api/paint-format.d.ts.map +1 -1
  316. package/dist/esm/api/paint-format.js +44 -1
  317. package/dist/esm/api/sort.d.ts +23 -1
  318. package/dist/esm/api/sort.d.ts.map +1 -1
  319. package/dist/esm/api/sort.js +45 -6
  320. package/dist/esm/api/structural-guards.d.ts +57 -0
  321. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  322. package/dist/esm/api/structural-guards.js +85 -0
  323. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  324. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  325. package/dist/esm/api/structural-table-refs.js +126 -6
  326. package/dist/esm/api/table.d.ts +26 -2
  327. package/dist/esm/api/table.d.ts.map +1 -1
  328. package/dist/esm/api/table.js +70 -48
  329. package/dist/esm/api/validation.d.ts.map +1 -1
  330. package/dist/esm/api/validation.js +53 -8
  331. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  332. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  333. package/dist/esm/atoms/creating-table.atom.js +4 -0
  334. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  335. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  336. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  337. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  338. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  339. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  340. package/dist/esm/atoms/index.d.ts +4 -0
  341. package/dist/esm/atoms/index.d.ts.map +1 -1
  342. package/dist/esm/atoms/index.js +4 -0
  343. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  344. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  345. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  346. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  347. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  348. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  349. package/dist/esm/commands.d.ts +129 -2
  350. package/dist/esm/commands.d.ts.map +1 -1
  351. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  352. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  353. package/dist/esm/components/editors/embed-editor.js +40 -6
  354. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  355. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  356. package/dist/esm/components/editors/slicer-editor.js +85 -0
  357. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  358. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  359. package/dist/esm/components/editors/table-editor.js +243 -19
  360. package/dist/esm/components/index.d.ts +1 -0
  361. package/dist/esm/components/index.d.ts.map +1 -1
  362. package/dist/esm/components/index.js +1 -0
  363. package/dist/esm/constants.d.ts +9 -1
  364. package/dist/esm/constants.d.ts.map +1 -1
  365. package/dist/esm/constants.js +12 -0
  366. package/dist/esm/generated-names.d.ts +13 -3
  367. package/dist/esm/generated-names.d.ts.map +1 -1
  368. package/dist/esm/generated-names.js +3 -1
  369. package/dist/esm/helpers.d.ts +5 -0
  370. package/dist/esm/helpers.d.ts.map +1 -1
  371. package/dist/esm/helpers.js +7 -1
  372. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  373. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  374. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  375. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  376. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  377. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  378. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  379. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  380. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  381. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  382. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  383. package/dist/esm/hooks/use-on-change.js +214 -124
  384. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  385. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  386. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  387. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  388. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  389. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  390. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  391. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  392. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  393. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  394. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  395. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  396. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  397. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  398. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  399. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  400. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  402. package/dist/esm/hooks/use-on-delete-sheet.d.ts +10 -1
  403. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-delete-sheet.js +19 -1
  405. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  406. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  408. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  409. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-delete.js +5 -1
  411. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  412. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-embeds.js +23 -6
  414. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  415. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-on-fill.js +27 -1
  417. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  419. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  420. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  422. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  423. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  424. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  425. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  426. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  428. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  429. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  430. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  431. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  432. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  433. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  434. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  435. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  436. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  437. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  438. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  439. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  440. package/dist/esm/hooks/use-on-move-columns.d.ts +3 -1
  441. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  442. package/dist/esm/hooks/use-on-move-columns.js +14 -1
  443. package/dist/esm/hooks/use-on-move-rows.d.ts +3 -1
  444. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  445. package/dist/esm/hooks/use-on-move-rows.js +14 -1
  446. package/dist/esm/hooks/use-on-move-selection.d.ts +3 -1
  447. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-move-selection.js +44 -1
  449. package/dist/esm/hooks/use-on-paste.d.ts +22 -1
  450. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-paste.js +815 -672
  452. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  453. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  455. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  456. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  457. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  458. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  459. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  460. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  461. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  462. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  463. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  464. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  465. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  467. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  468. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  470. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  471. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  473. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  476. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  477. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  479. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  480. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-table.js +234 -26
  482. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  483. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  484. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  485. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  486. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  488. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  489. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  490. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  491. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  492. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  493. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  494. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  495. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-slicers.js +16 -8
  497. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  498. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  499. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  500. package/dist/esm/hooks/use-spreadsheet-state.d.ts +56 -10
  501. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-spreadsheet-state.js +260 -30
  503. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  504. package/dist/esm/hooks/use-structured-reference.js +17 -0
  505. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  506. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  507. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  508. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  509. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  510. package/dist/esm/hooks/use-undo-redo.js +158 -7
  511. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  512. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  513. package/dist/esm/index.d.ts +7 -0
  514. package/dist/esm/index.d.ts.map +1 -1
  515. package/dist/esm/index.js +8 -0
  516. package/dist/esm/interface/apply-fill.d.ts +26 -3
  517. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  518. package/dist/esm/interface/apply-fill.js +188 -88
  519. package/dist/esm/interface/change-batch.d.ts +1 -1
  520. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  521. package/dist/esm/interface/change-batch.js +89 -8
  522. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  523. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  524. package/dist/esm/interface/change-calculated-column.js +81 -16
  525. package/dist/esm/interface/change-table-column.d.ts +81 -7
  526. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  527. package/dist/esm/interface/change-table-column.js +295 -67
  528. package/dist/esm/interface/create-table.d.ts +15 -3
  529. package/dist/esm/interface/create-table.d.ts.map +1 -1
  530. package/dist/esm/interface/create-table.js +103 -27
  531. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  532. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  533. package/dist/esm/interface/delete-cells-shift-left.js +17 -2
  534. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  535. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  536. package/dist/esm/interface/delete-cells-shift-up.js +17 -2
  537. package/dist/esm/interface/delete-cells.d.ts +1 -1
  538. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  539. package/dist/esm/interface/delete-cells.js +69 -30
  540. package/dist/esm/interface/delete-column.d.ts +1 -1
  541. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  542. package/dist/esm/interface/delete-column.js +16 -3
  543. package/dist/esm/interface/delete-row.d.ts +1 -1
  544. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  545. package/dist/esm/interface/delete-row.js +180 -16
  546. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  547. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  548. package/dist/esm/interface/delete-sheet.js +132 -1
  549. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  550. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  551. package/dist/esm/interface/delete-table-column.js +11 -1
  552. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  553. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  554. package/dist/esm/interface/delete-table-row.js +312 -232
  555. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  556. package/dist/esm/interface/duplicate-sheet.js +73 -26
  557. package/dist/esm/interface/embeds.d.ts +10 -1
  558. package/dist/esm/interface/embeds.d.ts.map +1 -1
  559. package/dist/esm/interface/embeds.js +84 -5
  560. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  561. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  562. package/dist/esm/interface/insert-cells-shift-down.js +11 -1
  563. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  564. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  565. package/dist/esm/interface/insert-cells-shift-right.js +11 -1
  566. package/dist/esm/interface/insert-column.d.ts +2 -2
  567. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  568. package/dist/esm/interface/insert-column.js +49 -23
  569. package/dist/esm/interface/insert-row.d.ts +1 -1
  570. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  571. package/dist/esm/interface/insert-row.js +10 -2
  572. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  573. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  574. package/dist/esm/interface/insert-table-row.js +67 -12
  575. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  576. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  577. package/dist/esm/interface/remove-duplicates.js +41 -6
  578. package/dist/esm/interface/remove-table.d.ts +1 -1
  579. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  580. package/dist/esm/interface/remove-table.js +58 -10
  581. package/dist/esm/interface/slicers.d.ts +12 -1
  582. package/dist/esm/interface/slicers.d.ts.map +1 -1
  583. package/dist/esm/interface/slicers.js +44 -2
  584. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  585. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  586. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  587. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  588. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  589. package/dist/esm/interface/table-totalrow.js +98 -68
  590. package/dist/esm/interface/table-utils.d.ts +59 -6
  591. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  592. package/dist/esm/interface/table-utils.js +155 -14
  593. package/dist/esm/interface/update-table.d.ts +16 -1
  594. package/dist/esm/interface/update-table.d.ts.map +1 -1
  595. package/dist/esm/interface/update-table.js +203 -42
  596. package/dist/esm/sheet-cell.d.ts.map +1 -1
  597. package/dist/esm/test-setup.d.ts.map +1 -1
  598. package/dist/esm/test-setup.js +6 -0
  599. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  600. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  601. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  602. package/dist/esm/validation-schema/table.schema.js +15 -2
  603. package/package.json +19 -11
@@ -6,13 +6,18 @@ import { getBandedCells } from "@rowsncolumns/spreadsheet";
6
6
  import { defaultSpreadsheetTheme, useCallbackRef, useSpreadsheetTheme, } from "@rowsncolumns/spreadsheet";
7
7
  import { findMatchingBandProperty, getCurrentLocale, getFormulaLocale, isNil, setDefaultEnableAtFormula, uuid, } from "@rowsncolumns/utils";
8
8
  import { enableMapSet, enablePatches, setUseStrictShallowCopy } from "immer";
9
- import { useCallback, useEffect, useMemo, useRef } from "react";
9
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
10
10
  import { getAutoFillValues as defaultGetAutoFillValues } from "../api/fill";
11
+ import { planInsertCutCells } from "../api/insert-cut-cells";
12
+ import { getMoveRangeRefusal } from "../api/structural-guards";
13
+ import { findPartiallyCoveredMerge, MERGED_CELL_MOVE_ERROR } from "../api/merges";
14
+ import { useShowError } from "../atoms/error-state.atom";
11
15
  import { getGeneratedSheetName } from "../generated-names";
12
16
  import { SheetCell } from "../sheet-cell";
13
17
  import { useCalculation } from "./use-calculation";
14
18
  import { useCalculationInitialize } from "./use-calculation-initialize";
15
19
  import { useCalculationWorker } from "./use-calculation-worker";
20
+ import { SHEET_PROTECTION_ERROR_TITLE, useCanEditCellRange, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
16
21
  import { useCellXfsRegistry } from "./use-cellxfs-registry";
17
22
  import { useCitations } from "./use-citations";
18
23
  import { useComments } from "./use-comments";
@@ -31,6 +36,7 @@ import { useOnChangeBatchStream } from "./use-on-change-batch-stream";
31
36
  import { useOnChangeDecimals } from "./use-on-change-decimals";
32
37
  import { useOnChangeFormatting } from "./use-on-change-formatting";
33
38
  import { useOnChangeSheetTabcolor } from "./use-on-change-sheet-tabcolor";
39
+ import { useOnChangeTableColumn } from "./use-on-change-table-column";
34
40
  import { useOnChangeTheme } from "./use-on-change-theme";
35
41
  import { useOnClearFormatting } from "./use-on-clear-formatting";
36
42
  import { useOnCollapseColumnGroup } from "./use-on-collapse-column-group";
@@ -49,6 +55,7 @@ import { useOnDeleteTableRow } from "./use-on-delete-table-row";
49
55
  import { useOnDragnDrop } from "./use-on-drag-n-drop";
50
56
  import { useOnDuplicateSheet } from "./use-on-duplicate-sheet";
51
57
  import { useOnEmbeds } from "./use-on-embeds";
58
+ import { useSparklineGroups } from "./use-sparkline-groups";
52
59
  import { useOnExpandColumnGroup } from "./use-on-expand-column-group";
53
60
  import { useOnExpandRowGroup } from "./use-on-expand-row-group";
54
61
  import { useOnFill } from "./use-on-fill";
@@ -83,22 +90,22 @@ import { useOnMergeUnMergeCells } from "./use-on-merge-unmerge-cells";
83
90
  import { useOnMoveColumns } from "./use-on-move-columns";
84
91
  import { useOnMoveRows } from "./use-on-move-rows";
85
92
  import { useOnMoveSelection } from "./use-on-move-selection";
86
- import { planInsertCutCells } from "../api/insert-cut-cells";
87
- import { findPartiallyCoveredMerge, MERGED_CELL_MOVE_ERROR } from "../api/merges";
88
- import { useShowError } from "../atoms/error-state.atom";
89
- import { SHEET_PROTECTION_ERROR_TITLE, useCanEditCellRange, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
90
93
  import { useOnMoveSheet } from "./use-on-move-sheet";
91
94
  import { useOnPaste } from "./use-on-paste";
95
+ import { useOnCreateCustomTableStyle } from "./use-on-create-custom-table-style";
92
96
  import { useOnProtectRange } from "./use-on-protect-range";
93
97
  import { useOnProtectSheet } from "./use-on-protect-sheet";
94
98
  import { useOnRemoveDuplicates } from "./use-on-remove-duplicates";
95
99
  import { useOnRenameSheet } from "./use-on-rename-sheet";
96
100
  import { useOnRequestCalculateWrapper } from "./use-on-request-calculate-wrapper";
97
101
  import { useOnRequestConditionalFormat } from "./use-on-request-conditional-format";
102
+ import { useOnRequestCreateTable } from "./use-on-request-create-table";
98
103
  import { useOnRequestDataValidation } from "./use-on-request-data-validation";
99
104
  import { useOnRequestDefineNamedRange } from "./use-on-request-define-named-range";
100
105
  import { useOnRequestDeleteSheet } from "./use-on-request-delete-sheet";
101
106
  import { useOnRequestEditTable } from "./use-on-request-edit-table";
107
+ import { useOnRequestInsertSlicer } from "./use-on-request-insert-slicer";
108
+ import { useOnRequestResizeTable } from "./use-on-request-resize-table";
102
109
  import { useOnRequestFormatCells } from "./use-on-request-format-cells";
103
110
  import { useOnRequestInsertImage } from "./use-on-request-insert-image";
104
111
  import { useOnRequestInsertLink } from "./use-on-request-insert-link";
@@ -106,6 +113,9 @@ import { useOnRequestResize } from "./use-on-request-resize";
106
113
  import { useOnRequestUpdateNamedRange } from "./use-on-request-update-named-range";
107
114
  import { useOnResize } from "./use-on-resize";
108
115
  import { useOnResizeTable } from "./use-on-resize-table";
116
+ import { useOnUndoTableAutoExpansion } from "./use-on-undo-table-auto-expansion";
117
+ import { useOnUndoCalculatedColumn } from "./use-on-undo-calculated-column";
118
+ import { useOnChangeCalculatedColumn } from "./use-on-change-calculated-column";
109
119
  import { useOnSetOutlineDepth } from "./use-on-set-outline-depth";
110
120
  import { useOnShowColumn } from "./use-on-show-column";
111
121
  import { useOnShowRow } from "./use-on-show-row";
@@ -158,13 +168,20 @@ export const deriveBuiltInTableBanding = (table) => {
158
168
  return undefined;
159
169
  }
160
170
  if (!showRowStripes && banded.rowProperties) {
161
- const { headerColor, headerBorder, totalRowColor, totalRowBorder } = banded.rowProperties;
162
- if (headerColor || headerBorder || totalRowColor || totalRowBorder) {
171
+ const { headerColor, headerBorder, totalRowColor, totalRowBorder, firstColumnColor, lastColumnColor, } = banded.rowProperties;
172
+ if (headerColor ||
173
+ headerBorder ||
174
+ totalRowColor ||
175
+ totalRowBorder ||
176
+ firstColumnColor ||
177
+ lastColumnColor) {
163
178
  banded.rowProperties = {
164
179
  headerColor,
165
180
  headerBorder,
166
181
  totalRowColor,
167
182
  totalRowBorder,
183
+ firstColumnColor,
184
+ lastColumnColor,
168
185
  };
169
186
  }
170
187
  else {
@@ -179,6 +196,15 @@ export const deriveBuiltInTableBanding = (table) => {
179
196
  }
180
197
  return banded;
181
198
  };
199
+ /**
200
+ * `table` as the gallery's hovered style would leave it: the preview's theme and banding replace
201
+ * the table's own (a preview with neither paints it unstyled — the "None" style).
202
+ */
203
+ export const previewTableStyle = (table, preview) => ({
204
+ ...table,
205
+ theme: preview.theme ?? undefined,
206
+ bandedRange: preview.bandedRange ?? undefined,
207
+ });
182
208
  /**
183
209
  * Use Spreadsheet Hook
184
210
  * @param param0
@@ -210,7 +236,7 @@ onChangeHistory,
210
236
  // Semantic command stream
211
237
  onCommand: onCommandProp,
212
238
  // Theme
213
- onChangeTheme, namedCellStyles, onChangeNamedCellStyles,
239
+ onChangeTheme, namedCellStyles, onChangeNamedCellStyles, customTableStyles, onChangeCustomTableStyles,
214
240
  // error handler
215
241
  onError,
216
242
  // Get auto fill values
@@ -227,7 +253,7 @@ colorMode,
227
253
  // on-demand
228
254
  fonts,
229
255
  // Drag and drop
230
- enableDragnDrop = true,
256
+ enableDragnDrop = true, autoExpandTables = true, autoCalculatedColumns = true,
231
257
  // Enable undo/redo functionality
232
258
  enabledUndoRedo = true,
233
259
  // Current locale
@@ -372,17 +398,28 @@ sanitizeHtml, }) => {
372
398
  * built-in table styles persist only the name, and the grid paints tables
373
399
  * exclusively from bandedRange, so without the fallback they render unstyled.
374
400
  */
401
+ const [tableStylePreview, setTableStylePreview] = useState(null);
402
+ // The gallery's hovered style paints over the table's own while the pointer rests on the
403
+ // swatch — UI state only, never written to the table or its history.
404
+ const onPreviewTableStyle = useCallback((preview) => setTableStylePreview(preview), []);
375
405
  const bandedRanges = useMemo(() => {
376
406
  return tables
377
407
  ?.filter(({ sheetId }) => sheetId === activeSheetId)
378
408
  .map((table) => {
379
- const banded = table.bandedRange ??
380
- deriveBuiltInTableBanding(table);
409
+ const previewed = tableStylePreview?.sheetId === table.sheetId &&
410
+ tableStylePreview.tableId === table.id
411
+ ? previewTableStyle(table, tableStylePreview)
412
+ : table;
413
+ const banded = previewed.bandedRange ??
414
+ deriveBuiltInTableBanding(previewed);
381
415
  if (isNil(banded)) {
382
416
  return undefined;
383
417
  }
384
418
  return {
385
- bandedRangeId: `${table.id}-${table.theme}`,
419
+ bandedRangeId: `${table.id}-${previewed.theme}`,
420
+ showFirstColumn: table.showFirstColumn,
421
+ showLastColumn: table.showLastColumn,
422
+ totalRow: table.totalRow ?? false,
386
423
  // Add sheet Id to range
387
424
  range: {
388
425
  ...table.range,
@@ -392,7 +429,7 @@ sanitizeHtml, }) => {
392
429
  };
393
430
  })
394
431
  .filter((band) => !isNil(band));
395
- }, [tables, activeSheetId]);
432
+ }, [tables, activeSheetId, tableStylePreview]);
396
433
  const getCellDimensions = useGetCellDimensions();
397
434
  const getCurrentRowHeight = useGetRowHeight();
398
435
  const getContentfulRangeAroundCell = useGetContentfulRangeAroundCell();
@@ -404,7 +441,7 @@ sanitizeHtml, }) => {
404
441
  const getPrecedentsRef = useRef(undefined);
405
442
  const getPrecedentsForward = useCallback((cell) => getPrecedentsRef.current?.(cell) ?? [], []);
406
443
  // Sheet properties
407
- const { getDataRowCount, getNonEmptyRowCount, getNonEmptyColumnCount, getDataColumnCount, getSheetId, getSheetName, getSheetCount, getSheetIndex, getSheetNames, getSheetProperties, getCellData, getMentionsFromCell, getTextFormatRuns, getEffectiveValue, getEffectiveValueForCalculation, getUserEnteredValue, getUserEnteredValueStable, getConditionalFormatFormula, getDataValidationFormula, getDataValidation, getDefaultHorizontalAlignment, getDataValidationById, getActiveSheetId, getUserEnteredFormat, getEffectiveFormat, getFormattedValue, getFormulaValue, getSeriesValuesFromRange, getFormattingFromRange, getUserEnteredValuesFromRange, getFormulasFromRange, getDomainValuesFromRange, getColumnarDataFromRange, isColumnHidden, isHiddenRow, isHiddenByFilterRow, getRowOutlineLevel, getSheetRowCount, getSheetColumnCount, getColumnWidth, getRowHeight, getEffectiveExtendedValue, getUserEnteredExtendedValue, getFrozenRowCount, getErrorValue, } = useSheetProperties({
444
+ const { getDataRowCount, getNonEmptyRowCount, getNonEmptyColumnCount, getDataColumnCount, getSheetId, getSheetName, getSheetCount, getSheetIndex, getSheetNames, getSheetProperties, getCellData, getMentionsFromCell, getTextFormatRuns, getEffectiveValue, getEffectiveValueForCalculation, getUserEnteredValue, getUserEnteredValueStable, getConditionalFormatFormula, getDataValidationFormula, getDataValidation, getDefaultHorizontalAlignment, getDataValidationById, getActiveSheetId, getUserEnteredFormat, getEffectiveFormat, getFormattedValue, getFormulaValue, getSeriesValuesFromRange, getFormattingFromRange, getUserEnteredValuesFromRange, getFormulasFromRange, getDomainValuesFromRange, getColumnarDataFromRange, isColumnHidden, isHiddenRow, isHiddenByFilterRow, isManuallyHiddenRow, getRowOutlineLevel, getSheetRowCount, getSheetColumnCount, getColumnWidth, getRowHeight, getEffectiveExtendedValue, getUserEnteredExtendedValue, getFrozenRowCount, getErrorValue, } = useSheetProperties({
408
445
  getEffectiveStructuredValue,
409
446
  conditionalFormats,
410
447
  sheetData,
@@ -600,6 +637,7 @@ sanitizeHtml, }) => {
600
637
  onChangeConditionalFormats,
601
638
  onChangeDataValidations,
602
639
  onChangeProtectedRanges,
640
+ onChangeCustomTableStyles,
603
641
  onChangePivotTables,
604
642
  onChangeCellXfs,
605
643
  onChangeTheme,
@@ -610,7 +648,7 @@ sanitizeHtml, }) => {
610
648
  clearRangeCache,
611
649
  });
612
650
  // Undo manager
613
- const { createHistory, createHistoryWithoutPointer, onRedo, onUndo, canUndo, canRedo, onClearHistory, } = useUndoRedo({
651
+ const { createHistory, createHistoryWithoutPointer, batchHistory, onRedo, onUndo, canUndo, canRedo, onClearHistory, } = useUndoRedo({
614
652
  isEnabled: enabledUndoRedo,
615
653
  onUndoAction,
616
654
  onRedoAction,
@@ -647,6 +685,15 @@ sanitizeHtml, }) => {
647
685
  createHistory,
648
686
  onChangeSheetData,
649
687
  onChangeSheets,
688
+ onChangeCitations,
689
+ onChangeCharts,
690
+ onChangeEmbeds,
691
+ onChangeSlicers,
692
+ onChangeTables,
693
+ onChangeConditionalFormats,
694
+ onChangeDataValidations,
695
+ onChangeNamedRanges,
696
+ onChangeProtectedRanges,
650
697
  onChangeActiveSheet,
651
698
  enqueueGraphOperation,
652
699
  onCommand,
@@ -820,16 +867,22 @@ sanitizeHtml, }) => {
820
867
  isMergedCell,
821
868
  onChangeSheetData,
822
869
  onChangeTables,
870
+ onChangeCharts,
823
871
  onChangeSheets,
824
872
  enqueueCalculation,
825
873
  enqueueGraphOperation,
826
874
  createHistory,
875
+ batchHistory,
876
+ autoExpandTables,
877
+ autoCalculatedColumns,
827
878
  getDependents,
879
+ getGraphNodes,
828
880
  getUserEnteredValue: getUserEnteredValueStable,
829
881
  getTextFormatRuns,
830
882
  getSheetName,
831
883
  onCommand,
832
884
  generatedNames,
885
+ onRequestCalculate: onRequestCalculateWithoutFormatting,
833
886
  });
834
887
  // onChange batch
835
888
  const onChangeBatch = useOnChangeBatch({
@@ -845,12 +898,16 @@ sanitizeHtml, }) => {
845
898
  onChangeSheetData,
846
899
  onChangeSheets,
847
900
  onChangeTables,
901
+ onChangeCharts,
848
902
  getFormattedValue,
849
903
  getCellDimensions,
850
904
  getRowHeight: getCurrentRowHeight,
851
905
  isMergedCell,
852
906
  tables,
853
907
  createHistory,
908
+ batchHistory,
909
+ autoExpandTables,
910
+ autoCalculatedColumns,
854
911
  onChangeCitations,
855
912
  onCommand,
856
913
  generatedNames,
@@ -874,8 +931,17 @@ sanitizeHtml, }) => {
874
931
  onChangeActiveCell,
875
932
  isArrayFormula,
876
933
  getRowHeight: getCurrentRowHeight,
934
+ tables,
935
+ generatedNames,
877
936
  onCommand,
878
937
  });
938
+ // Excel sparkline groups (runs of =SPARKLINE() cells sharing one option set)
939
+ const { getSparklineGroup, getSparklineAt, onCreateSparklineGroup, onUpdateSparklineGroup, onDeleteSparklineGroup, onClearSparklines, onGroupSparklines, } = useSparklineGroups({
940
+ onChangeBatch,
941
+ onDelete,
942
+ batchHistory,
943
+ getUserEnteredValue: getUserEnteredValueStable,
944
+ });
879
945
  // Formatting change
880
946
  const { onChangeFormatting, onChangeBorder, onRepeatFormatting } = useOnChangeFormatting({
881
947
  locale,
@@ -895,6 +961,7 @@ sanitizeHtml, }) => {
895
961
  const { onMergeCells, onUnMergeCells } = useOnMergeUnMergeCells({
896
962
  locale,
897
963
  merges,
964
+ tables,
898
965
  cellXfsRegistry,
899
966
  sharedStringRegistry,
900
967
  onChangeSelections,
@@ -919,6 +986,9 @@ sanitizeHtml, }) => {
919
986
  continue;
920
987
  bands.push({
921
988
  bandedRangeId: `${table.id}-${table.theme}`,
989
+ showFirstColumn: table.showFirstColumn,
990
+ showLastColumn: table.showLastColumn,
991
+ totalRow: table.totalRow ?? false,
922
992
  range: { ...table.range, sheetId },
923
993
  ...banded,
924
994
  });
@@ -1014,6 +1084,21 @@ sanitizeHtml, }) => {
1014
1084
  // `onMergeCells` clears the selection; the filled range stays selected like Excel.
1015
1085
  onChangeSelections?.(sheetId, [{ range: selectRange }]);
1016
1086
  }, [onUnMergeCells, onMergeCells, onChangeSelections]);
1087
+ // The expansion the fill handle triggers when dragged past a table's edge (T-11).
1088
+ const onFillChangeTableColumn = useOnChangeTableColumn({
1089
+ locale,
1090
+ cellXfsRegistry,
1091
+ sharedStringRegistry,
1092
+ onChangeSheetData,
1093
+ onChangeTables,
1094
+ getDependents,
1095
+ enqueueCalculation: enqueueGraphOperation,
1096
+ enqueueGraphOperation,
1097
+ createHistory,
1098
+ onCommand,
1099
+ generatedNames,
1100
+ tables,
1101
+ });
1017
1102
  const onFill = useOnFill({
1018
1103
  locale,
1019
1104
  cellXfsRegistry,
@@ -1032,6 +1117,11 @@ sanitizeHtml, }) => {
1032
1117
  onCommand,
1033
1118
  getMerges: getPaintMerges,
1034
1119
  onFillMerges,
1120
+ tables,
1121
+ getUserEnteredValue: getUserEnteredValueStable,
1122
+ onChangeTableColumn: onFillChangeTableColumn,
1123
+ batchHistory,
1124
+ autoExpandTables,
1035
1125
  });
1036
1126
  // Delete row
1037
1127
  const onDeleteRow = useOnDeleteRow({
@@ -1060,6 +1150,7 @@ sanitizeHtml, }) => {
1060
1150
  onChangePivotTables,
1061
1151
  onChangeNamedRanges,
1062
1152
  onChangeEmbeds,
1153
+ onChangeSlicers,
1063
1154
  onChangeCharts,
1064
1155
  onChangeProtectedRanges,
1065
1156
  getSheetName,
@@ -1094,6 +1185,7 @@ sanitizeHtml, }) => {
1094
1185
  onChangePivotTables,
1095
1186
  onChangeNamedRanges,
1096
1187
  onChangeEmbeds,
1188
+ onChangeSlicers,
1097
1189
  onChangeCharts,
1098
1190
  onChangeProtectedRanges,
1099
1191
  getSheetName,
@@ -1120,6 +1212,7 @@ sanitizeHtml, }) => {
1120
1212
  onChangeSheetData,
1121
1213
  onChangeTables,
1122
1214
  onChangeCitations,
1215
+ onChangeCharts,
1123
1216
  onCommand,
1124
1217
  sheetData,
1125
1218
  sheets,
@@ -1144,6 +1237,7 @@ sanitizeHtml, }) => {
1144
1237
  onChangeSheetData,
1145
1238
  onChangeTables,
1146
1239
  onChangeCitations,
1240
+ onChangeCharts,
1147
1241
  onCommand,
1148
1242
  sheetData,
1149
1243
  sheets,
@@ -1168,6 +1262,7 @@ sanitizeHtml, }) => {
1168
1262
  onChangeSheetData,
1169
1263
  onChangeTables,
1170
1264
  onChangeCitations,
1265
+ onChangeCharts,
1171
1266
  onCommand,
1172
1267
  sheetData,
1173
1268
  sheets,
@@ -1192,6 +1287,7 @@ sanitizeHtml, }) => {
1192
1287
  onChangeSheetData,
1193
1288
  onChangeTables,
1194
1289
  onChangeCitations,
1290
+ onChangeCharts,
1195
1291
  onCommand,
1196
1292
  sheetData,
1197
1293
  sheets,
@@ -1222,6 +1318,7 @@ sanitizeHtml, }) => {
1222
1318
  onChangePivotTables,
1223
1319
  onChangeNamedRanges,
1224
1320
  onChangeEmbeds,
1321
+ onChangeSlicers,
1225
1322
  onChangeCharts,
1226
1323
  onChangeProtectedRanges,
1227
1324
  onChangeTables,
@@ -1254,6 +1351,7 @@ sanitizeHtml, }) => {
1254
1351
  onChangePivotTables,
1255
1352
  onChangeNamedRanges,
1256
1353
  onChangeEmbeds,
1354
+ onChangeSlicers,
1257
1355
  onChangeCharts,
1258
1356
  onChangeProtectedRanges,
1259
1357
  getActiveCell,
@@ -1277,6 +1375,7 @@ sanitizeHtml, }) => {
1277
1375
  onChangeSheetData,
1278
1376
  onChangeConditionalFormats,
1279
1377
  onChangeDataValidations,
1378
+ onChangeCharts,
1280
1379
  getDependents,
1281
1380
  getDataRowCount,
1282
1381
  onCommand,
@@ -1295,6 +1394,7 @@ sanitizeHtml, }) => {
1295
1394
  onChangeSheetData,
1296
1395
  onChangeTables,
1297
1396
  onChangeNamedRanges,
1397
+ onChangeCharts,
1298
1398
  onChangeConditionalFormats,
1299
1399
  onChangeDataValidations,
1300
1400
  getDependents,
@@ -1314,6 +1414,7 @@ sanitizeHtml, }) => {
1314
1414
  onChangeSheets,
1315
1415
  onChangeTables,
1316
1416
  onChangeNamedRanges,
1417
+ onChangeCharts,
1317
1418
  onChangeDataValidations,
1318
1419
  onChangeConditionalFormats,
1319
1420
  onChangePivotTables,
@@ -1331,7 +1432,7 @@ sanitizeHtml, }) => {
1331
1432
  // opening, close the gap it left — so Shift+drag A5 to A2 over r1..r6 gives r1 r5 r2 r3 r4 r6 and
1332
1433
  // a forward move lands before Excel's pre-removal reference row. The refusals are decided up
1333
1434
  // front — a merge the block or a shifted band covers only partially, a protected range — so a
1334
- // refused move never leaves the band opened. Each step records its own undo entry.
1435
+ // refused move never leaves the band opened. The three steps record ONE undo entry.
1335
1436
  const showError = useShowError();
1336
1437
  const canEditCellRange = useCanEditCellRange();
1337
1438
  const canPerformSheetAction = useCanPerformSheetAction();
@@ -1345,6 +1446,17 @@ sanitizeHtml, }) => {
1345
1446
  showError({ message: MERGED_CELL_MOVE_ERROR });
1346
1447
  return;
1347
1448
  }
1449
+ // A block covering part of a table never moves (T-46) — refused before the band opens.
1450
+ const tableRefusal = getMoveRangeRefusal({
1451
+ sheetId,
1452
+ from: from.range,
1453
+ to: to.range,
1454
+ tables,
1455
+ });
1456
+ if (tableRefusal) {
1457
+ showError({ title: tableRefusal.title, message: tableRefusal.message });
1458
+ return;
1459
+ }
1348
1460
  const vertical = plan.shift === "down";
1349
1461
  if (!canEditCellRange(sheetId, from.range) ||
1350
1462
  !canEditCellRange(sheetId, to.range) ||
@@ -1360,28 +1472,31 @@ sanitizeHtml, }) => {
1360
1472
  rowIndex: to.range.startRowIndex,
1361
1473
  columnIndex: to.range.startColumnIndex,
1362
1474
  };
1363
- if (vertical) {
1364
- onInsertCellsShiftDown(sheetId, target, [to]);
1365
- }
1366
- else {
1367
- onInsertCellsShiftRight(sheetId, target, [to]);
1368
- }
1369
1475
  const source = {
1370
1476
  ...from,
1371
1477
  range: plan.shiftedSource,
1372
1478
  };
1373
- onMoveSelection(sheetId, source, to);
1374
1479
  const vacated = {
1375
1480
  rowIndex: plan.shiftedSource.startRowIndex,
1376
1481
  columnIndex: plan.shiftedSource.startColumnIndex,
1377
1482
  };
1378
- if (vertical) {
1379
- onDeleteCellsShiftUp(sheetId, vacated, [source]);
1380
- }
1381
- else {
1382
- onDeleteCellsShiftLeft(sheetId, vacated, [source]);
1383
- }
1483
+ batchHistory(() => {
1484
+ if (vertical) {
1485
+ onInsertCellsShiftDown(sheetId, target, [to]);
1486
+ }
1487
+ else {
1488
+ onInsertCellsShiftRight(sheetId, target, [to]);
1489
+ }
1490
+ onMoveSelection(sheetId, source, to);
1491
+ if (vertical) {
1492
+ onDeleteCellsShiftUp(sheetId, vacated, [source]);
1493
+ }
1494
+ else {
1495
+ onDeleteCellsShiftLeft(sheetId, vacated, [source]);
1496
+ }
1497
+ });
1384
1498
  }, [
1499
+ batchHistory,
1385
1500
  getPaintMerges,
1386
1501
  showError,
1387
1502
  canEditCellRange,
@@ -1399,11 +1514,15 @@ sanitizeHtml, }) => {
1399
1514
  locale,
1400
1515
  sharedStringRegistry,
1401
1516
  onChangeSheetData,
1517
+ onChangeSheets,
1402
1518
  enqueueCalculation,
1403
1519
  enqueueStructureChange,
1404
1520
  enqueueGraphOperation,
1405
1521
  createHistory,
1522
+ getCellData,
1523
+ getDataRowCount,
1406
1524
  isHiddenRow,
1525
+ isManuallyHiddenRow,
1407
1526
  getDependents,
1408
1527
  getFrozenRowCount,
1409
1528
  getSheetName,
@@ -1419,12 +1538,14 @@ sanitizeHtml, }) => {
1419
1538
  enqueueGraphOperation,
1420
1539
  enqueueCalculation,
1421
1540
  enqueueStructureChange,
1541
+ getCellData,
1422
1542
  getDependents,
1423
1543
  createHistory,
1424
1544
  onChangeTables,
1425
1545
  onChangeSheets,
1426
1546
  getActiveCell,
1427
1547
  isHiddenRow,
1548
+ isManuallyHiddenRow,
1428
1549
  getFrozenRowCount,
1429
1550
  getSheetName,
1430
1551
  getEffectiveFormat,
@@ -1453,18 +1574,64 @@ sanitizeHtml, }) => {
1453
1574
  columnCount,
1454
1575
  locale,
1455
1576
  tables,
1577
+ merges,
1456
1578
  basicFilter,
1457
1579
  getActiveCell,
1458
1580
  createHistory,
1459
1581
  onChangeTables,
1460
1582
  onChangeSheetData,
1583
+ onChangeCharts,
1461
1584
  enqueueCalculation,
1462
1585
  enqueueGraphOperation,
1463
1586
  getFormattedValue,
1464
1587
  getDependents,
1588
+ getSheetName,
1465
1589
  onCommand,
1466
1590
  generatedNames,
1467
1591
  });
1592
+ // The AutoCorrect smart tag's "Undo Table AutoExpansion"
1593
+ const onUndoTableAutoExpansion = useOnUndoTableAutoExpansion({
1594
+ locale,
1595
+ cellXfsRegistry,
1596
+ tables,
1597
+ createHistory,
1598
+ batchHistory,
1599
+ onResizeTable,
1600
+ onChangeSheetData,
1601
+ enqueueCalculation,
1602
+ onCommand,
1603
+ });
1604
+ // The AutoCorrect smart tag's "Undo Calculated Column" / "Overwrite all cells in this column
1605
+ // with this formula"
1606
+ const onUndoCalculatedColumn = useOnUndoCalculatedColumn({
1607
+ tables,
1608
+ createHistory,
1609
+ batchHistory,
1610
+ onChangeSheetData,
1611
+ onChangeTables,
1612
+ enqueueCalculation,
1613
+ onCommand,
1614
+ });
1615
+ const onFillCalculatedColumn = useOnChangeCalculatedColumn({
1616
+ locale,
1617
+ cellXfsRegistry,
1618
+ sharedStringRegistry,
1619
+ onChangeTables,
1620
+ onChangeSheetData,
1621
+ getUserEnteredValue: getUserEnteredValueStable,
1622
+ getSheetName,
1623
+ createHistory,
1624
+ enqueueCalculation,
1625
+ onCommand,
1626
+ });
1627
+ const onOverwriteCalculatedColumn = useCallback((fill) => {
1628
+ const table = tables?.find((candidate) => candidate.id === fill.tableId && candidate.sheetId === fill.sheetId);
1629
+ if (!table)
1630
+ return;
1631
+ batchHistory(() => {
1632
+ onFillCalculatedColumn(fill.sheetId, fill.anchor, fill.formula, table, { force: true });
1633
+ });
1634
+ }, [tables, batchHistory, onFillCalculatedColumn]);
1468
1635
  // Copy
1469
1636
  const onCopy = useOnCopy({
1470
1637
  theme,
@@ -1488,6 +1655,7 @@ sanitizeHtml, }) => {
1488
1655
  locale,
1489
1656
  sheetData,
1490
1657
  onChangeNamedRanges,
1658
+ onChangeCharts,
1491
1659
  getSheetMerges: getPaintMerges,
1492
1660
  getDataValidationById,
1493
1661
  preserveFormatting: preserveFormattingOnPaste,
@@ -1506,6 +1674,9 @@ sanitizeHtml, }) => {
1506
1674
  enqueueStructureChange,
1507
1675
  enqueueGraphOperation,
1508
1676
  createHistory,
1677
+ batchHistory,
1678
+ autoExpandTables,
1679
+ autoCalculatedColumns,
1509
1680
  onChangeSheetData,
1510
1681
  onChangeSheets,
1511
1682
  onChangeSelections,
@@ -1527,7 +1698,15 @@ sanitizeHtml, }) => {
1527
1698
  rowCount,
1528
1699
  columnCount,
1529
1700
  tables,
1701
+ namedRanges,
1530
1702
  basicFilter,
1703
+ sheetData,
1704
+ sheets,
1705
+ batchHistory,
1706
+ getActiveCell,
1707
+ getSelections,
1708
+ onChangeCitations,
1709
+ onChangeCharts,
1531
1710
  cellXfsRegistry,
1532
1711
  sharedStringRegistry,
1533
1712
  theme,
@@ -1542,11 +1721,15 @@ sanitizeHtml, }) => {
1542
1721
  getEffectiveValue,
1543
1722
  onRequestCalculate,
1544
1723
  getDependents,
1724
+ getGraphNodes,
1725
+ getBandedCells: getPaintBandedCells,
1545
1726
  enqueueGraphOperation,
1546
1727
  getContentfulRangeAroundCell,
1547
1728
  getSheetName,
1548
1729
  onCommand,
1549
1730
  generatedNames,
1731
+ onChangeDataValidations,
1732
+ onChangeConditionalFormats,
1550
1733
  });
1551
1734
  // Insert table row
1552
1735
  const onInsertTableRow = useOnInsertTableRow({
@@ -1563,10 +1746,12 @@ sanitizeHtml, }) => {
1563
1746
  onChangeSheetData,
1564
1747
  onChangeSheets,
1565
1748
  onChangeTables,
1749
+ onChangeCharts,
1566
1750
  onChangeConditionalFormats,
1567
1751
  onChangeDataValidations,
1568
1752
  getSheetName,
1569
1753
  onCommand,
1754
+ tables,
1570
1755
  });
1571
1756
  // Delete table row
1572
1757
  const onDeleteTableRow = useOnDeleteTableRow({
@@ -1582,18 +1767,21 @@ sanitizeHtml, }) => {
1582
1767
  onChangeSheetData,
1583
1768
  onChangeSheets,
1584
1769
  onChangeTables,
1770
+ onChangeCharts,
1585
1771
  onChangeConditionalFormats,
1586
1772
  onChangeDataValidations,
1587
1773
  getSheetName,
1588
1774
  onCommand,
1775
+ tables,
1589
1776
  });
1590
1777
  // Fill range
1591
1778
  const onFillRange = useOnFillRange({
1592
1779
  onFill,
1593
1780
  });
1594
1781
  // Embeds
1595
- const { onDeleteEmbed, onMoveEmbed, onResizeEmbed, onCreateEmbed, onRequestEditEmbed, } = useOnEmbeds({
1782
+ const { onDeleteEmbed, onMoveEmbed, onResizeEmbed, onCreateEmbed, onUpdateEmbed, onRequestEditEmbed, onChangeZOrder, } = useOnEmbeds({
1596
1783
  onChangeEmbeds,
1784
+ onChangeCharts,
1597
1785
  createHistory,
1598
1786
  onCommand,
1599
1787
  });
@@ -1605,6 +1793,14 @@ sanitizeHtml, }) => {
1605
1793
  });
1606
1794
  // Show modal dialog for table editor
1607
1795
  const onRequestEditTable = useOnRequestEditTable();
1796
+ // Show the Resize Table dialog (Table Design → Resize Table)
1797
+ const onRequestResizeTable = useOnRequestResizeTable();
1798
+ // Show the Insert Slicers dialog (Table Design → Insert Slicer)
1799
+ const onRequestInsertSlicer = useOnRequestInsertSlicer();
1800
+ // Show the Create Table dialog (Ctrl+T / Insert → Table / Format as Table)
1801
+ const onRequestCreateTable = useOnRequestCreateTable({
1802
+ getEffectiveExtendedValue,
1803
+ });
1608
1804
  // Show modal dialog for table editor
1609
1805
  const onRequestDefineNamedRange = useOnRequestDefineNamedRange({
1610
1806
  namedRanges,
@@ -1614,6 +1810,7 @@ sanitizeHtml, }) => {
1614
1810
  // Update named range
1615
1811
  const onUpdateNamedRange = useOnUpdateNamedRange({
1616
1812
  locale,
1813
+ tables,
1617
1814
  getDependents,
1618
1815
  getActiveCell,
1619
1816
  enqueueCalculation,
@@ -1624,6 +1821,7 @@ sanitizeHtml, }) => {
1624
1821
  });
1625
1822
  // Update named range
1626
1823
  const onCreateNamedRange = useOnCreateNamedRange({
1824
+ tables,
1627
1825
  enqueueCalculation,
1628
1826
  createHistory,
1629
1827
  onChangeNamedRanges,
@@ -1703,8 +1901,11 @@ sanitizeHtml, }) => {
1703
1901
  enqueueStructureChange,
1704
1902
  enqueueGraphOperation,
1705
1903
  onChangeSheetData,
1904
+ onChangeSheets,
1905
+ getCellData,
1706
1906
  getDependents,
1707
1907
  isHiddenRow,
1908
+ isManuallyHiddenRow,
1708
1909
  getFrozenRowCount,
1709
1910
  getSheetName,
1710
1911
  getEffectiveFormat,
@@ -1717,6 +1918,12 @@ sanitizeHtml, }) => {
1717
1918
  onChangeProtectedRanges,
1718
1919
  onCommand,
1719
1920
  });
1921
+ // Custom table styles (Excel's New Table Style)
1922
+ const onCreateCustomTableStyle = useOnCreateCustomTableStyle({
1923
+ createHistory,
1924
+ onChangeCustomTableStyles,
1925
+ onCommand,
1926
+ });
1720
1927
  // Indent
1721
1928
  const { onIncreaseIndent, onDecreaseIndent, onChangeIndent } = useIndent({
1722
1929
  locale,
@@ -1833,6 +2040,7 @@ sanitizeHtml, }) => {
1833
2040
  onCreateDataValidationRule,
1834
2041
  onChangeTheme,
1835
2042
  onChangeNamedCellStyles,
2043
+ onChangeCustomTableStyles,
1836
2044
  onClearHistory,
1837
2045
  evaluateConditionalFormatting,
1838
2046
  evaluateDataValidations,
@@ -1913,11 +2121,13 @@ sanitizeHtml, }) => {
1913
2121
  createHistory,
1914
2122
  enqueueCalculation,
1915
2123
  onChangeSheetData,
2124
+ onChangeTables,
1916
2125
  locale,
1917
2126
  cellXfsRegistry,
1918
2127
  sharedStringRegistry,
1919
2128
  getFormattedValue,
1920
2129
  onCommand,
2130
+ tables,
1921
2131
  });
1922
2132
  // Goal Seek — scratch-evaluates through the calculator, commits via onChange
1923
2133
  const onGoalSeek = useOnGoalSeek({
@@ -1938,6 +2148,7 @@ sanitizeHtml, }) => {
1938
2148
  onChangeBatch,
1939
2149
  onGroupRows,
1940
2150
  onUngroupRows,
2151
+ batchHistory,
1941
2152
  });
1942
2153
  // Data → Advanced filter (criteria range) over the hide/show/write callbacks
1943
2154
  const onAdvancedFilter = useOnAdvancedFilter({
@@ -1967,6 +2178,8 @@ sanitizeHtml, }) => {
1967
2178
  });
1968
2179
  return {
1969
2180
  namedCellStyles,
2181
+ customTableStyles,
2182
+ onCreateCustomTableStyle,
1970
2183
  activeCellBySheetId,
1971
2184
  selectionsBySheetId,
1972
2185
  activeCell,
@@ -1983,6 +2196,7 @@ sanitizeHtml, }) => {
1983
2196
  columnMetadata,
1984
2197
  merges,
1985
2198
  bandedRanges,
2199
+ onPreviewTableStyle,
1986
2200
  basicFilter,
1987
2201
  spreadsheetColors,
1988
2202
  isDarkMode,
@@ -2009,6 +2223,7 @@ sanitizeHtml, }) => {
2009
2223
  getUserEnteredValue,
2010
2224
  getFormattedValue,
2011
2225
  createHistory,
2226
+ batchHistory,
2012
2227
  onRequestCalculate,
2013
2228
  enqueueCalculation,
2014
2229
  enqueueGraphOperation,
@@ -2069,13 +2284,22 @@ sanitizeHtml, }) => {
2069
2284
  onResizeEmbed,
2070
2285
  onDeleteEmbed,
2071
2286
  onCreateEmbed,
2287
+ onUpdateEmbed,
2072
2288
  onRequestEditEmbed,
2289
+ onChangeZOrder,
2073
2290
  onMoveSlicer,
2074
2291
  onResizeSlicer,
2075
2292
  onDeleteSlicer,
2076
2293
  onCreateSlicer,
2077
2294
  onUpdateSlicer,
2078
2295
  onRequestEditSlicer,
2296
+ getSparklineGroup,
2297
+ getSparklineAt,
2298
+ onCreateSparklineGroup,
2299
+ onUpdateSparklineGroup,
2300
+ onDeleteSparklineGroup,
2301
+ onClearSparklines,
2302
+ onGroupSparklines,
2079
2303
  onDeleteRow,
2080
2304
  onDeleteColumn,
2081
2305
  onDeleteCellsShiftUp,
@@ -2093,6 +2317,9 @@ sanitizeHtml, }) => {
2093
2317
  onFilterTable,
2094
2318
  onDeleteFilter,
2095
2319
  onResizeTable,
2320
+ onUndoTableAutoExpansion,
2321
+ onUndoCalculatedColumn,
2322
+ onOverwriteCalculatedColumn,
2096
2323
  onInsertTableColumn,
2097
2324
  onInsertTableRow,
2098
2325
  onDeleteTableColumn,
@@ -2101,8 +2328,11 @@ sanitizeHtml, }) => {
2101
2328
  onPaste,
2102
2329
  onCreateBasicFilter,
2103
2330
  onCreateTable,
2331
+ onRequestCreateTable,
2104
2332
  onRemoveTable,
2105
2333
  onRequestEditTable,
2334
+ onRequestResizeTable,
2335
+ onRequestInsertSlicer,
2106
2336
  onUpdateTable,
2107
2337
  onRequestDefineNamedRange,
2108
2338
  onRequestUpdateNamedRange,