@ricsam/formula-engine 0.2.1 → 0.2.3

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 (337) hide show
  1. package/dist/cjs/core/ast-traverser.cjs +19 -9
  2. package/dist/cjs/core/ast-traverser.cjs.map +2 -2
  3. package/dist/cjs/core/autofill-utils.cjs +19 -9
  4. package/dist/cjs/core/autofill-utils.cjs.map +2 -2
  5. package/dist/cjs/core/cell-mover.cjs +19 -9
  6. package/dist/cjs/core/cell-mover.cjs.map +2 -2
  7. package/dist/cjs/core/commands/command-executor.cjs +24 -13
  8. package/dist/cjs/core/commands/command-executor.cjs.map +3 -3
  9. package/dist/cjs/core/commands/content-commands.cjs +292 -9
  10. package/dist/cjs/core/commands/content-commands.cjs.map +3 -3
  11. package/dist/cjs/core/commands/metadata-commands.cjs +19 -9
  12. package/dist/cjs/core/commands/metadata-commands.cjs.map +2 -2
  13. package/dist/cjs/core/commands/named-expression-commands.cjs +138 -13
  14. package/dist/cjs/core/commands/named-expression-commands.cjs.map +3 -3
  15. package/dist/cjs/core/commands/structure-commands.cjs +216 -15
  16. package/dist/cjs/core/commands/structure-commands.cjs.map +3 -3
  17. package/dist/cjs/core/commands/style-commands.cjs +19 -9
  18. package/dist/cjs/core/commands/style-commands.cjs.map +2 -2
  19. package/dist/cjs/core/commands/table-commands.cjs +134 -13
  20. package/dist/cjs/core/commands/table-commands.cjs.map +3 -3
  21. package/dist/cjs/core/commands/types.cjs +36 -9
  22. package/dist/cjs/core/commands/types.cjs.map +3 -3
  23. package/dist/cjs/core/engine-snapshot.cjs +51 -0
  24. package/dist/cjs/core/engine-snapshot.cjs.map +10 -0
  25. package/dist/cjs/core/engine.cjs +58 -34
  26. package/dist/cjs/core/engine.cjs.map +3 -3
  27. package/dist/cjs/core/managers/cache-manager.cjs +123 -9
  28. package/dist/cjs/core/managers/cache-manager.cjs.map +3 -3
  29. package/dist/cjs/core/managers/copy-manager.cjs +19 -9
  30. package/dist/cjs/core/managers/copy-manager.cjs.map +2 -2
  31. package/dist/cjs/core/managers/dependency-manager.cjs +697 -9
  32. package/dist/cjs/core/managers/dependency-manager.cjs.map +3 -3
  33. package/dist/cjs/core/managers/dependency-node.cjs +14 -8
  34. package/dist/cjs/core/managers/dependency-node.cjs.map +1 -1
  35. package/dist/cjs/core/managers/evaluation-manager.cjs +296 -11
  36. package/dist/cjs/core/managers/evaluation-manager.cjs.map +3 -3
  37. package/dist/cjs/core/managers/event-manager.cjs +19 -9
  38. package/dist/cjs/core/managers/event-manager.cjs.map +2 -2
  39. package/dist/cjs/core/managers/frontier-dependency-manager.cjs +65 -12
  40. package/dist/cjs/core/managers/frontier-dependency-manager.cjs.map +3 -3
  41. package/dist/cjs/core/managers/isDependencyNode.cjs +19 -9
  42. package/dist/cjs/core/managers/isDependencyNode.cjs.map +2 -2
  43. package/dist/cjs/core/managers/named-expression-manager.cjs +121 -29
  44. package/dist/cjs/core/managers/named-expression-manager.cjs.map +3 -3
  45. package/dist/cjs/core/managers/range-eval-order-builder.cjs +19 -9
  46. package/dist/cjs/core/managers/range-eval-order-builder.cjs.map +2 -2
  47. package/dist/cjs/core/managers/reference-manager.cjs +25 -9
  48. package/dist/cjs/core/managers/reference-manager.cjs.map +3 -3
  49. package/dist/cjs/core/managers/schema-manager.cjs +19 -9
  50. package/dist/cjs/core/managers/schema-manager.cjs.map +2 -2
  51. package/dist/cjs/core/managers/style-manager.cjs +28 -9
  52. package/dist/cjs/core/managers/style-manager.cjs.map +3 -3
  53. package/dist/cjs/core/managers/table-manager.cjs +25 -9
  54. package/dist/cjs/core/managers/table-manager.cjs.map +3 -3
  55. package/dist/cjs/core/managers/workbook-manager.cjs +38 -13
  56. package/dist/cjs/core/managers/workbook-manager.cjs.map +3 -3
  57. package/dist/cjs/core/map-serializer.cjs +19 -9
  58. package/dist/cjs/core/map-serializer.cjs.map +2 -2
  59. package/dist/cjs/core/named-expression-renamer.cjs +19 -9
  60. package/dist/cjs/core/named-expression-renamer.cjs.map +2 -2
  61. package/dist/cjs/core/resource-keys.cjs +67 -0
  62. package/dist/cjs/core/resource-keys.cjs.map +10 -0
  63. package/dist/cjs/core/schema/cell-orm.cjs +19 -9
  64. package/dist/cjs/core/schema/cell-orm.cjs.map +2 -2
  65. package/dist/cjs/core/schema/grid-orm.cjs +19 -9
  66. package/dist/cjs/core/schema/grid-orm.cjs.map +2 -2
  67. package/dist/cjs/core/schema/schema-builder.cjs +19 -9
  68. package/dist/cjs/core/schema/schema-builder.cjs.map +2 -2
  69. package/dist/cjs/core/schema/schema-helpers.cjs +19 -9
  70. package/dist/cjs/core/schema/schema-helpers.cjs.map +2 -2
  71. package/dist/cjs/core/schema/schema.cjs +19 -9
  72. package/dist/cjs/core/schema/schema.cjs.map +2 -2
  73. package/dist/cjs/core/schema/table-orm.cjs +19 -9
  74. package/dist/cjs/core/schema/table-orm.cjs.map +2 -2
  75. package/dist/cjs/core/sheet-renamer.cjs +19 -9
  76. package/dist/cjs/core/sheet-renamer.cjs.map +2 -2
  77. package/dist/cjs/core/sheet-utils.cjs +19 -9
  78. package/dist/cjs/core/sheet-utils.cjs.map +2 -2
  79. package/dist/cjs/core/table-renamer.cjs +19 -9
  80. package/dist/cjs/core/table-renamer.cjs.map +2 -2
  81. package/dist/cjs/core/types.cjs +19 -9
  82. package/dist/cjs/core/types.cjs.map +2 -2
  83. package/dist/cjs/core/utils/color-utils.cjs +19 -9
  84. package/dist/cjs/core/utils/color-utils.cjs.map +2 -2
  85. package/dist/cjs/core/utils/range-serializer.cjs +19 -9
  86. package/dist/cjs/core/utils/range-serializer.cjs.map +2 -2
  87. package/dist/cjs/core/utils/range-utils.cjs +19 -9
  88. package/dist/cjs/core/utils/range-utils.cjs.map +2 -2
  89. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs +19 -9
  90. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs.map +2 -2
  91. package/dist/cjs/core/utils.cjs +19 -9
  92. package/dist/cjs/core/utils.cjs.map +2 -2
  93. package/dist/cjs/core/workbook-renamer.cjs +19 -9
  94. package/dist/cjs/core/workbook-renamer.cjs.map +2 -2
  95. package/dist/cjs/debug/flags.cjs +19 -9
  96. package/dist/cjs/debug/flags.cjs.map +2 -2
  97. package/dist/cjs/evaluator/arithmetic/add/add.cjs +19 -9
  98. package/dist/cjs/evaluator/arithmetic/add/add.cjs.map +2 -2
  99. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs +19 -9
  100. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs.map +2 -2
  101. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs +19 -9
  102. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs.map +2 -2
  103. package/dist/cjs/evaluator/arithmetic/power/power.cjs +19 -9
  104. package/dist/cjs/evaluator/arithmetic/power/power.cjs.map +2 -2
  105. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs +19 -9
  106. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs.map +2 -2
  107. package/dist/cjs/evaluator/comparison/equals.cjs +19 -9
  108. package/dist/cjs/evaluator/comparison/equals.cjs.map +2 -2
  109. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs +19 -9
  110. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs.map +2 -2
  111. package/dist/cjs/evaluator/comparison/greater-than.cjs +19 -9
  112. package/dist/cjs/evaluator/comparison/greater-than.cjs.map +2 -2
  113. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs +19 -9
  114. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs.map +2 -2
  115. package/dist/cjs/evaluator/comparison/less-than.cjs +19 -9
  116. package/dist/cjs/evaluator/comparison/less-than.cjs.map +2 -2
  117. package/dist/cjs/evaluator/comparison/not-equals.cjs +19 -9
  118. package/dist/cjs/evaluator/comparison/not-equals.cjs.map +2 -2
  119. package/dist/cjs/evaluator/concatenation/concatenate.cjs +19 -9
  120. package/dist/cjs/evaluator/concatenation/concatenate.cjs.map +2 -2
  121. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs +19 -9
  122. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs.map +2 -2
  123. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs +35 -9
  124. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs.map +3 -3
  125. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs +22 -9
  126. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs.map +3 -3
  127. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs +35 -11
  128. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs.map +3 -3
  129. package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs +61 -0
  130. package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs.map +10 -0
  131. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs +19 -9
  132. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs.map +2 -2
  133. package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs +22 -9
  134. package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs.map +3 -3
  135. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs +19 -9
  136. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs.map +2 -2
  137. package/dist/cjs/evaluator/evaluation-context.cjs +19 -9
  138. package/dist/cjs/evaluator/evaluation-context.cjs.map +2 -2
  139. package/dist/cjs/evaluator/evaluation-error.cjs +19 -9
  140. package/dist/cjs/evaluator/evaluation-error.cjs.map +2 -2
  141. package/dist/cjs/evaluator/formula-evaluator.cjs +55 -12
  142. package/dist/cjs/evaluator/formula-evaluator.cjs.map +3 -3
  143. package/dist/cjs/evaluator/range-evaluation-node.cjs +35 -11
  144. package/dist/cjs/evaluator/range-evaluation-node.cjs.map +3 -3
  145. package/dist/cjs/functions/_template/template.cjs +19 -9
  146. package/dist/cjs/functions/_template/template.cjs.map +2 -2
  147. package/dist/cjs/functions/array/sequence/sequence.cjs +19 -9
  148. package/dist/cjs/functions/array/sequence/sequence.cjs.map +2 -2
  149. package/dist/cjs/functions/criteria-parser.cjs +19 -9
  150. package/dist/cjs/functions/criteria-parser.cjs.map +2 -2
  151. package/dist/cjs/functions/criteria-utils.cjs +19 -9
  152. package/dist/cjs/functions/criteria-utils.cjs.map +2 -2
  153. package/dist/cjs/functions/function-registry.cjs +19 -9
  154. package/dist/cjs/functions/function-registry.cjs.map +2 -2
  155. package/dist/cjs/functions/function-utils.cjs +19 -9
  156. package/dist/cjs/functions/function-utils.cjs.map +2 -2
  157. package/dist/cjs/functions/information/cell/cell.cjs +19 -9
  158. package/dist/cjs/functions/information/cell/cell.cjs.map +2 -2
  159. package/dist/cjs/functions/information/column/column.cjs +19 -9
  160. package/dist/cjs/functions/information/column/column.cjs.map +2 -2
  161. package/dist/cjs/functions/information/row/row.cjs +19 -9
  162. package/dist/cjs/functions/information/row/row.cjs.map +2 -2
  163. package/dist/cjs/functions/logical/and/and.cjs +19 -9
  164. package/dist/cjs/functions/logical/and/and.cjs.map +2 -2
  165. package/dist/cjs/functions/logical/if/if.cjs +19 -9
  166. package/dist/cjs/functions/logical/if/if.cjs.map +2 -2
  167. package/dist/cjs/functions/logical/iferror/iferror.cjs +19 -9
  168. package/dist/cjs/functions/logical/iferror/iferror.cjs.map +2 -2
  169. package/dist/cjs/functions/logical/or/or.cjs +19 -9
  170. package/dist/cjs/functions/logical/or/or.cjs.map +2 -2
  171. package/dist/cjs/functions/lookup/count/count-utils.cjs +19 -9
  172. package/dist/cjs/functions/lookup/count/count-utils.cjs.map +2 -2
  173. package/dist/cjs/functions/lookup/count/count.cjs +19 -9
  174. package/dist/cjs/functions/lookup/count/count.cjs.map +2 -2
  175. package/dist/cjs/functions/lookup/count/countif.cjs +19 -9
  176. package/dist/cjs/functions/lookup/count/countif.cjs.map +2 -2
  177. package/dist/cjs/functions/lookup/count/countifs.cjs +19 -9
  178. package/dist/cjs/functions/lookup/count/countifs.cjs.map +2 -2
  179. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +19 -9
  180. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +2 -2
  181. package/dist/cjs/functions/lookup/match/match.cjs +21 -10
  182. package/dist/cjs/functions/lookup/match/match.cjs.map +3 -3
  183. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +19 -9
  184. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +2 -2
  185. package/dist/cjs/functions/math/average/average-utils.cjs +19 -9
  186. package/dist/cjs/functions/math/average/average-utils.cjs.map +2 -2
  187. package/dist/cjs/functions/math/average/average.cjs +19 -9
  188. package/dist/cjs/functions/math/average/average.cjs.map +2 -2
  189. package/dist/cjs/functions/math/average/averageif.cjs +19 -9
  190. package/dist/cjs/functions/math/average/averageif.cjs.map +2 -2
  191. package/dist/cjs/functions/math/average/averageifs.cjs +19 -9
  192. package/dist/cjs/functions/math/average/averageifs.cjs.map +2 -2
  193. package/dist/cjs/functions/math/ceiling/ceiling.cjs +19 -9
  194. package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +2 -2
  195. package/dist/cjs/functions/math/max/max-utils.cjs +19 -9
  196. package/dist/cjs/functions/math/max/max-utils.cjs.map +2 -2
  197. package/dist/cjs/functions/math/max/max.cjs +19 -9
  198. package/dist/cjs/functions/math/max/max.cjs.map +2 -2
  199. package/dist/cjs/functions/math/max/maxif.cjs +19 -9
  200. package/dist/cjs/functions/math/max/maxif.cjs.map +2 -2
  201. package/dist/cjs/functions/math/max/maxifs.cjs +19 -9
  202. package/dist/cjs/functions/math/max/maxifs.cjs.map +2 -2
  203. package/dist/cjs/functions/math/min/min-utils.cjs +19 -9
  204. package/dist/cjs/functions/math/min/min-utils.cjs.map +2 -2
  205. package/dist/cjs/functions/math/min/min.cjs +19 -9
  206. package/dist/cjs/functions/math/min/min.cjs.map +2 -2
  207. package/dist/cjs/functions/math/min/minif.cjs +19 -9
  208. package/dist/cjs/functions/math/min/minif.cjs.map +2 -2
  209. package/dist/cjs/functions/math/min/minifs.cjs +19 -9
  210. package/dist/cjs/functions/math/min/minifs.cjs.map +2 -2
  211. package/dist/cjs/functions/math/sum/sum.cjs +19 -9
  212. package/dist/cjs/functions/math/sum/sum.cjs.map +2 -2
  213. package/dist/cjs/functions/math/sum/sumif.cjs +19 -9
  214. package/dist/cjs/functions/math/sum/sumif.cjs.map +2 -2
  215. package/dist/cjs/functions/math/sum/sumifs.cjs +19 -9
  216. package/dist/cjs/functions/math/sum/sumifs.cjs.map +2 -2
  217. package/dist/cjs/functions/math/sum/summation-utils.cjs +19 -9
  218. package/dist/cjs/functions/math/sum/summation-utils.cjs.map +2 -2
  219. package/dist/cjs/functions/reference/address/address.cjs +19 -9
  220. package/dist/cjs/functions/reference/address/address.cjs.map +2 -2
  221. package/dist/cjs/functions/reference/indirect/indirect.cjs +19 -9
  222. package/dist/cjs/functions/reference/indirect/indirect.cjs.map +2 -2
  223. package/dist/cjs/functions/reference/offset/offset.cjs +19 -9
  224. package/dist/cjs/functions/reference/offset/offset.cjs.map +2 -2
  225. package/dist/cjs/functions/text/concatenate/concatenate.cjs +21 -9
  226. package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +3 -3
  227. package/dist/cjs/functions/text/exact/exact.cjs +19 -9
  228. package/dist/cjs/functions/text/exact/exact.cjs.map +2 -2
  229. package/dist/cjs/functions/text/find/find.cjs +19 -9
  230. package/dist/cjs/functions/text/find/find.cjs.map +2 -2
  231. package/dist/cjs/functions/text/left/left.cjs +19 -9
  232. package/dist/cjs/functions/text/left/left.cjs.map +2 -2
  233. package/dist/cjs/functions/text/len/len.cjs +19 -9
  234. package/dist/cjs/functions/text/len/len.cjs.map +2 -2
  235. package/dist/cjs/functions/text/mid/mid.cjs +19 -9
  236. package/dist/cjs/functions/text/mid/mid.cjs.map +2 -2
  237. package/dist/cjs/functions/text/right/right.cjs +19 -9
  238. package/dist/cjs/functions/text/right/right.cjs.map +2 -2
  239. package/dist/cjs/functions/text/text-helpers.cjs +19 -9
  240. package/dist/cjs/functions/text/text-helpers.cjs.map +2 -2
  241. package/dist/cjs/functions/text/textjoin/textjoin.cjs +19 -9
  242. package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +2 -2
  243. package/dist/cjs/lib.cjs +24 -13
  244. package/dist/cjs/lib.cjs.map +2 -2
  245. package/dist/cjs/package.json +1 -1
  246. package/dist/cjs/parser/ast.cjs +19 -9
  247. package/dist/cjs/parser/ast.cjs.map +2 -2
  248. package/dist/cjs/parser/formatter.cjs +19 -9
  249. package/dist/cjs/parser/formatter.cjs.map +2 -2
  250. package/dist/cjs/parser/grammar.cjs +19 -9
  251. package/dist/cjs/parser/grammar.cjs.map +2 -2
  252. package/dist/cjs/parser/lexer.cjs +19 -9
  253. package/dist/cjs/parser/lexer.cjs.map +2 -2
  254. package/dist/cjs/parser/parser.cjs +19 -9
  255. package/dist/cjs/parser/parser.cjs.map +2 -2
  256. package/dist/cjs/react/hooks.cjs +31 -10
  257. package/dist/cjs/react/hooks.cjs.map +2 -2
  258. package/dist/mjs/core/commands/command-executor.mjs +7 -5
  259. package/dist/mjs/core/commands/command-executor.mjs.map +3 -3
  260. package/dist/mjs/core/commands/content-commands.mjs +279 -2
  261. package/dist/mjs/core/commands/content-commands.mjs.map +3 -3
  262. package/dist/mjs/core/commands/named-expression-commands.mjs +121 -6
  263. package/dist/mjs/core/commands/named-expression-commands.mjs.map +3 -3
  264. package/dist/mjs/core/commands/structure-commands.mjs +204 -8
  265. package/dist/mjs/core/commands/structure-commands.mjs.map +3 -3
  266. package/dist/mjs/core/commands/table-commands.mjs +117 -6
  267. package/dist/mjs/core/commands/table-commands.mjs.map +3 -3
  268. package/dist/mjs/core/commands/types.mjs +18 -1
  269. package/dist/mjs/core/commands/types.mjs.map +3 -3
  270. package/dist/mjs/core/engine-snapshot.mjs +11 -0
  271. package/dist/mjs/core/engine-snapshot.mjs.map +10 -0
  272. package/dist/mjs/core/engine.mjs +42 -26
  273. package/dist/mjs/core/engine.mjs.map +3 -3
  274. package/dist/mjs/core/managers/cache-manager.mjs +105 -1
  275. package/dist/mjs/core/managers/cache-manager.mjs.map +3 -3
  276. package/dist/mjs/core/managers/dependency-manager.mjs +687 -2
  277. package/dist/mjs/core/managers/dependency-manager.mjs.map +3 -3
  278. package/dist/mjs/core/managers/evaluation-manager.mjs +283 -4
  279. package/dist/mjs/core/managers/evaluation-manager.mjs.map +3 -3
  280. package/dist/mjs/core/managers/frontier-dependency-manager.mjs +47 -4
  281. package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +3 -3
  282. package/dist/mjs/core/managers/named-expression-manager.mjs +104 -21
  283. package/dist/mjs/core/managers/named-expression-manager.mjs.map +3 -3
  284. package/dist/mjs/core/managers/reference-manager.mjs +7 -1
  285. package/dist/mjs/core/managers/reference-manager.mjs.map +3 -3
  286. package/dist/mjs/core/managers/style-manager.mjs +10 -1
  287. package/dist/mjs/core/managers/style-manager.mjs.map +3 -3
  288. package/dist/mjs/core/managers/table-manager.mjs +7 -1
  289. package/dist/mjs/core/managers/table-manager.mjs.map +3 -3
  290. package/dist/mjs/core/managers/workbook-manager.mjs +20 -5
  291. package/dist/mjs/core/managers/workbook-manager.mjs.map +3 -3
  292. package/dist/mjs/core/resource-keys.mjs +27 -0
  293. package/dist/mjs/core/resource-keys.mjs.map +10 -0
  294. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs +17 -1
  295. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +3 -3
  296. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +4 -1
  297. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +3 -3
  298. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +17 -3
  299. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +3 -3
  300. package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs +21 -0
  301. package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs.map +10 -0
  302. package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs +4 -1
  303. package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs.map +3 -3
  304. package/dist/mjs/evaluator/formula-evaluator.mjs +42 -4
  305. package/dist/mjs/evaluator/formula-evaluator.mjs.map +3 -3
  306. package/dist/mjs/evaluator/range-evaluation-node.mjs +17 -3
  307. package/dist/mjs/evaluator/range-evaluation-node.mjs.map +3 -3
  308. package/dist/mjs/functions/lookup/match/match.mjs +3 -2
  309. package/dist/mjs/functions/lookup/match/match.mjs.map +3 -3
  310. package/dist/mjs/functions/text/concatenate/concatenate.mjs +3 -1
  311. package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +3 -3
  312. package/dist/mjs/package.json +1 -1
  313. package/dist/types/core/commands/content-commands.d.ts +31 -1
  314. package/dist/types/core/commands/named-expression-commands.d.ts +16 -1
  315. package/dist/types/core/commands/structure-commands.d.ts +24 -1
  316. package/dist/types/core/commands/table-commands.d.ts +16 -1
  317. package/dist/types/core/commands/types.d.ts +25 -1
  318. package/dist/types/core/engine-snapshot.d.ts +138 -0
  319. package/dist/types/core/engine.d.ts +19 -1
  320. package/dist/types/core/managers/cache-manager.d.ts +9 -0
  321. package/dist/types/core/managers/dependency-manager.d.ts +56 -1
  322. package/dist/types/core/managers/dependency-node.d.ts +2 -1
  323. package/dist/types/core/managers/evaluation-manager.d.ts +21 -1
  324. package/dist/types/core/managers/frontier-dependency-manager.d.ts +12 -2
  325. package/dist/types/core/managers/named-expression-manager.d.ts +17 -1
  326. package/dist/types/core/managers/reference-manager.d.ts +3 -0
  327. package/dist/types/core/managers/style-manager.d.ts +3 -0
  328. package/dist/types/core/managers/table-manager.d.ts +3 -0
  329. package/dist/types/core/managers/workbook-manager.d.ts +4 -1
  330. package/dist/types/core/resource-keys.d.ts +14 -0
  331. package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +5 -0
  332. package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +1 -0
  333. package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +8 -1
  334. package/dist/types/evaluator/dependency-nodes/resource-dependency-node.d.ts +8 -0
  335. package/dist/types/evaluator/dependency-nodes/virtual-cell-value-node.d.ts +1 -0
  336. package/dist/types/evaluator/range-evaluation-node.d.ts +8 -1
  337. package/package.json +6 -2
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/core/commands/structure-commands.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Structure Commands - Commands that modify workbook/sheet structure\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { SchemaManager } from \"../managers/schema-manager.cjs\";\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.cjs\";\nimport type { ReferenceManager } from \"../managers/reference-manager.cjs\";\nimport type { StyleManager } from \"../managers/style-manager.cjs\";\nimport type { TableManager } from \"../managers/table-manager.cjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.cjs\";\nimport type {\n ConditionalStyle,\n DirectCellStyle,\n NamedExpression,\n Sheet,\n TableDefinition,\n Workbook,\n} from \"../types.cjs\";\nimport type { EngineAction, EngineCommand } from \"./types.cjs\";\nimport { ActionTypes } from \"./types.cjs\";\n\n/**\n * Dependencies needed for structure commands.\n */\nexport interface StructureCommandDeps {\n workbookManager: WorkbookManager;\n namedExpressionManager: NamedExpressionManager;\n tableManager: TableManager;\n styleManager: StyleManager;\n referenceManager: ReferenceManager;\n apiSchemaManager: SchemaManager;\n renameSheetInFormula: (opts: {\n formula: string;\n oldSheetName: string;\n newSheetName: string;\n }) => string;\n renameWorkbookInFormula: (opts: {\n formula: string;\n oldWorkbookName: string;\n newWorkbookName: string;\n }) => string;\n}\n\n// ============================================================================\n// Workbook Commands\n// ============================================================================\n\n/**\n * Command to add a workbook.\n */\nexport class AddWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string\n ) {}\n\n execute(): void {\n this.deps.workbookManager.addWorkbook(this.workbookName);\n this.deps.namedExpressionManager.addWorkbook(this.workbookName);\n this.deps.tableManager.addWorkbook(this.workbookName);\n }\n\n undo(): void {\n this.deps.workbookManager.removeWorkbook(this.workbookName);\n this.deps.namedExpressionManager.removeWorkbook(this.workbookName);\n this.deps.tableManager.removeWorkbook(this.workbookName);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_WORKBOOK,\n payload: { workbookName: this.workbookName },\n };\n }\n}\n\n/**\n * Captured state of a workbook for undo purposes.\n */\ninterface WorkbookSnapshot {\n workbook: Workbook;\n namedExpressions: {\n workbookLevel: Map<string, NamedExpression>;\n sheetLevel: Map<string, Map<string, NamedExpression>>;\n };\n tables: Map<string, TableDefinition>;\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Capture the full state of a workbook for later restoration.\n */\nfunction captureWorkbookSnapshot(\n deps: StructureCommandDeps,\n workbookName: string\n): WorkbookSnapshot | undefined {\n const workbook = deps.workbookManager.getWorkbooks().get(workbookName);\n if (!workbook) return undefined;\n\n // Deep clone workbook sheets\n const clonedSheets = new Map<string, Sheet>();\n for (const [name, sheet] of workbook.sheets) {\n clonedSheets.set(name, {\n name: sheet.name,\n index: sheet.index,\n content: new Map(sheet.content),\n metadata: new Map(sheet.metadata),\n sheetMetadata: sheet.sheetMetadata,\n });\n }\n\n const namedExpressions = deps.namedExpressionManager.getNamedExpressions();\n\n const snapshot: WorkbookSnapshot = {\n workbook: {\n name: workbook.name,\n sheets: clonedSheets,\n workbookMetadata: workbook.workbookMetadata,\n },\n namedExpressions: {\n workbookLevel: new Map(\n namedExpressions.workbookExpressions.get(workbookName) || []\n ),\n sheetLevel: new Map(),\n },\n tables: new Map(deps.tableManager.getTables(workbookName)),\n conditionalStyles: deps.styleManager\n .getAllConditionalStyles()\n .filter((s) => s.areas.some((a) => a.workbookName === workbookName)),\n cellStyles: deps.styleManager\n .getAllCellStyles()\n .filter((s) => s.areas.some((a) => a.workbookName === workbookName)),\n };\n\n // Capture sheet-level named expressions\n const sheetExpressions = namedExpressions.sheetExpressions.get(workbookName);\n if (sheetExpressions) {\n for (const [sheetName, expressions] of sheetExpressions) {\n snapshot.namedExpressions.sheetLevel.set(sheetName, new Map(expressions));\n }\n }\n\n return snapshot;\n}\n\n/**\n * Remove a workbook and all its associated data.\n */\nfunction removeWorkbook(\n deps: StructureCommandDeps,\n workbookName: string\n): void {\n deps.workbookManager.removeWorkbook(workbookName);\n deps.namedExpressionManager.removeWorkbook(workbookName);\n deps.tableManager.removeWorkbook(workbookName);\n deps.styleManager.removeWorkbookStyles(workbookName);\n deps.referenceManager.invalidateWorkbook(workbookName);\n}\n\n/**\n * Rename a workbook across all managers.\n */\nfunction renameWorkbookAcrossManagers(\n deps: StructureCommandDeps,\n oldName: string,\n newName: string\n): void {\n deps.workbookManager.renameWorkbook({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.namedExpressionManager.renameWorkbook({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.tableManager.updateTablesForWorkbookRename({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.styleManager.updateWorkbookName(oldName, newName);\n deps.workbookManager.updateAllFormulas((formula) =>\n deps.renameWorkbookInFormula({\n formula,\n oldWorkbookName: oldName,\n newWorkbookName: newName,\n })\n );\n deps.referenceManager.updateWorkbookName(oldName, newName);\n deps.apiSchemaManager.updateForWorkbookRename(oldName, newName);\n}\n\n/**\n * Rename a sheet across all managers.\n */\nfunction renameSheetAcrossManagers(\n deps: StructureCommandDeps,\n opts: { workbookName: string; sheetName: string; newSheetName: string }\n): void {\n deps.workbookManager.renameSheet(opts);\n deps.namedExpressionManager.renameSheet(opts);\n deps.tableManager.updateTablesForSheetRename(opts);\n deps.styleManager.updateSheetName(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n deps.workbookManager.updateAllFormulas((formula) =>\n deps.renameSheetInFormula({\n formula,\n oldSheetName: opts.sheetName,\n newSheetName: opts.newSheetName,\n })\n );\n deps.referenceManager.updateSheetName(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n deps.apiSchemaManager.updateForSheetRename(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n}\n\n/**\n * Restore tables from a snapshot.\n */\nfunction restoreTables(\n tableManager: TableManager,\n tables: Map<string, TableDefinition>,\n workbookName: string\n): void {\n for (const [tableName, table] of tables) {\n tableManager.addTable({\n workbookName,\n tableName,\n sheetName: table.sheetName,\n start: `${String.fromCharCode(65 + table.start.colIndex)}${\n table.start.rowIndex + 1\n }`,\n numRows: table.endRow,\n numCols: table.headers.size,\n getCellValue: () => undefined,\n });\n }\n}\n\n/**\n * Restore styles from a snapshot.\n */\nfunction restoreStyles(\n styleManager: StyleManager,\n conditionalStyles: ConditionalStyle[],\n cellStyles: DirectCellStyle[]\n): void {\n for (const style of conditionalStyles) {\n styleManager.addConditionalStyle(style);\n }\n for (const style of cellStyles) {\n styleManager.addCellStyle(style);\n }\n}\n\n/**\n * Command to remove a workbook.\n */\nexport class RemoveWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: WorkbookSnapshot | undefined;\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string\n ) {}\n\n execute(): void {\n this.snapshot = captureWorkbookSnapshot(this.deps, this.workbookName);\n removeWorkbook(this.deps, this.workbookName);\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Restore workbook structure\n this.deps.workbookManager.addWorkbook(this.workbookName);\n this.deps.namedExpressionManager.addWorkbook(this.workbookName);\n this.deps.tableManager.addWorkbook(this.workbookName);\n\n // Restore sheets\n for (const [sheetName, sheet] of this.snapshot.workbook.sheets) {\n this.deps.workbookManager.addSheet({\n workbookName: this.workbookName,\n sheetName,\n });\n this.deps.namedExpressionManager.addSheet({\n workbookName: this.workbookName,\n sheetName,\n });\n this.deps.workbookManager.setSheetContent(\n { workbookName: this.workbookName, sheetName },\n sheet.content\n );\n }\n\n // Restore named expressions\n for (const [name, expr] of this.snapshot.namedExpressions.workbookLevel) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.workbookName,\n });\n }\n for (const [sheetName, expressions] of this.snapshot.namedExpressions.sheetLevel) {\n for (const [name, expr] of expressions) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.workbookName,\n sheetName,\n });\n }\n }\n\n // Restore tables and styles\n restoreTables(this.deps.tableManager, this.snapshot.tables, this.workbookName);\n restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_WORKBOOK,\n payload: { workbookName: this.workbookName },\n };\n }\n}\n\n/**\n * Command to rename a workbook.\n */\nexport class RenameWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string,\n private newWorkbookName: string\n ) {}\n\n execute(): void {\n renameWorkbookAcrossManagers(this.deps, this.workbookName, this.newWorkbookName);\n }\n\n undo(): void {\n renameWorkbookAcrossManagers(this.deps, this.newWorkbookName, this.workbookName);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_WORKBOOK,\n payload: {\n workbookName: this.workbookName,\n newWorkbookName: this.newWorkbookName,\n },\n };\n }\n}\n\n/**\n * Command to clone a workbook.\n * Undo simply removes the cloned workbook.\n */\nexport class CloneWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private fromWorkbookName: string,\n private toWorkbookName: string\n ) {}\n\n execute(): void {\n const {\n workbookManager,\n namedExpressionManager,\n tableManager,\n styleManager,\n renameWorkbookInFormula,\n } = this.deps;\n\n // Check if source workbook exists\n const sourceWorkbook = workbookManager\n .getWorkbooks()\n .get(this.fromWorkbookName);\n if (!sourceWorkbook) {\n throw new Error(`Source workbook \"${this.fromWorkbookName}\" not found`);\n }\n\n // Check if target workbook name already exists\n if (workbookManager.getWorkbooks().has(this.toWorkbookName)) {\n throw new Error(\n `Target workbook \"${this.toWorkbookName}\" already exists`\n );\n }\n\n // Create new workbook\n workbookManager.addWorkbook(this.toWorkbookName);\n namedExpressionManager.addWorkbook(this.toWorkbookName);\n tableManager.addWorkbook(this.toWorkbookName);\n\n // Clone all sheets from source workbook\n for (const [sheetName, sheet] of sourceWorkbook.sheets) {\n // Add sheet to target workbook\n workbookManager.addSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n namedExpressionManager.addSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n\n // Copy all cell content\n workbookManager.setSheetContent(\n { workbookName: this.toWorkbookName, sheetName: sheetName },\n new Map(sheet.content)\n );\n\n // Copy all cell metadata\n const targetSheet = workbookManager.getSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n if (targetSheet) {\n targetSheet.metadata = new Map(sheet.metadata);\n\n // Copy sheet metadata\n if (sheet.sheetMetadata !== undefined) {\n targetSheet.sheetMetadata = structuredClone(sheet.sheetMetadata);\n }\n }\n }\n\n // Copy workbook metadata\n const targetWorkbook = workbookManager\n .getWorkbooks()\n .get(this.toWorkbookName);\n if (targetWorkbook && sourceWorkbook.workbookMetadata !== undefined) {\n targetWorkbook.workbookMetadata = structuredClone(\n sourceWorkbook.workbookMetadata\n );\n }\n\n // Clone workbook-scoped named expressions\n const allExpressions = namedExpressionManager.getNamedExpressions();\n const sourceWorkbookExpressions = allExpressions.workbookExpressions.get(\n this.fromWorkbookName\n );\n if (sourceWorkbookExpressions) {\n for (const [expressionName, expression] of sourceWorkbookExpressions) {\n namedExpressionManager.addNamedExpression({\n expressionName,\n expression: expression.expression,\n workbookName: this.toWorkbookName,\n });\n }\n }\n\n // Clone sheet-scoped named expressions\n const sourceSheetExpressions = allExpressions.sheetExpressions.get(\n this.fromWorkbookName\n );\n if (sourceSheetExpressions) {\n for (const [sheetName, sheetExpressions] of sourceSheetExpressions) {\n for (const [expressionName, expression] of sheetExpressions) {\n namedExpressionManager.addNamedExpression({\n expressionName,\n expression: expression.expression,\n workbookName: this.toWorkbookName,\n sheetName,\n });\n }\n }\n }\n\n // Clone tables\n const sourceTables = tableManager.tables.get(this.fromWorkbookName);\n if (sourceTables) {\n for (const [tableName] of sourceTables) {\n tableManager.copyTable(\n { workbookName: this.fromWorkbookName, tableName },\n { workbookName: this.toWorkbookName, tableName }\n );\n }\n }\n\n // Clone conditional styles\n const allConditionalStyles = styleManager.getAllConditionalStyles();\n for (const style of allConditionalStyles) {\n if (\n style.areas.some((area) => area.workbookName === this.fromWorkbookName)\n ) {\n const newStyle: ConditionalStyle = {\n ...style,\n areas: style.areas.map((area) =>\n area.workbookName === this.fromWorkbookName\n ? { ...area, workbookName: this.toWorkbookName }\n : area\n ),\n };\n styleManager.addConditionalStyle(newStyle);\n }\n }\n\n // Clone cell styles\n const allCellStyles = styleManager.getAllCellStyles();\n for (const style of allCellStyles) {\n if (\n style.areas.some((area) => area.workbookName === this.fromWorkbookName)\n ) {\n const newStyle: DirectCellStyle = {\n ...style,\n areas: style.areas.map((area) =>\n area.workbookName === this.fromWorkbookName\n ? { ...area, workbookName: this.toWorkbookName }\n : area\n ),\n };\n styleManager.addCellStyle(newStyle);\n }\n }\n\n // Update formulas in cloned workbook that reference the source workbook\n workbookManager.updateFormulasForWorkbook(this.toWorkbookName, (formula) =>\n renameWorkbookInFormula({\n formula,\n oldWorkbookName: this.fromWorkbookName,\n newWorkbookName: this.toWorkbookName,\n })\n );\n }\n\n undo(): void {\n // Undo clone = remove the cloned workbook\n removeWorkbook(this.deps, this.toWorkbookName);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.CLONE_WORKBOOK,\n payload: {\n fromWorkbookName: this.fromWorkbookName,\n toWorkbookName: this.toWorkbookName,\n },\n };\n }\n}\n\n// ============================================================================\n// Sheet Commands\n// ============================================================================\n\n/**\n * Command to add a sheet.\n */\nexport class AddSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: { workbookName: string; sheetName: string }\n ) {}\n\n execute(): void {\n this.deps.workbookManager.addSheet(this.opts);\n this.deps.namedExpressionManager.addSheet(this.opts);\n }\n\n undo(): void {\n this.deps.workbookManager.removeSheet(this.opts);\n this.deps.namedExpressionManager.removeSheet(this.opts);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_SHEET,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Captured state of a sheet for undo purposes.\n */\ninterface SheetSnapshot {\n sheet: Sheet;\n namedExpressions: Map<string, NamedExpression>;\n tables: Map<string, TableDefinition>;\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Command to remove a sheet.\n */\nexport class RemoveSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: SheetSnapshot | undefined;\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: { workbookName: string; sheetName: string }\n ) {}\n\n execute(): void {\n // Capture sheet state before removal\n const sheet = this.deps.workbookManager.getSheet(this.opts);\n if (sheet) {\n const namedExpressions =\n this.deps.namedExpressionManager.getNamedExpressions();\n const sheetExpressions =\n namedExpressions.sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName) || new Map();\n\n // Get tables on this sheet\n const allTables = this.deps.tableManager.getTables(\n this.opts.workbookName\n );\n const sheetTables = new Map<string, TableDefinition>();\n for (const [name, table] of allTables) {\n if (table.sheetName === this.opts.sheetName) {\n sheetTables.set(name, table);\n }\n }\n\n this.snapshot = {\n sheet: {\n name: sheet.name,\n index: sheet.index,\n content: new Map(sheet.content),\n metadata: new Map(sheet.metadata),\n sheetMetadata: sheet.sheetMetadata,\n },\n namedExpressions: new Map(sheetExpressions),\n tables: sheetTables,\n conditionalStyles: this.deps.styleManager\n .getAllConditionalStyles()\n .filter((s) =>\n s.areas.some(\n (a) =>\n a.workbookName === this.opts.workbookName &&\n a.sheetName === this.opts.sheetName\n )\n ),\n cellStyles: this.deps.styleManager\n .getAllCellStyles()\n .filter((s) =>\n s.areas.some(\n (a) =>\n a.workbookName === this.opts.workbookName &&\n a.sheetName === this.opts.sheetName\n )\n ),\n };\n }\n\n // Execute removal\n this.deps.workbookManager.removeSheet(this.opts);\n this.deps.namedExpressionManager.removeSheet(this.opts);\n this.deps.tableManager.removeSheet(this.opts);\n this.deps.styleManager.removeSheetStyles(\n this.opts.workbookName,\n this.opts.sheetName\n );\n this.deps.referenceManager.invalidateSheet(\n this.opts.workbookName,\n this.opts.sheetName\n );\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Restore sheet structure\n this.deps.workbookManager.addSheet(this.opts);\n this.deps.namedExpressionManager.addSheet(this.opts);\n this.deps.workbookManager.setSheetContent(this.opts, this.snapshot.sheet.content);\n\n // Restore named expressions\n for (const [name, expr] of this.snapshot.namedExpressions) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n });\n }\n\n // Restore tables and styles\n restoreTables(this.deps.tableManager, this.snapshot.tables, this.opts.workbookName);\n restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_SHEET,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a sheet.\n */\nexport class RenameSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: {\n workbookName: string;\n sheetName: string;\n newSheetName: string;\n }\n ) {}\n\n execute(): void {\n renameSheetAcrossManagers(this.deps, this.opts);\n }\n\n undo(): void {\n renameSheetAcrossManagers(this.deps, {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.newSheetName,\n newSheetName: this.opts.sheetName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_SHEET,\n payload: this.opts,\n };\n }\n}\n"
5
+ "/**\n * Structure Commands - Commands that modify workbook/sheet structure\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { SchemaManager } from \"../managers/schema-manager.cjs\";\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.cjs\";\nimport type { ReferenceManager } from \"../managers/reference-manager.cjs\";\nimport type { StyleManager } from \"../managers/style-manager.cjs\";\nimport type { TableManager } from \"../managers/table-manager.cjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.cjs\";\nimport type {\n CellAddress,\n ConditionalStyle,\n DirectCellStyle,\n NamedExpression,\n Sheet,\n TableDefinition,\n Workbook,\n} from \"../types.cjs\";\nimport type {\n EngineAction,\n EngineCommand,\n MutationInvalidation,\n} from \"./types.cjs\";\nimport { ActionTypes, emptyMutationInvalidation } from \"./types.cjs\";\nimport {\n getNamedExpressionResourceKey,\n getSheetResourceKey,\n getTableResourceKey,\n getWorkbookResourceKey,\n} from \"../resource-keys.cjs\";\n\n/**\n * Dependencies needed for structure commands.\n */\nexport interface StructureCommandDeps {\n workbookManager: WorkbookManager;\n namedExpressionManager: NamedExpressionManager;\n tableManager: TableManager;\n styleManager: StyleManager;\n referenceManager: ReferenceManager;\n apiSchemaManager: SchemaManager;\n renameSheetInFormula: (opts: {\n formula: string;\n oldSheetName: string;\n newSheetName: string;\n }) => string;\n renameWorkbookInFormula: (opts: {\n formula: string;\n oldWorkbookName: string;\n newWorkbookName: string;\n }) => string;\n}\n\n// ============================================================================\n// Workbook Commands\n// ============================================================================\n\n/**\n * Command to add a workbook.\n */\nexport class AddWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string\n ) {}\n\n execute(): void {\n this.deps.workbookManager.addWorkbook(this.workbookName);\n this.deps.namedExpressionManager.addWorkbook(this.workbookName);\n this.deps.tableManager.addWorkbook(this.workbookName);\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [getWorkbookResourceKey(this.workbookName)],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: [getWorkbookResourceKey(this.workbookName)],\n removedScopes: [{ type: \"workbook\", workbookName: this.workbookName }],\n };\n }\n\n undo(): void {\n this.deps.workbookManager.removeWorkbook(this.workbookName);\n this.deps.namedExpressionManager.removeWorkbook(this.workbookName);\n this.deps.tableManager.removeWorkbook(this.workbookName);\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_WORKBOOK,\n payload: { workbookName: this.workbookName },\n };\n }\n}\n\n/**\n * Captured state of a workbook for undo purposes.\n */\ninterface WorkbookSnapshot {\n workbook: Workbook;\n namedExpressions: {\n workbookLevel: Map<string, NamedExpression>;\n sheetLevel: Map<string, Map<string, NamedExpression>>;\n };\n tables: Map<string, TableDefinition>;\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Capture the full state of a workbook for later restoration.\n */\nfunction captureWorkbookSnapshot(\n deps: StructureCommandDeps,\n workbookName: string\n): WorkbookSnapshot | undefined {\n const workbook = deps.workbookManager.getWorkbooks().get(workbookName);\n if (!workbook) return undefined;\n\n // Deep clone workbook sheets\n const clonedSheets = new Map<string, Sheet>();\n for (const [name, sheet] of workbook.sheets) {\n clonedSheets.set(name, {\n name: sheet.name,\n index: sheet.index,\n content: new Map(sheet.content),\n metadata: new Map(sheet.metadata),\n sheetMetadata: sheet.sheetMetadata,\n });\n }\n\n const namedExpressions = deps.namedExpressionManager.getNamedExpressions();\n\n const snapshot: WorkbookSnapshot = {\n workbook: {\n name: workbook.name,\n sheets: clonedSheets,\n workbookMetadata: workbook.workbookMetadata,\n },\n namedExpressions: {\n workbookLevel: new Map(\n namedExpressions.workbookExpressions.get(workbookName) || []\n ),\n sheetLevel: new Map(),\n },\n tables: new Map(deps.tableManager.getTables(workbookName)),\n conditionalStyles: deps.styleManager\n .getAllConditionalStyles()\n .filter((s) => s.areas.some((a) => a.workbookName === workbookName)),\n cellStyles: deps.styleManager\n .getAllCellStyles()\n .filter((s) => s.areas.some((a) => a.workbookName === workbookName)),\n };\n\n // Capture sheet-level named expressions\n const sheetExpressions = namedExpressions.sheetExpressions.get(workbookName);\n if (sheetExpressions) {\n for (const [sheetName, expressions] of sheetExpressions) {\n snapshot.namedExpressions.sheetLevel.set(sheetName, new Map(expressions));\n }\n }\n\n return snapshot;\n}\n\n/**\n * Remove a workbook and all its associated data.\n */\nfunction removeWorkbook(\n deps: StructureCommandDeps,\n workbookName: string\n): void {\n deps.workbookManager.removeWorkbook(workbookName);\n deps.namedExpressionManager.removeWorkbook(workbookName);\n deps.tableManager.removeWorkbook(workbookName);\n deps.styleManager.removeWorkbookStyles(workbookName);\n deps.referenceManager.invalidateWorkbook(workbookName);\n}\n\n/**\n * Rename a workbook across all managers.\n */\nfunction renameWorkbookAcrossManagers(\n deps: StructureCommandDeps,\n oldName: string,\n newName: string\n): CellAddress[] {\n deps.workbookManager.renameWorkbook({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.namedExpressionManager.renameWorkbook({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.tableManager.updateTablesForWorkbookRename({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.styleManager.updateWorkbookName(oldName, newName);\n const changedCells = deps.workbookManager.updateAllFormulas((formula) =>\n deps.renameWorkbookInFormula({\n formula,\n oldWorkbookName: oldName,\n newWorkbookName: newName,\n })\n );\n deps.referenceManager.updateWorkbookName(oldName, newName);\n deps.apiSchemaManager.updateForWorkbookRename(oldName, newName);\n return changedCells;\n}\n\n/**\n * Rename a sheet across all managers.\n */\nfunction renameSheetAcrossManagers(\n deps: StructureCommandDeps,\n opts: { workbookName: string; sheetName: string; newSheetName: string }\n): CellAddress[] {\n deps.workbookManager.renameSheet(opts);\n deps.namedExpressionManager.renameSheet(opts);\n deps.tableManager.updateTablesForSheetRename(opts);\n deps.styleManager.updateSheetName(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n const changedCells = deps.workbookManager.updateAllFormulas((formula) =>\n deps.renameSheetInFormula({\n formula,\n oldSheetName: opts.sheetName,\n newSheetName: opts.newSheetName,\n })\n );\n deps.referenceManager.updateSheetName(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n deps.apiSchemaManager.updateForSheetRename(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n return changedCells;\n}\n\nfunction getWorkbookSnapshotResourceKeys(\n workbookName: string,\n snapshot: WorkbookSnapshot | undefined\n): string[] {\n const resourceKeys = new Set<string>([getWorkbookResourceKey(workbookName)]);\n if (!snapshot) {\n return Array.from(resourceKeys);\n }\n\n for (const tableName of snapshot.tables.keys()) {\n resourceKeys.add(getTableResourceKey({ workbookName, tableName }));\n }\n for (const name of snapshot.namedExpressions.workbookLevel.keys()) {\n resourceKeys.add(\n getNamedExpressionResourceKey({ expressionName: name, workbookName })\n );\n }\n for (const [sheetName, expressions] of snapshot.namedExpressions.sheetLevel) {\n resourceKeys.add(getSheetResourceKey({ workbookName, sheetName }));\n for (const name of expressions.keys()) {\n resourceKeys.add(\n getNamedExpressionResourceKey({\n expressionName: name,\n workbookName,\n sheetName,\n })\n );\n }\n }\n\n return Array.from(resourceKeys);\n}\n\nfunction getSheetSnapshotResourceKeys(\n workbookName: string,\n sheetName: string,\n snapshot: SheetSnapshot | undefined\n): string[] {\n const resourceKeys = new Set<string>([\n getWorkbookResourceKey(workbookName),\n getSheetResourceKey({ workbookName, sheetName }),\n ]);\n if (!snapshot) {\n return Array.from(resourceKeys);\n }\n\n for (const tableName of snapshot.tables.keys()) {\n resourceKeys.add(getTableResourceKey({ workbookName, tableName }));\n }\n for (const name of snapshot.namedExpressions.keys()) {\n resourceKeys.add(\n getNamedExpressionResourceKey({\n expressionName: name,\n workbookName,\n sheetName,\n })\n );\n }\n\n return Array.from(resourceKeys);\n}\n\n/**\n * Restore tables from a snapshot.\n */\nfunction restoreTables(\n tableManager: TableManager,\n tables: Map<string, TableDefinition>,\n workbookName: string\n): void {\n for (const [tableName, table] of tables) {\n tableManager.addTable({\n workbookName,\n tableName,\n sheetName: table.sheetName,\n start: `${String.fromCharCode(65 + table.start.colIndex)}${\n table.start.rowIndex + 1\n }`,\n numRows: table.endRow,\n numCols: table.headers.size,\n getCellValue: () => undefined,\n });\n }\n}\n\n/**\n * Restore styles from a snapshot.\n */\nfunction restoreStyles(\n styleManager: StyleManager,\n conditionalStyles: ConditionalStyle[],\n cellStyles: DirectCellStyle[]\n): void {\n for (const style of conditionalStyles) {\n styleManager.addConditionalStyle(style);\n }\n for (const style of cellStyles) {\n styleManager.addCellStyle(style);\n }\n}\n\n/**\n * Command to remove a workbook.\n */\nexport class RemoveWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: WorkbookSnapshot | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string\n ) {}\n\n execute(): void {\n this.snapshot = captureWorkbookSnapshot(this.deps, this.workbookName);\n removeWorkbook(this.deps, this.workbookName);\n const resourceKeys = getWorkbookSnapshotResourceKeys(\n this.workbookName,\n this.snapshot\n );\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys,\n removedScopes: [{ type: \"workbook\", workbookName: this.workbookName }],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys,\n };\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Restore workbook structure\n this.deps.workbookManager.addWorkbook(this.workbookName);\n this.deps.namedExpressionManager.addWorkbook(this.workbookName);\n this.deps.tableManager.addWorkbook(this.workbookName);\n\n // Restore sheets\n for (const [sheetName, sheet] of this.snapshot.workbook.sheets) {\n this.deps.workbookManager.addSheet({\n workbookName: this.workbookName,\n sheetName,\n });\n this.deps.namedExpressionManager.addSheet({\n workbookName: this.workbookName,\n sheetName,\n });\n this.deps.workbookManager.setSheetContent(\n { workbookName: this.workbookName, sheetName },\n sheet.content\n );\n }\n\n // Restore named expressions\n for (const [name, expr] of this.snapshot.namedExpressions.workbookLevel) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.workbookName,\n });\n }\n for (const [sheetName, expressions] of this.snapshot.namedExpressions.sheetLevel) {\n for (const [name, expr] of expressions) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.workbookName,\n sheetName,\n });\n }\n }\n\n // Restore tables and styles\n restoreTables(this.deps.tableManager, this.snapshot.tables, this.workbookName);\n restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_WORKBOOK,\n payload: { workbookName: this.workbookName },\n };\n }\n}\n\n/**\n * Command to rename a workbook.\n */\nexport class RenameWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: WorkbookSnapshot | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string,\n private newWorkbookName: string\n ) {}\n\n execute(): void {\n this.snapshot = captureWorkbookSnapshot(this.deps, this.workbookName);\n const changedCells = renameWorkbookAcrossManagers(\n this.deps,\n this.workbookName,\n this.newWorkbookName\n );\n this.executeFootprint = {\n touchedCells: changedCells.map((address) => ({\n address,\n beforeKind: \"formula\" as const,\n afterKind: \"formula\" as const,\n })),\n resourceKeys: Array.from(\n new Set([\n ...getWorkbookSnapshotResourceKeys(this.workbookName, this.snapshot),\n ...getWorkbookSnapshotResourceKeys(this.newWorkbookName, this.snapshot),\n ])\n ),\n };\n }\n\n undo(): void {\n const changedCells = renameWorkbookAcrossManagers(\n this.deps,\n this.newWorkbookName,\n this.workbookName\n );\n this.undoFootprint = {\n touchedCells: changedCells.map((address) => ({\n address,\n beforeKind: \"formula\" as const,\n afterKind: \"formula\" as const,\n })),\n resourceKeys: Array.from(\n new Set([\n ...getWorkbookSnapshotResourceKeys(this.workbookName, this.snapshot),\n ...getWorkbookSnapshotResourceKeys(this.newWorkbookName, this.snapshot),\n ])\n ),\n };\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_WORKBOOK,\n payload: {\n workbookName: this.workbookName,\n newWorkbookName: this.newWorkbookName,\n },\n };\n }\n}\n\n/**\n * Command to clone a workbook.\n * Undo simply removes the cloned workbook.\n */\nexport class CloneWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private fromWorkbookName: string,\n private toWorkbookName: string\n ) {}\n\n execute(): void {\n const {\n workbookManager,\n namedExpressionManager,\n tableManager,\n styleManager,\n renameWorkbookInFormula,\n } = this.deps;\n\n // Check if source workbook exists\n const sourceWorkbook = workbookManager\n .getWorkbooks()\n .get(this.fromWorkbookName);\n if (!sourceWorkbook) {\n throw new Error(`Source workbook \"${this.fromWorkbookName}\" not found`);\n }\n\n // Check if target workbook name already exists\n if (workbookManager.getWorkbooks().has(this.toWorkbookName)) {\n throw new Error(\n `Target workbook \"${this.toWorkbookName}\" already exists`\n );\n }\n\n // Create new workbook\n workbookManager.addWorkbook(this.toWorkbookName);\n namedExpressionManager.addWorkbook(this.toWorkbookName);\n tableManager.addWorkbook(this.toWorkbookName);\n\n // Clone all sheets from source workbook\n for (const [sheetName, sheet] of sourceWorkbook.sheets) {\n // Add sheet to target workbook\n workbookManager.addSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n namedExpressionManager.addSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n\n // Copy all cell content\n workbookManager.setSheetContent(\n { workbookName: this.toWorkbookName, sheetName: sheetName },\n new Map(sheet.content)\n );\n\n // Copy all cell metadata\n const targetSheet = workbookManager.getSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n if (targetSheet) {\n targetSheet.metadata = new Map(sheet.metadata);\n\n // Copy sheet metadata\n if (sheet.sheetMetadata !== undefined) {\n targetSheet.sheetMetadata = structuredClone(sheet.sheetMetadata);\n }\n }\n }\n\n // Copy workbook metadata\n const targetWorkbook = workbookManager\n .getWorkbooks()\n .get(this.toWorkbookName);\n if (targetWorkbook && sourceWorkbook.workbookMetadata !== undefined) {\n targetWorkbook.workbookMetadata = structuredClone(\n sourceWorkbook.workbookMetadata\n );\n }\n\n // Clone workbook-scoped named expressions\n const allExpressions = namedExpressionManager.getNamedExpressions();\n const sourceWorkbookExpressions = allExpressions.workbookExpressions.get(\n this.fromWorkbookName\n );\n if (sourceWorkbookExpressions) {\n for (const [expressionName, expression] of sourceWorkbookExpressions) {\n namedExpressionManager.addNamedExpression({\n expressionName,\n expression: expression.expression,\n workbookName: this.toWorkbookName,\n });\n }\n }\n\n // Clone sheet-scoped named expressions\n const sourceSheetExpressions = allExpressions.sheetExpressions.get(\n this.fromWorkbookName\n );\n if (sourceSheetExpressions) {\n for (const [sheetName, sheetExpressions] of sourceSheetExpressions) {\n for (const [expressionName, expression] of sheetExpressions) {\n namedExpressionManager.addNamedExpression({\n expressionName,\n expression: expression.expression,\n workbookName: this.toWorkbookName,\n sheetName,\n });\n }\n }\n }\n\n // Clone tables\n const sourceTables = tableManager.tables.get(this.fromWorkbookName);\n if (sourceTables) {\n for (const [tableName] of sourceTables) {\n tableManager.copyTable(\n { workbookName: this.fromWorkbookName, tableName },\n { workbookName: this.toWorkbookName, tableName }\n );\n }\n }\n\n // Clone conditional styles\n const allConditionalStyles = styleManager.getAllConditionalStyles();\n for (const style of allConditionalStyles) {\n if (\n style.areas.some((area) => area.workbookName === this.fromWorkbookName)\n ) {\n const newStyle: ConditionalStyle = {\n ...style,\n areas: style.areas.map((area) =>\n area.workbookName === this.fromWorkbookName\n ? { ...area, workbookName: this.toWorkbookName }\n : area\n ),\n };\n styleManager.addConditionalStyle(newStyle);\n }\n }\n\n // Clone cell styles\n const allCellStyles = styleManager.getAllCellStyles();\n for (const style of allCellStyles) {\n if (\n style.areas.some((area) => area.workbookName === this.fromWorkbookName)\n ) {\n const newStyle: DirectCellStyle = {\n ...style,\n areas: style.areas.map((area) =>\n area.workbookName === this.fromWorkbookName\n ? { ...area, workbookName: this.toWorkbookName }\n : area\n ),\n };\n styleManager.addCellStyle(newStyle);\n }\n }\n\n // Update formulas in cloned workbook that reference the source workbook\n workbookManager.updateFormulasForWorkbook(this.toWorkbookName, (formula) =>\n renameWorkbookInFormula({\n formula,\n oldWorkbookName: this.fromWorkbookName,\n newWorkbookName: this.toWorkbookName,\n })\n );\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [getWorkbookResourceKey(this.toWorkbookName)],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: [getWorkbookResourceKey(this.toWorkbookName)],\n removedScopes: [{ type: \"workbook\", workbookName: this.toWorkbookName }],\n };\n }\n\n undo(): void {\n // Undo clone = remove the cloned workbook\n removeWorkbook(this.deps, this.toWorkbookName);\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.CLONE_WORKBOOK,\n payload: {\n fromWorkbookName: this.fromWorkbookName,\n toWorkbookName: this.toWorkbookName,\n },\n };\n }\n}\n\n// ============================================================================\n// Sheet Commands\n// ============================================================================\n\n/**\n * Command to add a sheet.\n */\nexport class AddSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: { workbookName: string; sheetName: string }\n ) {}\n\n execute(): void {\n this.deps.workbookManager.addSheet(this.opts);\n this.deps.namedExpressionManager.addSheet(this.opts);\n const resourceKey = getSheetResourceKey(this.opts);\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey, getWorkbookResourceKey(this.opts.workbookName)],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey, getWorkbookResourceKey(this.opts.workbookName)],\n removedScopes: [{ type: \"sheet\", ...this.opts }],\n };\n }\n\n undo(): void {\n this.deps.workbookManager.removeSheet(this.opts);\n this.deps.namedExpressionManager.removeSheet(this.opts);\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_SHEET,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Captured state of a sheet for undo purposes.\n */\ninterface SheetSnapshot {\n sheet: Sheet;\n namedExpressions: Map<string, NamedExpression>;\n tables: Map<string, TableDefinition>;\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Command to remove a sheet.\n */\nexport class RemoveSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: SheetSnapshot | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: { workbookName: string; sheetName: string }\n ) {}\n\n execute(): void {\n // Capture sheet state before removal\n const sheet = this.deps.workbookManager.getSheet(this.opts);\n if (sheet) {\n const namedExpressions =\n this.deps.namedExpressionManager.getNamedExpressions();\n const sheetExpressions =\n namedExpressions.sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName) || new Map();\n\n // Get tables on this sheet\n const allTables = this.deps.tableManager.getTables(\n this.opts.workbookName\n );\n const sheetTables = new Map<string, TableDefinition>();\n for (const [name, table] of allTables) {\n if (table.sheetName === this.opts.sheetName) {\n sheetTables.set(name, table);\n }\n }\n\n this.snapshot = {\n sheet: {\n name: sheet.name,\n index: sheet.index,\n content: new Map(sheet.content),\n metadata: new Map(sheet.metadata),\n sheetMetadata: sheet.sheetMetadata,\n },\n namedExpressions: new Map(sheetExpressions),\n tables: sheetTables,\n conditionalStyles: this.deps.styleManager\n .getAllConditionalStyles()\n .filter((s) =>\n s.areas.some(\n (a) =>\n a.workbookName === this.opts.workbookName &&\n a.sheetName === this.opts.sheetName\n )\n ),\n cellStyles: this.deps.styleManager\n .getAllCellStyles()\n .filter((s) =>\n s.areas.some(\n (a) =>\n a.workbookName === this.opts.workbookName &&\n a.sheetName === this.opts.sheetName\n )\n ),\n };\n }\n\n // Execute removal\n this.deps.workbookManager.removeSheet(this.opts);\n this.deps.namedExpressionManager.removeSheet(this.opts);\n this.deps.tableManager.removeSheet(this.opts);\n this.deps.styleManager.removeSheetStyles(\n this.opts.workbookName,\n this.opts.sheetName\n );\n this.deps.referenceManager.invalidateSheet(\n this.opts.workbookName,\n this.opts.sheetName\n );\n const resourceKeys = getSheetSnapshotResourceKeys(\n this.opts.workbookName,\n this.opts.sheetName,\n this.snapshot\n );\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys,\n removedScopes: [{ type: \"sheet\", ...this.opts }],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys,\n };\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Restore sheet structure\n this.deps.workbookManager.addSheet(this.opts);\n this.deps.namedExpressionManager.addSheet(this.opts);\n this.deps.workbookManager.setSheetContent(this.opts, this.snapshot.sheet.content);\n\n // Restore named expressions\n for (const [name, expr] of this.snapshot.namedExpressions) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n });\n }\n\n // Restore tables and styles\n restoreTables(this.deps.tableManager, this.snapshot.tables, this.opts.workbookName);\n restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_SHEET,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a sheet.\n */\nexport class RenameSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: SheetSnapshot | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: {\n workbookName: string;\n sheetName: string;\n newSheetName: string;\n }\n ) {}\n\n execute(): void {\n const namedExpressions =\n this.deps.namedExpressionManager.getNamedExpressions().sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName) || new Map();\n const tables = new Map<string, TableDefinition>();\n for (const [name, table] of this.deps.tableManager.getTables(\n this.opts.workbookName\n )) {\n if (table.sheetName === this.opts.sheetName) {\n tables.set(name, table);\n }\n }\n const sheet = this.deps.workbookManager.getSheet(this.opts);\n this.snapshot = {\n sheet: sheet!,\n namedExpressions: new Map(namedExpressions),\n tables,\n conditionalStyles: [],\n cellStyles: [],\n };\n const changedCells = renameSheetAcrossManagers(this.deps, this.opts);\n this.executeFootprint = {\n touchedCells: changedCells.map((address) => ({\n address,\n beforeKind: \"formula\" as const,\n afterKind: \"formula\" as const,\n })),\n resourceKeys: Array.from(\n new Set([\n ...getSheetSnapshotResourceKeys(\n this.opts.workbookName,\n this.opts.sheetName,\n this.snapshot\n ),\n ...getSheetSnapshotResourceKeys(\n this.opts.workbookName,\n this.opts.newSheetName,\n this.snapshot\n ),\n ])\n ),\n };\n }\n\n undo(): void {\n const changedCells = renameSheetAcrossManagers(this.deps, {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.newSheetName,\n newSheetName: this.opts.sheetName,\n });\n this.undoFootprint = {\n touchedCells: changedCells.map((address) => ({\n address,\n beforeKind: \"formula\" as const,\n afterKind: \"formula\" as const,\n })),\n resourceKeys: Array.from(\n new Set([\n ...getSheetSnapshotResourceKeys(\n this.opts.workbookName,\n this.opts.sheetName,\n this.snapshot\n ),\n ...getSheetSnapshotResourceKeys(\n this.opts.workbookName,\n this.opts.newSheetName,\n this.snapshot\n ),\n ])\n ),\n };\n }\n\n getInvalidationFootprint(phase: \"execute\" | \"undo\"): MutationInvalidation {\n return phase === \"execute\" ? this.executeFootprint : this.undoFootprint;\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_SHEET,\n payload: this.opts,\n };\n }\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "554A345527A0A48864756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "C8800F36A772754F64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -216,4 +226,4 @@ class ClearCellStylesCommand {
216
226
  }
217
227
  }
218
228
 
219
- //# debugId=3BA09CD35A4191FC64756E2164756E21
229
+ //# debugId=EA3A67D302A9882B64756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * Style Commands - Commands that modify conditional and direct cell styles\n *\n * These commands do NOT require re-evaluation after execution.\n * They only affect styling, not cell values or formulas.\n */\n\nimport type { StyleManager } from \"../managers/style-manager.cjs\";\nimport type { ConditionalStyle, DirectCellStyle, RangeAddress } from \"../types.cjs\";\nimport type { EngineCommand, EngineAction } from \"./types.cjs\";\nimport { ActionTypes } from \"./types.cjs\";\n\n/**\n * Command to add a conditional style.\n */\nexport class AddConditionalStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private addedIndex: number = -1;\n\n constructor(\n private styleManager: StyleManager,\n private style: ConditionalStyle\n ) {}\n\n execute(): void {\n // Track the index where it's added\n const allStyles = this.styleManager.getAllConditionalStyles();\n this.addedIndex = allStyles.length;\n this.styleManager.addConditionalStyle(this.style);\n }\n\n undo(): void {\n // Remove by finding and removing the style\n // Since we know the style object, we can find it\n const allStyles = this.styleManager.getAllConditionalStyles();\n const workbookName = this.style.areas[0]?.workbookName;\n if (workbookName) {\n // Find the index of this style in the workbook's styles\n let workbookStyleIndex = 0;\n for (let i = 0; i < allStyles.length; i++) {\n const s = allStyles[i];\n if (s?.areas.some((a) => a.workbookName === workbookName)) {\n if (s === this.style || i === this.addedIndex) {\n this.styleManager.removeConditionalStyle(workbookName, workbookStyleIndex);\n return;\n }\n workbookStyleIndex++;\n }\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_CONDITIONAL_STYLE,\n payload: { style: this.style },\n };\n }\n}\n\n/**\n * Command to remove a conditional style.\n */\nexport class RemoveConditionalStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private removedStyle: ConditionalStyle | undefined;\n\n constructor(\n private styleManager: StyleManager,\n private workbookName: string,\n private index: number\n ) {}\n\n execute(): void {\n // Capture the style before removal\n const allStyles = this.styleManager.getAllConditionalStyles();\n const workbookStyles = allStyles.filter((s) =>\n s.areas.some((a) => a.workbookName === this.workbookName)\n );\n this.removedStyle = workbookStyles[this.index];\n\n this.styleManager.removeConditionalStyle(this.workbookName, this.index);\n }\n\n undo(): void {\n if (!this.removedStyle) return;\n this.styleManager.addConditionalStyle(this.removedStyle);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_CONDITIONAL_STYLE,\n payload: {\n workbookName: this.workbookName,\n index: this.index,\n },\n };\n }\n}\n\n/**\n * Command to add a direct cell style.\n */\nexport class AddCellStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private addedIndex: number = -1;\n\n constructor(\n private styleManager: StyleManager,\n private style: DirectCellStyle\n ) {}\n\n execute(): void {\n // Track the index where it's added\n const allStyles = this.styleManager.getAllCellStyles();\n this.addedIndex = allStyles.length;\n this.styleManager.addCellStyle(this.style);\n }\n\n undo(): void {\n // Remove by finding and removing the style\n const allStyles = this.styleManager.getAllCellStyles();\n const workbookName = this.style.areas[0]?.workbookName;\n if (workbookName) {\n // Find the index of this style in the workbook's styles\n let workbookStyleIndex = 0;\n for (let i = 0; i < allStyles.length; i++) {\n const s = allStyles[i];\n if (s?.areas.some((a) => a.workbookName === workbookName)) {\n if (s === this.style || i === this.addedIndex) {\n this.styleManager.removeCellStyle(workbookName, workbookStyleIndex);\n return;\n }\n workbookStyleIndex++;\n }\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_CELL_STYLE,\n payload: { style: this.style },\n };\n }\n}\n\n/**\n * Command to remove a direct cell style.\n */\nexport class RemoveCellStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private removedStyle: DirectCellStyle | undefined;\n\n constructor(\n private styleManager: StyleManager,\n private workbookName: string,\n private index: number\n ) {}\n\n execute(): void {\n // Capture the style before removal\n const allStyles = this.styleManager.getAllCellStyles();\n const workbookStyles = allStyles.filter((s) =>\n s.areas.some((a) => a.workbookName === this.workbookName)\n );\n this.removedStyle = workbookStyles[this.index];\n\n this.styleManager.removeCellStyle(this.workbookName, this.index);\n }\n\n undo(): void {\n if (!this.removedStyle) return;\n this.styleManager.addCellStyle(this.removedStyle);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_CELL_STYLE,\n payload: {\n workbookName: this.workbookName,\n index: this.index,\n },\n };\n }\n}\n\n/**\n * Captured styles for undo purposes.\n */\ninterface ClearedStylesSnapshot {\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Command to clear cell styles in a range.\n */\nexport class ClearCellStylesCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private snapshot: ClearedStylesSnapshot | undefined;\n\n constructor(\n private styleManager: StyleManager,\n private range: RangeAddress\n ) {}\n\n execute(): void {\n // Capture affected styles before clearing\n this.snapshot = {\n conditionalStyles: this.styleManager.getConditionalStylesIntersectingWithRange(\n this.range\n ),\n cellStyles: this.styleManager.getStylesIntersectingWithRange(this.range),\n };\n\n this.styleManager.clearCellStyles(this.range);\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Note: This is a simplified undo - it re-adds the styles\n // A more sophisticated implementation would restore the exact state\n // including any range adjustments that clearCellStyles made\n for (const style of this.snapshot.conditionalStyles) {\n this.styleManager.addConditionalStyle(style);\n }\n for (const style of this.snapshot.cellStyles) {\n this.styleManager.addCellStyle(style);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.CLEAR_CELL_STYLES,\n payload: { range: this.range },\n };\n }\n}\n\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "3BA09CD35A4191FC64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "EA3A67D302A9882B64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -37,11 +47,14 @@ __export(exports_table_commands, {
37
47
  });
38
48
  module.exports = __toCommonJS(exports_table_commands);
39
49
  var import_types = require("./types.cjs");
50
+ var import_resource_keys = require("../resource-keys.cjs");
40
51
 
41
52
  class AddTableCommand {
42
53
  deps;
43
54
  props;
44
55
  requiresReevaluation = true;
56
+ executeFootprint = import_types.emptyMutationInvalidation();
57
+ undoFootprint = import_types.emptyMutationInvalidation();
45
58
  constructor(deps, props) {
46
59
  this.deps = deps;
47
60
  this.props = props;
@@ -51,6 +64,15 @@ class AddTableCommand {
51
64
  ...this.props,
52
65
  getCellValue: this.deps.getCellValue
53
66
  });
67
+ const resourceKey = import_resource_keys.getTableResourceKey({
68
+ workbookName: this.props.workbookName,
69
+ tableName: this.props.tableName
70
+ });
71
+ this.executeFootprint = {
72
+ touchedCells: [],
73
+ resourceKeys: [resourceKey]
74
+ };
75
+ this.undoFootprint = this.executeFootprint;
54
76
  }
55
77
  undo() {
56
78
  this.deps.tableManager.removeTable({
@@ -58,6 +80,9 @@ class AddTableCommand {
58
80
  tableName: this.props.tableName
59
81
  });
60
82
  }
83
+ getInvalidationFootprint(phase) {
84
+ return phase === "execute" ? this.executeFootprint : this.undoFootprint;
85
+ }
61
86
  toAction() {
62
87
  return {
63
88
  type: import_types.ActionTypes.ADD_TABLE,
@@ -71,6 +96,8 @@ class RemoveTableCommand {
71
96
  opts;
72
97
  requiresReevaluation = true;
73
98
  removedTable;
99
+ executeFootprint = import_types.emptyMutationInvalidation();
100
+ undoFootprint = import_types.emptyMutationInvalidation();
74
101
  constructor(deps, opts) {
75
102
  this.deps = deps;
76
103
  this.opts = opts;
@@ -81,6 +108,15 @@ class RemoveTableCommand {
81
108
  name: this.opts.tableName
82
109
  });
83
110
  this.deps.tableManager.removeTable(this.opts);
111
+ const resourceKey = import_resource_keys.getTableResourceKey({
112
+ workbookName: this.opts.workbookName,
113
+ tableName: this.opts.tableName
114
+ });
115
+ this.executeFootprint = {
116
+ touchedCells: [],
117
+ resourceKeys: [resourceKey]
118
+ };
119
+ this.undoFootprint = this.executeFootprint;
84
120
  }
85
121
  undo() {
86
122
  if (!this.removedTable)
@@ -97,6 +133,9 @@ class RemoveTableCommand {
97
133
  getCellValue: this.deps.getCellValue
98
134
  });
99
135
  }
136
+ getInvalidationFootprint(phase) {
137
+ return phase === "execute" ? this.executeFootprint : this.undoFootprint;
138
+ }
100
139
  toAction() {
101
140
  return {
102
141
  type: import_types.ActionTypes.REMOVE_TABLE,
@@ -111,6 +150,8 @@ class RenameTableCommand {
111
150
  oldName;
112
151
  newName;
113
152
  requiresReevaluation = true;
153
+ executeFootprint = import_types.emptyMutationInvalidation();
154
+ undoFootprint = import_types.emptyMutationInvalidation();
114
155
  constructor(deps, workbookName, oldName, newName) {
115
156
  this.deps = deps;
116
157
  this.workbookName = workbookName;
@@ -122,18 +163,57 @@ class RenameTableCommand {
122
163
  oldName: this.oldName,
123
164
  newName: this.newName
124
165
  });
125
- this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameTableInFormula(formula, this.oldName, this.newName));
126
- this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameTableInFormula(formula, this.oldName, this.newName));
166
+ const changedCells = this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameTableInFormula(formula, this.oldName, this.newName));
167
+ const changedNamedExpressions = this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameTableInFormula(formula, this.oldName, this.newName));
127
168
  this.deps.apiSchemaManager.updateForTableRename(this.workbookName, this.oldName, this.newName);
169
+ this.executeFootprint = {
170
+ touchedCells: changedCells.map((address) => ({
171
+ address,
172
+ beforeKind: "formula",
173
+ afterKind: "formula"
174
+ })),
175
+ resourceKeys: [
176
+ import_resource_keys.getTableResourceKey({
177
+ workbookName: this.workbookName,
178
+ tableName: this.oldName
179
+ }),
180
+ import_resource_keys.getTableResourceKey({
181
+ workbookName: this.workbookName,
182
+ tableName: this.newName
183
+ }),
184
+ ...changedNamedExpressions
185
+ ]
186
+ };
128
187
  }
129
188
  undo() {
130
189
  this.deps.tableManager.renameTable(this.workbookName, {
131
190
  oldName: this.newName,
132
191
  newName: this.oldName
133
192
  });
134
- this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameTableInFormula(formula, this.newName, this.oldName));
135
- this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameTableInFormula(formula, this.newName, this.oldName));
193
+ const changedCells = this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameTableInFormula(formula, this.newName, this.oldName));
194
+ const changedNamedExpressions = this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameTableInFormula(formula, this.newName, this.oldName));
136
195
  this.deps.apiSchemaManager.updateForTableRename(this.workbookName, this.newName, this.oldName);
196
+ this.undoFootprint = {
197
+ touchedCells: changedCells.map((address) => ({
198
+ address,
199
+ beforeKind: "formula",
200
+ afterKind: "formula"
201
+ })),
202
+ resourceKeys: [
203
+ import_resource_keys.getTableResourceKey({
204
+ workbookName: this.workbookName,
205
+ tableName: this.oldName
206
+ }),
207
+ import_resource_keys.getTableResourceKey({
208
+ workbookName: this.workbookName,
209
+ tableName: this.newName
210
+ }),
211
+ ...changedNamedExpressions
212
+ ]
213
+ };
214
+ }
215
+ getInvalidationFootprint(phase) {
216
+ return phase === "execute" ? this.executeFootprint : this.undoFootprint;
137
217
  }
138
218
  toAction() {
139
219
  return {
@@ -152,6 +232,8 @@ class UpdateTableCommand {
152
232
  opts;
153
233
  requiresReevaluation = true;
154
234
  previousTable;
235
+ executeFootprint = import_types.emptyMutationInvalidation();
236
+ undoFootprint = import_types.emptyMutationInvalidation();
155
237
  constructor(deps, opts) {
156
238
  this.deps = deps;
157
239
  this.opts = opts;
@@ -165,6 +247,15 @@ class UpdateTableCommand {
165
247
  ...this.opts,
166
248
  getCellValue: this.deps.getCellValue
167
249
  });
250
+ const resourceKey = import_resource_keys.getTableResourceKey({
251
+ workbookName: this.opts.workbookName,
252
+ tableName: this.opts.tableName
253
+ });
254
+ this.executeFootprint = {
255
+ touchedCells: [],
256
+ resourceKeys: [resourceKey]
257
+ };
258
+ this.undoFootprint = this.executeFootprint;
168
259
  }
169
260
  undo() {
170
261
  if (!this.previousTable)
@@ -181,6 +272,9 @@ class UpdateTableCommand {
181
272
  getCellValue: this.deps.getCellValue
182
273
  });
183
274
  }
275
+ getInvalidationFootprint(phase) {
276
+ return phase === "execute" ? this.executeFootprint : this.undoFootprint;
277
+ }
184
278
  toAction() {
185
279
  return {
186
280
  type: import_types.ActionTypes.UPDATE_TABLE,
@@ -194,6 +288,8 @@ class ResetTablesCommand {
194
288
  newTables;
195
289
  requiresReevaluation = true;
196
290
  previousTables;
291
+ executeFootprint = import_types.emptyMutationInvalidation();
292
+ undoFootprint = import_types.emptyMutationInvalidation();
197
293
  constructor(deps, newTables) {
198
294
  this.deps = deps;
199
295
  this.newTables = newTables;
@@ -204,12 +300,37 @@ class ResetTablesCommand {
204
300
  this.previousTables.set(workbookName, new Map(tables));
205
301
  }
206
302
  this.deps.tableManager.resetTables(this.newTables);
303
+ const resourceKeys = new Set;
304
+ for (const [workbookName, tables] of this.previousTables ?? []) {
305
+ for (const tableName of tables.keys()) {
306
+ resourceKeys.add(import_resource_keys.getTableResourceKey({
307
+ workbookName,
308
+ tableName
309
+ }));
310
+ }
311
+ }
312
+ for (const [workbookName, tables] of this.newTables) {
313
+ for (const tableName of tables.keys()) {
314
+ resourceKeys.add(import_resource_keys.getTableResourceKey({
315
+ workbookName,
316
+ tableName
317
+ }));
318
+ }
319
+ }
320
+ this.executeFootprint = {
321
+ touchedCells: [],
322
+ resourceKeys: Array.from(resourceKeys)
323
+ };
324
+ this.undoFootprint = this.executeFootprint;
207
325
  }
208
326
  undo() {
209
327
  if (!this.previousTables)
210
328
  return;
211
329
  this.deps.tableManager.resetTables(this.previousTables);
212
330
  }
331
+ getInvalidationFootprint(phase) {
332
+ return phase === "execute" ? this.executeFootprint : this.undoFootprint;
333
+ }
213
334
  toAction() {
214
335
  return {
215
336
  type: import_types.ActionTypes.RESET_TABLES,
@@ -223,4 +344,4 @@ class ResetTablesCommand {
223
344
  }
224
345
  }
225
346
 
226
- //# debugId=9756D299A175406A64756E2164756E21
347
+ //# debugId=A5F238226D88790C64756E2164756E21