@rowsncolumns/spreadsheet-state 28.0.76 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +122 -6
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +464 -43
  4. package/dist/cjs/api/copy-paste.d.ts +8 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +4 -4
  7. package/dist/cjs/api/filter.d.ts +15 -1
  8. package/dist/cjs/api/filter.d.ts.map +1 -1
  9. package/dist/cjs/api/filter.js +32 -2
  10. package/dist/cjs/api/formula.d.ts +63 -0
  11. package/dist/cjs/api/formula.d.ts.map +1 -1
  12. package/dist/cjs/api/formula.js +278 -8
  13. package/dist/cjs/api/immer-utils.d.ts +11 -1
  14. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  15. package/dist/cjs/api/immer-utils.js +17 -1
  16. package/dist/cjs/api/insert-cut-cells.d.ts +35 -0
  17. package/dist/cjs/api/insert-cut-cells.d.ts.map +1 -0
  18. package/dist/cjs/api/insert-cut-cells.js +60 -0
  19. package/dist/cjs/api/merges.d.ts +8 -0
  20. package/dist/cjs/api/merges.d.ts.map +1 -1
  21. package/dist/cjs/api/merges.js +11 -0
  22. package/dist/cjs/api/paint-format.d.ts +22 -1
  23. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  24. package/dist/cjs/api/paint-format.js +57 -1
  25. package/dist/cjs/api/sort.d.ts +23 -1
  26. package/dist/cjs/api/sort.d.ts.map +1 -1
  27. package/dist/cjs/api/sort.js +52 -6
  28. package/dist/cjs/api/structural-guards.d.ts +57 -0
  29. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  30. package/dist/cjs/api/structural-guards.js +93 -1
  31. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  32. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  33. package/dist/cjs/api/structural-table-refs.js +177 -16
  34. package/dist/cjs/api/subtotal.d.ts +20 -13
  35. package/dist/cjs/api/subtotal.d.ts.map +1 -1
  36. package/dist/cjs/api/subtotal.js +26 -19
  37. package/dist/cjs/api/table.d.ts +26 -2
  38. package/dist/cjs/api/table.d.ts.map +1 -1
  39. package/dist/cjs/api/table.js +93 -60
  40. package/dist/cjs/api/validation.d.ts.map +1 -1
  41. package/dist/cjs/api/validation.js +53 -8
  42. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  43. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  45. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  47. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  48. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  49. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  50. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  51. package/dist/cjs/atoms/index.d.ts +4 -0
  52. package/dist/cjs/atoms/index.d.ts.map +1 -1
  53. package/dist/cjs/atoms/index.js +4 -0
  54. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  55. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  56. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  57. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  58. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  59. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  60. package/dist/cjs/commands.d.ts +138 -2
  61. package/dist/cjs/commands.d.ts.map +1 -1
  62. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  63. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  64. package/dist/cjs/components/editors/embed-editor.js +38 -9
  65. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  66. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  67. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  68. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  69. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  70. package/dist/cjs/components/editors/table-editor.js +261 -20
  71. package/dist/cjs/components/index.d.ts +1 -0
  72. package/dist/cjs/components/index.d.ts.map +1 -1
  73. package/dist/cjs/components/index.js +1 -0
  74. package/dist/cjs/constants.d.ts +9 -1
  75. package/dist/cjs/constants.d.ts.map +1 -1
  76. package/dist/cjs/constants.js +12 -0
  77. package/dist/cjs/generated-names.d.ts +13 -3
  78. package/dist/cjs/generated-names.d.ts.map +1 -1
  79. package/dist/cjs/generated-names.js +3 -1
  80. package/dist/cjs/helpers.d.ts +5 -0
  81. package/dist/cjs/helpers.d.ts.map +1 -1
  82. package/dist/cjs/helpers.js +10 -1
  83. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  84. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  85. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  86. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  87. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  89. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  90. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  92. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  93. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-change.js +218 -136
  95. package/dist/cjs/hooks/use-on-copy.d.ts +1 -1
  96. package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-copy.js +2 -3
  98. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  99. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  100. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  101. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  102. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  104. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  105. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  107. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  108. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  110. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  111. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  113. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  114. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  116. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +9 -1
  117. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  118. package/dist/cjs/hooks/use-on-delete-sheet.js +17 -1
  119. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  120. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  121. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  122. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  123. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  124. package/dist/cjs/hooks/use-on-delete.js +5 -1
  125. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  126. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  127. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  128. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  129. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  130. package/dist/cjs/hooks/use-on-fill.js +29 -15
  131. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  133. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  134. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  136. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  137. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  139. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  140. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  142. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  143. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  145. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  146. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  148. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  149. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  151. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  152. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  154. package/dist/cjs/hooks/use-on-move-columns.d.ts +4 -1
  155. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  156. package/dist/cjs/hooks/use-on-move-columns.js +28 -6
  157. package/dist/cjs/hooks/use-on-move-rows.d.ts +18 -1
  158. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  159. package/dist/cjs/hooks/use-on-move-rows.js +44 -6
  160. package/dist/cjs/hooks/use-on-move-selection.d.ts +9 -2
  161. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  162. package/dist/cjs/hooks/use-on-move-selection.js +101 -25
  163. package/dist/cjs/hooks/use-on-paste.d.ts +33 -2
  164. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-paste.js +1005 -740
  166. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  167. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  169. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  170. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  171. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  172. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  173. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  174. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  175. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  176. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  177. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  178. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  179. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  181. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  182. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  184. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  185. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  187. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  188. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  190. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  191. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  193. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  194. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-on-table.js +257 -49
  196. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  197. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  199. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  200. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  201. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  202. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  203. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  204. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  205. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  206. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  207. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  208. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  209. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  210. package/dist/cjs/hooks/use-slicers.js +17 -26
  211. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  212. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  213. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  214. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +69 -12
  215. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  216. package/dist/cjs/hooks/use-spreadsheet-state.js +383 -84
  217. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  218. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  219. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  220. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  221. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  222. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  223. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  224. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  225. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  226. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  227. package/dist/cjs/index.d.ts +8 -0
  228. package/dist/cjs/index.d.ts.map +1 -1
  229. package/dist/cjs/index.js +9 -0
  230. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  231. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  232. package/dist/cjs/interface/apply-fill.js +207 -98
  233. package/dist/cjs/interface/change-batch.d.ts +1 -1
  234. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  235. package/dist/cjs/interface/change-batch.js +112 -15
  236. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  237. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  238. package/dist/cjs/interface/change-calculated-column.js +87 -17
  239. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  240. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/change-table-column.js +336 -76
  242. package/dist/cjs/interface/create-table.d.ts +15 -3
  243. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  244. package/dist/cjs/interface/create-table.js +100 -25
  245. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  246. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-cells-shift-left.js +10 -1
  248. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  249. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-cells-shift-up.js +10 -1
  251. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  252. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-cells.js +81 -25
  254. package/dist/cjs/interface/delete-column.d.ts +1 -1
  255. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  256. package/dist/cjs/interface/delete-column.js +29 -22
  257. package/dist/cjs/interface/delete-row.d.ts +1 -1
  258. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  259. package/dist/cjs/interface/delete-row.js +244 -39
  260. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  261. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  262. package/dist/cjs/interface/delete-sheet.js +118 -1
  263. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  264. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  265. package/dist/cjs/interface/delete-table-column.js +11 -1
  266. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  267. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  268. package/dist/cjs/interface/delete-table-row.js +361 -275
  269. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  270. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  271. package/dist/cjs/interface/embeds.d.ts +10 -1
  272. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  273. package/dist/cjs/interface/embeds.js +120 -6
  274. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  275. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  276. package/dist/cjs/interface/insert-cells-shift-down.js +10 -1
  277. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  278. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  279. package/dist/cjs/interface/insert-cells-shift-right.js +10 -1
  280. package/dist/cjs/interface/insert-column.d.ts +2 -2
  281. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  282. package/dist/cjs/interface/insert-column.js +101 -56
  283. package/dist/cjs/interface/insert-row.d.ts +1 -1
  284. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  285. package/dist/cjs/interface/insert-row.js +25 -7
  286. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  287. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  288. package/dist/cjs/interface/insert-table-row.js +70 -19
  289. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  290. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  291. package/dist/cjs/interface/remove-duplicates.js +46 -6
  292. package/dist/cjs/interface/remove-table.d.ts +1 -1
  293. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/remove-table.js +72 -16
  295. package/dist/cjs/interface/slicers.d.ts +12 -1
  296. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  297. package/dist/cjs/interface/slicers.js +47 -2
  298. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  299. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  300. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  301. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  302. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  303. package/dist/cjs/interface/table-totalrow.js +107 -73
  304. package/dist/cjs/interface/table-utils.d.ts +59 -6
  305. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  306. package/dist/cjs/interface/table-utils.js +211 -15
  307. package/dist/cjs/interface/update-table.d.ts +16 -1
  308. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  309. package/dist/cjs/interface/update-table.js +190 -44
  310. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  311. package/dist/cjs/test-setup.d.ts.map +1 -1
  312. package/dist/cjs/test-setup.js +6 -0
  313. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  314. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  315. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  316. package/dist/cjs/validation-schema/table.schema.js +20 -3
  317. package/dist/esm/api/anchored-objects.d.ts +122 -6
  318. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  319. package/dist/esm/api/anchored-objects.js +375 -15
  320. package/dist/esm/api/copy-paste.d.ts +8 -2
  321. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  322. package/dist/esm/api/copy-paste.js +4 -4
  323. package/dist/esm/api/filter.d.ts +15 -1
  324. package/dist/esm/api/filter.d.ts.map +1 -1
  325. package/dist/esm/api/filter.js +28 -0
  326. package/dist/esm/api/formula.d.ts +63 -0
  327. package/dist/esm/api/formula.d.ts.map +1 -1
  328. package/dist/esm/api/formula.js +235 -8
  329. package/dist/esm/api/immer-utils.d.ts +11 -1
  330. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  331. package/dist/esm/api/immer-utils.js +16 -0
  332. package/dist/esm/api/insert-cut-cells.d.ts +35 -0
  333. package/dist/esm/api/insert-cut-cells.d.ts.map +1 -0
  334. package/dist/esm/api/insert-cut-cells.js +67 -0
  335. package/dist/esm/api/merges.d.ts +8 -0
  336. package/dist/esm/api/merges.d.ts.map +1 -1
  337. package/dist/esm/api/merges.js +9 -0
  338. package/dist/esm/api/paint-format.d.ts +22 -1
  339. package/dist/esm/api/paint-format.d.ts.map +1 -1
  340. package/dist/esm/api/paint-format.js +44 -1
  341. package/dist/esm/api/sort.d.ts +23 -1
  342. package/dist/esm/api/sort.d.ts.map +1 -1
  343. package/dist/esm/api/sort.js +45 -6
  344. package/dist/esm/api/structural-guards.d.ts +57 -0
  345. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  346. package/dist/esm/api/structural-guards.js +85 -0
  347. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  348. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  349. package/dist/esm/api/structural-table-refs.js +126 -6
  350. package/dist/esm/api/subtotal.d.ts +20 -13
  351. package/dist/esm/api/subtotal.d.ts.map +1 -1
  352. package/dist/esm/api/subtotal.js +15 -8
  353. package/dist/esm/api/table.d.ts +26 -2
  354. package/dist/esm/api/table.d.ts.map +1 -1
  355. package/dist/esm/api/table.js +70 -48
  356. package/dist/esm/api/validation.d.ts.map +1 -1
  357. package/dist/esm/api/validation.js +53 -8
  358. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  359. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  360. package/dist/esm/atoms/creating-table.atom.js +4 -0
  361. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  362. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  363. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  364. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  365. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  366. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  367. package/dist/esm/atoms/index.d.ts +4 -0
  368. package/dist/esm/atoms/index.d.ts.map +1 -1
  369. package/dist/esm/atoms/index.js +4 -0
  370. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  371. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  372. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  373. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  374. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  375. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  376. package/dist/esm/commands.d.ts +138 -2
  377. package/dist/esm/commands.d.ts.map +1 -1
  378. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  379. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  380. package/dist/esm/components/editors/embed-editor.js +40 -6
  381. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  382. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  383. package/dist/esm/components/editors/slicer-editor.js +85 -0
  384. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  385. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  386. package/dist/esm/components/editors/table-editor.js +243 -19
  387. package/dist/esm/components/index.d.ts +1 -0
  388. package/dist/esm/components/index.d.ts.map +1 -1
  389. package/dist/esm/components/index.js +1 -0
  390. package/dist/esm/constants.d.ts +9 -1
  391. package/dist/esm/constants.d.ts.map +1 -1
  392. package/dist/esm/constants.js +12 -0
  393. package/dist/esm/generated-names.d.ts +13 -3
  394. package/dist/esm/generated-names.d.ts.map +1 -1
  395. package/dist/esm/generated-names.js +3 -1
  396. package/dist/esm/helpers.d.ts +5 -0
  397. package/dist/esm/helpers.d.ts.map +1 -1
  398. package/dist/esm/helpers.js +7 -1
  399. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  400. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  402. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  403. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  405. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  406. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  408. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  409. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-change.js +214 -124
  411. package/dist/esm/hooks/use-on-copy.d.ts +1 -1
  412. package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-copy.js +2 -3
  414. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  415. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  416. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  417. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  418. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  419. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  420. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  421. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  422. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  423. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  424. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  425. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  426. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  427. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  428. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  429. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  430. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  431. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  432. package/dist/esm/hooks/use-on-delete-sheet.d.ts +9 -1
  433. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  434. package/dist/esm/hooks/use-on-delete-sheet.js +17 -1
  435. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  436. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  437. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  438. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  439. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  440. package/dist/esm/hooks/use-on-delete.js +5 -1
  441. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  442. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  443. package/dist/esm/hooks/use-on-embeds.js +23 -6
  444. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  445. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  446. package/dist/esm/hooks/use-on-fill.js +27 -1
  447. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  449. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  450. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  452. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  453. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  455. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  456. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  457. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  458. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  459. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  460. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  461. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  462. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  463. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  464. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  465. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  467. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  468. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  470. package/dist/esm/hooks/use-on-move-columns.d.ts +4 -1
  471. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-move-columns.js +28 -6
  473. package/dist/esm/hooks/use-on-move-rows.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-move-rows.js +44 -6
  476. package/dist/esm/hooks/use-on-move-selection.d.ts +9 -2
  477. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-move-selection.js +57 -1
  479. package/dist/esm/hooks/use-on-paste.d.ts +33 -2
  480. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-paste.js +825 -643
  482. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  483. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  484. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  485. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  486. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  488. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  489. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  490. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  491. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  492. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  493. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  494. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  495. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  497. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  498. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  499. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  500. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  501. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  503. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  504. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  505. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  506. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  507. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  508. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  509. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  510. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  511. package/dist/esm/hooks/use-on-table.js +234 -26
  512. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  513. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  514. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  515. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  516. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  517. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  518. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  519. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  520. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  521. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  522. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  523. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  524. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  525. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  526. package/dist/esm/hooks/use-slicers.js +16 -8
  527. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  528. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  529. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  530. package/dist/esm/hooks/use-spreadsheet-state.d.ts +69 -12
  531. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  532. package/dist/esm/hooks/use-spreadsheet-state.js +321 -14
  533. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  534. package/dist/esm/hooks/use-structured-reference.js +17 -0
  535. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  536. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  537. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  538. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  539. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  540. package/dist/esm/hooks/use-undo-redo.js +158 -7
  541. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  542. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  543. package/dist/esm/index.d.ts +8 -0
  544. package/dist/esm/index.d.ts.map +1 -1
  545. package/dist/esm/index.js +9 -0
  546. package/dist/esm/interface/apply-fill.d.ts +26 -3
  547. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  548. package/dist/esm/interface/apply-fill.js +188 -88
  549. package/dist/esm/interface/change-batch.d.ts +1 -1
  550. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  551. package/dist/esm/interface/change-batch.js +89 -8
  552. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  553. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  554. package/dist/esm/interface/change-calculated-column.js +81 -16
  555. package/dist/esm/interface/change-table-column.d.ts +81 -7
  556. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  557. package/dist/esm/interface/change-table-column.js +295 -67
  558. package/dist/esm/interface/create-table.d.ts +15 -3
  559. package/dist/esm/interface/create-table.d.ts.map +1 -1
  560. package/dist/esm/interface/create-table.js +103 -27
  561. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  562. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  563. package/dist/esm/interface/delete-cells-shift-left.js +10 -1
  564. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  565. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  566. package/dist/esm/interface/delete-cells-shift-up.js +10 -1
  567. package/dist/esm/interface/delete-cells.d.ts +1 -1
  568. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  569. package/dist/esm/interface/delete-cells.js +47 -14
  570. package/dist/esm/interface/delete-column.d.ts +1 -1
  571. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  572. package/dist/esm/interface/delete-column.js +26 -30
  573. package/dist/esm/interface/delete-row.d.ts +1 -1
  574. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  575. package/dist/esm/interface/delete-row.js +191 -44
  576. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  577. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  578. package/dist/esm/interface/delete-sheet.js +113 -1
  579. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  580. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  581. package/dist/esm/interface/delete-table-column.js +11 -1
  582. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  583. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  584. package/dist/esm/interface/delete-table-row.js +312 -232
  585. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  586. package/dist/esm/interface/duplicate-sheet.js +73 -26
  587. package/dist/esm/interface/embeds.d.ts +10 -1
  588. package/dist/esm/interface/embeds.d.ts.map +1 -1
  589. package/dist/esm/interface/embeds.js +84 -5
  590. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  591. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  592. package/dist/esm/interface/insert-cells-shift-down.js +10 -1
  593. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  594. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  595. package/dist/esm/interface/insert-cells-shift-right.js +10 -1
  596. package/dist/esm/interface/insert-column.d.ts +2 -2
  597. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  598. package/dist/esm/interface/insert-column.js +70 -33
  599. package/dist/esm/interface/insert-row.d.ts +1 -1
  600. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  601. package/dist/esm/interface/insert-row.js +22 -6
  602. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  603. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  604. package/dist/esm/interface/insert-table-row.js +67 -12
  605. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  606. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  607. package/dist/esm/interface/remove-duplicates.js +41 -6
  608. package/dist/esm/interface/remove-table.d.ts +1 -1
  609. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  610. package/dist/esm/interface/remove-table.js +58 -10
  611. package/dist/esm/interface/slicers.d.ts +12 -1
  612. package/dist/esm/interface/slicers.d.ts.map +1 -1
  613. package/dist/esm/interface/slicers.js +44 -2
  614. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  615. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  616. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  617. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  618. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  619. package/dist/esm/interface/table-totalrow.js +98 -68
  620. package/dist/esm/interface/table-utils.d.ts +59 -6
  621. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  622. package/dist/esm/interface/table-utils.js +155 -14
  623. package/dist/esm/interface/update-table.d.ts +16 -1
  624. package/dist/esm/interface/update-table.d.ts.map +1 -1
  625. package/dist/esm/interface/update-table.js +203 -42
  626. package/dist/esm/sheet-cell.d.ts.map +1 -1
  627. package/dist/esm/test-setup.d.ts.map +1 -1
  628. package/dist/esm/test-setup.js +6 -0
  629. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  630. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  631. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  632. package/dist/esm/validation-schema/table.schema.js +15 -2
  633. package/package.json +25 -17
@@ -2,7 +2,7 @@ import { __assign, __awaiter, __generator, __read, __spreadArray, __values } fro
2
2
  import { tokenize as defaultTokenizer } from "@rowsncolumns/calculator";
3
3
  import { isCellCoordinate, isCellNode, isCellRangeNode, isStaticNode, } from "@rowsncolumns/dag";
4
4
  import { FormulaError } from "@rowsncolumns/fast-formula-parser";
5
- import { defaultSpreadsheetTheme, } from "@rowsncolumns/spreadsheet";
5
+ import { defaultSpreadsheetTheme, getBandedCells, } from "@rowsncolumns/spreadsheet";
6
6
  import { addressToCell, canUseDOM, cellToAddress, DEFAULT_ACTIVE_CELL, DEFAULT_COLUMN_COUNT, DEFAULT_COLUMN_WIDTH, DEFAULT_ROW_COUNT, DEFAULT_ROW_HEIGHT, generateSelectionsFromFormula, getCellEffectiveFormat, getCellEffectiveValue, getCellFormattedValue, getCellUserEnteredFormat, cellFormatWrapsText, getCellUserEnteredValue, getColumnIndexFromColumnName, getExtendedValueBool, getExtendedValueError, getExtendedValueFormula, getExtendedValueNumber, getExtendedValueString, isAreasEqual, isCellWithinBounds, isNil, iterateCellsInRange, pointToPixel, } from "@rowsncolumns/utils";
7
7
  import { enableMapSet, enablePatches, produceWithPatches } from "immer";
8
8
  import { buildConditionalFormatExpression } from "../api/conditional-format";
@@ -13,6 +13,7 @@ import { getAutoFillValues } from "../api/fill";
13
13
  import { formulaToRelativeReference } from "../api/formula";
14
14
  import { createSheetDraft, deriveCellFromPrecedents } from "../api/immer-utils";
15
15
  import { arrayResultToA1Ref } from "../hooks/use-on-calculation-success";
16
+ import { deriveBuiltInTableBanding, } from "../hooks/use-spreadsheet-state";
16
17
  import { defaultCellCoords, isStyleReference, SheetCell } from "../sheet-cell";
17
18
  import { CellXfsRegistry } from "../cellxfs-registry";
18
19
  import { SharedStringRegistry } from "../shared-string-registry";
@@ -805,6 +806,16 @@ var Spreadsheet = /** @class */ (function () {
805
806
  sheetName: sheetName,
806
807
  };
807
808
  }
809
+ // Totals row only (the table's last row); nothing to highlight while it is off.
810
+ if (specialItem === "#Totals") {
811
+ if (!totalRow) {
812
+ return undefined;
813
+ }
814
+ return {
815
+ range: __assign(__assign({}, range), { startColumnIndex: startColumnIndex, endColumnIndex: endColumnIndex, startRowIndex: range.endRowIndex, endRowIndex: range.endRowIndex }),
816
+ sheetName: sheetName,
817
+ };
818
+ }
808
819
  // All
809
820
  if (specialItem === "#All") {
810
821
  return {
@@ -1632,6 +1643,7 @@ var Spreadsheet = /** @class */ (function () {
1632
1643
  onChangeSheets: this.onChangeSheets,
1633
1644
  onChangeSheetData: this.onChangeSheetData,
1634
1645
  onChangeTables: this.onChangeTables,
1646
+ onChangeCharts: this.onChangeCharts,
1635
1647
  onChangeDataValidations: this.onChangeDataValidations,
1636
1648
  onChangeConditionalFormats: this.onChangeConditionalFormats,
1637
1649
  createHistory: this.createHistory,
@@ -1803,6 +1815,8 @@ var Spreadsheet = /** @class */ (function () {
1803
1815
  getDependents: _this.getDependents,
1804
1816
  onChangeSheetData: _this.onChangeSheetData,
1805
1817
  onChangeTables: _this.onChangeTables,
1818
+ onChangeCharts: _this.onChangeCharts,
1819
+ tables: _this.tables,
1806
1820
  }).apply(void 0, __spreadArray([], __read(args), false));
1807
1821
  },
1808
1822
  onChangeCalculatedColumn: function () {
@@ -1922,15 +1936,28 @@ var Spreadsheet = /** @class */ (function () {
1922
1936
  * @param previousTable
1923
1937
  */
1924
1938
  Spreadsheet.prototype.updateTable = function (sheetId, tableId, updatedTable) {
1939
+ var _this = this;
1940
+ var sheet = this.getSheet(sheetId);
1925
1941
  return updateTable({
1926
1942
  locale: this.locale,
1927
1943
  tables: this.tables,
1928
1944
  createHistory: this.createHistory,
1929
1945
  enqueueCalculation: this.enqueueCalculation,
1946
+ enqueueGraphOperation: this.enqueueGraphOperation,
1947
+ getGraphNodes: function () { return _this._calculationInterface.getNodes(); },
1930
1948
  getDependents: this.getDependents,
1931
1949
  onChangeSheetData: this.onChangeSheetData,
1932
1950
  onChangeTables: this.onChangeTables,
1933
1951
  getFormattedValue: this.getFormattedValue,
1952
+ sheetData: this.sheetData,
1953
+ rowCount: sheet.rowCount,
1954
+ columnCount: sheet.columnCount,
1955
+ getSheetName: this.getSheetName,
1956
+ getActiveCell: this.getActiveCell,
1957
+ enqueueStructureChange: this.enqueueStructureChange,
1958
+ onChangeSheets: this.onChangeSheets,
1959
+ onChangeDataValidations: this.onChangeDataValidations,
1960
+ onChangeConditionalFormats: this.onChangeConditionalFormats,
1934
1961
  })(sheetId, tableId, updatedTable);
1935
1962
  };
1936
1963
  /**
@@ -1938,11 +1965,36 @@ var Spreadsheet = /** @class */ (function () {
1938
1965
  * @param tableView
1939
1966
  */
1940
1967
  Spreadsheet.prototype.removeTable = function (tableView) {
1968
+ var _this = this;
1941
1969
  removeTable({
1970
+ locale: this.locale,
1971
+ cellXfsRegistry: this.cellXfsRegistry,
1972
+ sharedStringRegistry: this.sharedStringRegistry,
1973
+ getSheetName: this.getSheetName,
1942
1974
  createHistory: this.createHistory,
1943
1975
  enqueueCalculation: this.enqueueCalculation,
1976
+ enqueueGraphOperation: this.enqueueGraphOperation,
1944
1977
  getDependents: this.getDependents,
1978
+ getGraphNodes: function () { return _this._calculationInterface.getNodes(); },
1979
+ getBandedCells: function (sheetId) {
1980
+ var _a;
1981
+ var bands = ((_a = _this.tables) !== null && _a !== void 0 ? _a : []).flatMap(function (table) {
1982
+ var _a, _b;
1983
+ var banded = table.sheetId === sheetId
1984
+ ? ((_a = table.bandedRange) !== null && _a !== void 0 ? _a : deriveBuiltInTableBanding(table))
1985
+ : undefined;
1986
+ return banded
1987
+ ? [
1988
+ __assign({ bandedRangeId: "".concat(table.id, "-").concat(table.theme), showFirstColumn: table.showFirstColumn, showLastColumn: table.showLastColumn, totalRow: (_b = table.totalRow) !== null && _b !== void 0 ? _b : false, range: __assign(__assign({}, table.range), { sheetId: sheetId }) }, banded),
1989
+ ]
1990
+ : [];
1991
+ });
1992
+ return bands.length
1993
+ ? getBandedCells(bands, defaultSpreadsheetTheme, sheetId, function (rowIndex) { return _this.isHiddenRow(sheetId, rowIndex); }, function () { return false; })
1994
+ : undefined;
1995
+ },
1945
1996
  onChangeSheets: this.onChangeSheets,
1997
+ onChangeSheetData: this.onChangeSheetData,
1946
1998
  onChangeTables: this.onChangeTables,
1947
1999
  })(tableView);
1948
2000
  };
@@ -2050,6 +2102,7 @@ var Spreadsheet = /** @class */ (function () {
2050
2102
  enqueueStructureChange: this.enqueueStructureChange,
2051
2103
  onChangeSheetData: this.onChangeSheetData,
2052
2104
  onChangeSheets: this.onChangeSheets,
2105
+ onChangeCharts: this.onChangeCharts,
2053
2106
  })(sheetId, activeCell, selections);
2054
2107
  };
2055
2108
  /**
@@ -2070,6 +2123,7 @@ var Spreadsheet = /** @class */ (function () {
2070
2123
  enqueueStructureChange: this.enqueueStructureChange,
2071
2124
  onChangeSheetData: this.onChangeSheetData,
2072
2125
  onChangeSheets: this.onChangeSheets,
2126
+ onChangeCharts: this.onChangeCharts,
2073
2127
  })(sheetId, activeCell, selections);
2074
2128
  };
2075
2129
  /** Freeze a row index */
@@ -2187,6 +2241,12 @@ var Spreadsheet = /** @class */ (function () {
2187
2241
  onChangeSheetData: this.onChangeSheetData,
2188
2242
  onChangeActiveSheet: function () { },
2189
2243
  onChangeSheets: this.onChangeSheets,
2244
+ onChangeCharts: this.onChangeCharts,
2245
+ onChangeEmbeds: this.onChangeEmbeds,
2246
+ onChangeTables: this.onChangeTables,
2247
+ onChangeConditionalFormats: this.onChangeConditionalFormats,
2248
+ onChangeDataValidations: this.onChangeDataValidations,
2249
+ onChangeNamedRanges: this.onChangeNamedRanges,
2190
2250
  createHistory: this.createHistory,
2191
2251
  enqueueGraphOperation: this.enqueueGraphOperation,
2192
2252
  })(sheetId);
@@ -2467,6 +2527,7 @@ var Spreadsheet = /** @class */ (function () {
2467
2527
  onChangeSheetData: this.onChangeSheetData,
2468
2528
  onChangeSheets: this.onChangeSheets,
2469
2529
  onChangeTables: this.onChangeTables,
2530
+ onChangeCharts: this.onChangeCharts,
2470
2531
  onChangeDataValidations: this.onChangeDataValidations,
2471
2532
  onChangeConditionalFormats: this.onChangeConditionalFormats,
2472
2533
  })(tableView, rowIndexes);
@@ -2669,6 +2730,7 @@ var Spreadsheet = /** @class */ (function () {
2669
2730
  database: database,
2670
2731
  locale: this.locale,
2671
2732
  onChangeSheetData: this.onChangeSheetData,
2733
+ onChangeCharts: this.onChangeCharts,
2672
2734
  onChangeSheets: this.onChangeSheets,
2673
2735
  // onCreateNewSheet:,
2674
2736
  createHistory: this.createHistory,
@@ -2692,6 +2754,7 @@ var Spreadsheet = /** @class */ (function () {
2692
2754
  database: database,
2693
2755
  locale: this.locale,
2694
2756
  onChangeSheetData: this.onChangeSheetData,
2757
+ onChangeCharts: this.onChangeCharts,
2695
2758
  onChangeSheets: this.onChangeSheets,
2696
2759
  // onCreateNewSheet:,
2697
2760
  createHistory: this.createHistory,
@@ -3,12 +3,24 @@ import type { UseOnTableProps } from "../hooks/use-on-table";
3
3
  import type { SpreadsheetPatch } from "../hooks/use-undo-redo";
4
4
  type TableTotalRowProps<T extends CellData, S extends Sheet> = Pick<UseOnTableProps<T, S>, "locale" | "onChangeSheetData" | "enqueueCalculation">;
5
5
  /**
6
- * Add a total row to a table.
6
+ * Add a total row to a table the way Excel does when Total Row is switched on:
7
+ * "Total" in the first column and ONE structured-reference `SUBTOTAL` in the
8
+ * last column — Sum (`109`) when that column's body is all numbers, Count
9
+ * (`103`) otherwise; every other totals cell stays blank. A single-column
10
+ * table gets the formula.
7
11
  *
8
12
  * Expects `updatedTable.range` to already include the total row, i.e.
9
13
  * `range.endRowIndex` is the row the totals are written to.
10
14
  */
11
15
  export declare const addTotalRow: <T extends CellData, S extends Sheet>({ locale, onChangeSheetData, enqueueCalculation, }: TableTotalRowProps<T, S>) => (sheetId: number, updatedTable: TableView, saveHistory: (patches: SpreadsheetPatch) => void) => void;
16
+ /**
17
+ * Rewrite the totals-row cells of `columnIndexes` from their column's recorded
18
+ * `totalsRowFunction` (the totals dropdown's choice): a function writes its
19
+ * structured `SUBTOTAL`, `none` (or no name to reference) clears the cell.
20
+ *
21
+ * Expects `table.range` to include the total row (`range.endRowIndex`).
22
+ */
23
+ export declare const setTotalRowFunctions: <T extends CellData, S extends Sheet>({ locale, onChangeSheetData, enqueueCalculation, }: TableTotalRowProps<T, S>) => (sheetId: number, table: TableView, columnIndexes: number[], saveHistory: (patches: SpreadsheetPatch) => void) => void;
12
24
  /**
13
25
  * Remove the total row from a table.
14
26
  *
@@ -1 +1 @@
1
- {"version":3,"file":"table-totalrow.d.ts","sourceRoot":"","sources":["../../../interface/table-totalrow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,KAAK,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,CACjE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACrB,QAAQ,GAAG,mBAAmB,GAAG,oBAAoB,CACtD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oDAI9D,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,cAAc,SAAS,EACvB,aAAa,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,SAuJnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oDAIjE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,cAAc,SAAS,EACvB,aAAa,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,SA4DnD,CAAC"}
1
+ {"version":3,"file":"table-totalrow.d.ts","sourceRoot":"","sources":["../../../interface/table-totalrow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,KAAK,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,CACjE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACrB,QAAQ,GAAG,mBAAmB,GAAG,oBAAoB,CACtD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oDAI9D,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,cAAc,SAAS,EACvB,aAAa,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,SA8HnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oDAIvE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,OAAO,SAAS,EAChB,eAAe,MAAM,EAAE,EACvB,aAAa,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,SAqDnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,oDAIjE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,cAAc,SAAS,EACvB,aAAa,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,SA4DnD,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import { __read, __values } from "tslib";
2
- import { isNil, isNumber } from "@rowsncolumns/utils";
2
+ import { getTotalsRowFormula, isNil, isNumber } from "@rowsncolumns/utils";
3
3
  import { produceWithPatches } from "immer";
4
4
  import { createSheetCellIdentifier } from "../api/formula";
5
5
  import { createSheetDraft } from "../api/immer-utils";
6
6
  import { SheetCell } from "../sheet-cell";
7
7
  /**
8
- * Add a total row to a table.
8
+ * Add a total row to a table the way Excel does when Total Row is switched on:
9
+ * "Total" in the first column and ONE structured-reference `SUBTOTAL` in the
10
+ * last column — Sum (`109`) when that column's body is all numbers, Count
11
+ * (`103`) otherwise; every other totals cell stays blank. A single-column
12
+ * table gets the formula.
9
13
  *
10
14
  * Expects `updatedTable.range` to already include the total row, i.e.
11
15
  * `range.endRowIndex` is the row the totals are written to.
@@ -15,104 +19,134 @@ export var addTotalRow = function (_a) {
15
19
  return function (sheetId, updatedTable, saveHistory) {
16
20
  // We need to track this for history. Precedent cells
17
21
  var recalcCells = new Map();
18
- /**
19
- * 1. Validate number columns
20
- * 2. Add Subtotal function
21
- */
22
- var numberColumnIndexes = [];
23
22
  var sheetCell = new SheetCell();
24
23
  var _a = updatedTable.range, startRowIndex = _a.startRowIndex, startColumnIndex = _a.startColumnIndex, endRowIndex = _a.endRowIndex, endColumnIndex = _a.endColumnIndex;
25
- // Add total text
26
24
  var totalRowIndex = endRowIndex;
25
+ var bodyStartRowIndex = startRowIndex + (updatedTable.headerRow !== false ? 1 : 0);
27
26
  /**
28
27
  * Update sheet
29
28
  */
30
29
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
31
30
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
32
- var e_1, _a;
33
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
34
- // User is adding a total row
35
- for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
31
+ var _a, _b, _c;
32
+ // Is every non-blank body cell of the column a number? Dates are
33
+ // stored as numbers, but summing them is meaningless.
34
+ var isNumericColumn = function (columnIndex) {
35
+ var _a, _b, _c;
36
36
  var values = [];
37
- var isDateColumn = false;
38
- for (var rowIndex = startRowIndex + (updatedTable.headerRow ? 1 : 0); rowIndex < totalRowIndex; rowIndex++) {
39
- var cellData = (_d = (_c = (_b = draft[sheetId]) === null || _b === void 0 ? void 0 : _b[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d[columnIndex];
40
- sheetCell.assign(sheetId, {
41
- rowIndex: rowIndex,
42
- columnIndex: columnIndex,
43
- }, cellData, { locale: locale });
44
- var effectiveValue = sheetCell.getEffectiveValue();
37
+ for (var rowIndex = bodyStartRowIndex; rowIndex < totalRowIndex; rowIndex++) {
38
+ var cellData = (_c = (_b = (_a = draft[sheetId]) === null || _a === void 0 ? void 0 : _a[rowIndex]) === null || _b === void 0 ? void 0 : _b.values) === null || _c === void 0 ? void 0 : _c[columnIndex];
39
+ sheetCell.assign(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, cellData, {
40
+ locale: locale,
41
+ });
45
42
  var numberFormat = sheetCell.getNumberFormat();
46
- // Dates are stored as numbers, but summing them is meaningless
47
43
  if ((numberFormat === null || numberFormat === void 0 ? void 0 : numberFormat.type) === "DATE" ||
48
44
  (numberFormat === null || numberFormat === void 0 ? void 0 : numberFormat.type) === "DATE_TIME") {
49
- isDateColumn = true;
50
- break;
45
+ return false;
51
46
  }
47
+ var effectiveValue = sheetCell.getEffectiveValue();
52
48
  if (!isNil(effectiveValue)) {
53
49
  values.push(effectiveValue);
54
50
  }
55
51
  }
56
- if (!isDateColumn && values.length && values.every(isNumber)) {
57
- numberColumnIndexes.push(columnIndex);
58
- }
52
+ return values.length > 0 && values.every(isNumber);
53
+ };
54
+ var currentSheet = createSheetDraft(draft, sheetId, totalRowIndex);
55
+ var writeTotalCell = function (columnIndex, value) {
56
+ var _a, _b;
57
+ sheetCell.assign(sheetId, { rowIndex: totalRowIndex, columnIndex: columnIndex }, (_b = (_a = currentSheet[totalRowIndex]) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b[columnIndex], { locale: locale });
58
+ sheetCell.setUserEnteredValue(value);
59
+ // The totals row's bold and top rule come from the table style's
60
+ // `totalRow` band, not from an explicit cell format.
61
+ currentSheet[totalRowIndex].values[columnIndex] =
62
+ sheetCell.getCellData();
63
+ };
64
+ var writeTotalFormula = function (columnIndex, formula) {
65
+ writeTotalCell(columnIndex, formula);
66
+ var position = { rowIndex: totalRowIndex, columnIndex: columnIndex, sheetId: sheetId };
67
+ enqueueCalculation({ type: "add", position: position });
68
+ recalcCells.set(createSheetCellIdentifier(sheetId, totalRowIndex, columnIndex), position);
69
+ };
70
+ // A column with a recorded `totalsRowFunction` (the totals dropdown's
71
+ // choice, kept across toggles) regenerates that; the others take
72
+ // Excel's defaults below.
73
+ var recorded = new Set();
74
+ for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
75
+ var column = (_a = updatedTable.columns) === null || _a === void 0 ? void 0 : _a[columnIndex - startColumnIndex];
76
+ var fn = column === null || column === void 0 ? void 0 : column.totalsRowFunction;
77
+ if (!fn)
78
+ continue;
79
+ recorded.add(columnIndex);
80
+ var formula = (column === null || column === void 0 ? void 0 : column.name)
81
+ ? getTotalsRowFormula(fn, updatedTable.title, column.name)
82
+ : undefined;
83
+ if (formula)
84
+ writeTotalFormula(columnIndex, formula);
85
+ }
86
+ var lastColumnName = (_c = (_b = updatedTable.columns) === null || _b === void 0 ? void 0 : _b[endColumnIndex - startColumnIndex]) === null || _c === void 0 ? void 0 : _c.name;
87
+ var lastColumnFormula = lastColumnName && !recorded.has(endColumnIndex)
88
+ ? getTotalsRowFormula(isNumericColumn(endColumnIndex) ? "sum" : "count", updatedTable.title, lastColumnName)
89
+ : undefined;
90
+ // The total label owns the first column unless the formula needs it
91
+ // (single-column table).
92
+ if (!recorded.has(startColumnIndex) &&
93
+ (endColumnIndex > startColumnIndex || !lastColumnFormula)) {
94
+ writeTotalCell(startColumnIndex, "Total");
59
95
  }
96
+ if (lastColumnFormula) {
97
+ writeTotalFormula(endColumnIndex, lastColumnFormula);
98
+ }
99
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
100
+ saveHistory({
101
+ sheetData: { patches: patches, inversePatches: inversePatches },
102
+ recalcCells: { undo: recalcCells, redo: recalcCells },
103
+ });
104
+ return nextState;
105
+ });
106
+ };
107
+ };
108
+ /**
109
+ * Rewrite the totals-row cells of `columnIndexes` from their column's recorded
110
+ * `totalsRowFunction` (the totals dropdown's choice): a function writes its
111
+ * structured `SUBTOTAL`, `none` (or no name to reference) clears the cell.
112
+ *
113
+ * Expects `table.range` to include the total row (`range.endRowIndex`).
114
+ */
115
+ export var setTotalRowFunctions = function (_a) {
116
+ var locale = _a.locale, onChangeSheetData = _a.onChangeSheetData, enqueueCalculation = _a.enqueueCalculation;
117
+ return function (sheetId, table, columnIndexes, saveHistory) {
118
+ var recalcCells = new Map();
119
+ var sheetCell = new SheetCell();
120
+ var totalRowIndex = table.range.endRowIndex;
121
+ onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
122
+ var _a = __read(produceWithPatches(prevSheetData, function (draft) {
123
+ var e_1, _a;
124
+ var _b, _c, _d;
60
125
  var currentSheet = createSheetDraft(draft, sheetId, totalRowIndex);
61
- sheetCell.assign(sheetId, {
62
- rowIndex: totalRowIndex,
63
- columnIndex: startColumnIndex,
64
- }, (_f = (_e = currentSheet[totalRowIndex]) === null || _e === void 0 ? void 0 : _e.values) === null || _f === void 0 ? void 0 : _f[startColumnIndex], { locale: locale });
65
- // Add total text
66
- sheetCell.setUserEnteredValue("Total");
67
- // Bold, can be overridden by user
68
- sheetCell.setUserEnteredFormat("textFormat", {
69
- bold: true,
70
- });
71
- // Set cell data
72
- currentSheet[totalRowIndex].values[startColumnIndex] =
73
- sheetCell.getCellData();
74
126
  try {
75
- // Add subtotal
76
- for (var numberColumnIndexes_1 = __values(numberColumnIndexes), numberColumnIndexes_1_1 = numberColumnIndexes_1.next(); !numberColumnIndexes_1_1.done; numberColumnIndexes_1_1 = numberColumnIndexes_1.next()) {
77
- var columnIndex = numberColumnIndexes_1_1.value;
78
- // The total label owns the first column
79
- if (columnIndex === startColumnIndex) {
80
- continue;
81
- }
82
- var rowIndex = totalRowIndex;
83
- var cellData = (_j = (_h = (_g = draft[sheetId]) === null || _g === void 0 ? void 0 : _g[rowIndex]) === null || _h === void 0 ? void 0 : _h.values) === null || _j === void 0 ? void 0 : _j[columnIndex];
84
- sheetCell.assign(sheetId, {
85
- columnIndex: columnIndex,
86
- rowIndex: rowIndex,
87
- }, cellData, { locale: locale });
88
- var columnName = (_l = (_k = updatedTable.columns) === null || _k === void 0 ? void 0 : _k[columnIndex - startColumnIndex]) === null || _l === void 0 ? void 0 : _l.name;
89
- if (columnName) {
90
- sheetCell.setUserEnteredValue("=SUBTOTAL(109, [".concat(columnName, "])"));
127
+ for (var columnIndexes_1 = __values(columnIndexes), columnIndexes_1_1 = columnIndexes_1.next(); !columnIndexes_1_1.done; columnIndexes_1_1 = columnIndexes_1.next()) {
128
+ var columnIndex = columnIndexes_1_1.value;
129
+ var column = (_b = table.columns) === null || _b === void 0 ? void 0 : _b[columnIndex - table.range.startColumnIndex];
130
+ var formula = (column === null || column === void 0 ? void 0 : column.totalsRowFunction) && column.name
131
+ ? getTotalsRowFormula(column.totalsRowFunction, table.title, column.name)
132
+ : undefined;
133
+ sheetCell.assign(sheetId, { rowIndex: totalRowIndex, columnIndex: columnIndex }, formula ? (_d = (_c = currentSheet[totalRowIndex]) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d[columnIndex] : undefined, { locale: locale });
134
+ if (formula) {
135
+ sheetCell.setUserEnteredValue(formula);
91
136
  // Bold, can be overridden by user
92
- sheetCell.setUserEnteredFormat("textFormat", {
93
- bold: true,
94
- });
95
- // Set cell data
96
- currentSheet[totalRowIndex].values[columnIndex] =
97
- sheetCell.getCellData();
98
- var position = {
99
- rowIndex: rowIndex,
100
- columnIndex: columnIndex,
101
- sheetId: sheetId,
102
- };
103
- enqueueCalculation({
104
- type: "add",
105
- position: position,
106
- });
107
- // Add sheet id
108
- recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, columnIndex), position);
137
+ sheetCell.setUserEnteredFormat("textFormat", { bold: true });
109
138
  }
139
+ currentSheet[totalRowIndex].values[columnIndex] =
140
+ sheetCell.getCellData();
141
+ var position = { rowIndex: totalRowIndex, columnIndex: columnIndex, sheetId: sheetId };
142
+ enqueueCalculation({ type: "add", position: position });
143
+ recalcCells.set(createSheetCellIdentifier(sheetId, totalRowIndex, columnIndex), position);
110
144
  }
111
145
  }
112
146
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
113
147
  finally {
114
148
  try {
115
- if (numberColumnIndexes_1_1 && !numberColumnIndexes_1_1.done && (_a = numberColumnIndexes_1.return)) _a.call(numberColumnIndexes_1);
149
+ if (columnIndexes_1_1 && !columnIndexes_1_1.done && (_a = columnIndexes_1.return)) _a.call(columnIndexes_1);
116
150
  }
117
151
  finally { if (e_1) throw e_1.error; }
118
152
  }
@@ -1,21 +1,74 @@
1
- import type { GridRange } from "@rowsncolumns/common-types";
2
- import type { CellData, TableView } from "@rowsncolumns/spreadsheet";
1
+ import type { GridRange, SelectionArea } from "@rowsncolumns/common-types";
2
+ import type { CellData, Column, TableView } from "@rowsncolumns/spreadsheet";
3
3
  import type { Draft } from "immer";
4
4
  import type { GeneratedNames } from "../generated-names";
5
+ import type { SheetData } from "../hooks/use-spreadsheet-state";
6
+ /**
7
+ * Does any cell of `rowIndex` within a table's columns hold a value or formula?
8
+ * Decides whether switching Total Row on must first shift the row below the
9
+ * table down (Excel inserts a row rather than overwrite data).
10
+ */
11
+ export declare const tableRowHasContent: <T extends CellData>(rows: SheetData<T>[number] | undefined, rowIndex: number, startColumnIndex: number, endColumnIndex: number) => boolean;
12
+ /**
13
+ * Excel's Header Row → ON re-adds the header ABOVE the data when the row above the table is free:
14
+ * it exists, holds no value or formula in the table's columns, and belongs to no other table.
15
+ * Otherwise the first data row becomes the header row in place.
16
+ */
17
+ export declare const tableHeaderRowAboveIsFree: <T extends CellData>({ sheetId, table, sheetData, tables, }: {
18
+ sheetId: number;
19
+ table: TableView;
20
+ sheetData: SheetData<T> | undefined;
21
+ tables: TableView[] | undefined;
22
+ }) => boolean;
5
23
  export declare const rangesOverlap: (a: GridRange, b: GridRange) => boolean;
6
24
  export declare const tableWouldOverlap: (candidate: {
7
25
  sheetId: number;
8
26
  range: GridRange;
9
27
  id?: TableView["id"];
10
28
  }, existing: TableView[] | undefined) => boolean;
11
- type AddTableColumnOptions<T extends CellData> = {
29
+ /**
30
+ * Excel: a table's header names are unique, compared case-insensitively — a duplicate takes the
31
+ * next free numeric suffix (`Name`, `Name2`, `Name3`).
32
+ */
33
+ export declare const getUniqueTableColumnName: (name: string, taken: Iterable<string>) => string;
34
+ type TableHeaderNamesOptions = {
12
35
  sheetId: number;
13
- draft: Draft<any>;
14
36
  range: GridRange;
15
37
  getFormattedValue: (sheetId: number, rowIndex: number, columnIndex: number) => string | null | undefined;
16
- locale?: string;
17
38
  generatedNames?: GeneratedNames;
39
+ /** Columns the table already names, by position — kept as they are; only the rest are derived. */
40
+ columns?: (Column | undefined)[] | null;
18
41
  };
19
- export declare const addTableColumn: <T extends CellData>({ draft, sheetId, range, getFormattedValue, locale, generatedNames, }: AddTableColumnOptions<T>) => void;
42
+ /**
43
+ * The header names a table takes over `range` (Excel): a column the table already names keeps
44
+ * that name; every other column takes its header cell's display text, de-duplicated against the
45
+ * names before it (`Name`, `Name2`, …), and a blank header cell takes the first free `ColumnN`.
46
+ */
47
+ export declare const getTableHeaderNames: ({ sheetId, range, getFormattedValue, generatedNames, columns, }: TableHeaderNamesOptions) => string[];
48
+ type AddTableColumnOptions<T extends CellData> = TableHeaderNamesOptions & {
49
+ draft: Draft<any>;
50
+ locale?: string;
51
+ };
52
+ /**
53
+ * Write a table's header row: every header cell holds its column's name as TEXT (Excel stores
54
+ * headers as text — a `2024` header becomes the string "2024"), so a blank, numeric, formula or
55
+ * de-duplicated header cell is (re)written; a text cell already reading its name is left alone.
56
+ * The names come from {@link getTableHeaderNames}, so the table's `columns` and its cells agree.
57
+ */
58
+ export declare const addTableColumn: <T extends CellData>({ draft, sheetId, range, getFormattedValue, locale, generatedNames, columns, }: AddTableColumnOptions<T>) => string[];
59
+ export type TableHeaderRefill = {
60
+ tableId: TableView["id"];
61
+ rowIndex: number;
62
+ columnIndex: number;
63
+ /** Position of the header within `table.columns`. */
64
+ dimensionIndex: number;
65
+ name: string;
66
+ };
67
+ export declare const getTableHeaderRefills: ({ sheetId, tables, selections, generatedNames, }: {
68
+ sheetId: number;
69
+ tables: TableView[] | undefined;
70
+ selections: Pick<SelectionArea, "range">[];
71
+ generatedNames?: GeneratedNames;
72
+ }) => TableHeaderRefill[];
20
73
  export {};
21
74
  //# sourceMappingURL=table-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-utils.d.ts","sourceRoot":"","sources":["../../../interface/table-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAU,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOzD,eAAO,MAAM,aAAa,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,KAAG,OAMxD,CAAC;AAEJ,eAAO,MAAM,iBAAiB,GAC5B,WAAW;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;CAAE,EACtE,UAAU,SAAS,EAAE,GAAG,SAAS,KAChC,OAQF,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,uEAOhD,qBAAqB,CAAC,CAAC,CAAC,SAoC1B,CAAC"}
1
+ {"version":3,"file":"table-utils.d.ts","sourceRoot":"","sources":["../../../interface/table-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAGhE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,QAAQ,EACnD,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,EACtC,UAAU,MAAM,EAChB,kBAAkB,MAAM,EACxB,gBAAgB,MAAM,KACrB,OAUF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,QAAQ,EAAE,wCAK3D;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;CACjC,KAAG,OAqBH,CAAC;AAKF,eAAO,MAAM,aAAa,GAAI,GAAG,SAAS,EAAE,GAAG,SAAS,KAAG,OAMxD,CAAC;AAEJ,eAAO,MAAM,iBAAiB,GAC5B,WAAW;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;CAAE,EACtE,UAAU,SAAS,EAAE,GAAG,SAAS,KAChC,OAQF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EACZ,OAAO,QAAQ,CAAC,MAAM,CAAC,KACtB,MAaF,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kGAAkG;IAClG,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,iEAMjC,uBAAuB,KAAG,MAAM,EA2BlC,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI,uBAAuB,GAAG;IACzE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,gFAQhD,qBAAqB,CAAC,CAAC,CAAC,aAyC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF,eAAO,MAAM,qBAAqB,GAAI,kDAKnC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,KAAG,iBAAiB,EAuCpB,CAAC"}