@rowsncolumns/spreadsheet-state 29.0.0 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +122 -6
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +464 -43
  4. package/dist/cjs/api/copy-paste.d.ts +1 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +1 -3
  7. package/dist/cjs/api/filter.d.ts +15 -1
  8. package/dist/cjs/api/filter.d.ts.map +1 -1
  9. package/dist/cjs/api/filter.js +32 -2
  10. package/dist/cjs/api/formula.d.ts +63 -0
  11. package/dist/cjs/api/formula.d.ts.map +1 -1
  12. package/dist/cjs/api/formula.js +278 -8
  13. package/dist/cjs/api/paint-format.d.ts +22 -1
  14. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  15. package/dist/cjs/api/paint-format.js +57 -1
  16. package/dist/cjs/api/sort.d.ts +23 -1
  17. package/dist/cjs/api/sort.d.ts.map +1 -1
  18. package/dist/cjs/api/sort.js +52 -6
  19. package/dist/cjs/api/structural-guards.d.ts +57 -0
  20. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  21. package/dist/cjs/api/structural-guards.js +93 -1
  22. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  23. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  24. package/dist/cjs/api/structural-table-refs.js +177 -16
  25. package/dist/cjs/api/table.d.ts +26 -2
  26. package/dist/cjs/api/table.d.ts.map +1 -1
  27. package/dist/cjs/api/table.js +93 -60
  28. package/dist/cjs/api/validation.d.ts.map +1 -1
  29. package/dist/cjs/api/validation.js +53 -8
  30. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  31. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  32. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  33. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  34. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  35. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  36. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  37. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  39. package/dist/cjs/atoms/index.d.ts +4 -0
  40. package/dist/cjs/atoms/index.d.ts.map +1 -1
  41. package/dist/cjs/atoms/index.js +4 -0
  42. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  43. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  45. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  47. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  48. package/dist/cjs/commands.d.ts +129 -2
  49. package/dist/cjs/commands.d.ts.map +1 -1
  50. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  51. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  52. package/dist/cjs/components/editors/embed-editor.js +38 -9
  53. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  54. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  55. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  56. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  57. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  58. package/dist/cjs/components/editors/table-editor.js +261 -20
  59. package/dist/cjs/components/index.d.ts +1 -0
  60. package/dist/cjs/components/index.d.ts.map +1 -1
  61. package/dist/cjs/components/index.js +1 -0
  62. package/dist/cjs/constants.d.ts +9 -1
  63. package/dist/cjs/constants.d.ts.map +1 -1
  64. package/dist/cjs/constants.js +12 -0
  65. package/dist/cjs/generated-names.d.ts +13 -3
  66. package/dist/cjs/generated-names.d.ts.map +1 -1
  67. package/dist/cjs/generated-names.js +3 -1
  68. package/dist/cjs/helpers.d.ts +5 -0
  69. package/dist/cjs/helpers.d.ts.map +1 -1
  70. package/dist/cjs/helpers.js +10 -1
  71. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  72. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  73. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  74. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  75. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  76. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  77. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  78. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  79. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  80. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  81. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  82. package/dist/cjs/hooks/use-on-change.js +218 -136
  83. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  84. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  85. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  86. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  87. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  89. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  90. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  92. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  93. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  95. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  96. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  98. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  99. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  100. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  101. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +9 -1
  102. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-delete-sheet.js +17 -1
  104. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  105. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  107. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  108. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete.js +5 -1
  110. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  111. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  113. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  114. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-fill.js +29 -15
  116. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  118. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  119. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  120. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  121. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  122. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  123. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  124. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  125. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  126. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  127. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  128. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  129. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  130. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  131. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  133. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  134. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  136. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  137. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  139. package/dist/cjs/hooks/use-on-move-columns.d.ts +3 -1
  140. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-move-columns.js +14 -1
  142. package/dist/cjs/hooks/use-on-move-rows.d.ts +3 -1
  143. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-move-rows.js +14 -1
  145. package/dist/cjs/hooks/use-on-move-selection.d.ts +3 -1
  146. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-move-selection.js +88 -25
  148. package/dist/cjs/hooks/use-on-paste.d.ts +22 -1
  149. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-paste.js +993 -776
  151. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  152. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  154. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  155. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  156. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  157. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  158. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  159. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  160. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  161. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  162. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  163. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  164. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  166. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  167. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  169. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  170. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  171. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  172. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  173. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  174. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  175. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  176. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  177. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  178. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  179. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-table.js +257 -49
  181. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  182. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  183. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  184. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  185. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  186. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  187. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  188. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  190. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  191. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  193. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  194. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-slicers.js +17 -26
  196. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  197. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  199. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +56 -10
  200. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  201. package/dist/cjs/hooks/use-spreadsheet-state.js +322 -100
  202. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  203. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  204. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  205. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  207. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  208. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  209. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  210. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  211. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  212. package/dist/cjs/index.d.ts +7 -0
  213. package/dist/cjs/index.d.ts.map +1 -1
  214. package/dist/cjs/index.js +8 -0
  215. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  216. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  217. package/dist/cjs/interface/apply-fill.js +207 -98
  218. package/dist/cjs/interface/change-batch.d.ts +1 -1
  219. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  220. package/dist/cjs/interface/change-batch.js +112 -15
  221. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  222. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  223. package/dist/cjs/interface/change-calculated-column.js +87 -17
  224. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  225. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  226. package/dist/cjs/interface/change-table-column.js +336 -76
  227. package/dist/cjs/interface/create-table.d.ts +15 -3
  228. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  229. package/dist/cjs/interface/create-table.js +100 -25
  230. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  231. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  232. package/dist/cjs/interface/delete-cells-shift-left.js +10 -1
  233. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  234. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  235. package/dist/cjs/interface/delete-cells-shift-up.js +10 -1
  236. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  237. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  238. package/dist/cjs/interface/delete-cells.js +81 -25
  239. package/dist/cjs/interface/delete-column.d.ts +1 -1
  240. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/delete-column.js +9 -2
  242. package/dist/cjs/interface/delete-row.d.ts +1 -1
  243. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  244. package/dist/cjs/interface/delete-row.js +223 -18
  245. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  246. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-sheet.js +118 -1
  248. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  249. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-table-column.js +11 -1
  251. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  252. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-table-row.js +361 -275
  254. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  255. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  256. package/dist/cjs/interface/embeds.d.ts +10 -1
  257. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  258. package/dist/cjs/interface/embeds.js +120 -6
  259. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  260. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  261. package/dist/cjs/interface/insert-cells-shift-down.js +10 -1
  262. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  263. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  264. package/dist/cjs/interface/insert-cells-shift-right.js +10 -1
  265. package/dist/cjs/interface/insert-column.d.ts +2 -2
  266. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  267. package/dist/cjs/interface/insert-column.js +67 -38
  268. package/dist/cjs/interface/insert-row.d.ts +1 -1
  269. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  270. package/dist/cjs/interface/insert-row.js +9 -2
  271. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  272. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  273. package/dist/cjs/interface/insert-table-row.js +70 -19
  274. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  275. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  276. package/dist/cjs/interface/remove-duplicates.js +46 -6
  277. package/dist/cjs/interface/remove-table.d.ts +1 -1
  278. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  279. package/dist/cjs/interface/remove-table.js +72 -16
  280. package/dist/cjs/interface/slicers.d.ts +12 -1
  281. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  282. package/dist/cjs/interface/slicers.js +47 -2
  283. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  284. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  285. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  286. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  287. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  288. package/dist/cjs/interface/table-totalrow.js +107 -73
  289. package/dist/cjs/interface/table-utils.d.ts +59 -6
  290. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  291. package/dist/cjs/interface/table-utils.js +211 -15
  292. package/dist/cjs/interface/update-table.d.ts +16 -1
  293. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/update-table.js +190 -44
  295. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  296. package/dist/cjs/test-setup.d.ts.map +1 -1
  297. package/dist/cjs/test-setup.js +6 -0
  298. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  299. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  300. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  301. package/dist/cjs/validation-schema/table.schema.js +20 -3
  302. package/dist/esm/api/anchored-objects.d.ts +122 -6
  303. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  304. package/dist/esm/api/anchored-objects.js +375 -15
  305. package/dist/esm/api/copy-paste.d.ts +1 -2
  306. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  307. package/dist/esm/api/copy-paste.js +1 -3
  308. package/dist/esm/api/filter.d.ts +15 -1
  309. package/dist/esm/api/filter.d.ts.map +1 -1
  310. package/dist/esm/api/filter.js +28 -0
  311. package/dist/esm/api/formula.d.ts +63 -0
  312. package/dist/esm/api/formula.d.ts.map +1 -1
  313. package/dist/esm/api/formula.js +235 -8
  314. package/dist/esm/api/paint-format.d.ts +22 -1
  315. package/dist/esm/api/paint-format.d.ts.map +1 -1
  316. package/dist/esm/api/paint-format.js +44 -1
  317. package/dist/esm/api/sort.d.ts +23 -1
  318. package/dist/esm/api/sort.d.ts.map +1 -1
  319. package/dist/esm/api/sort.js +45 -6
  320. package/dist/esm/api/structural-guards.d.ts +57 -0
  321. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  322. package/dist/esm/api/structural-guards.js +85 -0
  323. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  324. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  325. package/dist/esm/api/structural-table-refs.js +126 -6
  326. package/dist/esm/api/table.d.ts +26 -2
  327. package/dist/esm/api/table.d.ts.map +1 -1
  328. package/dist/esm/api/table.js +70 -48
  329. package/dist/esm/api/validation.d.ts.map +1 -1
  330. package/dist/esm/api/validation.js +53 -8
  331. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  332. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  333. package/dist/esm/atoms/creating-table.atom.js +4 -0
  334. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  335. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  336. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  337. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  338. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  339. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  340. package/dist/esm/atoms/index.d.ts +4 -0
  341. package/dist/esm/atoms/index.d.ts.map +1 -1
  342. package/dist/esm/atoms/index.js +4 -0
  343. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  344. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  345. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  346. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  347. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  348. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  349. package/dist/esm/commands.d.ts +129 -2
  350. package/dist/esm/commands.d.ts.map +1 -1
  351. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  352. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  353. package/dist/esm/components/editors/embed-editor.js +40 -6
  354. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  355. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  356. package/dist/esm/components/editors/slicer-editor.js +85 -0
  357. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  358. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  359. package/dist/esm/components/editors/table-editor.js +243 -19
  360. package/dist/esm/components/index.d.ts +1 -0
  361. package/dist/esm/components/index.d.ts.map +1 -1
  362. package/dist/esm/components/index.js +1 -0
  363. package/dist/esm/constants.d.ts +9 -1
  364. package/dist/esm/constants.d.ts.map +1 -1
  365. package/dist/esm/constants.js +12 -0
  366. package/dist/esm/generated-names.d.ts +13 -3
  367. package/dist/esm/generated-names.d.ts.map +1 -1
  368. package/dist/esm/generated-names.js +3 -1
  369. package/dist/esm/helpers.d.ts +5 -0
  370. package/dist/esm/helpers.d.ts.map +1 -1
  371. package/dist/esm/helpers.js +7 -1
  372. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  373. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  374. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  375. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  376. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  377. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  378. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  379. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  380. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  381. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  382. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  383. package/dist/esm/hooks/use-on-change.js +214 -124
  384. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  385. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  386. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  387. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  388. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  389. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  390. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  391. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  392. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  393. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  394. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  395. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  396. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  397. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  398. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  399. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  400. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  402. package/dist/esm/hooks/use-on-delete-sheet.d.ts +9 -1
  403. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-delete-sheet.js +17 -1
  405. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  406. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  408. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  409. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-delete.js +5 -1
  411. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  412. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-embeds.js +23 -6
  414. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  415. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-on-fill.js +27 -1
  417. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  419. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  420. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  422. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  423. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  424. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  425. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  426. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  428. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  429. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  430. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  431. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  432. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  433. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  434. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  435. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  436. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  437. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  438. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  439. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  440. package/dist/esm/hooks/use-on-move-columns.d.ts +3 -1
  441. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  442. package/dist/esm/hooks/use-on-move-columns.js +14 -1
  443. package/dist/esm/hooks/use-on-move-rows.d.ts +3 -1
  444. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  445. package/dist/esm/hooks/use-on-move-rows.js +14 -1
  446. package/dist/esm/hooks/use-on-move-selection.d.ts +3 -1
  447. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-move-selection.js +44 -1
  449. package/dist/esm/hooks/use-on-paste.d.ts +22 -1
  450. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-paste.js +815 -672
  452. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  453. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  455. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  456. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  457. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  458. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  459. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  460. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  461. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  462. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  463. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  464. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  465. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  467. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  468. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  470. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  471. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  473. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  476. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  477. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  479. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  480. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-table.js +234 -26
  482. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  483. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  484. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  485. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  486. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  488. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  489. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  490. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  491. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  492. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  493. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  494. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  495. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-slicers.js +16 -8
  497. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  498. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  499. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  500. package/dist/esm/hooks/use-spreadsheet-state.d.ts +56 -10
  501. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-spreadsheet-state.js +259 -30
  503. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  504. package/dist/esm/hooks/use-structured-reference.js +17 -0
  505. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  506. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  507. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  508. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  509. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  510. package/dist/esm/hooks/use-undo-redo.js +158 -7
  511. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  512. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  513. package/dist/esm/index.d.ts +7 -0
  514. package/dist/esm/index.d.ts.map +1 -1
  515. package/dist/esm/index.js +8 -0
  516. package/dist/esm/interface/apply-fill.d.ts +26 -3
  517. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  518. package/dist/esm/interface/apply-fill.js +188 -88
  519. package/dist/esm/interface/change-batch.d.ts +1 -1
  520. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  521. package/dist/esm/interface/change-batch.js +89 -8
  522. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  523. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  524. package/dist/esm/interface/change-calculated-column.js +81 -16
  525. package/dist/esm/interface/change-table-column.d.ts +81 -7
  526. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  527. package/dist/esm/interface/change-table-column.js +295 -67
  528. package/dist/esm/interface/create-table.d.ts +15 -3
  529. package/dist/esm/interface/create-table.d.ts.map +1 -1
  530. package/dist/esm/interface/create-table.js +103 -27
  531. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  532. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  533. package/dist/esm/interface/delete-cells-shift-left.js +10 -1
  534. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  535. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  536. package/dist/esm/interface/delete-cells-shift-up.js +10 -1
  537. package/dist/esm/interface/delete-cells.d.ts +1 -1
  538. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  539. package/dist/esm/interface/delete-cells.js +47 -14
  540. package/dist/esm/interface/delete-column.d.ts +1 -1
  541. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  542. package/dist/esm/interface/delete-column.js +9 -2
  543. package/dist/esm/interface/delete-row.d.ts +1 -1
  544. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  545. package/dist/esm/interface/delete-row.js +173 -15
  546. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  547. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  548. package/dist/esm/interface/delete-sheet.js +113 -1
  549. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  550. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  551. package/dist/esm/interface/delete-table-column.js +11 -1
  552. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  553. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  554. package/dist/esm/interface/delete-table-row.js +312 -232
  555. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  556. package/dist/esm/interface/duplicate-sheet.js +73 -26
  557. package/dist/esm/interface/embeds.d.ts +10 -1
  558. package/dist/esm/interface/embeds.d.ts.map +1 -1
  559. package/dist/esm/interface/embeds.js +84 -5
  560. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  561. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  562. package/dist/esm/interface/insert-cells-shift-down.js +10 -1
  563. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  564. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  565. package/dist/esm/interface/insert-cells-shift-right.js +10 -1
  566. package/dist/esm/interface/insert-column.d.ts +2 -2
  567. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  568. package/dist/esm/interface/insert-column.js +48 -23
  569. package/dist/esm/interface/insert-row.d.ts +1 -1
  570. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  571. package/dist/esm/interface/insert-row.js +9 -2
  572. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  573. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  574. package/dist/esm/interface/insert-table-row.js +67 -12
  575. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  576. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  577. package/dist/esm/interface/remove-duplicates.js +41 -6
  578. package/dist/esm/interface/remove-table.d.ts +1 -1
  579. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  580. package/dist/esm/interface/remove-table.js +58 -10
  581. package/dist/esm/interface/slicers.d.ts +12 -1
  582. package/dist/esm/interface/slicers.d.ts.map +1 -1
  583. package/dist/esm/interface/slicers.js +44 -2
  584. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  585. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  586. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  587. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  588. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  589. package/dist/esm/interface/table-totalrow.js +98 -68
  590. package/dist/esm/interface/table-utils.d.ts +59 -6
  591. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  592. package/dist/esm/interface/table-utils.js +155 -14
  593. package/dist/esm/interface/update-table.d.ts +16 -1
  594. package/dist/esm/interface/update-table.d.ts.map +1 -1
  595. package/dist/esm/interface/update-table.js +203 -42
  596. package/dist/esm/sheet-cell.d.ts.map +1 -1
  597. package/dist/esm/test-setup.d.ts.map +1 -1
  598. package/dist/esm/test-setup.js +6 -0
  599. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  600. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  601. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  602. package/dist/esm/validation-schema/table.schema.js +15 -2
  603. package/package.json +19 -11
@@ -1,8 +1,40 @@
1
1
  import { isNil } from "@rowsncolumns/utils";
2
+ /**
3
+ * The text order both engines sort with: case- and accent-insensitive,
4
+ * digit runs by numeric value ("a2" < "a10"). `rnc_cellmodel::collate_text`
5
+ * is its Rust twin.
6
+ */
2
7
  var comparator = new Intl.Collator("en", {
3
8
  numeric: true,
4
9
  sensitivity: "base",
5
10
  }).compare;
11
+ export var isSortErrorValue = function (value) {
12
+ return typeof value === "object" && value !== null && "sortError" in value;
13
+ };
14
+ /**
15
+ * The value a sort compares for a cell: its error when it has one, else the
16
+ * effective value, else the display text.
17
+ */
18
+ export var getCellSortValue = function (cell) {
19
+ var _a, _b;
20
+ return cell.error
21
+ ? { sortError: (_a = cell.formattedValue) !== null && _a !== void 0 ? _a : "" }
22
+ : ((_b = cell.getEffectiveValue()) !== null && _b !== void 0 ? _b : cell.formattedValue);
23
+ };
24
+ /** Excel's ascending order of value types: numbers < text < logicals < errors. */
25
+ var tierOf = function (value) {
26
+ return typeof value === "number"
27
+ ? 0
28
+ : typeof value === "string"
29
+ ? 1
30
+ : typeof value === "boolean"
31
+ ? 2
32
+ : 3;
33
+ };
34
+ /**
35
+ * Excel's sort order: numbers < text < logicals < errors, blanks last in
36
+ * BOTH directions, text compared case-insensitively through the collator.
37
+ */
6
38
  export var cellValueSorter = function (left, right, sortOrder) {
7
39
  var isEmpty = function (value) {
8
40
  if (isNil(value)) {
@@ -12,7 +44,7 @@ export var cellValueSorter = function (left, right, sortOrder) {
12
44
  };
13
45
  var leftEmpty = isEmpty(left);
14
46
  var rightEmpty = isEmpty(right);
15
- // Ignore empty rows
47
+ // Blanks stay last regardless of direction.
16
48
  if (leftEmpty && rightEmpty) {
17
49
  return 0;
18
50
  }
@@ -22,12 +54,26 @@ export var cellValueSorter = function (left, right, sortOrder) {
22
54
  if (rightEmpty) {
23
55
  return -1;
24
56
  }
25
- var isNumbers = typeof left === "number" && typeof right === "number";
26
- var comparisonResult = isNumbers
27
- ? left - right
28
- : comparator(String(left), String(right));
57
+ var direction = sortOrder === "ASCENDING" ? 1 : -1;
58
+ var leftTier = tierOf(left);
59
+ var rightTier = tierOf(right);
60
+ if (leftTier !== rightTier) {
61
+ return direction * Math.sign(leftTier - rightTier);
62
+ }
63
+ var comparisonResult = 0;
64
+ if (typeof left === "number" && typeof right === "number") {
65
+ comparisonResult = left - right;
66
+ }
67
+ else if (typeof left === "string" && typeof right === "string") {
68
+ comparisonResult = comparator(left, right);
69
+ }
70
+ else if (typeof left === "boolean" && typeof right === "boolean") {
71
+ // FALSE before TRUE.
72
+ comparisonResult = Number(left) - Number(right);
73
+ }
74
+ // Errors compare equal: Excel keeps them in their original order.
29
75
  if (comparisonResult !== 0) {
30
- return (sortOrder === "ASCENDING" ? 1 : -1) * Math.sign(comparisonResult);
76
+ return direction * Math.sign(comparisonResult);
31
77
  }
32
78
  return 0;
33
79
  };
@@ -46,6 +46,24 @@ export declare const findTornArray: (arrayRanges: readonly GridRange[] | undefin
46
46
  * inside the deleted block. */
47
47
  export declare const isRangeInsideBand: (range: GridRange, band: StructuralBand) => boolean;
48
48
  export declare const isRangeInsideBlock: (outer: GridRange, inner: GridRange) => boolean;
49
+ /**
50
+ * T-07 — the Excel refusal for defining a table over `range` (create / update): another table on
51
+ * the sheet (`table-overlap`, judged first) or a merged cell (`table-merged-cells`). `excludeTableId`
52
+ * leaves the table being edited out. `insertedRows`, when given, is a one-or-more-row insert that
53
+ * runs first (the Create Table dialog's header row): tables and merges wholly inside its band are
54
+ * judged at their shifted position.
55
+ */
56
+ export declare const getTableRangeRefusal: ({ sheetId, range, tables, merges, excludeTableId, insertedRows, }: {
57
+ sheetId: number;
58
+ range: GridRange;
59
+ tables?: readonly TableView[] | null;
60
+ merges?: readonly GridRange[] | null;
61
+ excludeTableId?: TableView["id"];
62
+ insertedRows?: {
63
+ band: StructuralBand;
64
+ count: number;
65
+ };
66
+ }) => StructuralRefusal | undefined;
49
67
  /**
50
68
  * The Excel refusal (if any) for an insert/delete-cells shift of `range`. Checks run in Excel's
51
69
  * order: array tear, merge tear, table tear, off-sheet push. `undefined` means the edit may proceed.
@@ -63,6 +81,45 @@ export declare const getShiftCellsRefusal: <T extends CellData>({ direction, ran
63
81
  tables?: readonly TableView[] | null;
64
82
  arrayRanges?: readonly GridRange[] | null;
65
83
  }) => StructuralRefusal | undefined;
84
+ /**
85
+ * T-46 — the refusal (if any) for a drag-move / cut of `from` onto `to`. Excel moves a table whole
86
+ * when the block contains it, but refuses to move PART of a table (the block covers some of its
87
+ * cells) and refuses a block landing on another table's cells; a block that is a whole table
88
+ * landing on another table is a table overlap. A same-table column reorder is decided before this.
89
+ */
90
+ export declare const getMoveRangeRefusal: ({ sheetId, from, to, toSheetId, tables, }: {
91
+ sheetId: number;
92
+ from: GridRange;
93
+ to: GridRange;
94
+ /** The destination sheet — a cut + paste can land on another sheet; defaults to `sheetId`. */
95
+ toSheetId?: number;
96
+ tables?: readonly TableView[] | null;
97
+ }) => StructuralRefusal | undefined;
98
+ /**
99
+ * T-81 — the refusal for a fill whose filled cells (`target` minus `source`) reach a table's totals
100
+ * row. Excel's fill handle never extends over a totals row (the row is derived, not data), so the
101
+ * whole fill is refused and nothing is written. A fill whose source IS the totals row (filling away
102
+ * from the table) is not affected.
103
+ */
104
+ export declare const getFillTotalsRowRefusal: ({ sheetId, source, target, tables, }: {
105
+ sheetId: number;
106
+ source: GridRange;
107
+ target: GridRange;
108
+ tables?: readonly TableView[] | null;
109
+ }) => StructuralRefusal | undefined;
110
+ /**
111
+ * T-47 — the refusal (if any) for Insert / Delete Table Rows (`axis: "row"`) or Table Columns
112
+ * (`axis: "column"`) on `table`. The edit shifts the cells of the table's band — its columns from
113
+ * the table down to the sheet edge, or its rows from the table right to the sheet edge. Another
114
+ * table wholly inside that band moves with it; one the band reaches but does not contain would be
115
+ * torn apart, so Excel refuses the edit.
116
+ */
117
+ export declare const getTableEditRefusal: ({ sheetId, table, axis, tables, }: {
118
+ sheetId: number;
119
+ table: TableView;
120
+ axis: "row" | "column";
121
+ tables?: readonly TableView[] | null;
122
+ }) => StructuralRefusal | undefined;
66
123
  /**
67
124
  * INS-06 / INS-09 — the refusal for a whole-row (`axis: "row"`) or whole-column insert of `count`
68
125
  * lines before `referenceIndex`, given the hard grid cap (`maxRowCount` / `maxColumnCount`). Blank
@@ -1 +1 @@
1
- {"version":3,"file":"structural-guards.d.ts","sourceRoot":"","sources":["../../../api/structural-guards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural-guards.d.ts","sourceRoot":"","sources":["../../../api/structural-guards.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { __read } from "tslib";
1
+ import { __assign, __read } from "tslib";
2
2
  import { selectionFromActiveCell } from "@rowsncolumns/utils";
3
3
  import { structuralRefusal, } from "../constants";
4
4
  /** The selection a cell shift operates on — the LAST selection, or the active cell as a 1×1. The
@@ -140,6 +140,31 @@ export var isRangeInsideBand = function (range, band) {
140
140
  return rangeContains(band, range);
141
141
  };
142
142
  export var isRangeInsideBlock = rangeContains;
143
+ /**
144
+ * T-07 — the Excel refusal for defining a table over `range` (create / update): another table on
145
+ * the sheet (`table-overlap`, judged first) or a merged cell (`table-merged-cells`). `excludeTableId`
146
+ * leaves the table being edited out. `insertedRows`, when given, is a one-or-more-row insert that
147
+ * runs first (the Create Table dialog's header row): tables and merges wholly inside its band are
148
+ * judged at their shifted position.
149
+ */
150
+ export var getTableRangeRefusal = function (_a) {
151
+ var sheetId = _a.sheetId, range = _a.range, tables = _a.tables, merges = _a.merges, excludeTableId = _a.excludeTableId, insertedRows = _a.insertedRows;
152
+ var shifted = function (candidate) {
153
+ return insertedRows && isRangeInsideBand(candidate, insertedRows.band)
154
+ ? __assign(__assign({}, candidate), { startRowIndex: candidate.startRowIndex + insertedRows.count, endRowIndex: candidate.endRowIndex + insertedRows.count }) : candidate;
155
+ };
156
+ if (tables === null || tables === void 0 ? void 0 : tables.some(function (table) {
157
+ return table.sheetId === sheetId &&
158
+ table.id !== excludeTableId &&
159
+ rangesIntersect(shifted(table.range), range);
160
+ })) {
161
+ return structuralRefusal("table-overlap");
162
+ }
163
+ if (merges === null || merges === void 0 ? void 0 : merges.some(function (merge) { return rangesIntersect(shifted(merge), range); })) {
164
+ return structuralRefusal("table-merged-cells");
165
+ }
166
+ return undefined;
167
+ };
143
168
  /**
144
169
  * The Excel refusal (if any) for an insert/delete-cells shift of `range`. Checks run in Excel's
145
170
  * order: array tear, merge tear, table tear, off-sheet push. `undefined` means the edit may proceed.
@@ -176,6 +201,73 @@ export var getShiftCellsRefusal = function (_a) {
176
201
  }
177
202
  return undefined;
178
203
  };
204
+ /**
205
+ * T-46 — the refusal (if any) for a drag-move / cut of `from` onto `to`. Excel moves a table whole
206
+ * when the block contains it, but refuses to move PART of a table (the block covers some of its
207
+ * cells) and refuses a block landing on another table's cells; a block that is a whole table
208
+ * landing on another table is a table overlap. A same-table column reorder is decided before this.
209
+ */
210
+ export var getMoveRangeRefusal = function (_a) {
211
+ var _b;
212
+ var sheetId = _a.sheetId, from = _a.from, to = _a.to, _c = _a.toSheetId, toSheetId = _c === void 0 ? sheetId : _c, tables = _a.tables;
213
+ var sheetTables = tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === sheetId; });
214
+ var destinationTables = toSheetId === sheetId
215
+ ? sheetTables
216
+ : tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === toSheetId; });
217
+ if (!(sheetTables === null || sheetTables === void 0 ? void 0 : sheetTables.length) && !(destinationTables === null || destinationTables === void 0 ? void 0 : destinationTables.length))
218
+ return undefined;
219
+ var moved = (_b = sheetTables === null || sheetTables === void 0 ? void 0 : sheetTables.filter(function (table) { return rangeContains(from, table.range); })) !== null && _b !== void 0 ? _b : [];
220
+ if (sheetTables === null || sheetTables === void 0 ? void 0 : sheetTables.some(function (table) {
221
+ return !moved.includes(table) && rangesIntersect(table.range, from);
222
+ })) {
223
+ return structuralRefusal("torn-table");
224
+ }
225
+ if (destinationTables === null || destinationTables === void 0 ? void 0 : destinationTables.some(function (table) { return !moved.includes(table) && rangesIntersect(table.range, to); })) {
226
+ return structuralRefusal(moved.length ? "table-overlap" : "torn-table");
227
+ }
228
+ return undefined;
229
+ };
230
+ /**
231
+ * T-81 — the refusal for a fill whose filled cells (`target` minus `source`) reach a table's totals
232
+ * row. Excel's fill handle never extends over a totals row (the row is derived, not data), so the
233
+ * whole fill is refused and nothing is written. A fill whose source IS the totals row (filling away
234
+ * from the table) is not affected.
235
+ */
236
+ export var getFillTotalsRowRefusal = function (_a) {
237
+ var sheetId = _a.sheetId, source = _a.source, target = _a.target, tables = _a.tables;
238
+ return (tables === null || tables === void 0 ? void 0 : tables.some(function (table) {
239
+ if (table.sheetId !== sheetId || !table.totalRow)
240
+ return false;
241
+ var totalsRow = table.range.endRowIndex;
242
+ if (totalsRow < target.startRowIndex || totalsRow > target.endRowIndex) {
243
+ return false;
244
+ }
245
+ var hit = {
246
+ startRowIndex: totalsRow,
247
+ endRowIndex: totalsRow,
248
+ startColumnIndex: Math.max(table.range.startColumnIndex, target.startColumnIndex),
249
+ endColumnIndex: Math.min(table.range.endColumnIndex, target.endColumnIndex),
250
+ };
251
+ return hit.startColumnIndex <= hit.endColumnIndex && !rangeContains(source, hit);
252
+ }))
253
+ ? structuralRefusal("table-totals-fill")
254
+ : undefined;
255
+ };
256
+ /**
257
+ * T-47 — the refusal (if any) for Insert / Delete Table Rows (`axis: "row"`) or Table Columns
258
+ * (`axis: "column"`) on `table`. The edit shifts the cells of the table's band — its columns from
259
+ * the table down to the sheet edge, or its rows from the table right to the sheet edge. Another
260
+ * table wholly inside that band moves with it; one the band reaches but does not contain would be
261
+ * torn apart, so Excel refuses the edit.
262
+ */
263
+ export var getTableEditRefusal = function (_a) {
264
+ var sheetId = _a.sheetId, table = _a.table, axis = _a.axis, tables = _a.tables;
265
+ var band = axis === "row"
266
+ ? __assign(__assign({}, table.range), { endRowIndex: Number.POSITIVE_INFINITY }) : __assign(__assign({}, table.range), { endColumnIndex: Number.POSITIVE_INFINITY });
267
+ return findTornTable(tables === null || tables === void 0 ? void 0 : tables.filter(function (other) { return other.id !== table.id; }), sheetId, band)
268
+ ? structuralRefusal("torn-table")
269
+ : undefined;
270
+ };
179
271
  /**
180
272
  * INS-06 / INS-09 — the refusal for a whole-row (`axis: "row"`) or whole-column insert of `count`
181
273
  * lines before `referenceIndex`, given the hard grid cap (`maxRowCount` / `maxColumnCount`). Blank
@@ -27,9 +27,10 @@ export type RemovedTableParts = {
27
27
  }>;
28
28
  };
29
29
  /**
30
- * Which tables / table columns `deleteRow` (a table goes with its header row)
31
- * or `deleteColumn` (a table goes when every column is deleted; otherwise the
32
- * covered columns are spliced out) removes for the band
30
+ * Which tables / table columns `deleteRow` (a table goes only when every one
31
+ * of its rows is deleted — losing its header row keeps it, the next row
32
+ * becomes the header) or `deleteColumn` (a table goes when every column is
33
+ * deleted; otherwise the covered columns are spliced out) removes for the band
33
34
  * `[minIndex, maxIndex]` on `sheetId`. Mirrors the table updates those
34
35
  * interfaces apply to `tables`.
35
36
  */
@@ -59,6 +60,60 @@ export type BreakStructuredRefsParams<T extends CellData> = {
59
60
  * when it is available (cost O(formula cells)); without one the draft is swept.
60
61
  */
61
62
  export declare const breakStructuredRefsForRemovedTableParts: <T extends CellData>({ draft, sheetId, axis, referenceIndex, count, removed, getGraphNodes, enqueueCalculation, enqueueGraphOperation, recalcCells, locale, cellXfsRegistry, sharedStringRegistry, }: BreakStructuredRefsParams<T>) => void;
63
+ export type RewriteFormulasParams<T extends CellData> = Pick<BreakStructuredRefsParams<T>, "draft" | "getGraphNodes" | "enqueueCalculation" | "enqueueGraphOperation" | "recalcCells" | "locale" | "cellXfsRegistry" | "sharedStringRegistry">;
64
+ /**
65
+ * Column `oldName` of `table` was renamed `newName` (a header-cell edit):
66
+ * rewrite every structured reference to it across the workbook, including the
67
+ * bare `[@Old]` forms of the formulas that sit inside the table.
68
+ */
69
+ export declare const renameTableColumnInFormulas: <T extends CellData>({ table, oldName, newName, ...params }: RewriteFormulasParams<T> & {
70
+ table: Pick<TableView, "title" | "sheetId" | "range">;
71
+ oldName: string;
72
+ newName: string;
73
+ }) => void;
74
+ /**
75
+ * Several columns of `table` were renamed at once (a header row re-derived
76
+ * after a row delete, several header cells written by one paste /
77
+ * change-batch): `renames` maps each LOWER-CASED old name to its new name and
78
+ * every formula is rewritten in ONE pass, so `Name` → `Qty` and `Qty` → `Name`
79
+ * swap instead of chaining into the same column.
80
+ */
81
+ export declare const renameTableColumnsInFormulas: <T extends CellData>({ table, renames, ...params }: RewriteFormulasParams<T> & {
82
+ table: Pick<TableView, "title" | "sheetId" | "range">;
83
+ renames: ReadonlyMap<string, string>;
84
+ }) => void;
85
+ /**
86
+ * The header cells one write renamed (`planHeaderCellRenames`), applied per
87
+ * table as a single multi-column rename.
88
+ */
89
+ export declare const renameHeaderCellsInFormulas: <T extends CellData>({ headerRenames, ...params }: RewriteFormulasParams<T> & {
90
+ headerRenames: readonly {
91
+ table: Pick<TableView, "id" | "title" | "sheetId" | "range">;
92
+ oldName: string | undefined;
93
+ newName: string;
94
+ }[];
95
+ }) => void;
96
+ /**
97
+ * `table` is being converted to a range (Excel's Convert to Range): rewrite
98
+ * every structured reference into it across the workbook to the A1 reference
99
+ * it resolves to — `T[Col]` → `$B$2:$B$9`, `[@Col]` → `B3`,
100
+ * `T[[#Headers],[Col]]` → `$B$1`, qualified with the table's sheet from another
101
+ * sheet — so the formulas keep their values once the table is gone. Runs
102
+ * BEFORE the table is removed; the bare `[@Col]` forms belong to the formulas
103
+ * that sit inside the table.
104
+ */
105
+ export declare const convertTableReferencesToA1InFormulas: <T extends CellData>({ table, getSheetName, ...params }: RewriteFormulasParams<T> & {
106
+ table: Pick<TableView, "title" | "sheetId" | "range" | "headerRow" | "totalRow" | "columns">;
107
+ getSheetName(sheetId: number): string;
108
+ }) => void;
109
+ /**
110
+ * Table `oldName` was renamed `newName` (the Edit Table dialog / `updateTable`):
111
+ * rewrite `Old[…]` → `New[…]` in every formula across the workbook.
112
+ */
113
+ export declare const renameTableInFormulas: <T extends CellData>({ oldName, newName, ...params }: RewriteFormulasParams<T> & {
114
+ oldName: string;
115
+ newName: string;
116
+ }) => void;
62
117
  /**
63
118
  * Drop the materialised spill cells of every dynamic-array anchor that sits
64
119
  * inside the deleted band `[minIndex, maxIndex]` (rows or columns) of
@@ -1 +1 @@
1
- {"version":3,"file":"structural-table-refs.d.ts","sourceRoot":"","sources":["../../../api/structural-table-refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural-table-refs.d.ts","sourceRoot":"","sources":["../../../api/structural-table-refs.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
- import { __assign, __read, __values } from "tslib";
1
+ import { __assign, __read, __rest, __values } from "tslib";
2
2
  import { isCellNode } from "@rowsncolumns/dag";
3
3
  import { addressToCell, getCellUserEnteredValue, getExtendedValueFormula, } from "@rowsncolumns/utils";
4
4
  import { SheetCell } from "../sheet-cell";
5
- import { breakTableColumnsInFormula, breakTableReferencesInFormula, createSheetCellIdentifier, } from "./formula";
5
+ import { breakTableColumnsInFormula, breakTableReferencesInFormula, convertStructuredRefsToA1InFormula, createSheetCellIdentifier, renameTableColumnsInFormula, renameTableInFormula, } from "./formula";
6
6
  import { createSheetDraft } from "./immer-utils";
7
7
  /**
8
- * Which tables / table columns `deleteRow` (a table goes with its header row)
9
- * or `deleteColumn` (a table goes when every column is deleted; otherwise the
10
- * covered columns are spliced out) removes for the band
8
+ * Which tables / table columns `deleteRow` (a table goes only when every one
9
+ * of its rows is deleted — losing its header row keeps it, the next row
10
+ * becomes the header) or `deleteColumn` (a table goes when every column is
11
+ * deleted; otherwise the covered columns are spliced out) removes for the band
11
12
  * `[minIndex, maxIndex]` on `sheetId`. Mirrors the table updates those
12
13
  * interfaces apply to `tables`.
13
14
  */
@@ -21,13 +22,13 @@ export var collectRemovedTableParts = function (tables, sheetId, axis, minIndex,
21
22
  if (table.sheetId !== sheetId || !table.title)
22
23
  continue;
23
24
  if (axis === "row") {
24
- var startRowIndex = table.range.startRowIndex;
25
- if (startRowIndex >= minIndex && startRowIndex <= maxIndex) {
25
+ var _f = table.range, startRowIndex = _f.startRowIndex, endRowIndex = _f.endRowIndex;
26
+ if (minIndex <= startRowIndex && maxIndex >= endRowIndex) {
26
27
  removed.tables.push(table.title);
27
28
  }
28
29
  continue;
29
30
  }
30
- var _f = table.range, startColumnIndex = _f.startColumnIndex, endColumnIndex = _f.endColumnIndex;
31
+ var _g = table.range, startColumnIndex = _g.startColumnIndex, endColumnIndex = _g.endColumnIndex;
31
32
  if (maxIndex < startColumnIndex || minIndex > endColumnIndex)
32
33
  continue;
33
34
  if (minIndex <= startColumnIndex && maxIndex >= endColumnIndex) {
@@ -157,8 +158,168 @@ export var breakStructuredRefsForRemovedTableParts = function (_a) {
157
158
  finally { if (e_2) throw e_2.error; }
158
159
  }
159
160
  };
161
+ /**
162
+ * Apply `rewrite` to the text of every formula cell across all sheets (from
163
+ * the dependency graph when available, else a draft sweep), writing back the
164
+ * ones it changed and re-entering them in the graph for recalculation. Cells
165
+ * keep their position — this is the in-place rewrite behind a table / table
166
+ * column rename.
167
+ */
168
+ var rewriteFormulasInDraft = function (_a, rewrite) {
169
+ var e_5, _b;
170
+ var _c, _d;
171
+ var draft = _a.draft, getGraphNodes = _a.getGraphNodes, enqueueCalculation = _a.enqueueCalculation, enqueueGraphOperation = _a.enqueueGraphOperation, recalcCells = _a.recalcCells, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry;
172
+ var sheetCell = new SheetCell();
173
+ try {
174
+ for (var _e = __values(collectFormulaPositions(draft, getGraphNodes)), _f = _e.next(); !_f.done; _f = _e.next()) {
175
+ var pos = _f.value;
176
+ var currentSheet = createSheetDraft(draft, pos.sheetId, pos.rowIndex);
177
+ var cellData = (_d = (_c = currentSheet[pos.rowIndex]) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d[pos.columnIndex];
178
+ var formula = getExtendedValueFormula(getCellUserEnteredValue(cellData));
179
+ if (!formula || !formula.includes("["))
180
+ continue;
181
+ var updated = rewrite(formula, pos);
182
+ if (updated === formula)
183
+ continue;
184
+ sheetCell.assign(pos.sheetId, { rowIndex: pos.rowIndex, columnIndex: pos.columnIndex }, cellData, { locale: locale, cellXfsRegistry: cellXfsRegistry, sharedStringRegistry: sharedStringRegistry });
185
+ sheetCell.setFormulaValue(updated, false);
186
+ currentSheet[pos.rowIndex].values[pos.columnIndex] =
187
+ sheetCell.getCellData();
188
+ var enqueueOperation = sheetCell.ephemeral()
189
+ ? enqueueCalculation
190
+ : enqueueGraphOperation;
191
+ enqueueOperation === null || enqueueOperation === void 0 ? void 0 : enqueueOperation({ type: "remove", position: pos });
192
+ enqueueOperation === null || enqueueOperation === void 0 ? void 0 : enqueueOperation({ type: "add", position: pos, force: true });
193
+ recalcCells.set(createSheetCellIdentifier(pos.sheetId, pos.rowIndex, pos.columnIndex), __assign(__assign({}, pos), { force: true }));
194
+ }
195
+ }
196
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
197
+ finally {
198
+ try {
199
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
200
+ }
201
+ finally { if (e_5) throw e_5.error; }
202
+ }
203
+ };
204
+ /**
205
+ * Column `oldName` of `table` was renamed `newName` (a header-cell edit):
206
+ * rewrite every structured reference to it across the workbook, including the
207
+ * bare `[@Old]` forms of the formulas that sit inside the table.
208
+ */
209
+ export var renameTableColumnInFormulas = function (_a) {
210
+ var table = _a.table, oldName = _a.oldName, newName = _a.newName, params = __rest(_a, ["table", "oldName", "newName"]);
211
+ if (!oldName || !newName || oldName === newName)
212
+ return;
213
+ renameTableColumnsInFormulas(__assign(__assign({}, params), { table: table, renames: new Map([[oldName.toLowerCase(), newName]]) }));
214
+ };
215
+ /**
216
+ * Several columns of `table` were renamed at once (a header row re-derived
217
+ * after a row delete, several header cells written by one paste /
218
+ * change-batch): `renames` maps each LOWER-CASED old name to its new name and
219
+ * every formula is rewritten in ONE pass, so `Name` → `Qty` and `Qty` → `Name`
220
+ * swap instead of chaining into the same column.
221
+ */
222
+ export var renameTableColumnsInFormulas = function (_a) {
223
+ var table = _a.table, renames = _a.renames, params = __rest(_a, ["table", "renames"]);
224
+ if (renames.size === 0)
225
+ return;
226
+ rewriteFormulasInDraft(params, function (formula, pos) {
227
+ var updated = table.title
228
+ ? renameTableColumnsInFormula(formula, table.title, renames)
229
+ : formula;
230
+ if (pos.sheetId === table.sheetId &&
231
+ isWithinRange(table.range, pos.rowIndex, pos.columnIndex)) {
232
+ updated = renameTableColumnsInFormula(updated, undefined, renames);
233
+ }
234
+ return updated;
235
+ });
236
+ };
237
+ /**
238
+ * The header cells one write renamed (`planHeaderCellRenames`), applied per
239
+ * table as a single multi-column rename.
240
+ */
241
+ export var renameHeaderCellsInFormulas = function (_a) {
242
+ var e_6, _b, e_7, _c;
243
+ var _d;
244
+ var headerRenames = _a.headerRenames, params = __rest(_a, ["headerRenames"]);
245
+ var byTable = new Map();
246
+ try {
247
+ for (var headerRenames_1 = __values(headerRenames), headerRenames_1_1 = headerRenames_1.next(); !headerRenames_1_1.done; headerRenames_1_1 = headerRenames_1.next()) {
248
+ var _e = headerRenames_1_1.value, table = _e.table, oldName = _e.oldName, newName = _e.newName;
249
+ if (!oldName || oldName === newName)
250
+ continue;
251
+ var entry = (_d = byTable.get(table.id)) !== null && _d !== void 0 ? _d : { table: table, renames: new Map() };
252
+ entry.renames.set(oldName.toLowerCase(), newName);
253
+ byTable.set(table.id, entry);
254
+ }
255
+ }
256
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
257
+ finally {
258
+ try {
259
+ if (headerRenames_1_1 && !headerRenames_1_1.done && (_b = headerRenames_1.return)) _b.call(headerRenames_1);
260
+ }
261
+ finally { if (e_6) throw e_6.error; }
262
+ }
263
+ try {
264
+ for (var _f = __values(byTable.values()), _g = _f.next(); !_g.done; _g = _f.next()) {
265
+ var _h = _g.value, table = _h.table, renames = _h.renames;
266
+ renameTableColumnsInFormulas(__assign(__assign({}, params), { table: table, renames: renames }));
267
+ }
268
+ }
269
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
270
+ finally {
271
+ try {
272
+ if (_g && !_g.done && (_c = _f.return)) _c.call(_f);
273
+ }
274
+ finally { if (e_7) throw e_7.error; }
275
+ }
276
+ };
277
+ /**
278
+ * `table` is being converted to a range (Excel's Convert to Range): rewrite
279
+ * every structured reference into it across the workbook to the A1 reference
280
+ * it resolves to — `T[Col]` → `$B$2:$B$9`, `[@Col]` → `B3`,
281
+ * `T[[#Headers],[Col]]` → `$B$1`, qualified with the table's sheet from another
282
+ * sheet — so the formulas keep their values once the table is gone. Runs
283
+ * BEFORE the table is removed; the bare `[@Col]` forms belong to the formulas
284
+ * that sit inside the table.
285
+ */
286
+ export var convertTableReferencesToA1InFormulas = function (_a) {
287
+ var _b;
288
+ var table = _a.table, getSheetName = _a.getSheetName, params = __rest(_a, ["table", "getSheetName"]);
289
+ if (!table.title)
290
+ return;
291
+ var target = {
292
+ title: table.title,
293
+ range: table.range,
294
+ headerRow: table.headerRow,
295
+ totalRow: table.totalRow,
296
+ columnNames: ((_b = table.columns) !== null && _b !== void 0 ? _b : []).map(function (column) { return column.name; }),
297
+ };
298
+ var tableSheetName = getSheetName(table.sheetId);
299
+ rewriteFormulasInDraft(params, function (formula, pos) {
300
+ return convertStructuredRefsToA1InFormula(formula, target, {
301
+ tableSheetName: tableSheetName,
302
+ formulaSheetName: getSheetName(pos.sheetId),
303
+ formulaRowIndex: pos.rowIndex,
304
+ inTable: pos.sheetId === table.sheetId &&
305
+ isWithinRange(table.range, pos.rowIndex, pos.columnIndex),
306
+ });
307
+ });
308
+ };
309
+ /**
310
+ * Table `oldName` was renamed `newName` (the Edit Table dialog / `updateTable`):
311
+ * rewrite `Old[…]` → `New[…]` in every formula across the workbook.
312
+ */
313
+ export var renameTableInFormulas = function (_a) {
314
+ var oldName = _a.oldName, newName = _a.newName, params = __rest(_a, ["oldName", "newName"]);
315
+ if (!oldName || !newName || oldName === newName)
316
+ return;
317
+ rewriteFormulasInDraft(params, function (formula) {
318
+ return renameTableInFormula(formula, oldName, newName);
319
+ });
320
+ };
160
321
  var collectFormulaPositions = function (draft, getGraphNodes) {
161
- var e_5, _a, e_6, _b;
322
+ var e_8, _a, e_9, _b;
162
323
  if (getGraphNodes) {
163
324
  var graphNodes = void 0;
164
325
  try {
@@ -179,12 +340,12 @@ var collectFormulaPositions = function (draft, getGraphNodes) {
179
340
  positions_1.push(__assign({}, node.position));
180
341
  }
181
342
  }
182
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
343
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
183
344
  finally {
184
345
  try {
185
346
  if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
186
347
  }
187
- finally { if (e_5) throw e_5.error; }
348
+ finally { if (e_8) throw e_8.error; }
188
349
  }
189
350
  if (sawNode)
190
351
  return positions_1;
@@ -212,17 +373,17 @@ var collectFormulaPositions = function (draft, getGraphNodes) {
212
373
  _loop_1(key);
213
374
  }
214
375
  }
215
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
376
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
216
377
  finally {
217
378
  try {
218
379
  if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
219
380
  }
220
- finally { if (e_6) throw e_6.error; }
381
+ finally { if (e_9) throw e_9.error; }
221
382
  }
222
383
  return positions;
223
384
  };
224
385
  export var removeSpillsOfDeletedAnchors = function (_a) {
225
- var e_7, _b;
386
+ var e_10, _b;
226
387
  var _c, _d, _e;
227
388
  var draft = _a.draft, sheetId = _a.sheetId, axis = _a.axis, minIndex = _a.minIndex, maxIndex = _a.maxIndex, getArrayRange = _a.getArrayRange, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry;
228
389
  var sheetRows = draft[sheetId];
@@ -287,12 +448,12 @@ export var removeSpillsOfDeletedAnchors = function (_a) {
287
448
  }
288
449
  }
289
450
  }
290
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
451
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
291
452
  finally {
292
453
  try {
293
454
  if (anchors_1_1 && !anchors_1_1.done && (_b = anchors_1.return)) _b.call(anchors_1);
294
455
  }
295
- finally { if (e_7) throw e_7.error; }
456
+ finally { if (e_10) throw e_10.error; }
296
457
  }
297
458
  };
298
459
  /** `C1:C3` (the anchor's persisted `af`) → its rectangle; `undefined` when absent/unparseable. */