@ricsam/formula-engine 0.2.2 → 0.2.4
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.
- package/dist/cjs/core/ast-traverser.cjs +19 -9
- package/dist/cjs/core/ast-traverser.cjs.map +2 -2
- package/dist/cjs/core/autofill-utils.cjs +19 -9
- package/dist/cjs/core/autofill-utils.cjs.map +2 -2
- package/dist/cjs/core/cell-mover.cjs +19 -9
- package/dist/cjs/core/cell-mover.cjs.map +2 -2
- package/dist/cjs/core/commands/command-executor.cjs +24 -13
- package/dist/cjs/core/commands/command-executor.cjs.map +3 -3
- package/dist/cjs/core/commands/content-commands.cjs +292 -9
- package/dist/cjs/core/commands/content-commands.cjs.map +3 -3
- package/dist/cjs/core/commands/metadata-commands.cjs +19 -9
- package/dist/cjs/core/commands/metadata-commands.cjs.map +2 -2
- package/dist/cjs/core/commands/named-expression-commands.cjs +138 -13
- package/dist/cjs/core/commands/named-expression-commands.cjs.map +3 -3
- package/dist/cjs/core/commands/structure-commands.cjs +216 -15
- package/dist/cjs/core/commands/structure-commands.cjs.map +3 -3
- package/dist/cjs/core/commands/style-commands.cjs +19 -9
- package/dist/cjs/core/commands/style-commands.cjs.map +2 -2
- package/dist/cjs/core/commands/table-commands.cjs +134 -13
- package/dist/cjs/core/commands/table-commands.cjs.map +3 -3
- package/dist/cjs/core/commands/types.cjs +36 -9
- package/dist/cjs/core/commands/types.cjs.map +3 -3
- package/dist/cjs/core/engine-snapshot.cjs +51 -0
- package/dist/cjs/core/engine-snapshot.cjs.map +10 -0
- package/dist/cjs/core/engine.cjs +51 -34
- package/dist/cjs/core/engine.cjs.map +3 -3
- package/dist/cjs/core/managers/cache-manager.cjs +123 -9
- package/dist/cjs/core/managers/cache-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/copy-manager.cjs +19 -9
- package/dist/cjs/core/managers/copy-manager.cjs.map +2 -2
- package/dist/cjs/core/managers/dependency-manager.cjs +697 -9
- package/dist/cjs/core/managers/dependency-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/dependency-node.cjs +14 -8
- package/dist/cjs/core/managers/dependency-node.cjs.map +1 -1
- package/dist/cjs/core/managers/evaluation-manager.cjs +296 -11
- package/dist/cjs/core/managers/evaluation-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/event-manager.cjs +19 -9
- package/dist/cjs/core/managers/event-manager.cjs.map +2 -2
- package/dist/cjs/core/managers/frontier-dependency-manager.cjs +65 -12
- package/dist/cjs/core/managers/frontier-dependency-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/isDependencyNode.cjs +19 -9
- package/dist/cjs/core/managers/isDependencyNode.cjs.map +2 -2
- package/dist/cjs/core/managers/named-expression-manager.cjs +121 -29
- package/dist/cjs/core/managers/named-expression-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/range-eval-order-builder.cjs +19 -9
- package/dist/cjs/core/managers/range-eval-order-builder.cjs.map +2 -2
- package/dist/cjs/core/managers/reference-manager.cjs +25 -9
- package/dist/cjs/core/managers/reference-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/schema-manager.cjs +19 -9
- package/dist/cjs/core/managers/schema-manager.cjs.map +2 -2
- package/dist/cjs/core/managers/style-manager.cjs +28 -9
- package/dist/cjs/core/managers/style-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/table-manager.cjs +27 -11
- package/dist/cjs/core/managers/table-manager.cjs.map +3 -3
- package/dist/cjs/core/managers/workbook-manager.cjs +38 -13
- package/dist/cjs/core/managers/workbook-manager.cjs.map +3 -3
- package/dist/cjs/core/map-serializer.cjs +19 -9
- package/dist/cjs/core/map-serializer.cjs.map +2 -2
- package/dist/cjs/core/named-expression-renamer.cjs +19 -9
- package/dist/cjs/core/named-expression-renamer.cjs.map +2 -2
- package/dist/cjs/core/resource-keys.cjs +67 -0
- package/dist/cjs/core/resource-keys.cjs.map +10 -0
- package/dist/cjs/core/schema/cell-orm.cjs +19 -9
- package/dist/cjs/core/schema/cell-orm.cjs.map +2 -2
- package/dist/cjs/core/schema/grid-orm.cjs +19 -9
- package/dist/cjs/core/schema/grid-orm.cjs.map +2 -2
- package/dist/cjs/core/schema/schema-builder.cjs +19 -9
- package/dist/cjs/core/schema/schema-builder.cjs.map +2 -2
- package/dist/cjs/core/schema/schema-helpers.cjs +19 -9
- package/dist/cjs/core/schema/schema-helpers.cjs.map +2 -2
- package/dist/cjs/core/schema/schema.cjs +19 -9
- package/dist/cjs/core/schema/schema.cjs.map +2 -2
- package/dist/cjs/core/schema/table-orm.cjs +19 -9
- package/dist/cjs/core/schema/table-orm.cjs.map +2 -2
- package/dist/cjs/core/sheet-renamer.cjs +19 -9
- package/dist/cjs/core/sheet-renamer.cjs.map +2 -2
- package/dist/cjs/core/sheet-utils.cjs +19 -9
- package/dist/cjs/core/sheet-utils.cjs.map +2 -2
- package/dist/cjs/core/table-renamer.cjs +19 -9
- package/dist/cjs/core/table-renamer.cjs.map +2 -2
- package/dist/cjs/core/types.cjs +19 -9
- package/dist/cjs/core/types.cjs.map +2 -2
- package/dist/cjs/core/utils/color-utils.cjs +19 -9
- package/dist/cjs/core/utils/color-utils.cjs.map +2 -2
- package/dist/cjs/core/utils/range-serializer.cjs +19 -9
- package/dist/cjs/core/utils/range-serializer.cjs.map +2 -2
- package/dist/cjs/core/utils/range-utils.cjs +19 -9
- package/dist/cjs/core/utils/range-utils.cjs.map +2 -2
- package/dist/cjs/core/utils/spreadsheet-visualizer.cjs +19 -9
- package/dist/cjs/core/utils/spreadsheet-visualizer.cjs.map +2 -2
- package/dist/cjs/core/utils.cjs +19 -9
- package/dist/cjs/core/utils.cjs.map +2 -2
- package/dist/cjs/core/workbook-renamer.cjs +19 -9
- package/dist/cjs/core/workbook-renamer.cjs.map +2 -2
- package/dist/cjs/debug/flags.cjs +19 -9
- package/dist/cjs/debug/flags.cjs.map +2 -2
- package/dist/cjs/evaluator/arithmetic/add/add.cjs +19 -9
- package/dist/cjs/evaluator/arithmetic/add/add.cjs.map +2 -2
- package/dist/cjs/evaluator/arithmetic/divide/divide.cjs +19 -9
- package/dist/cjs/evaluator/arithmetic/divide/divide.cjs.map +2 -2
- package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs +19 -9
- package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs.map +2 -2
- package/dist/cjs/evaluator/arithmetic/power/power.cjs +19 -9
- package/dist/cjs/evaluator/arithmetic/power/power.cjs.map +2 -2
- package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs +19 -9
- package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs.map +2 -2
- package/dist/cjs/evaluator/comparison/equals.cjs +19 -9
- package/dist/cjs/evaluator/comparison/equals.cjs.map +2 -2
- package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs +19 -9
- package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs.map +2 -2
- package/dist/cjs/evaluator/comparison/greater-than.cjs +19 -9
- package/dist/cjs/evaluator/comparison/greater-than.cjs.map +2 -2
- package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs +19 -9
- package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs.map +2 -2
- package/dist/cjs/evaluator/comparison/less-than.cjs +19 -9
- package/dist/cjs/evaluator/comparison/less-than.cjs.map +2 -2
- package/dist/cjs/evaluator/comparison/not-equals.cjs +19 -9
- package/dist/cjs/evaluator/comparison/not-equals.cjs.map +2 -2
- package/dist/cjs/evaluator/concatenation/concatenate.cjs +19 -9
- package/dist/cjs/evaluator/concatenation/concatenate.cjs.map +2 -2
- package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs +19 -9
- package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs.map +2 -2
- package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs +35 -9
- package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs.map +3 -3
- package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs +22 -9
- package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs.map +3 -3
- package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs +35 -11
- package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs.map +3 -3
- package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs +61 -0
- package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs.map +10 -0
- package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs +19 -9
- package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs.map +2 -2
- package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs +22 -9
- package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs.map +3 -3
- package/dist/cjs/evaluator/evaluate-scalar-operator.cjs +19 -9
- package/dist/cjs/evaluator/evaluate-scalar-operator.cjs.map +2 -2
- package/dist/cjs/evaluator/evaluation-context.cjs +19 -9
- package/dist/cjs/evaluator/evaluation-context.cjs.map +2 -2
- package/dist/cjs/evaluator/evaluation-error.cjs +19 -9
- package/dist/cjs/evaluator/evaluation-error.cjs.map +2 -2
- package/dist/cjs/evaluator/formula-evaluator.cjs +55 -12
- package/dist/cjs/evaluator/formula-evaluator.cjs.map +3 -3
- package/dist/cjs/evaluator/range-evaluation-node.cjs +35 -11
- package/dist/cjs/evaluator/range-evaluation-node.cjs.map +3 -3
- package/dist/cjs/functions/_template/template.cjs +19 -9
- package/dist/cjs/functions/_template/template.cjs.map +2 -2
- package/dist/cjs/functions/array/sequence/sequence.cjs +19 -9
- package/dist/cjs/functions/array/sequence/sequence.cjs.map +2 -2
- package/dist/cjs/functions/criteria-parser.cjs +19 -9
- package/dist/cjs/functions/criteria-parser.cjs.map +2 -2
- package/dist/cjs/functions/criteria-utils.cjs +19 -9
- package/dist/cjs/functions/criteria-utils.cjs.map +2 -2
- package/dist/cjs/functions/function-registry.cjs +19 -9
- package/dist/cjs/functions/function-registry.cjs.map +2 -2
- package/dist/cjs/functions/function-utils.cjs +19 -9
- package/dist/cjs/functions/function-utils.cjs.map +2 -2
- package/dist/cjs/functions/information/cell/cell.cjs +19 -9
- package/dist/cjs/functions/information/cell/cell.cjs.map +2 -2
- package/dist/cjs/functions/information/column/column.cjs +19 -9
- package/dist/cjs/functions/information/column/column.cjs.map +2 -2
- package/dist/cjs/functions/information/row/row.cjs +19 -9
- package/dist/cjs/functions/information/row/row.cjs.map +2 -2
- package/dist/cjs/functions/logical/and/and.cjs +19 -9
- package/dist/cjs/functions/logical/and/and.cjs.map +2 -2
- package/dist/cjs/functions/logical/if/if.cjs +19 -9
- package/dist/cjs/functions/logical/if/if.cjs.map +2 -2
- package/dist/cjs/functions/logical/iferror/iferror.cjs +19 -9
- package/dist/cjs/functions/logical/iferror/iferror.cjs.map +2 -2
- package/dist/cjs/functions/logical/or/or.cjs +19 -9
- package/dist/cjs/functions/logical/or/or.cjs.map +2 -2
- package/dist/cjs/functions/lookup/count/count-utils.cjs +19 -9
- package/dist/cjs/functions/lookup/count/count-utils.cjs.map +2 -2
- package/dist/cjs/functions/lookup/count/count.cjs +19 -9
- package/dist/cjs/functions/lookup/count/count.cjs.map +2 -2
- package/dist/cjs/functions/lookup/count/countif.cjs +19 -9
- package/dist/cjs/functions/lookup/count/countif.cjs.map +2 -2
- package/dist/cjs/functions/lookup/count/countifs.cjs +19 -9
- package/dist/cjs/functions/lookup/count/countifs.cjs.map +2 -2
- package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +19 -9
- package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +2 -2
- package/dist/cjs/functions/lookup/match/match.cjs +21 -10
- package/dist/cjs/functions/lookup/match/match.cjs.map +3 -3
- package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +19 -9
- package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +2 -2
- package/dist/cjs/functions/math/average/average-utils.cjs +19 -9
- package/dist/cjs/functions/math/average/average-utils.cjs.map +2 -2
- package/dist/cjs/functions/math/average/average.cjs +19 -9
- package/dist/cjs/functions/math/average/average.cjs.map +2 -2
- package/dist/cjs/functions/math/average/averageif.cjs +19 -9
- package/dist/cjs/functions/math/average/averageif.cjs.map +2 -2
- package/dist/cjs/functions/math/average/averageifs.cjs +19 -9
- package/dist/cjs/functions/math/average/averageifs.cjs.map +2 -2
- package/dist/cjs/functions/math/ceiling/ceiling.cjs +19 -9
- package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +2 -2
- package/dist/cjs/functions/math/max/max-utils.cjs +19 -9
- package/dist/cjs/functions/math/max/max-utils.cjs.map +2 -2
- package/dist/cjs/functions/math/max/max.cjs +19 -9
- package/dist/cjs/functions/math/max/max.cjs.map +2 -2
- package/dist/cjs/functions/math/max/maxif.cjs +19 -9
- package/dist/cjs/functions/math/max/maxif.cjs.map +2 -2
- package/dist/cjs/functions/math/max/maxifs.cjs +19 -9
- package/dist/cjs/functions/math/max/maxifs.cjs.map +2 -2
- package/dist/cjs/functions/math/min/min-utils.cjs +19 -9
- package/dist/cjs/functions/math/min/min-utils.cjs.map +2 -2
- package/dist/cjs/functions/math/min/min.cjs +19 -9
- package/dist/cjs/functions/math/min/min.cjs.map +2 -2
- package/dist/cjs/functions/math/min/minif.cjs +19 -9
- package/dist/cjs/functions/math/min/minif.cjs.map +2 -2
- package/dist/cjs/functions/math/min/minifs.cjs +19 -9
- package/dist/cjs/functions/math/min/minifs.cjs.map +2 -2
- package/dist/cjs/functions/math/sum/sum.cjs +19 -9
- package/dist/cjs/functions/math/sum/sum.cjs.map +2 -2
- package/dist/cjs/functions/math/sum/sumif.cjs +19 -9
- package/dist/cjs/functions/math/sum/sumif.cjs.map +2 -2
- package/dist/cjs/functions/math/sum/sumifs.cjs +19 -9
- package/dist/cjs/functions/math/sum/sumifs.cjs.map +2 -2
- package/dist/cjs/functions/math/sum/summation-utils.cjs +19 -9
- package/dist/cjs/functions/math/sum/summation-utils.cjs.map +2 -2
- package/dist/cjs/functions/reference/address/address.cjs +19 -9
- package/dist/cjs/functions/reference/address/address.cjs.map +2 -2
- package/dist/cjs/functions/reference/indirect/indirect.cjs +19 -9
- package/dist/cjs/functions/reference/indirect/indirect.cjs.map +2 -2
- package/dist/cjs/functions/reference/offset/offset.cjs +19 -9
- package/dist/cjs/functions/reference/offset/offset.cjs.map +2 -2
- package/dist/cjs/functions/text/concatenate/concatenate.cjs +21 -9
- package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +3 -3
- package/dist/cjs/functions/text/exact/exact.cjs +19 -9
- package/dist/cjs/functions/text/exact/exact.cjs.map +2 -2
- package/dist/cjs/functions/text/find/find.cjs +19 -9
- package/dist/cjs/functions/text/find/find.cjs.map +2 -2
- package/dist/cjs/functions/text/left/left.cjs +19 -9
- package/dist/cjs/functions/text/left/left.cjs.map +2 -2
- package/dist/cjs/functions/text/len/len.cjs +19 -9
- package/dist/cjs/functions/text/len/len.cjs.map +2 -2
- package/dist/cjs/functions/text/mid/mid.cjs +19 -9
- package/dist/cjs/functions/text/mid/mid.cjs.map +2 -2
- package/dist/cjs/functions/text/right/right.cjs +19 -9
- package/dist/cjs/functions/text/right/right.cjs.map +2 -2
- package/dist/cjs/functions/text/text-helpers.cjs +19 -9
- package/dist/cjs/functions/text/text-helpers.cjs.map +2 -2
- package/dist/cjs/functions/text/textjoin/textjoin.cjs +19 -9
- package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +2 -2
- package/dist/cjs/lib.cjs +24 -13
- package/dist/cjs/lib.cjs.map +2 -2
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/parser/ast.cjs +19 -9
- package/dist/cjs/parser/ast.cjs.map +2 -2
- package/dist/cjs/parser/formatter.cjs +19 -9
- package/dist/cjs/parser/formatter.cjs.map +2 -2
- package/dist/cjs/parser/grammar.cjs +19 -9
- package/dist/cjs/parser/grammar.cjs.map +2 -2
- package/dist/cjs/parser/lexer.cjs +19 -9
- package/dist/cjs/parser/lexer.cjs.map +2 -2
- package/dist/cjs/parser/parser.cjs +19 -9
- package/dist/cjs/parser/parser.cjs.map +2 -2
- package/dist/cjs/react/hooks.cjs +31 -10
- package/dist/cjs/react/hooks.cjs.map +2 -2
- package/dist/mjs/core/commands/command-executor.mjs +7 -5
- package/dist/mjs/core/commands/command-executor.mjs.map +3 -3
- package/dist/mjs/core/commands/content-commands.mjs +279 -2
- package/dist/mjs/core/commands/content-commands.mjs.map +3 -3
- package/dist/mjs/core/commands/named-expression-commands.mjs +121 -6
- package/dist/mjs/core/commands/named-expression-commands.mjs.map +3 -3
- package/dist/mjs/core/commands/structure-commands.mjs +204 -8
- package/dist/mjs/core/commands/structure-commands.mjs.map +3 -3
- package/dist/mjs/core/commands/table-commands.mjs +117 -6
- package/dist/mjs/core/commands/table-commands.mjs.map +3 -3
- package/dist/mjs/core/commands/types.mjs +18 -1
- package/dist/mjs/core/commands/types.mjs.map +3 -3
- package/dist/mjs/core/engine-snapshot.mjs +11 -0
- package/dist/mjs/core/engine-snapshot.mjs.map +10 -0
- package/dist/mjs/core/engine.mjs +35 -26
- package/dist/mjs/core/engine.mjs.map +3 -3
- package/dist/mjs/core/managers/cache-manager.mjs +105 -1
- package/dist/mjs/core/managers/cache-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/dependency-manager.mjs +687 -2
- package/dist/mjs/core/managers/dependency-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/evaluation-manager.mjs +283 -4
- package/dist/mjs/core/managers/evaluation-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/frontier-dependency-manager.mjs +47 -4
- package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/named-expression-manager.mjs +104 -21
- package/dist/mjs/core/managers/named-expression-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/reference-manager.mjs +7 -1
- package/dist/mjs/core/managers/reference-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/style-manager.mjs +10 -1
- package/dist/mjs/core/managers/style-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/table-manager.mjs +14 -4
- package/dist/mjs/core/managers/table-manager.mjs.map +3 -3
- package/dist/mjs/core/managers/workbook-manager.mjs +20 -5
- package/dist/mjs/core/managers/workbook-manager.mjs.map +3 -3
- package/dist/mjs/core/resource-keys.mjs +27 -0
- package/dist/mjs/core/resource-keys.mjs.map +10 -0
- package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs +17 -1
- package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +3 -3
- package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +4 -1
- package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +3 -3
- package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +17 -3
- package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +3 -3
- package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs +21 -0
- package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs.map +10 -0
- package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs +4 -1
- package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs.map +3 -3
- package/dist/mjs/evaluator/formula-evaluator.mjs +42 -4
- package/dist/mjs/evaluator/formula-evaluator.mjs.map +3 -3
- package/dist/mjs/evaluator/range-evaluation-node.mjs +17 -3
- package/dist/mjs/evaluator/range-evaluation-node.mjs.map +3 -3
- package/dist/mjs/functions/lookup/match/match.mjs +3 -2
- package/dist/mjs/functions/lookup/match/match.mjs.map +3 -3
- package/dist/mjs/functions/text/concatenate/concatenate.mjs +3 -1
- package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/types/core/commands/content-commands.d.ts +31 -1
- package/dist/types/core/commands/named-expression-commands.d.ts +16 -1
- package/dist/types/core/commands/structure-commands.d.ts +24 -1
- package/dist/types/core/commands/table-commands.d.ts +16 -1
- package/dist/types/core/commands/types.d.ts +25 -1
- package/dist/types/core/engine-snapshot.d.ts +138 -0
- package/dist/types/core/engine.d.ts +1 -0
- package/dist/types/core/managers/cache-manager.d.ts +9 -0
- package/dist/types/core/managers/dependency-manager.d.ts +56 -1
- package/dist/types/core/managers/dependency-node.d.ts +2 -1
- package/dist/types/core/managers/evaluation-manager.d.ts +21 -1
- package/dist/types/core/managers/frontier-dependency-manager.d.ts +12 -2
- package/dist/types/core/managers/named-expression-manager.d.ts +17 -1
- package/dist/types/core/managers/reference-manager.d.ts +3 -0
- package/dist/types/core/managers/style-manager.d.ts +3 -0
- package/dist/types/core/managers/table-manager.d.ts +3 -0
- package/dist/types/core/managers/workbook-manager.d.ts +4 -1
- package/dist/types/core/resource-keys.d.ts +14 -0
- package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +5 -0
- package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +1 -0
- package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +8 -1
- package/dist/types/evaluator/dependency-nodes/resource-dependency-node.d.ts +8 -0
- package/dist/types/evaluator/dependency-nodes/virtual-cell-value-node.d.ts +1 -0
- package/dist/types/evaluator/range-evaluation-node.d.ts +8 -1
- package/package.json +6 -2
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/core/commands/content-commands.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * Content Commands - Commands that modify cell/sheet content\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { WorkbookManager } from \"../managers/workbook-manager.mjs\";\nimport type { CopyManager } from \"../managers/copy-manager.mjs\";\nimport type {\n CellAddress,\n CopyCellsOptions,\n RangeAddress,\n SerializedCellValue,\n} from \"../types.mjs\";\nimport type { EngineCommand, EngineAction } from \"./types.mjs\";\nimport { ActionTypes } from \"./types.mjs\";\nimport { getCellReference, parseCellReference } from \"../utils.mjs\";\n\n/**\n * Command to set a single cell's content.\n */\nexport class SetCellContentCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousValue: SerializedCellValue | undefined;\n private hadPreviousValue = false;\n\n constructor(\n private workbookManager: WorkbookManager,\n private address: CellAddress,\n private newContent: SerializedCellValue\n ) {}\n\n execute(): void {\n // Capture previous value\n const sheet = this.workbookManager.getSheet({\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n });\n if (sheet) {\n const key = getCellReference(this.address);\n this.hadPreviousValue = sheet.content.has(key);\n this.previousValue = sheet.content.get(key);\n }\n\n this.workbookManager.setCellContent(this.address, this.newContent);\n }\n\n undo(): void {\n if (this.hadPreviousValue) {\n this.workbookManager.setCellContent(this.address, this.previousValue);\n } else {\n this.workbookManager.setCellContent(this.address, undefined);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_CELL_CONTENT,\n payload: {\n address: this.address,\n content: this.newContent,\n },\n };\n }\n}\n\n/**\n * Command to set an entire sheet's content.\n */\nexport class SetSheetContentCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousContent: Map<string, SerializedCellValue> | undefined;\n\n constructor(\n private workbookManager: WorkbookManager,\n private opts: { workbookName: string; sheetName: string },\n private newContent: Map<string, SerializedCellValue>\n ) {}\n\n execute(): void {\n // Capture previous content\n const sheet = this.workbookManager.getSheet(this.opts);\n if (sheet) {\n this.previousContent = new Map(sheet.content);\n }\n\n this.workbookManager.setSheetContent(this.opts, this.newContent);\n }\n\n undo(): void {\n if (this.previousContent) {\n this.workbookManager.setSheetContent(this.opts, this.previousContent);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_SHEET_CONTENT,\n payload: {\n opts: this.opts,\n content: Array.from(this.newContent.entries()),\n },\n };\n }\n}\n\n/**\n * Command to clear a range of cells.\n */\nexport class ClearRangeCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private clearedCells: Map<string, SerializedCellValue> = new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private address: RangeAddress\n ) {}\n\n execute(): void {\n // Capture cells before clearing using the optimized iterator\n // This handles infinite ranges by only iterating over cells that actually exist\n try {\n for (const cellAddress of this.workbookManager.iterateCellsInRange(this.address)) {\n const key = getCellReference(cellAddress);\n const value = this.workbookManager.getCellContent(cellAddress);\n if (value !== undefined) {\n this.clearedCells.set(key, value);\n }\n }\n } catch {\n // Sheet doesn't exist, nothing to capture\n }\n\n this.workbookManager.clearSpreadsheetRange(this.address);\n }\n\n undo(): void {\n // Restore cleared cells\n for (const [key, value] of this.clearedCells) {\n const { colIndex, rowIndex } = parseCellReference(key);\n this.workbookManager.setCellContent(\n {\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n colIndex,\n rowIndex,\n },\n value\n );\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.CLEAR_RANGE,\n payload: {\n address: this.address,\n },\n };\n }\n}\n\n/**\n * Snapshot of a cell for undo purposes.\n */\ninterface CellSnapshot {\n address: CellAddress;\n content: SerializedCellValue | undefined;\n metadata: unknown | undefined;\n}\n\n/**\n * Command to paste cells.\n */\nexport class PasteCellsCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private targetSnapshots: CellSnapshot[] = [];\n private sourceSnapshots: CellSnapshot[] = [];\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private source: CellAddress[],\n private target: CellAddress,\n private options: CopyCellsOptions\n ) {}\n\n execute(): void {\n // Calculate target cells and capture their state\n if (this.source.length > 0) {\n const firstSource = this.source[0]!;\n const colOffset = this.target.colIndex - firstSource.colIndex;\n const rowOffset = this.target.rowIndex - firstSource.rowIndex;\n\n // Capture target cells before paste\n for (const sourceCell of this.source) {\n const targetCell: CellAddress = {\n workbookName: this.target.workbookName,\n sheetName: this.target.sheetName,\n colIndex: sourceCell.colIndex + colOffset,\n rowIndex: sourceCell.rowIndex + rowOffset,\n };\n\n const sheet = this.workbookManager.getSheet({\n workbookName: targetCell.workbookName,\n sheetName: targetCell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(targetCell);\n this.targetSnapshots.push({\n address: targetCell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n\n // If cut operation, capture source cells too\n if (this.options.cut) {\n for (const sourceCell of this.source) {\n const sheet = this.workbookManager.getSheet({\n workbookName: sourceCell.workbookName,\n sheetName: sourceCell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(sourceCell);\n this.sourceSnapshots.push({\n address: sourceCell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n }\n }\n\n this.copyManager.pasteCells(this.source, this.target, this.options);\n }\n\n undo(): void {\n // Restore target cells\n for (const snapshot of this.targetSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n\n // Restore source cells if it was a cut operation\n if (this.options.cut) {\n for (const snapshot of this.sourceSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.PASTE_CELLS,\n payload: {\n source: this.source,\n target: this.target,\n options: this.options,\n },\n };\n }\n}\n\n/**\n * Command to fill areas with a seed range.\n */\nexport class FillAreasCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private targetSnapshots: Map<string, CellSnapshot> = new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private seedRange: RangeAddress,\n private targetRanges: RangeAddress[],\n private options: CopyCellsOptions\n ) {}\n\n execute(): void {\n // Capture all target cells before filling\n for (const targetRange of this.targetRanges) {\n const sheet = this.workbookManager.getSheet({\n workbookName: targetRange.workbookName,\n sheetName: targetRange.sheetName,\n });\n\n if (sheet) {\n const { start, end } = targetRange.range;\n const endCol = end.col.type === \"number\" ? end.col.value : start.col + 100;\n const endRow = end.row.type === \"number\" ? end.row.value : start.row + 100;\n\n for (let col = start.col; col <= endCol; col++) {\n for (let row = start.row; row <= endRow; row++) {\n const address: CellAddress = {\n workbookName: targetRange.workbookName,\n sheetName: targetRange.sheetName,\n colIndex: col,\n rowIndex: row,\n };\n const key = getCellReference(address);\n const fullKey = `${targetRange.workbookName}:${targetRange.sheetName}:${key}`;\n\n if (!this.targetSnapshots.has(fullKey)) {\n this.targetSnapshots.set(fullKey, {\n address,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n }\n }\n }\n\n this.copyManager.fillAreas(this.seedRange, this.targetRanges, this.options);\n }\n\n undo(): void {\n // Restore all target cells\n for (const snapshot of this.targetSnapshots.values()) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.FILL_AREAS,\n payload: {\n seedRange: this.seedRange,\n targetRanges: this.targetRanges,\n options: this.options,\n },\n };\n }\n}\n\n/**\n * Command to move a single cell.\n */\nexport class MoveCellCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private sourceSnapshot: CellSnapshot | undefined;\n private targetSnapshot: CellSnapshot | undefined;\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private source: CellAddress,\n private target: CellAddress\n ) {}\n\n execute(): void {\n // Capture source cell\n const sourceSheet = this.workbookManager.getSheet({\n workbookName: this.source.workbookName,\n sheetName: this.source.sheetName,\n });\n\n if (sourceSheet) {\n const key = getCellReference(this.source);\n this.sourceSnapshot = {\n address: this.source,\n content: sourceSheet.content.get(key),\n metadata: sourceSheet.metadata.get(key),\n };\n }\n\n // Capture target cell\n const targetSheet = this.workbookManager.getSheet({\n workbookName: this.target.workbookName,\n sheetName: this.target.sheetName,\n });\n\n if (targetSheet) {\n const key = getCellReference(this.target);\n this.targetSnapshot = {\n address: this.target,\n content: targetSheet.content.get(key),\n metadata: targetSheet.metadata.get(key),\n };\n }\n\n // Execute the move via paste with cut option\n this.copyManager.pasteCells([this.source], this.target, {\n cut: true,\n type: \"formula\",\n include: \"all\",\n });\n }\n\n undo(): void {\n // Restore source cell\n if (this.sourceSnapshot) {\n this.workbookManager.setCellContent(\n this.sourceSnapshot.address,\n this.sourceSnapshot.content\n );\n if (this.sourceSnapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(\n this.sourceSnapshot.address,\n this.sourceSnapshot.metadata\n );\n }\n }\n\n // Restore target cell\n if (this.targetSnapshot) {\n this.workbookManager.setCellContent(\n this.targetSnapshot.address,\n this.targetSnapshot.content\n );\n if (this.targetSnapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(\n this.targetSnapshot.address,\n this.targetSnapshot.metadata\n );\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.MOVE_CELL,\n payload: {\n source: this.source,\n target: this.target,\n },\n };\n }\n}\n\n/**\n * Command to move a range of cells.\n */\nexport class MoveRangeCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private sourceSnapshots: CellSnapshot[] = [];\n private targetSnapshots: CellSnapshot[] = [];\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private sourceRange: RangeAddress,\n private target: CellAddress\n ) {}\n\n execute(): void {\n // Expand source range to cells\n const sourceCells = this.copyManager.expandRangeToCells(this.sourceRange);\n\n // Capture source cells\n for (const cell of sourceCells) {\n const sheet = this.workbookManager.getSheet({\n workbookName: cell.workbookName,\n sheetName: cell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(cell);\n this.sourceSnapshots.push({\n address: cell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n\n // Calculate and capture target cells\n if (sourceCells.length > 0) {\n const firstSource = sourceCells[0]!;\n const colOffset = this.target.colIndex - firstSource.colIndex;\n const rowOffset = this.target.rowIndex - firstSource.rowIndex;\n\n for (const sourceCell of sourceCells) {\n const targetCell: CellAddress = {\n workbookName: this.target.workbookName,\n sheetName: this.target.sheetName,\n colIndex: sourceCell.colIndex + colOffset,\n rowIndex: sourceCell.rowIndex + rowOffset,\n };\n\n const sheet = this.workbookManager.getSheet({\n workbookName: targetCell.workbookName,\n sheetName: targetCell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(targetCell);\n this.targetSnapshots.push({\n address: targetCell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n }\n\n // Execute the move\n this.copyManager.pasteCells(sourceCells, this.target, {\n cut: true,\n type: \"formula\",\n include: \"all\",\n });\n }\n\n undo(): void {\n // Restore source cells\n for (const snapshot of this.sourceSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n\n // Restore target cells\n for (const snapshot of this.targetSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.MOVE_RANGE,\n payload: {\n sourceRange: this.sourceRange,\n target: this.target,\n },\n };\n }\n}\n\n/**\n * Command to auto-fill ranges based on a seed pattern.\n * Captures the entire affected area for undo.\n */\nexport class AutoFillCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousContent: Map<string, SerializedCellValue> = new Map();\n private previousMetadata: Map<string, unknown> = new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private styleManager: import(\"../managers/style-manager.mjs\").StyleManager,\n private autoFillManager: import(\"../autofill-utils.mjs\").AutoFill,\n private opts: { sheetName: string; workbookName: string },\n private seedRange: import(\"../types.mjs\").SpreadsheetRange,\n private fillRanges: import(\"../types.mjs\").SpreadsheetRange[],\n private direction: import(\"@ricsam/selection-manager\").FillDirection\n ) {}\n\n execute(): void {\n // Capture current content and metadata in fill ranges before modification\n for (const fillRange of this.fillRanges) {\n if (fillRange.end.col.type === \"infinity\" || fillRange.end.row.type === \"infinity\") {\n continue; // Skip infinite ranges\n }\n \n const startCol = fillRange.start.col;\n const startRow = fillRange.start.row;\n const endCol = fillRange.end.col.value;\n const endRow = fillRange.end.row.value;\n\n for (let row = startRow; row <= endRow; row++) {\n for (let col = startCol; col <= endCol; col++) {\n const key = getCellReference({ colIndex: col, rowIndex: row });\n const address = {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n colIndex: col,\n rowIndex: row,\n };\n \n const content = this.workbookManager.getCellContent(address);\n if (content !== undefined) {\n this.previousContent.set(key, content);\n }\n \n const metadata = this.workbookManager.getCellMetadata(address);\n if (metadata !== undefined) {\n this.previousMetadata.set(key, metadata);\n }\n }\n }\n }\n\n // Execute the auto-fill operation\n this.autoFillManager.fill(this.opts, this.seedRange, this.fillRanges, this.direction);\n }\n\n undo(): void {\n // Get current sheet content\n const currentContent = this.workbookManager.getSheetSerialized(this.opts);\n const newContent = new Map(currentContent);\n\n // Restore all fill range cells to their previous state\n for (const fillRange of this.fillRanges) {\n if (fillRange.end.col.type === \"infinity\" || fillRange.end.row.type === \"infinity\") {\n continue;\n }\n \n const startCol = fillRange.start.col;\n const startRow = fillRange.start.row;\n const endCol = fillRange.end.col.value;\n const endRow = fillRange.end.row.value;\n\n for (let row = startRow; row <= endRow; row++) {\n for (let col = startCol; col <= endCol; col++) {\n const key = getCellReference({ colIndex: col, rowIndex: row });\n const address = {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n colIndex: col,\n rowIndex: row,\n };\n \n // Restore content\n if (this.previousContent.has(key)) {\n newContent.set(key, this.previousContent.get(key)!);\n } else {\n newContent.delete(key);\n }\n \n // Restore metadata\n if (this.previousMetadata.has(key)) {\n this.workbookManager.setCellMetadata(address, this.previousMetadata.get(key));\n } else {\n this.workbookManager.setCellMetadata(address, undefined);\n }\n }\n }\n }\n\n // Apply restored content\n this.workbookManager.setSheetContent(this.opts, newContent);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.AUTO_FILL,\n payload: {\n opts: this.opts,\n seedRange: this.seedRange,\n fillRanges: this.fillRanges,\n direction: this.direction,\n },\n };\n }\n}\n\n"
|
|
5
|
+
"/**\n * Content Commands - Commands that modify cell/sheet content\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { WorkbookManager } from \"../managers/workbook-manager.mjs\";\nimport type { CopyManager } from \"../managers/copy-manager.mjs\";\nimport type {\n CellAddress,\n CopyCellsOptions,\n RangeAddress,\n SerializedCellValue,\n} from \"../types.mjs\";\nimport type {\n EngineCommand,\n EngineAction,\n MutationInvalidation,\n} from \"./types.mjs\";\nimport {\n ActionTypes,\n emptyMutationInvalidation,\n getSerializedCellValueKind,\n} from \"./types.mjs\";\nimport { getCellReference, parseCellReference } from \"../utils.mjs\";\n\nfunction buildTouchedCells(\n cells: Array<{\n address: CellAddress;\n before: SerializedCellValue | undefined;\n after: SerializedCellValue | undefined;\n }>\n): MutationInvalidation[\"touchedCells\"] {\n const deduped = new Map<\n string,\n {\n address: CellAddress;\n beforeKind: ReturnType<typeof getSerializedCellValueKind>;\n afterKind: ReturnType<typeof getSerializedCellValueKind>;\n }\n >();\n\n for (const cell of cells) {\n deduped.set(`${cell.address.workbookName}:${cell.address.sheetName}:${getCellReference(cell.address)}`, {\n address: cell.address,\n beforeKind: getSerializedCellValueKind(cell.before),\n afterKind: getSerializedCellValueKind(cell.after),\n });\n }\n\n return Array.from(deduped.values());\n}\n\nfunction getAddressKey(address: CellAddress): string {\n return `${address.workbookName}:${address.sheetName}:${getCellReference(address)}`;\n}\n\nfunction captureCellContents(\n workbookManager: WorkbookManager,\n addresses: CellAddress[]\n): Map<string, SerializedCellValue | undefined> {\n const contents = new Map<string, SerializedCellValue | undefined>();\n for (const address of addresses) {\n contents.set(getAddressKey(address), workbookManager.getCellContent(address));\n }\n return contents;\n}\n\n/**\n * Command to set a single cell's content.\n */\nexport class SetCellContentCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousValue: SerializedCellValue | undefined;\n private hadPreviousValue = false;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private workbookManager: WorkbookManager,\n private address: CellAddress,\n private newContent: SerializedCellValue\n ) {}\n\n execute(): void {\n // Capture previous value\n const sheet = this.workbookManager.getSheet({\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n });\n if (sheet) {\n const key = getCellReference(this.address);\n this.hadPreviousValue = sheet.content.has(key);\n this.previousValue = sheet.content.get(key);\n }\n\n this.workbookManager.setCellContent(this.address, this.newContent);\n this.executeFootprint = {\n touchedCells: buildTouchedCells([\n {\n address: this.address,\n before: this.previousValue,\n after: this.newContent,\n },\n ]),\n resourceKeys: [],\n };\n this.undoFootprint = {\n touchedCells: buildTouchedCells([\n {\n address: this.address,\n before: this.newContent,\n after: this.hadPreviousValue ? this.previousValue : undefined,\n },\n ]),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n if (this.hadPreviousValue) {\n this.workbookManager.setCellContent(this.address, this.previousValue);\n } else {\n this.workbookManager.setCellContent(this.address, undefined);\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.SET_CELL_CONTENT,\n payload: {\n address: this.address,\n content: this.newContent,\n },\n };\n }\n}\n\n/**\n * Command to set an entire sheet's content.\n */\nexport class SetSheetContentCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousContent: Map<string, SerializedCellValue> | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private workbookManager: WorkbookManager,\n private opts: { workbookName: string; sheetName: string },\n private newContent: Map<string, SerializedCellValue>\n ) {}\n\n execute(): void {\n // Capture previous content\n const sheet = this.workbookManager.getSheet(this.opts);\n if (sheet) {\n this.previousContent = new Map(sheet.content);\n }\n\n this.workbookManager.setSheetContent(this.opts, this.newContent);\n const touchedKeys = new Set<string>([\n ...Array.from(this.previousContent?.keys() ?? []),\n ...Array.from(this.newContent.keys()),\n ]);\n const touchedCells = buildTouchedCells(\n Array.from(touchedKeys, (key) => ({\n address: {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n ...parseCellReference(key),\n },\n before: this.previousContent?.get(key),\n after: this.newContent.get(key),\n }))\n );\n this.executeFootprint = {\n touchedCells,\n resourceKeys: [],\n };\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n Array.from(touchedKeys, (key) => ({\n address: {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n ...parseCellReference(key),\n },\n before: this.newContent.get(key),\n after: this.previousContent?.get(key),\n }))\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n if (this.previousContent) {\n this.workbookManager.setSheetContent(this.opts, this.previousContent);\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.SET_SHEET_CONTENT,\n payload: {\n opts: this.opts,\n content: Array.from(this.newContent.entries()),\n },\n };\n }\n}\n\n/**\n * Command to clear a range of cells.\n */\nexport class ClearRangeCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private clearedCells: Map<string, SerializedCellValue> = new Map();\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private workbookManager: WorkbookManager,\n private address: RangeAddress\n ) {}\n\n execute(): void {\n this.clearedCells.clear();\n // Capture cells before clearing using the optimized iterator\n // This handles infinite ranges by only iterating over cells that actually exist\n try {\n for (const cellAddress of this.workbookManager.iterateCellsInRange(this.address)) {\n const key = getCellReference(cellAddress);\n const value = this.workbookManager.getCellContent(cellAddress);\n if (value !== undefined) {\n this.clearedCells.set(key, value);\n }\n }\n } catch {\n // Sheet doesn't exist, nothing to capture\n }\n\n this.workbookManager.clearSpreadsheetRange(this.address);\n this.executeFootprint = {\n touchedCells: buildTouchedCells(\n Array.from(this.clearedCells.entries(), ([key, before]) => ({\n address: {\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n ...parseCellReference(key),\n },\n before,\n after: undefined,\n }))\n ),\n resourceKeys: [],\n };\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n Array.from(this.clearedCells.entries(), ([key, after]) => ({\n address: {\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n ...parseCellReference(key),\n },\n before: undefined,\n after,\n }))\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n // Restore cleared cells\n for (const [key, value] of this.clearedCells) {\n const { colIndex, rowIndex } = parseCellReference(key);\n this.workbookManager.setCellContent(\n {\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n colIndex,\n rowIndex,\n },\n value\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.CLEAR_RANGE,\n payload: {\n address: this.address,\n },\n };\n }\n}\n\n/**\n * Snapshot of a cell for undo purposes.\n */\ninterface CellSnapshot {\n address: CellAddress;\n content: SerializedCellValue | undefined;\n metadata: unknown | undefined;\n}\n\n/**\n * Command to paste cells.\n */\nexport class PasteCellsCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private targetSnapshots: CellSnapshot[] = [];\n private sourceSnapshots: CellSnapshot[] = [];\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n private executedContents: Map<string, SerializedCellValue | undefined> =\n new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private source: CellAddress[],\n private target: CellAddress,\n private options: CopyCellsOptions\n ) {}\n\n execute(): void {\n this.targetSnapshots = [];\n this.sourceSnapshots = [];\n this.executedContents.clear();\n // Calculate target cells and capture their state\n if (this.source.length > 0) {\n const firstSource = this.source[0]!;\n const colOffset = this.target.colIndex - firstSource.colIndex;\n const rowOffset = this.target.rowIndex - firstSource.rowIndex;\n\n // Capture target cells before paste\n for (const sourceCell of this.source) {\n const targetCell: CellAddress = {\n workbookName: this.target.workbookName,\n sheetName: this.target.sheetName,\n colIndex: sourceCell.colIndex + colOffset,\n rowIndex: sourceCell.rowIndex + rowOffset,\n };\n\n const sheet = this.workbookManager.getSheet({\n workbookName: targetCell.workbookName,\n sheetName: targetCell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(targetCell);\n this.targetSnapshots.push({\n address: targetCell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n\n // If cut operation, capture source cells too\n if (this.options.cut) {\n for (const sourceCell of this.source) {\n const sheet = this.workbookManager.getSheet({\n workbookName: sourceCell.workbookName,\n sheetName: sourceCell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(sourceCell);\n this.sourceSnapshots.push({\n address: sourceCell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n }\n }\n\n this.copyManager.pasteCells(this.source, this.target, this.options);\n const touchedAddresses = [\n ...this.targetSnapshots.map((snapshot) => snapshot.address),\n ...this.sourceSnapshots.map((snapshot) => snapshot.address),\n ];\n this.executedContents = captureCellContents(this.workbookManager, touchedAddresses);\n this.executeFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => {\n const beforeSnapshot =\n this.targetSnapshots.find(\n (snapshot) =>\n snapshot.address.workbookName === address.workbookName &&\n snapshot.address.sheetName === address.sheetName &&\n snapshot.address.colIndex === address.colIndex &&\n snapshot.address.rowIndex === address.rowIndex\n ) ??\n this.sourceSnapshots.find(\n (snapshot) =>\n snapshot.address.workbookName === address.workbookName &&\n snapshot.address.sheetName === address.sheetName &&\n snapshot.address.colIndex === address.colIndex &&\n snapshot.address.rowIndex === address.rowIndex\n );\n return {\n address,\n before: beforeSnapshot?.content,\n after: this.executedContents.get(getAddressKey(address)),\n };\n })\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n // Restore target cells\n for (const snapshot of this.targetSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n\n // Restore source cells if it was a cut operation\n if (this.options.cut) {\n for (const snapshot of this.sourceSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n }\n\n const touchedAddresses = [\n ...this.targetSnapshots.map((snapshot) => snapshot.address),\n ...this.sourceSnapshots.map((snapshot) => snapshot.address),\n ];\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => {\n return {\n address,\n before: this.executedContents.get(getAddressKey(address)),\n after: this.workbookManager.getCellContent(address),\n };\n })\n ),\n resourceKeys: [],\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.PASTE_CELLS,\n payload: {\n source: this.source,\n target: this.target,\n options: this.options,\n },\n };\n }\n}\n\n/**\n * Command to fill areas with a seed range.\n */\nexport class FillAreasCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private targetSnapshots: Map<string, CellSnapshot> = new Map();\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n private executedContents: Map<string, SerializedCellValue | undefined> =\n new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private seedRange: RangeAddress,\n private targetRanges: RangeAddress[],\n private options: CopyCellsOptions\n ) {}\n\n execute(): void {\n this.targetSnapshots.clear();\n this.executedContents.clear();\n // Capture all target cells before filling\n for (const targetRange of this.targetRanges) {\n const sheet = this.workbookManager.getSheet({\n workbookName: targetRange.workbookName,\n sheetName: targetRange.sheetName,\n });\n\n if (sheet) {\n const { start, end } = targetRange.range;\n const endCol = end.col.type === \"number\" ? end.col.value : start.col + 100;\n const endRow = end.row.type === \"number\" ? end.row.value : start.row + 100;\n\n for (let col = start.col; col <= endCol; col++) {\n for (let row = start.row; row <= endRow; row++) {\n const address: CellAddress = {\n workbookName: targetRange.workbookName,\n sheetName: targetRange.sheetName,\n colIndex: col,\n rowIndex: row,\n };\n const key = getCellReference(address);\n const fullKey = `${targetRange.workbookName}:${targetRange.sheetName}:${key}`;\n\n if (!this.targetSnapshots.has(fullKey)) {\n this.targetSnapshots.set(fullKey, {\n address,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n }\n }\n }\n\n this.copyManager.fillAreas(this.seedRange, this.targetRanges, this.options);\n const touchedAddresses = Array.from(this.targetSnapshots.values()).map(\n (snapshot) => snapshot.address\n );\n this.executedContents = captureCellContents(this.workbookManager, touchedAddresses);\n this.executeFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => ({\n address,\n before: this.targetSnapshots.get(getAddressKey(address))?.content,\n after: this.executedContents.get(getAddressKey(address)),\n }))\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n // Restore all target cells\n for (const snapshot of this.targetSnapshots.values()) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n\n const touchedAddresses = Array.from(this.targetSnapshots.values()).map(\n (snapshot) => snapshot.address\n );\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => ({\n address,\n before: this.executedContents.get(getAddressKey(address)),\n after: this.workbookManager.getCellContent(address),\n }))\n ),\n resourceKeys: [],\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.FILL_AREAS,\n payload: {\n seedRange: this.seedRange,\n targetRanges: this.targetRanges,\n options: this.options,\n },\n };\n }\n}\n\n/**\n * Command to move a single cell.\n */\nexport class MoveCellCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private sourceSnapshot: CellSnapshot | undefined;\n private targetSnapshot: CellSnapshot | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n private executedContents: Map<string, SerializedCellValue | undefined> =\n new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private source: CellAddress,\n private target: CellAddress\n ) {}\n\n execute(): void {\n this.sourceSnapshot = undefined;\n this.targetSnapshot = undefined;\n this.executedContents.clear();\n // Capture source cell\n const sourceSheet = this.workbookManager.getSheet({\n workbookName: this.source.workbookName,\n sheetName: this.source.sheetName,\n });\n\n if (sourceSheet) {\n const key = getCellReference(this.source);\n this.sourceSnapshot = {\n address: this.source,\n content: sourceSheet.content.get(key),\n metadata: sourceSheet.metadata.get(key),\n };\n }\n\n // Capture target cell\n const targetSheet = this.workbookManager.getSheet({\n workbookName: this.target.workbookName,\n sheetName: this.target.sheetName,\n });\n\n if (targetSheet) {\n const key = getCellReference(this.target);\n this.targetSnapshot = {\n address: this.target,\n content: targetSheet.content.get(key),\n metadata: targetSheet.metadata.get(key),\n };\n }\n\n // Execute the move via paste with cut option\n this.copyManager.pasteCells([this.source], this.target, {\n cut: true,\n type: \"formula\",\n include: \"all\",\n });\n const touchedAddresses = [this.source, this.target];\n this.executedContents = captureCellContents(this.workbookManager, touchedAddresses);\n this.executeFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => ({\n address,\n before:\n this.sourceSnapshot?.address === address\n ? this.sourceSnapshot.content\n : this.targetSnapshot?.content,\n after: this.executedContents.get(getAddressKey(address)),\n }))\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n // Restore source cell\n if (this.sourceSnapshot) {\n this.workbookManager.setCellContent(\n this.sourceSnapshot.address,\n this.sourceSnapshot.content\n );\n if (this.sourceSnapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(\n this.sourceSnapshot.address,\n this.sourceSnapshot.metadata\n );\n }\n }\n\n // Restore target cell\n if (this.targetSnapshot) {\n this.workbookManager.setCellContent(\n this.targetSnapshot.address,\n this.targetSnapshot.content\n );\n if (this.targetSnapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(\n this.targetSnapshot.address,\n this.targetSnapshot.metadata\n );\n }\n }\n\n const touchedAddresses = [this.source, this.target];\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => ({\n address,\n before: this.executedContents.get(getAddressKey(address)),\n after: this.workbookManager.getCellContent(address),\n }))\n ),\n resourceKeys: [],\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.MOVE_CELL,\n payload: {\n source: this.source,\n target: this.target,\n },\n };\n }\n}\n\n/**\n * Command to move a range of cells.\n */\nexport class MoveRangeCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private sourceSnapshots: CellSnapshot[] = [];\n private targetSnapshots: CellSnapshot[] = [];\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n private executedContents: Map<string, SerializedCellValue | undefined> =\n new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private copyManager: CopyManager,\n private sourceRange: RangeAddress,\n private target: CellAddress\n ) {}\n\n execute(): void {\n this.sourceSnapshots = [];\n this.targetSnapshots = [];\n this.executedContents.clear();\n // Expand source range to cells\n const sourceCells = this.copyManager.expandRangeToCells(this.sourceRange);\n\n // Capture source cells\n for (const cell of sourceCells) {\n const sheet = this.workbookManager.getSheet({\n workbookName: cell.workbookName,\n sheetName: cell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(cell);\n this.sourceSnapshots.push({\n address: cell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n\n // Calculate and capture target cells\n if (sourceCells.length > 0) {\n const firstSource = sourceCells[0]!;\n const colOffset = this.target.colIndex - firstSource.colIndex;\n const rowOffset = this.target.rowIndex - firstSource.rowIndex;\n\n for (const sourceCell of sourceCells) {\n const targetCell: CellAddress = {\n workbookName: this.target.workbookName,\n sheetName: this.target.sheetName,\n colIndex: sourceCell.colIndex + colOffset,\n rowIndex: sourceCell.rowIndex + rowOffset,\n };\n\n const sheet = this.workbookManager.getSheet({\n workbookName: targetCell.workbookName,\n sheetName: targetCell.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(targetCell);\n this.targetSnapshots.push({\n address: targetCell,\n content: sheet.content.get(key),\n metadata: sheet.metadata.get(key),\n });\n }\n }\n }\n\n // Execute the move\n this.copyManager.pasteCells(sourceCells, this.target, {\n cut: true,\n type: \"formula\",\n include: \"all\",\n });\n const touchedAddresses = [\n ...this.sourceSnapshots.map((snapshot) => snapshot.address),\n ...this.targetSnapshots.map((snapshot) => snapshot.address),\n ];\n this.executedContents = captureCellContents(this.workbookManager, touchedAddresses);\n this.executeFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => {\n const snapshot =\n this.sourceSnapshots.find(\n (candidate) => getAddressKey(candidate.address) === getAddressKey(address)\n ) ??\n this.targetSnapshots.find(\n (candidate) => getAddressKey(candidate.address) === getAddressKey(address)\n );\n return {\n address,\n before: snapshot?.content,\n after: this.executedContents.get(getAddressKey(address)),\n };\n })\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n // Restore source cells\n for (const snapshot of this.sourceSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n\n // Restore target cells\n for (const snapshot of this.targetSnapshots) {\n this.workbookManager.setCellContent(snapshot.address, snapshot.content);\n if (snapshot.metadata !== undefined) {\n this.workbookManager.setCellMetadata(snapshot.address, snapshot.metadata);\n }\n }\n\n const touchedAddresses = [\n ...this.sourceSnapshots.map((snapshot) => snapshot.address),\n ...this.targetSnapshots.map((snapshot) => snapshot.address),\n ];\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n touchedAddresses.map((address) => ({\n address,\n before: this.executedContents.get(getAddressKey(address)),\n after: this.workbookManager.getCellContent(address),\n }))\n ),\n resourceKeys: [],\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.MOVE_RANGE,\n payload: {\n sourceRange: this.sourceRange,\n target: this.target,\n },\n };\n }\n}\n\n/**\n * Command to auto-fill ranges based on a seed pattern.\n * Captures the entire affected area for undo.\n */\nexport class AutoFillCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousContent: Map<string, SerializedCellValue> = new Map();\n private previousMetadata: Map<string, unknown> = new Map();\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n private touchedAddresses: CellAddress[] = [];\n private executedContents: Map<string, SerializedCellValue | undefined> =\n new Map();\n\n constructor(\n private workbookManager: WorkbookManager,\n private styleManager: import(\"../managers/style-manager.mjs\").StyleManager,\n private autoFillManager: import(\"../autofill-utils.mjs\").AutoFill,\n private opts: { sheetName: string; workbookName: string },\n private seedRange: import(\"../types.mjs\").SpreadsheetRange,\n private fillRanges: import(\"../types.mjs\").SpreadsheetRange[],\n private direction: import(\"@ricsam/selection-manager\").FillDirection\n ) {}\n\n execute(): void {\n this.previousContent.clear();\n this.previousMetadata.clear();\n this.touchedAddresses = [];\n this.executedContents.clear();\n // Capture current content and metadata in fill ranges before modification\n for (const fillRange of this.fillRanges) {\n if (fillRange.end.col.type === \"infinity\" || fillRange.end.row.type === \"infinity\") {\n continue; // Skip infinite ranges\n }\n \n const startCol = fillRange.start.col;\n const startRow = fillRange.start.row;\n const endCol = fillRange.end.col.value;\n const endRow = fillRange.end.row.value;\n\n for (let row = startRow; row <= endRow; row++) {\n for (let col = startCol; col <= endCol; col++) {\n const key = getCellReference({ colIndex: col, rowIndex: row });\n const address = {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n colIndex: col,\n rowIndex: row,\n };\n this.touchedAddresses.push(address);\n \n const content = this.workbookManager.getCellContent(address);\n if (content !== undefined) {\n this.previousContent.set(key, content);\n }\n \n const metadata = this.workbookManager.getCellMetadata(address);\n if (metadata !== undefined) {\n this.previousMetadata.set(key, metadata);\n }\n }\n }\n }\n\n // Execute the auto-fill operation\n this.autoFillManager.fill(this.opts, this.seedRange, this.fillRanges, this.direction);\n this.executedContents = captureCellContents(this.workbookManager, this.touchedAddresses);\n this.executeFootprint = {\n touchedCells: buildTouchedCells(\n this.touchedAddresses.map((address) => {\n const key = getCellReference(address);\n return {\n address,\n before: this.previousContent.get(key),\n after: this.executedContents.get(getAddressKey(address)),\n };\n })\n ),\n resourceKeys: [],\n };\n }\n\n undo(): void {\n // Get current sheet content\n const currentContent = this.workbookManager.getSheetSerialized(this.opts);\n const newContent = new Map(currentContent);\n\n // Restore all fill range cells to their previous state\n for (const fillRange of this.fillRanges) {\n if (fillRange.end.col.type === \"infinity\" || fillRange.end.row.type === \"infinity\") {\n continue;\n }\n \n const startCol = fillRange.start.col;\n const startRow = fillRange.start.row;\n const endCol = fillRange.end.col.value;\n const endRow = fillRange.end.row.value;\n\n for (let row = startRow; row <= endRow; row++) {\n for (let col = startCol; col <= endCol; col++) {\n const key = getCellReference({ colIndex: col, rowIndex: row });\n const address = {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n colIndex: col,\n rowIndex: row,\n };\n \n // Restore content\n if (this.previousContent.has(key)) {\n newContent.set(key, this.previousContent.get(key)!);\n } else {\n newContent.delete(key);\n }\n \n // Restore metadata\n if (this.previousMetadata.has(key)) {\n this.workbookManager.setCellMetadata(address, this.previousMetadata.get(key));\n } else {\n this.workbookManager.setCellMetadata(address, undefined);\n }\n }\n }\n }\n\n // Apply restored content\n this.workbookManager.setSheetContent(this.opts, newContent);\n this.undoFootprint = {\n touchedCells: buildTouchedCells(\n this.touchedAddresses.map((address) => ({\n address,\n before: this.executedContents.get(getAddressKey(address)),\n after: this.workbookManager.getCellContent(address),\n }))\n ),\n resourceKeys: [],\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.AUTO_FILL,\n payload: {\n opts: this.opts,\n seedRange: this.seedRange,\n fillRanges: this.fillRanges,\n direction: this.direction,\n },\n };\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "827AAF04E7067A3964756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/core/commands/named-expression-commands.ts
|
|
2
|
-
import { ActionTypes } from "./types.mjs";
|
|
2
|
+
import { ActionTypes, emptyMutationInvalidation } from "./types.mjs";
|
|
3
|
+
import { getNamedExpressionResourceKey } from "../resource-keys.mjs";
|
|
3
4
|
function optsToScope(opts) {
|
|
4
5
|
if (opts.sheetName && opts.workbookName) {
|
|
5
6
|
return {
|
|
@@ -22,17 +23,35 @@ function optsToScope(opts) {
|
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
function getNamedExpressionScopeResourceKeys(expressions, opts) {
|
|
27
|
+
return Array.from(new Set(Array.from(expressions, (expressionName) => getNamedExpressionResourceKey({
|
|
28
|
+
expressionName,
|
|
29
|
+
workbookName: opts.workbookName,
|
|
30
|
+
sheetName: opts.sheetName
|
|
31
|
+
}))));
|
|
32
|
+
}
|
|
25
33
|
|
|
26
34
|
class AddNamedExpressionCommand {
|
|
27
35
|
deps;
|
|
28
36
|
opts;
|
|
29
37
|
requiresReevaluation = true;
|
|
38
|
+
executeFootprint = emptyMutationInvalidation();
|
|
39
|
+
undoFootprint = emptyMutationInvalidation();
|
|
30
40
|
constructor(deps, opts) {
|
|
31
41
|
this.deps = deps;
|
|
32
42
|
this.opts = opts;
|
|
33
43
|
}
|
|
34
44
|
execute() {
|
|
35
45
|
this.deps.namedExpressionManager.addNamedExpression(this.opts);
|
|
46
|
+
const resourceKey = getNamedExpressionResourceKey(this.opts);
|
|
47
|
+
this.executeFootprint = {
|
|
48
|
+
touchedCells: [],
|
|
49
|
+
resourceKeys: [resourceKey]
|
|
50
|
+
};
|
|
51
|
+
this.undoFootprint = {
|
|
52
|
+
touchedCells: [],
|
|
53
|
+
resourceKeys: [resourceKey]
|
|
54
|
+
};
|
|
36
55
|
}
|
|
37
56
|
undo() {
|
|
38
57
|
this.deps.namedExpressionManager.removeNamedExpression({
|
|
@@ -41,6 +60,9 @@ class AddNamedExpressionCommand {
|
|
|
41
60
|
workbookName: this.opts.workbookName
|
|
42
61
|
});
|
|
43
62
|
}
|
|
63
|
+
getInvalidationFootprint(phase) {
|
|
64
|
+
return phase === "execute" ? this.executeFootprint : this.undoFootprint;
|
|
65
|
+
}
|
|
44
66
|
toAction() {
|
|
45
67
|
return {
|
|
46
68
|
type: ActionTypes.ADD_NAMED_EXPRESSION,
|
|
@@ -54,6 +76,8 @@ class RemoveNamedExpressionCommand {
|
|
|
54
76
|
opts;
|
|
55
77
|
requiresReevaluation = true;
|
|
56
78
|
removedExpression;
|
|
79
|
+
executeFootprint = emptyMutationInvalidation();
|
|
80
|
+
undoFootprint = emptyMutationInvalidation();
|
|
57
81
|
constructor(deps, opts) {
|
|
58
82
|
this.deps = deps;
|
|
59
83
|
this.opts = opts;
|
|
@@ -61,6 +85,15 @@ class RemoveNamedExpressionCommand {
|
|
|
61
85
|
execute() {
|
|
62
86
|
this.removedExpression = this.deps.namedExpressionManager.getNamedExpression(optsToScope(this.opts));
|
|
63
87
|
this.deps.namedExpressionManager.removeNamedExpression(this.opts);
|
|
88
|
+
const resourceKey = getNamedExpressionResourceKey(this.opts);
|
|
89
|
+
this.executeFootprint = {
|
|
90
|
+
touchedCells: [],
|
|
91
|
+
resourceKeys: [resourceKey]
|
|
92
|
+
};
|
|
93
|
+
this.undoFootprint = {
|
|
94
|
+
touchedCells: [],
|
|
95
|
+
resourceKeys: [resourceKey]
|
|
96
|
+
};
|
|
64
97
|
}
|
|
65
98
|
undo() {
|
|
66
99
|
if (!this.removedExpression)
|
|
@@ -72,6 +105,9 @@ class RemoveNamedExpressionCommand {
|
|
|
72
105
|
workbookName: this.opts.workbookName
|
|
73
106
|
});
|
|
74
107
|
}
|
|
108
|
+
getInvalidationFootprint(phase) {
|
|
109
|
+
return phase === "execute" ? this.executeFootprint : this.undoFootprint;
|
|
110
|
+
}
|
|
75
111
|
toAction() {
|
|
76
112
|
return {
|
|
77
113
|
type: ActionTypes.REMOVE_NAMED_EXPRESSION,
|
|
@@ -85,6 +121,8 @@ class UpdateNamedExpressionCommand {
|
|
|
85
121
|
opts;
|
|
86
122
|
requiresReevaluation = true;
|
|
87
123
|
previousExpression;
|
|
124
|
+
executeFootprint = emptyMutationInvalidation();
|
|
125
|
+
undoFootprint = emptyMutationInvalidation();
|
|
88
126
|
constructor(deps, opts) {
|
|
89
127
|
this.deps = deps;
|
|
90
128
|
this.opts = opts;
|
|
@@ -93,6 +131,15 @@ class UpdateNamedExpressionCommand {
|
|
|
93
131
|
const existing = this.deps.namedExpressionManager.getNamedExpression(optsToScope(this.opts));
|
|
94
132
|
this.previousExpression = existing?.expression;
|
|
95
133
|
this.deps.namedExpressionManager.updateNamedExpression(this.opts);
|
|
134
|
+
const resourceKey = getNamedExpressionResourceKey(this.opts);
|
|
135
|
+
this.executeFootprint = {
|
|
136
|
+
touchedCells: [],
|
|
137
|
+
resourceKeys: [resourceKey]
|
|
138
|
+
};
|
|
139
|
+
this.undoFootprint = {
|
|
140
|
+
touchedCells: [],
|
|
141
|
+
resourceKeys: [resourceKey]
|
|
142
|
+
};
|
|
96
143
|
}
|
|
97
144
|
undo() {
|
|
98
145
|
if (this.previousExpression === undefined)
|
|
@@ -104,6 +151,9 @@ class UpdateNamedExpressionCommand {
|
|
|
104
151
|
workbookName: this.opts.workbookName
|
|
105
152
|
});
|
|
106
153
|
}
|
|
154
|
+
getInvalidationFootprint(phase) {
|
|
155
|
+
return phase === "execute" ? this.executeFootprint : this.undoFootprint;
|
|
156
|
+
}
|
|
107
157
|
toAction() {
|
|
108
158
|
return {
|
|
109
159
|
type: ActionTypes.UPDATE_NAMED_EXPRESSION,
|
|
@@ -116,14 +166,36 @@ class RenameNamedExpressionCommand {
|
|
|
116
166
|
deps;
|
|
117
167
|
opts;
|
|
118
168
|
requiresReevaluation = true;
|
|
169
|
+
executeFootprint = emptyMutationInvalidation();
|
|
170
|
+
undoFootprint = emptyMutationInvalidation();
|
|
119
171
|
constructor(deps, opts) {
|
|
120
172
|
this.deps = deps;
|
|
121
173
|
this.opts = opts;
|
|
122
174
|
}
|
|
123
175
|
execute() {
|
|
124
176
|
this.deps.namedExpressionManager.renameNamedExpression(this.opts);
|
|
125
|
-
this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.expressionName, this.opts.newName));
|
|
126
|
-
this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.expressionName, this.opts.newName));
|
|
177
|
+
const changedCells = this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.expressionName, this.opts.newName));
|
|
178
|
+
const changedNamedExpressions = this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.expressionName, this.opts.newName));
|
|
179
|
+
this.executeFootprint = {
|
|
180
|
+
touchedCells: changedCells.map((address) => ({
|
|
181
|
+
address,
|
|
182
|
+
beforeKind: "formula",
|
|
183
|
+
afterKind: "formula"
|
|
184
|
+
})),
|
|
185
|
+
resourceKeys: [
|
|
186
|
+
getNamedExpressionResourceKey({
|
|
187
|
+
expressionName: this.opts.expressionName,
|
|
188
|
+
workbookName: this.opts.workbookName,
|
|
189
|
+
sheetName: this.opts.sheetName
|
|
190
|
+
}),
|
|
191
|
+
getNamedExpressionResourceKey({
|
|
192
|
+
expressionName: this.opts.newName,
|
|
193
|
+
workbookName: this.opts.workbookName,
|
|
194
|
+
sheetName: this.opts.sheetName
|
|
195
|
+
}),
|
|
196
|
+
...changedNamedExpressions
|
|
197
|
+
]
|
|
198
|
+
};
|
|
127
199
|
}
|
|
128
200
|
undo() {
|
|
129
201
|
this.deps.namedExpressionManager.renameNamedExpression({
|
|
@@ -132,8 +204,31 @@ class RenameNamedExpressionCommand {
|
|
|
132
204
|
workbookName: this.opts.workbookName,
|
|
133
205
|
newName: this.opts.expressionName
|
|
134
206
|
});
|
|
135
|
-
this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.newName, this.opts.expressionName));
|
|
136
|
-
this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.newName, this.opts.expressionName));
|
|
207
|
+
const changedCells = this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.newName, this.opts.expressionName));
|
|
208
|
+
const changedNamedExpressions = this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.newName, this.opts.expressionName));
|
|
209
|
+
this.undoFootprint = {
|
|
210
|
+
touchedCells: changedCells.map((address) => ({
|
|
211
|
+
address,
|
|
212
|
+
beforeKind: "formula",
|
|
213
|
+
afterKind: "formula"
|
|
214
|
+
})),
|
|
215
|
+
resourceKeys: [
|
|
216
|
+
getNamedExpressionResourceKey({
|
|
217
|
+
expressionName: this.opts.expressionName,
|
|
218
|
+
workbookName: this.opts.workbookName,
|
|
219
|
+
sheetName: this.opts.sheetName
|
|
220
|
+
}),
|
|
221
|
+
getNamedExpressionResourceKey({
|
|
222
|
+
expressionName: this.opts.newName,
|
|
223
|
+
workbookName: this.opts.workbookName,
|
|
224
|
+
sheetName: this.opts.sheetName
|
|
225
|
+
}),
|
|
226
|
+
...changedNamedExpressions
|
|
227
|
+
]
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
getInvalidationFootprint(phase) {
|
|
231
|
+
return phase === "execute" ? this.executeFootprint : this.undoFootprint;
|
|
137
232
|
}
|
|
138
233
|
toAction() {
|
|
139
234
|
return {
|
|
@@ -148,6 +243,8 @@ class SetNamedExpressionsCommand {
|
|
|
148
243
|
opts;
|
|
149
244
|
requiresReevaluation = true;
|
|
150
245
|
previousExpressions;
|
|
246
|
+
executeFootprint = emptyMutationInvalidation();
|
|
247
|
+
undoFootprint = emptyMutationInvalidation();
|
|
151
248
|
constructor(deps, opts) {
|
|
152
249
|
this.deps = deps;
|
|
153
250
|
this.opts = opts;
|
|
@@ -163,6 +260,21 @@ class SetNamedExpressionsCommand {
|
|
|
163
260
|
this.previousExpressions = new Map(sheetExpressions || []);
|
|
164
261
|
}
|
|
165
262
|
this.deps.namedExpressionManager.setNamedExpressions(this.opts);
|
|
263
|
+
const scope = this.opts.type === "global" ? {} : this.opts.type === "workbook" ? { workbookName: this.opts.workbookName } : {
|
|
264
|
+
workbookName: this.opts.workbookName,
|
|
265
|
+
sheetName: this.opts.sheetName
|
|
266
|
+
};
|
|
267
|
+
this.executeFootprint = {
|
|
268
|
+
touchedCells: [],
|
|
269
|
+
resourceKeys: [
|
|
270
|
+
...getNamedExpressionScopeResourceKeys(this.previousExpressions?.keys() ?? [], scope),
|
|
271
|
+
...getNamedExpressionScopeResourceKeys(this.opts.expressions.keys(), scope)
|
|
272
|
+
]
|
|
273
|
+
};
|
|
274
|
+
this.undoFootprint = {
|
|
275
|
+
touchedCells: [],
|
|
276
|
+
resourceKeys: this.executeFootprint.resourceKeys
|
|
277
|
+
};
|
|
166
278
|
}
|
|
167
279
|
undo() {
|
|
168
280
|
if (!this.previousExpressions)
|
|
@@ -187,6 +299,9 @@ class SetNamedExpressionsCommand {
|
|
|
187
299
|
});
|
|
188
300
|
}
|
|
189
301
|
}
|
|
302
|
+
getInvalidationFootprint(phase) {
|
|
303
|
+
return phase === "execute" ? this.executeFootprint : this.undoFootprint;
|
|
304
|
+
}
|
|
190
305
|
toAction() {
|
|
191
306
|
return {
|
|
192
307
|
type: ActionTypes.SET_NAMED_EXPRESSIONS,
|
|
@@ -205,4 +320,4 @@ export {
|
|
|
205
320
|
AddNamedExpressionCommand
|
|
206
321
|
};
|
|
207
322
|
|
|
208
|
-
//# debugId=
|
|
323
|
+
//# debugId=F6D9AAFD4062ABD164756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/core/commands/named-expression-commands.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * Named Expression Commands - Commands that modify named expressions\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.mjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.mjs\";\nimport type { NamedExpression } from \"../types.mjs\";\nimport type { EngineCommand, EngineAction } from \"./types.mjs\";\nimport { ActionTypes } from \"./types.mjs\";\n\n/**\n * Dependencies needed for named expression commands.\n */\nexport interface NamedExpressionCommandDeps {\n namedExpressionManager: NamedExpressionManager;\n workbookManager: WorkbookManager;\n renameNamedExpressionInFormula: (\n formula: string,\n oldName: string,\n newName: string\n ) => string;\n}\n\n/**\n * Helper to convert opts to getNamedExpression format\n */\nfunction optsToScope(opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n}): {\n name: string;\n scope:\n | { type: \"global\" }\n | { type: \"workbook\"; workbookName: string }\n | { type: \"sheet\"; workbookName: string; sheetName: string };\n} {\n if (opts.sheetName && opts.workbookName) {\n return {\n name: opts.expressionName,\n scope: {\n type: \"sheet\",\n workbookName: opts.workbookName,\n sheetName: opts.sheetName,\n },\n };\n } else if (opts.workbookName) {\n return {\n name: opts.expressionName,\n scope: { type: \"workbook\", workbookName: opts.workbookName },\n };\n } else {\n return {\n name: opts.expressionName,\n scope: { type: \"global\" },\n };\n }\n}\n\n/**\n * Command to add a named expression.\n */\nexport class AddNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n this.deps.namedExpressionManager.addNamedExpression(this.opts);\n }\n\n undo(): void {\n this.deps.namedExpressionManager.removeNamedExpression({\n expressionName: this.opts.expressionName,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to remove a named expression.\n */\nexport class RemoveNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private removedExpression: NamedExpression | undefined;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n // Capture expression before removal\n this.removedExpression = this.deps.namedExpressionManager.getNamedExpression(\n optsToScope(this.opts)\n );\n\n this.deps.namedExpressionManager.removeNamedExpression(this.opts);\n }\n\n undo(): void {\n if (!this.removedExpression) return;\n\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: this.removedExpression.name,\n expression: this.removedExpression.expression,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to update a named expression.\n */\nexport class UpdateNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousExpression: string | undefined;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n // Capture previous expression\n const existing = this.deps.namedExpressionManager.getNamedExpression(\n optsToScope(this.opts)\n );\n this.previousExpression = existing?.expression;\n\n this.deps.namedExpressionManager.updateNamedExpression(this.opts);\n }\n\n undo(): void {\n if (this.previousExpression === undefined) return;\n\n this.deps.namedExpressionManager.updateNamedExpression({\n expressionName: this.opts.expressionName,\n expression: this.previousExpression,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.UPDATE_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a named expression.\n */\nexport class RenameNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n newName: string;\n }\n ) {}\n\n execute(): void {\n this.deps.namedExpressionManager.renameNamedExpression(this.opts);\n\n // Update formulas in sheet cells\n this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.expressionName,\n this.opts.newName\n )\n );\n\n // Update named expressions\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.expressionName,\n this.opts.newName\n )\n );\n }\n\n undo(): void {\n // Rename back\n this.deps.namedExpressionManager.renameNamedExpression({\n expressionName: this.opts.newName,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n newName: this.opts.expressionName,\n });\n\n // Update formulas back\n this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.newName,\n this.opts.expressionName\n )\n );\n\n // Update named expressions back\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.newName,\n this.opts.expressionName\n )\n );\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Options for setNamedExpressions command.\n */\ntype SetNamedExpressionsOpts = (\n | { type: \"global\" }\n | { type: \"sheet\"; sheetName: string; workbookName: string }\n | { type: \"workbook\"; workbookName: string }\n) & {\n expressions: Map<string, NamedExpression>;\n};\n\n/**\n * Command to set named expressions (replace all at a scope).\n */\nexport class SetNamedExpressionsCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousExpressions: Map<string, NamedExpression> | undefined;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: SetNamedExpressionsOpts\n ) {}\n\n execute(): void {\n // Capture previous expressions at this scope\n const allExpressions = this.deps.namedExpressionManager.getNamedExpressions();\n\n if (this.opts.type === \"global\") {\n this.previousExpressions = new Map(allExpressions.globalExpressions);\n } else if (this.opts.type === \"workbook\") {\n this.previousExpressions = new Map(\n allExpressions.workbookExpressions.get(this.opts.workbookName) || []\n );\n } else if (this.opts.type === \"sheet\") {\n const sheetExpressions = allExpressions.sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName);\n this.previousExpressions = new Map(sheetExpressions || []);\n }\n\n this.deps.namedExpressionManager.setNamedExpressions(this.opts);\n }\n\n undo(): void {\n if (!this.previousExpressions) return;\n\n // Restore previous expressions\n if (this.opts.type === \"global\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"global\",\n expressions: this.previousExpressions,\n });\n } else if (this.opts.type === \"workbook\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"workbook\",\n workbookName: this.opts.workbookName,\n expressions: this.previousExpressions,\n });\n } else if (this.opts.type === \"sheet\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"sheet\",\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n expressions: this.previousExpressions,\n });\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_NAMED_EXPRESSIONS,\n payload: {\n ...this.opts,\n expressions: Array.from(this.opts.expressions.entries()),\n },\n };\n }\n}\n\n"
|
|
5
|
+
"/**\n * Named Expression Commands - Commands that modify named expressions\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.mjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.mjs\";\nimport type { NamedExpression } from \"../types.mjs\";\nimport type {\n EngineCommand,\n EngineAction,\n MutationInvalidation,\n} from \"./types.mjs\";\nimport { ActionTypes, emptyMutationInvalidation } from \"./types.mjs\";\nimport { getNamedExpressionResourceKey } from \"../resource-keys.mjs\";\n\n/**\n * Dependencies needed for named expression commands.\n */\nexport interface NamedExpressionCommandDeps {\n namedExpressionManager: NamedExpressionManager;\n workbookManager: WorkbookManager;\n renameNamedExpressionInFormula: (\n formula: string,\n oldName: string,\n newName: string\n ) => string;\n}\n\n/**\n * Helper to convert opts to getNamedExpression format\n */\nfunction optsToScope(opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n}): {\n name: string;\n scope:\n | { type: \"global\" }\n | { type: \"workbook\"; workbookName: string }\n | { type: \"sheet\"; workbookName: string; sheetName: string };\n} {\n if (opts.sheetName && opts.workbookName) {\n return {\n name: opts.expressionName,\n scope: {\n type: \"sheet\",\n workbookName: opts.workbookName,\n sheetName: opts.sheetName,\n },\n };\n } else if (opts.workbookName) {\n return {\n name: opts.expressionName,\n scope: { type: \"workbook\", workbookName: opts.workbookName },\n };\n } else {\n return {\n name: opts.expressionName,\n scope: { type: \"global\" },\n };\n }\n}\n\nfunction getNamedExpressionScopeResourceKeys(\n expressions: Iterable<string>,\n opts: {\n workbookName?: string;\n sheetName?: string;\n }\n): string[] {\n return Array.from(\n new Set(\n Array.from(expressions, (expressionName) =>\n getNamedExpressionResourceKey({\n expressionName,\n workbookName: opts.workbookName,\n sheetName: opts.sheetName,\n })\n )\n )\n );\n}\n\n/**\n * Command to add a named expression.\n */\nexport class AddNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n this.deps.namedExpressionManager.addNamedExpression(this.opts);\n const resourceKey = getNamedExpressionResourceKey(this.opts);\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey],\n };\n }\n\n undo(): void {\n this.deps.namedExpressionManager.removeNamedExpression({\n expressionName: this.opts.expressionName,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\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.ADD_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to remove a named expression.\n */\nexport class RemoveNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private removedExpression: NamedExpression | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n // Capture expression before removal\n this.removedExpression = this.deps.namedExpressionManager.getNamedExpression(\n optsToScope(this.opts)\n );\n\n this.deps.namedExpressionManager.removeNamedExpression(this.opts);\n const resourceKey = getNamedExpressionResourceKey(this.opts);\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey],\n };\n }\n\n undo(): void {\n if (!this.removedExpression) return;\n\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: this.removedExpression.name,\n expression: this.removedExpression.expression,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\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.REMOVE_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to update a named expression.\n */\nexport class UpdateNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousExpression: string | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n // Capture previous expression\n const existing = this.deps.namedExpressionManager.getNamedExpression(\n optsToScope(this.opts)\n );\n this.previousExpression = existing?.expression;\n\n this.deps.namedExpressionManager.updateNamedExpression(this.opts);\n const resourceKey = getNamedExpressionResourceKey(this.opts);\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: [resourceKey],\n };\n }\n\n undo(): void {\n if (this.previousExpression === undefined) return;\n\n this.deps.namedExpressionManager.updateNamedExpression({\n expressionName: this.opts.expressionName,\n expression: this.previousExpression,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\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.UPDATE_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a named expression.\n */\nexport class RenameNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n newName: string;\n }\n ) {}\n\n execute(): void {\n this.deps.namedExpressionManager.renameNamedExpression(this.opts);\n\n // Update formulas in sheet cells\n const changedCells = this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.expressionName,\n this.opts.newName\n )\n );\n\n // Update named expressions\n const changedNamedExpressions =\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.expressionName,\n this.opts.newName\n )\n );\n\n this.executeFootprint = {\n touchedCells: changedCells.map((address) => ({\n address,\n beforeKind: \"formula\" as const,\n afterKind: \"formula\" as const,\n })),\n resourceKeys: [\n getNamedExpressionResourceKey({\n expressionName: this.opts.expressionName,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n }),\n getNamedExpressionResourceKey({\n expressionName: this.opts.newName,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n }),\n ...changedNamedExpressions,\n ],\n };\n }\n\n undo(): void {\n // Rename back\n this.deps.namedExpressionManager.renameNamedExpression({\n expressionName: this.opts.newName,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n newName: this.opts.expressionName,\n });\n\n // Update formulas back\n const changedCells = this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.newName,\n this.opts.expressionName\n )\n );\n\n // Update named expressions back\n const changedNamedExpressions =\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.newName,\n this.opts.expressionName\n )\n );\n\n this.undoFootprint = {\n touchedCells: changedCells.map((address) => ({\n address,\n beforeKind: \"formula\" as const,\n afterKind: \"formula\" as const,\n })),\n resourceKeys: [\n getNamedExpressionResourceKey({\n expressionName: this.opts.expressionName,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n }),\n getNamedExpressionResourceKey({\n expressionName: this.opts.newName,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n }),\n ...changedNamedExpressions,\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_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Options for setNamedExpressions command.\n */\ntype SetNamedExpressionsOpts = (\n | { type: \"global\" }\n | { type: \"sheet\"; sheetName: string; workbookName: string }\n | { type: \"workbook\"; workbookName: string }\n) & {\n expressions: Map<string, NamedExpression>;\n};\n\n/**\n * Command to set named expressions (replace all at a scope).\n */\nexport class SetNamedExpressionsCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousExpressions: Map<string, NamedExpression> | undefined;\n private executeFootprint = emptyMutationInvalidation();\n private undoFootprint = emptyMutationInvalidation();\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: SetNamedExpressionsOpts\n ) {}\n\n execute(): void {\n // Capture previous expressions at this scope\n const allExpressions = this.deps.namedExpressionManager.getNamedExpressions();\n\n if (this.opts.type === \"global\") {\n this.previousExpressions = new Map(allExpressions.globalExpressions);\n } else if (this.opts.type === \"workbook\") {\n this.previousExpressions = new Map(\n allExpressions.workbookExpressions.get(this.opts.workbookName) || []\n );\n } else if (this.opts.type === \"sheet\") {\n const sheetExpressions = allExpressions.sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName);\n this.previousExpressions = new Map(sheetExpressions || []);\n }\n\n this.deps.namedExpressionManager.setNamedExpressions(this.opts);\n const scope =\n this.opts.type === \"global\"\n ? {}\n : this.opts.type === \"workbook\"\n ? { workbookName: this.opts.workbookName }\n : {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n };\n this.executeFootprint = {\n touchedCells: [],\n resourceKeys: [\n ...getNamedExpressionScopeResourceKeys(\n this.previousExpressions?.keys() ?? [],\n scope\n ),\n ...getNamedExpressionScopeResourceKeys(this.opts.expressions.keys(), scope),\n ],\n };\n this.undoFootprint = {\n touchedCells: [],\n resourceKeys: this.executeFootprint.resourceKeys,\n };\n }\n\n undo(): void {\n if (!this.previousExpressions) return;\n\n // Restore previous expressions\n if (this.opts.type === \"global\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"global\",\n expressions: this.previousExpressions,\n });\n } else if (this.opts.type === \"workbook\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"workbook\",\n workbookName: this.opts.workbookName,\n expressions: this.previousExpressions,\n });\n } else if (this.opts.type === \"sheet\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"sheet\",\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n expressions: this.previousExpressions,\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.SET_NAMED_EXPRESSIONS,\n payload: {\n ...this.opts,\n expressions: Array.from(this.opts.expressions.entries()),\n },\n };\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "F6D9AAFD4062ABD164756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|