@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
|
@@ -7,9 +7,9 @@ class RangeEvaluationNode extends FrontierDependencyManager {
|
|
|
7
7
|
key;
|
|
8
8
|
address;
|
|
9
9
|
_result;
|
|
10
|
-
constructor(rangeKey, dependencyManager, workbookManager) {
|
|
10
|
+
constructor(rangeKey, dependencyManager, workbookManager, options) {
|
|
11
11
|
const rangeAddress = keyToRangeAddress(rangeKey);
|
|
12
|
-
super(rangeAddress, workbookManager, dependencyManager);
|
|
12
|
+
super(rangeAddress, workbookManager, dependencyManager, options);
|
|
13
13
|
this.rangeKey = rangeKey;
|
|
14
14
|
this.address = rangeAddress;
|
|
15
15
|
this.key = rangeKey;
|
|
@@ -28,6 +28,20 @@ class RangeEvaluationNode extends FrontierDependencyManager {
|
|
|
28
28
|
canResolve() {
|
|
29
29
|
return super.canResolve() && this._result.type !== "awaiting-evaluation";
|
|
30
30
|
}
|
|
31
|
+
restoreResolvedSnapshot(options) {
|
|
32
|
+
super.restoreResolvedSnapshot({
|
|
33
|
+
dependencies: options.dependencies
|
|
34
|
+
});
|
|
35
|
+
this._result = options.result;
|
|
36
|
+
}
|
|
37
|
+
invalidate() {
|
|
38
|
+
super.invalidate();
|
|
39
|
+
this._result = {
|
|
40
|
+
type: "awaiting-evaluation",
|
|
41
|
+
waitingFor: this,
|
|
42
|
+
errAddress: this
|
|
43
|
+
};
|
|
44
|
+
}
|
|
31
45
|
toJSON(visitor = new Set) {
|
|
32
46
|
const hasVisited = visitor?.has(this.key);
|
|
33
47
|
visitor?.add(this.key);
|
|
@@ -55,4 +69,4 @@ export {
|
|
|
55
69
|
RangeEvaluationNode
|
|
56
70
|
};
|
|
57
71
|
|
|
58
|
-
//# debugId=
|
|
72
|
+
//# debugId=CB41D7681035F56A64756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/evaluator/range-evaluation-node.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { DependencyManager } from \"../core/managers/dependency-manager.mjs\";\nimport { FrontierDependencyManager } from \"../core/managers/frontier-dependency-manager.mjs\";\nimport type { WorkbookManager } from \"../core/managers/workbook-manager.mjs\";\nimport type { EvaluateAllCellsResult, RangeAddress } from \"../core/types.mjs\";\nimport { getRangeKey, keyToRangeAddress } from \"../core/utils.mjs\";\n\nexport class RangeEvaluationNode extends FrontierDependencyManager {\n public key: string;\n public address: RangeAddress;\n\n private _result: EvaluateAllCellsResult;\n\n constructor(\n public rangeKey: string,\n dependencyManager: DependencyManager,\n workbookManager: WorkbookManager\n ) {\n const rangeAddress = keyToRangeAddress(rangeKey);\n super(rangeAddress, workbookManager, dependencyManager);\n\n this.address = rangeAddress;\n this.key = rangeKey;\n this._result = {\n type: \"awaiting-evaluation\",\n waitingFor: this,\n errAddress: this,\n };\n }\n\n setResult(result: EvaluateAllCellsResult): void {\n this._result = result;\n }\n\n public get result(): EvaluateAllCellsResult {\n return this._result;\n }\n\n public override canResolve(): boolean {\n return super.canResolve() && this._result.type !== \"awaiting-evaluation\";\n }\n\n toJSON(visitor: Set<string> = new Set()): any {\n const hasVisited = visitor?.has(this.key);\n visitor?.add(this.key);\n if (hasVisited) {\n return {\n key: this.key,\n resolved: this.resolved,\n cycle: true,\n dependencies: [],\n frontierDependencies: [],\n };\n }\n return {\n key: this.key,\n resolved: this.resolved,\n dependencies: Array.from(this.getDependencies()).map((node) =>\n node.toJSON(visitor)\n ),\n frontierDependencies: Array.from(this.getFrontierDependencies()).map(\n (node) => node.toJSON(visitor)\n ),\n };\n }\n\n public override toString(): string {\n return getRangeKey(this.address.range);\n }\n}\n"
|
|
5
|
+
"import type { DependencyManager } from \"../core/managers/dependency-manager.mjs\";\nimport { FrontierDependencyManager } from \"../core/managers/frontier-dependency-manager.mjs\";\nimport type { WorkbookManager } from \"../core/managers/workbook-manager.mjs\";\nimport type { EvaluateAllCellsResult, RangeAddress } from \"../core/types.mjs\";\nimport { getRangeKey, keyToRangeAddress } from \"../core/utils.mjs\";\n\nexport class RangeEvaluationNode extends FrontierDependencyManager {\n public key: string;\n public address: RangeAddress;\n\n private _result: EvaluateAllCellsResult;\n\n constructor(\n public rangeKey: string,\n dependencyManager: DependencyManager,\n workbookManager: WorkbookManager,\n options?: { skipInitialBuild?: boolean }\n ) {\n const rangeAddress = keyToRangeAddress(rangeKey);\n super(rangeAddress, workbookManager, dependencyManager, options);\n\n this.address = rangeAddress;\n this.key = rangeKey;\n this._result = {\n type: \"awaiting-evaluation\",\n waitingFor: this,\n errAddress: this,\n };\n }\n\n setResult(result: EvaluateAllCellsResult): void {\n this._result = result;\n }\n\n public get result(): EvaluateAllCellsResult {\n return this._result;\n }\n\n public override canResolve(): boolean {\n return super.canResolve() && this._result.type !== \"awaiting-evaluation\";\n }\n\n public override restoreResolvedSnapshot(options: {\n dependencies: Set<import(\"../core/managers/dependency-node.mjs\").DependencyNode>;\n result: EvaluateAllCellsResult;\n }) {\n super.restoreResolvedSnapshot({\n dependencies: options.dependencies,\n });\n this._result = options.result;\n }\n\n public override invalidate() {\n super.invalidate();\n this._result = {\n type: \"awaiting-evaluation\",\n waitingFor: this,\n errAddress: this,\n };\n }\n\n toJSON(visitor: Set<string> = new Set()): any {\n const hasVisited = visitor?.has(this.key);\n visitor?.add(this.key);\n if (hasVisited) {\n return {\n key: this.key,\n resolved: this.resolved,\n cycle: true,\n dependencies: [],\n frontierDependencies: [],\n };\n }\n return {\n key: this.key,\n resolved: this.resolved,\n dependencies: Array.from(this.getDependencies()).map((node) =>\n node.toJSON(visitor)\n ),\n frontierDependencies: Array.from(this.getFrontierDependencies()).map(\n (node) => node.toJSON(visitor)\n ),\n };\n }\n\n public override toString(): string {\n return getRangeKey(this.address.range);\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";AACA;AAGA;AAAA;AAEO,MAAM,4BAA4B,0BAA0B;AAAA,EAOxD;AAAA,EANF;AAAA,EACA;AAAA,EAEC;AAAA,EAER,WAAW,CACF,UACP,mBACA,iBACA;AAAA,IACA,MAAM,eAAe,kBAAkB,QAAQ;AAAA,IAC/C,MAAM,cAAc,iBAAiB,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";AACA;AAGA;AAAA;AAEO,MAAM,4BAA4B,0BAA0B;AAAA,EAOxD;AAAA,EANF;AAAA,EACA;AAAA,EAEC;AAAA,EAER,WAAW,CACF,UACP,mBACA,iBACA,SACA;AAAA,IACA,MAAM,eAAe,kBAAkB,QAAQ;AAAA,IAC/C,MAAM,cAAc,iBAAiB,mBAAmB,OAAO;AAAA,IANxD;AAAA,IAQP,KAAK,UAAU;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,UAAU;AAAA,MACb,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA;AAAA,EAGF,SAAS,CAAC,QAAsC;AAAA,IAC9C,KAAK,UAAU;AAAA;AAAA,MAGN,MAAM,GAA2B;AAAA,IAC1C,OAAO,KAAK;AAAA;AAAA,EAGE,UAAU,GAAY;AAAA,IACpC,OAAO,MAAM,WAAW,KAAK,KAAK,QAAQ,SAAS;AAAA;AAAA,EAGrC,uBAAuB,CAAC,SAGrC;AAAA,IACD,MAAM,wBAAwB;AAAA,MAC5B,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,IACD,KAAK,UAAU,QAAQ;AAAA;AAAA,EAGT,UAAU,GAAG;AAAA,IAC3B,MAAM,WAAW;AAAA,IACjB,KAAK,UAAU;AAAA,MACb,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA;AAAA,EAGF,MAAM,CAAC,UAAuB,IAAI,KAAY;AAAA,IAC5C,MAAM,aAAa,SAAS,IAAI,KAAK,GAAG;AAAA,IACxC,SAAS,IAAI,KAAK,GAAG;AAAA,IACrB,IAAI,YAAY;AAAA,MACd,OAAO;AAAA,QACL,KAAK,KAAK;AAAA,QACV,UAAU,KAAK;AAAA,QACf,OAAO;AAAA,QACP,cAAc,CAAC;AAAA,QACf,sBAAsB,CAAC;AAAA,MACzB;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,KAAK,KAAK;AAAA,MACV,UAAU,KAAK;AAAA,MACf,cAAc,MAAM,KAAK,KAAK,gBAAgB,CAAC,EAAE,IAAI,CAAC,SACpD,KAAK,OAAO,OAAO,CACrB;AAAA,MACA,sBAAsB,MAAM,KAAK,KAAK,wBAAwB,CAAC,EAAE,IAC/D,CAAC,SAAS,KAAK,OAAO,OAAO,CAC/B;AAAA,IACF;AAAA;AAAA,EAGc,QAAQ,GAAW;AAAA,IACjC,OAAO,YAAY,KAAK,QAAQ,KAAK;AAAA;AAEzC;",
|
|
8
|
+
"debugId": "CB41D7681035F56A64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -26,7 +26,8 @@ function matchOperation(lookupValue, lookupArray, matchType, context, isHorizont
|
|
|
26
26
|
if (value.result.type === "value") {
|
|
27
27
|
if (matchType === 0) {
|
|
28
28
|
const arrayValue = value.result.result;
|
|
29
|
-
|
|
29
|
+
const isMatch = arrayValue.type === lookupValue.type && (arrayValue.type === "string" && lookupValue.type === "string" ? arrayValue.value.toLowerCase() === lookupValue.value.toLowerCase() : arrayValue.value === lookupValue.value);
|
|
30
|
+
if (isMatch) {
|
|
30
31
|
const position = isHorizontal ? value.relativePos.x + 1 : value.relativePos.y + 1;
|
|
31
32
|
return {
|
|
32
33
|
type: "value",
|
|
@@ -137,4 +138,4 @@ export {
|
|
|
137
138
|
MATCH
|
|
138
139
|
};
|
|
139
140
|
|
|
140
|
-
//# debugId=
|
|
141
|
+
//# debugId=E8B4E1E3709915CB64756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/functions/lookup/match/match.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {\n FormulaError,\n type CellValue,\n type EvaluateAllCellsResult,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"../../../core/types.mjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.mjs\";\n\n/**\n * MATCH function - Returns the position of a value in an array\n * MATCH(lookup_value, lookup_array, [match_type])\n * match_type: 1 = less than or equal (default), 0 = exact match, -1 = greater than or equal\n *\n * STRICT TYPE CHECKING:\n * - lookup_value: string or number only\n * - lookup_array: array of strings or numbers only\n * - match_type: number only (must be -1, 0, or 1)\n */\n\n// Helper function to perform MATCH operation\nfunction matchOperation(\n lookupValue: CellValue,\n lookupArray: EvaluateAllCellsResult,\n matchType: number,\n context: EvaluationContext,\n isHorizontal: boolean\n): FunctionEvaluationResult {\n // Strict type checking for lookup_value\n if (lookupValue.type !== \"string\" && lookupValue.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: `MATCH lookup_value must be string or number, got ${lookupValue.type}`,\n errAddress: context.dependencyNode,\n };\n }\n\n // Validate match_type\n if (matchType !== -1 && matchType !== 0 && matchType !== 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: `MATCH match_type must be -1, 0, or 1, got ${matchType}`,\n errAddress: context.dependencyNode,\n };\n }\n if (\n lookupArray.type === \"awaiting-evaluation\" ||\n lookupArray.type === \"error\"\n ) {\n return lookupArray;\n }\n\n for (const value of lookupArray.values) {\n if (value.result.type === \"value\") {\n if (matchType === 0) {\n // Exact match\n const arrayValue = value.result.result;\n\n
|
|
5
|
+
"import {\n FormulaError,\n type CellValue,\n type EvaluateAllCellsResult,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"../../../core/types.mjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.mjs\";\n\n/**\n * MATCH function - Returns the position of a value in an array\n * MATCH(lookup_value, lookup_array, [match_type])\n * match_type: 1 = less than or equal (default), 0 = exact match, -1 = greater than or equal\n *\n * STRICT TYPE CHECKING:\n * - lookup_value: string or number only\n * - lookup_array: array of strings or numbers only\n * - match_type: number only (must be -1, 0, or 1)\n */\n\n// Helper function to perform MATCH operation\nfunction matchOperation(\n lookupValue: CellValue,\n lookupArray: EvaluateAllCellsResult,\n matchType: number,\n context: EvaluationContext,\n isHorizontal: boolean\n): FunctionEvaluationResult {\n // Strict type checking for lookup_value\n if (lookupValue.type !== \"string\" && lookupValue.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: `MATCH lookup_value must be string or number, got ${lookupValue.type}`,\n errAddress: context.dependencyNode,\n };\n }\n\n // Validate match_type\n if (matchType !== -1 && matchType !== 0 && matchType !== 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: `MATCH match_type must be -1, 0, or 1, got ${matchType}`,\n errAddress: context.dependencyNode,\n };\n }\n if (\n lookupArray.type === \"awaiting-evaluation\" ||\n lookupArray.type === \"error\"\n ) {\n return lookupArray;\n }\n\n for (const value of lookupArray.values) {\n if (value.result.type === \"value\") {\n if (matchType === 0) {\n // Exact match (case-insensitive for strings, matching Excel behavior)\n const arrayValue = value.result.result;\n\n const isMatch =\n arrayValue.type === lookupValue.type &&\n (arrayValue.type === \"string\" && lookupValue.type === \"string\"\n ? arrayValue.value.toLowerCase() === lookupValue.value.toLowerCase()\n : arrayValue.value === lookupValue.value);\n\n if (isMatch) {\n // For horizontal arrays (single row), use x position (column index)\n // For vertical arrays (single/multiple columns), use y position (row index)\n const position = isHorizontal\n ? value.relativePos.x + 1\n : value.relativePos.y + 1;\n\n return {\n type: \"value\",\n result: { type: \"number\", value: position },\n }; // 1-based index\n }\n } else {\n // Approximate match (1 or -1) - requires sorted array\n // For now, throw an error until we add sorting validation\n // TODO: Add proper approximate match logic with sorted array validation\n throw new Error(\"MATCH: approximate match not fully implemented\");\n }\n }\n }\n\n return {\n type: \"error\",\n err: FormulaError.NA,\n message: \"MATCH: lookup_value not found in lookup_array\",\n errAddress: context.dependencyNode,\n };\n}\n\nexport const MATCH: FunctionDefinition = {\n name: \"MATCH\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length < 2 || node.args.length > 3) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"MATCH function takes 2 or 3 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate lookup_value\n const lookupValueResult = this.evaluateNode(node.args[0]!, context);\n if (\n lookupValueResult.type === \"error\" ||\n lookupValueResult.type === \"awaiting-evaluation\"\n ) {\n return lookupValueResult;\n }\n\n // Evaluate lookup_array\n const lookupArrayResult = this.evaluateNode(node.args[1]!, context);\n if (\n lookupArrayResult.type === \"error\" ||\n lookupArrayResult.type === \"awaiting-evaluation\"\n ) {\n return lookupArrayResult;\n }\n\n // Evaluate match_type (optional, defaults to 1)\n let matchTypeResult: FunctionEvaluationResult = {\n type: \"value\",\n result: { type: \"number\", value: 1 },\n };\n\n if (node.args[2]) {\n matchTypeResult = this.evaluateNode(node.args[2], context);\n if (\n matchTypeResult.type === \"error\" ||\n matchTypeResult.type === \"awaiting-evaluation\"\n ) {\n return matchTypeResult;\n }\n }\n\n // Handle spilled arrays for lookup_value and match_type (not lookup_array which is expected to be a range)\n if (\n lookupValueResult.type === \"spilled-values\" ||\n matchTypeResult.type === \"spilled-values\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"MATCH: Spilled array arguments not yet implemented\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Strict type checking for match_type\n if (matchTypeResult.result.type !== \"number\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: `MATCH match_type must be number, got ${matchTypeResult.result.type}`,\n errAddress: context.dependencyNode,\n };\n }\n\n // Extract lookup_array values\n let lookupArray: EvaluateAllCellsResult = {\n type: \"awaiting-evaluation\",\n waitingFor: context.dependencyNode,\n errAddress: context.dependencyNode,\n };\n let isHorizontal = false;\n\n // Handle direct range arguments (like A:A) before extracting lookup_array values\n\n // Extract lookup_array values for non-infinite ranges\n if (lookupArrayResult.type === \"value\") {\n // Single value case - treat as array with one element\n lookupArray = {\n type: \"values\",\n values: [{ result: lookupArrayResult, relativePos: { x: 0, y: 0 } }],\n };\n isHorizontal = false; // Single value, treat as vertical\n } else if (lookupArrayResult.type === \"spilled-values\") {\n // Validate that lookup_array is 1D (either single row OR single column)\n const spillArea = lookupArrayResult.spillArea(context.cellAddress);\n const startRow = spillArea.start.row;\n const endRow = spillArea.end.row;\n const startCol = spillArea.start.col;\n const endCol = spillArea.end.col;\n\n // Check if it's a single row (horizontal)\n const isSingleRow = endRow.type === \"number\" && startRow === endRow.value;\n\n // Check if it's a single column (vertical)\n const isSingleCol = endCol.type === \"number\" && startCol === endCol.value;\n\n // MATCH requires a 1D array - either single row OR single column, not both or neither\n if (!isSingleRow && !isSingleCol) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message:\n \"MATCH lookup_array must be a single row or single column (1D array)\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Cannot be both single row AND single column (that would be a single cell, which is handled)\n if (isSingleRow && isSingleCol) {\n // This is actually a single cell, which is fine\n isHorizontal = false; // Treat single cell as vertical\n } else {\n // Horizontal if it's a single row\n isHorizontal = isSingleRow;\n }\n\n // Extract values from spilled array\n lookupArray = lookupArrayResult.evaluateAllCells.call(this, {\n context,\n evaluate: lookupArrayResult.evaluate,\n origin: context.cellAddress,\n lookupOrder: \"col-major\",\n });\n }\n\n // Perform MATCH operation\n return matchOperation(\n lookupValueResult.result,\n lookupArray,\n Math.floor(matchTypeResult.result.value), // Floor to handle decimal inputs\n context,\n isHorizontal\n );\n },\n};\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";AAAA;AAAA;AAAA;AAqBA,SAAS,cAAc,CACrB,aACA,aACA,WACA,SACA,cAC0B;AAAA,EAE1B,IAAI,YAAY,SAAS,YAAY,YAAY,SAAS,UAAU;AAAA,IAClE,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,aAAa;AAAA,MAClB,SAAS,oDAAoD,YAAY;AAAA,MACzE,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAGA,IAAI,cAAc,MAAM,cAAc,KAAK,cAAc,GAAG;AAAA,IAC1D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,aAAa;AAAA,MAClB,SAAS,6CAA6C;AAAA,MACtD,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EACA,IACE,YAAY,SAAS,yBACrB,YAAY,SAAS,SACrB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,WAAW,SAAS,YAAY,QAAQ;AAAA,IACtC,IAAI,MAAM,OAAO,SAAS,SAAS;AAAA,MACjC,IAAI,cAAc,GAAG;AAAA,QAEnB,MAAM,aAAa,MAAM,OAAO;AAAA,QAEhC,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "E8B4E1E3709915CB64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -26,6 +26,8 @@ function coerceToString(result, context) {
|
|
|
26
26
|
}
|
|
27
27
|
case "boolean":
|
|
28
28
|
return result.result.value ? "TRUE" : "FALSE";
|
|
29
|
+
case "infinity":
|
|
30
|
+
return result.result.sign === "positive" ? "INFINITY" : "-INFINITY";
|
|
29
31
|
default:
|
|
30
32
|
return {
|
|
31
33
|
type: "error",
|
|
@@ -136,4 +138,4 @@ export {
|
|
|
136
138
|
CONCATENATE
|
|
137
139
|
};
|
|
138
140
|
|
|
139
|
-
//# debugId=
|
|
141
|
+
//# debugId=E486EB6FD50D339A64756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/functions/text/concatenate/concatenate.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {\n FormulaError,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n type CellString,\n type CellAddress,\n type SpreadsheetRange,\n type SpilledValuesEvaluationResult,\n type ErrorEvaluationResult,\n type SingleEvaluationResult,\n} from \"../../../core/types.mjs\";\nimport { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.mjs\";\nimport type { FunctionNode } from \"../../../parser/ast.mjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.mjs\";\n\n/**\n * CONCATENATE function - Joins several text strings into one text string\n *\n * Usage: CONCATENATE(text1, text2, ...)\n *\n * text1, text2, ...: Text strings to be joined together.\n *\n * Example: CONCATENATE(\"Hello\", \" \", \"World\") returns \"Hello World\"\n *\n * Note:\n * - Takes 1 or more arguments\n * - Supports type coercion: strings, numbers, and booleans are converted to strings\n * - Numbers: converted to string representation (123 -> \"123\", Infinity -> \"INFINITY\")\n * - Booleans: TRUE -> \"TRUE\", FALSE -> \"FALSE\"\n * - Supports dynamic arrays (spilled values) for arguments\n * - If any argument is a spilled value, the result will be spilled\n */\n\n/**\n * Helper function to convert a cell value to string with type coercion\n */\nfunction coerceToString(\n result: FunctionEvaluationResult,\n context: EvaluationContext\n): string | ErrorEvaluationResult {\n if (result.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid argument type\",\n errAddress: context.dependencyNode,\n };\n }\n\n switch (result.result.type) {\n case \"string\":\n return result.result.value;\n case \"number\":\n // Convert number to string\n if (result.result.value === Infinity) {\n return \"INFINITY\";\n } else if (result.result.value === -Infinity) {\n return \"-INFINITY\";\n } else if (isNaN(result.result.value)) {\n return \"NaN\";\n } else {\n return result.result.value.toString();\n }\n case \"boolean\":\n // Convert boolean to string\n return result.result.value ? \"TRUE\" : \"FALSE\";\n default:\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Cannot convert argument to string\",\n errAddress: context.dependencyNode,\n };\n }\n}\n\n/**\n * Helper function to perform CONCATENATE operation on evaluated arguments\n */\nfunction concatenateOperation(\n textResults: FunctionEvaluationResult[],\n context: EvaluationContext\n): { type: \"value\"; result: CellString } | ErrorEvaluationResult {\n let result = \"\";\n for (const textResult of textResults) {\n const stringValue = coerceToString(textResult, context);\n if (typeof stringValue === \"object\" && stringValue.type === \"error\") {\n return stringValue;\n }\n result += stringValue;\n }\n return { type: \"value\", result: { type: \"string\", value: result } };\n}\n\n/**\n * Helper for creating spilled-values result for CONCATENATE function\n */\nfunction createConcatenateSpilledResult(\n this: FormulaEvaluator,\n {\n textResults,\n context,\n }: {\n textResults: FunctionEvaluationResult[];\n context: EvaluationContext;\n }\n): SpilledValuesEvaluationResult | ErrorEvaluationResult {\n const spilledResults = textResults.filter(\n (result) => result.type === \"spilled-values\"\n );\n\n if (spilledResults.length === 0) {\n throw new Error(\n \"createConcatenateSpilledResult called without spilled values\"\n );\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress): SpreadsheetRange => {\n // Calculate spill area (union of all spilled ranges)\n let spillArea: SpreadsheetRange | undefined;\n\n for (const result of textResults) {\n if (result.type === \"spilled-values\") {\n const currentSpillArea = result.spillArea(origin);\n if (!spillArea) {\n spillArea = currentSpillArea;\n } else {\n spillArea = this.unionRanges(\n this.projectRange(spillArea, origin),\n this.projectRange(currentSpillArea, origin)\n );\n }\n }\n }\n\n if (!spillArea) {\n throw new Error(\"No spilled values found\");\n }\n return spillArea;\n },\n source: \"CONCATENATE with spilled values\",\n evaluate: (spilledCell, evalContext): SingleEvaluationResult => {\n // Evaluate all arguments at this spilled position\n const spilledTextResults: FunctionEvaluationResult[] = [];\n\n for (const textResult of textResults) {\n if (textResult.type === \"spilled-values\") {\n const spillResult = textResult.evaluate(spilledCell, evalContext);\n if (spillResult === undefined) {\n return {\n type: \"error\",\n err: FormulaError.REF,\n message: \"The spilled results have not been evaluated\",\n errAddress: context.dependencyNode,\n };\n }\n if (spillResult.type === \"error\") {\n return spillResult;\n }\n spilledTextResults.push(spillResult);\n } else {\n spilledTextResults.push(textResult);\n }\n }\n\n return concatenateOperation(spilledTextResults, context);\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\n \"WIP: evaluateAllCells for CONCATENATE is not implemented\"\n );\n },\n };\n}\n\n/**\n * CONCATENATE function implementation\n */\nexport const CONCATENATE: FunctionDefinition = {\n name: \"CONCATENATE\",\n evaluate: function (\n node: FunctionNode,\n context: EvaluationContext\n ): FunctionEvaluationResult {\n if (node.args.length < 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"CONCATENATE function requires at least 1 argument\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate all arguments\n const textResults: FunctionEvaluationResult[] = [];\n for (const arg of node.args) {\n const result = this.evaluateNode(arg, context);\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n textResults.push(result);\n }\n\n // Check if any arguments are spilled values\n const hasSpilledValues = textResults.some(\n (result) => result.type === \"spilled-values\"\n );\n\n if (hasSpilledValues) {\n return createConcatenateSpilledResult.call(this, {\n textResults,\n context,\n });\n }\n\n // All arguments are single values - type coercion will be handled in concatenateOperation\n\n // Perform concatenation\n return concatenateOperation(textResults, context);\n },\n aliases: [\"CONCAT\"],\n};\n"
|
|
5
|
+
"import {\n FormulaError,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n type CellString,\n type CellAddress,\n type SpreadsheetRange,\n type SpilledValuesEvaluationResult,\n type ErrorEvaluationResult,\n type SingleEvaluationResult,\n} from \"../../../core/types.mjs\";\nimport { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.mjs\";\nimport type { FunctionNode } from \"../../../parser/ast.mjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.mjs\";\n\n/**\n * CONCATENATE function - Joins several text strings into one text string\n *\n * Usage: CONCATENATE(text1, text2, ...)\n *\n * text1, text2, ...: Text strings to be joined together.\n *\n * Example: CONCATENATE(\"Hello\", \" \", \"World\") returns \"Hello World\"\n *\n * Note:\n * - Takes 1 or more arguments\n * - Supports type coercion: strings, numbers, and booleans are converted to strings\n * - Numbers: converted to string representation (123 -> \"123\", Infinity -> \"INFINITY\")\n * - Booleans: TRUE -> \"TRUE\", FALSE -> \"FALSE\"\n * - Supports dynamic arrays (spilled values) for arguments\n * - If any argument is a spilled value, the result will be spilled\n */\n\n/**\n * Helper function to convert a cell value to string with type coercion\n */\nfunction coerceToString(\n result: FunctionEvaluationResult,\n context: EvaluationContext\n): string | ErrorEvaluationResult {\n if (result.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid argument type\",\n errAddress: context.dependencyNode,\n };\n }\n\n switch (result.result.type) {\n case \"string\":\n return result.result.value;\n case \"number\":\n // Convert number to string\n if (result.result.value === Infinity) {\n return \"INFINITY\";\n } else if (result.result.value === -Infinity) {\n return \"-INFINITY\";\n } else if (isNaN(result.result.value)) {\n return \"NaN\";\n } else {\n return result.result.value.toString();\n }\n case \"boolean\":\n // Convert boolean to string\n return result.result.value ? \"TRUE\" : \"FALSE\";\n case \"infinity\":\n return result.result.sign === \"positive\" ? \"INFINITY\" : \"-INFINITY\";\n default:\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Cannot convert argument to string\",\n errAddress: context.dependencyNode,\n };\n }\n}\n\n/**\n * Helper function to perform CONCATENATE operation on evaluated arguments\n */\nfunction concatenateOperation(\n textResults: FunctionEvaluationResult[],\n context: EvaluationContext\n): { type: \"value\"; result: CellString } | ErrorEvaluationResult {\n let result = \"\";\n for (const textResult of textResults) {\n const stringValue = coerceToString(textResult, context);\n if (typeof stringValue === \"object\" && stringValue.type === \"error\") {\n return stringValue;\n }\n result += stringValue;\n }\n return { type: \"value\", result: { type: \"string\", value: result } };\n}\n\n/**\n * Helper for creating spilled-values result for CONCATENATE function\n */\nfunction createConcatenateSpilledResult(\n this: FormulaEvaluator,\n {\n textResults,\n context,\n }: {\n textResults: FunctionEvaluationResult[];\n context: EvaluationContext;\n }\n): SpilledValuesEvaluationResult | ErrorEvaluationResult {\n const spilledResults = textResults.filter(\n (result) => result.type === \"spilled-values\"\n );\n\n if (spilledResults.length === 0) {\n throw new Error(\n \"createConcatenateSpilledResult called without spilled values\"\n );\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress): SpreadsheetRange => {\n // Calculate spill area (union of all spilled ranges)\n let spillArea: SpreadsheetRange | undefined;\n\n for (const result of textResults) {\n if (result.type === \"spilled-values\") {\n const currentSpillArea = result.spillArea(origin);\n if (!spillArea) {\n spillArea = currentSpillArea;\n } else {\n spillArea = this.unionRanges(\n this.projectRange(spillArea, origin),\n this.projectRange(currentSpillArea, origin)\n );\n }\n }\n }\n\n if (!spillArea) {\n throw new Error(\"No spilled values found\");\n }\n return spillArea;\n },\n source: \"CONCATENATE with spilled values\",\n evaluate: (spilledCell, evalContext): SingleEvaluationResult => {\n // Evaluate all arguments at this spilled position\n const spilledTextResults: FunctionEvaluationResult[] = [];\n\n for (const textResult of textResults) {\n if (textResult.type === \"spilled-values\") {\n const spillResult = textResult.evaluate(spilledCell, evalContext);\n if (spillResult === undefined) {\n return {\n type: \"error\",\n err: FormulaError.REF,\n message: \"The spilled results have not been evaluated\",\n errAddress: context.dependencyNode,\n };\n }\n if (spillResult.type === \"error\") {\n return spillResult;\n }\n spilledTextResults.push(spillResult);\n } else {\n spilledTextResults.push(textResult);\n }\n }\n\n return concatenateOperation(spilledTextResults, context);\n },\n evaluateAllCells: (intersectingRange) => {\n throw new Error(\n \"WIP: evaluateAllCells for CONCATENATE is not implemented\"\n );\n },\n };\n}\n\n/**\n * CONCATENATE function implementation\n */\nexport const CONCATENATE: FunctionDefinition = {\n name: \"CONCATENATE\",\n evaluate: function (\n node: FunctionNode,\n context: EvaluationContext\n ): FunctionEvaluationResult {\n if (node.args.length < 1) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"CONCATENATE function requires at least 1 argument\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate all arguments\n const textResults: FunctionEvaluationResult[] = [];\n for (const arg of node.args) {\n const result = this.evaluateNode(arg, context);\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n textResults.push(result);\n }\n\n // Check if any arguments are spilled values\n const hasSpilledValues = textResults.some(\n (result) => result.type === \"spilled-values\"\n );\n\n if (hasSpilledValues) {\n return createConcatenateSpilledResult.call(this, {\n textResults,\n context,\n });\n }\n\n // All arguments are single values - type coercion will be handled in concatenateOperation\n\n // Perform concatenation\n return concatenateOperation(textResults, context);\n },\n aliases: [\"CONCAT\"],\n};\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";AAAA;AAAA;AAAA;AAoCA,SAAS,cAAc,CACrB,QACA,SACgC;AAAA,EAChC,IAAI,OAAO,SAAS,SAAS;AAAA,IAC3B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,aAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,QAAQ,OAAO,OAAO;AAAA,SACf;AAAA,MACH,OAAO,OAAO,OAAO;AAAA,SAClB;AAAA,MAEH,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,QACpC,OAAO;AAAA,MACT,EAAO,SAAI,OAAO,OAAO,UAAU,WAAW;AAAA,QAC5C,OAAO;AAAA,MACT,EAAO,SAAI,MAAM,OAAO,OAAO,KAAK,GAAG;AAAA,QACrC,OAAO;AAAA,MACT,EAAO;AAAA,QACL,OAAO,OAAO,OAAO,MAAM,SAAS;AAAA;AAAA,SAEnC;AAAA,MAEH,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA;AAAA,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "E486EB6FD50D339A64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/mjs/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
7
7
|
import type { CopyManager } from "../managers/copy-manager";
|
|
8
8
|
import type { CellAddress, CopyCellsOptions, RangeAddress, SerializedCellValue } from "../types";
|
|
9
|
-
import type { EngineCommand, EngineAction } from "./types";
|
|
9
|
+
import type { EngineCommand, EngineAction, MutationInvalidation } from "./types";
|
|
10
10
|
/**
|
|
11
11
|
* Command to set a single cell's content.
|
|
12
12
|
*/
|
|
@@ -17,9 +17,12 @@ export declare class SetCellContentCommand implements EngineCommand {
|
|
|
17
17
|
readonly requiresReevaluation = true;
|
|
18
18
|
private previousValue;
|
|
19
19
|
private hadPreviousValue;
|
|
20
|
+
private executeFootprint;
|
|
21
|
+
private undoFootprint;
|
|
20
22
|
constructor(workbookManager: WorkbookManager, address: CellAddress, newContent: SerializedCellValue);
|
|
21
23
|
execute(): void;
|
|
22
24
|
undo(): void;
|
|
25
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
23
26
|
toAction(): EngineAction;
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
@@ -31,12 +34,15 @@ export declare class SetSheetContentCommand implements EngineCommand {
|
|
|
31
34
|
private newContent;
|
|
32
35
|
readonly requiresReevaluation = true;
|
|
33
36
|
private previousContent;
|
|
37
|
+
private executeFootprint;
|
|
38
|
+
private undoFootprint;
|
|
34
39
|
constructor(workbookManager: WorkbookManager, opts: {
|
|
35
40
|
workbookName: string;
|
|
36
41
|
sheetName: string;
|
|
37
42
|
}, newContent: Map<string, SerializedCellValue>);
|
|
38
43
|
execute(): void;
|
|
39
44
|
undo(): void;
|
|
45
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
40
46
|
toAction(): EngineAction;
|
|
41
47
|
}
|
|
42
48
|
/**
|
|
@@ -47,9 +53,12 @@ export declare class ClearRangeCommand implements EngineCommand {
|
|
|
47
53
|
private address;
|
|
48
54
|
readonly requiresReevaluation = true;
|
|
49
55
|
private clearedCells;
|
|
56
|
+
private executeFootprint;
|
|
57
|
+
private undoFootprint;
|
|
50
58
|
constructor(workbookManager: WorkbookManager, address: RangeAddress);
|
|
51
59
|
execute(): void;
|
|
52
60
|
undo(): void;
|
|
61
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
53
62
|
toAction(): EngineAction;
|
|
54
63
|
}
|
|
55
64
|
/**
|
|
@@ -64,9 +73,13 @@ export declare class PasteCellsCommand implements EngineCommand {
|
|
|
64
73
|
readonly requiresReevaluation = true;
|
|
65
74
|
private targetSnapshots;
|
|
66
75
|
private sourceSnapshots;
|
|
76
|
+
private executeFootprint;
|
|
77
|
+
private undoFootprint;
|
|
78
|
+
private executedContents;
|
|
67
79
|
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, source: CellAddress[], target: CellAddress, options: CopyCellsOptions);
|
|
68
80
|
execute(): void;
|
|
69
81
|
undo(): void;
|
|
82
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
70
83
|
toAction(): EngineAction;
|
|
71
84
|
}
|
|
72
85
|
/**
|
|
@@ -80,9 +93,13 @@ export declare class FillAreasCommand implements EngineCommand {
|
|
|
80
93
|
private options;
|
|
81
94
|
readonly requiresReevaluation = true;
|
|
82
95
|
private targetSnapshots;
|
|
96
|
+
private executeFootprint;
|
|
97
|
+
private undoFootprint;
|
|
98
|
+
private executedContents;
|
|
83
99
|
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, seedRange: RangeAddress, targetRanges: RangeAddress[], options: CopyCellsOptions);
|
|
84
100
|
execute(): void;
|
|
85
101
|
undo(): void;
|
|
102
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
86
103
|
toAction(): EngineAction;
|
|
87
104
|
}
|
|
88
105
|
/**
|
|
@@ -96,9 +113,13 @@ export declare class MoveCellCommand implements EngineCommand {
|
|
|
96
113
|
readonly requiresReevaluation = true;
|
|
97
114
|
private sourceSnapshot;
|
|
98
115
|
private targetSnapshot;
|
|
116
|
+
private executeFootprint;
|
|
117
|
+
private undoFootprint;
|
|
118
|
+
private executedContents;
|
|
99
119
|
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, source: CellAddress, target: CellAddress);
|
|
100
120
|
execute(): void;
|
|
101
121
|
undo(): void;
|
|
122
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
102
123
|
toAction(): EngineAction;
|
|
103
124
|
}
|
|
104
125
|
/**
|
|
@@ -112,9 +133,13 @@ export declare class MoveRangeCommand implements EngineCommand {
|
|
|
112
133
|
readonly requiresReevaluation = true;
|
|
113
134
|
private sourceSnapshots;
|
|
114
135
|
private targetSnapshots;
|
|
136
|
+
private executeFootprint;
|
|
137
|
+
private undoFootprint;
|
|
138
|
+
private executedContents;
|
|
115
139
|
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, sourceRange: RangeAddress, target: CellAddress);
|
|
116
140
|
execute(): void;
|
|
117
141
|
undo(): void;
|
|
142
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
118
143
|
toAction(): EngineAction;
|
|
119
144
|
}
|
|
120
145
|
/**
|
|
@@ -132,11 +157,16 @@ export declare class AutoFillCommand implements EngineCommand {
|
|
|
132
157
|
readonly requiresReevaluation = true;
|
|
133
158
|
private previousContent;
|
|
134
159
|
private previousMetadata;
|
|
160
|
+
private executeFootprint;
|
|
161
|
+
private undoFootprint;
|
|
162
|
+
private touchedAddresses;
|
|
163
|
+
private executedContents;
|
|
135
164
|
constructor(workbookManager: WorkbookManager, styleManager: import("../managers/style-manager").StyleManager, autoFillManager: import("../autofill-utils").AutoFill, opts: {
|
|
136
165
|
sheetName: string;
|
|
137
166
|
workbookName: string;
|
|
138
167
|
}, seedRange: import("../types").SpreadsheetRange, fillRanges: import("../types").SpreadsheetRange[], direction: import("@ricsam/selection-manager").FillDirection);
|
|
139
168
|
execute(): void;
|
|
140
169
|
undo(): void;
|
|
170
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
141
171
|
toAction(): EngineAction;
|
|
142
172
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { NamedExpressionManager } from "../managers/named-expression-manager";
|
|
7
7
|
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
8
8
|
import type { NamedExpression } from "../types";
|
|
9
|
-
import type { EngineCommand, EngineAction } from "./types";
|
|
9
|
+
import type { EngineCommand, EngineAction, MutationInvalidation } from "./types";
|
|
10
10
|
/**
|
|
11
11
|
* Dependencies needed for named expression commands.
|
|
12
12
|
*/
|
|
@@ -22,6 +22,8 @@ export declare class AddNamedExpressionCommand implements EngineCommand {
|
|
|
22
22
|
private deps;
|
|
23
23
|
private opts;
|
|
24
24
|
readonly requiresReevaluation = true;
|
|
25
|
+
private executeFootprint;
|
|
26
|
+
private undoFootprint;
|
|
25
27
|
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
26
28
|
expression: string;
|
|
27
29
|
expressionName: string;
|
|
@@ -30,6 +32,7 @@ export declare class AddNamedExpressionCommand implements EngineCommand {
|
|
|
30
32
|
});
|
|
31
33
|
execute(): void;
|
|
32
34
|
undo(): void;
|
|
35
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
33
36
|
toAction(): EngineAction;
|
|
34
37
|
}
|
|
35
38
|
/**
|
|
@@ -40,6 +43,8 @@ export declare class RemoveNamedExpressionCommand implements EngineCommand {
|
|
|
40
43
|
private opts;
|
|
41
44
|
readonly requiresReevaluation = true;
|
|
42
45
|
private removedExpression;
|
|
46
|
+
private executeFootprint;
|
|
47
|
+
private undoFootprint;
|
|
43
48
|
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
44
49
|
expressionName: string;
|
|
45
50
|
sheetName?: string;
|
|
@@ -47,6 +52,7 @@ export declare class RemoveNamedExpressionCommand implements EngineCommand {
|
|
|
47
52
|
});
|
|
48
53
|
execute(): void;
|
|
49
54
|
undo(): void;
|
|
55
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
50
56
|
toAction(): EngineAction;
|
|
51
57
|
}
|
|
52
58
|
/**
|
|
@@ -57,6 +63,8 @@ export declare class UpdateNamedExpressionCommand implements EngineCommand {
|
|
|
57
63
|
private opts;
|
|
58
64
|
readonly requiresReevaluation = true;
|
|
59
65
|
private previousExpression;
|
|
66
|
+
private executeFootprint;
|
|
67
|
+
private undoFootprint;
|
|
60
68
|
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
61
69
|
expression: string;
|
|
62
70
|
expressionName: string;
|
|
@@ -65,6 +73,7 @@ export declare class UpdateNamedExpressionCommand implements EngineCommand {
|
|
|
65
73
|
});
|
|
66
74
|
execute(): void;
|
|
67
75
|
undo(): void;
|
|
76
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
68
77
|
toAction(): EngineAction;
|
|
69
78
|
}
|
|
70
79
|
/**
|
|
@@ -74,6 +83,8 @@ export declare class RenameNamedExpressionCommand implements EngineCommand {
|
|
|
74
83
|
private deps;
|
|
75
84
|
private opts;
|
|
76
85
|
readonly requiresReevaluation = true;
|
|
86
|
+
private executeFootprint;
|
|
87
|
+
private undoFootprint;
|
|
77
88
|
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
78
89
|
expressionName: string;
|
|
79
90
|
sheetName?: string;
|
|
@@ -82,6 +93,7 @@ export declare class RenameNamedExpressionCommand implements EngineCommand {
|
|
|
82
93
|
});
|
|
83
94
|
execute(): void;
|
|
84
95
|
undo(): void;
|
|
96
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
85
97
|
toAction(): EngineAction;
|
|
86
98
|
}
|
|
87
99
|
/**
|
|
@@ -107,9 +119,12 @@ export declare class SetNamedExpressionsCommand implements EngineCommand {
|
|
|
107
119
|
private opts;
|
|
108
120
|
readonly requiresReevaluation = true;
|
|
109
121
|
private previousExpressions;
|
|
122
|
+
private executeFootprint;
|
|
123
|
+
private undoFootprint;
|
|
110
124
|
constructor(deps: NamedExpressionCommandDeps, opts: SetNamedExpressionsOpts);
|
|
111
125
|
execute(): void;
|
|
112
126
|
undo(): void;
|
|
127
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
113
128
|
toAction(): EngineAction;
|
|
114
129
|
}
|
|
115
130
|
export {};
|
|
@@ -9,7 +9,7 @@ import type { ReferenceManager } from "../managers/reference-manager";
|
|
|
9
9
|
import type { StyleManager } from "../managers/style-manager";
|
|
10
10
|
import type { TableManager } from "../managers/table-manager";
|
|
11
11
|
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
12
|
-
import type { EngineAction, EngineCommand } from "./types";
|
|
12
|
+
import type { EngineAction, EngineCommand, MutationInvalidation } from "./types";
|
|
13
13
|
/**
|
|
14
14
|
* Dependencies needed for structure commands.
|
|
15
15
|
*/
|
|
@@ -38,9 +38,12 @@ export declare class AddWorkbookCommand implements EngineCommand {
|
|
|
38
38
|
private deps;
|
|
39
39
|
private workbookName;
|
|
40
40
|
readonly requiresReevaluation = true;
|
|
41
|
+
private executeFootprint;
|
|
42
|
+
private undoFootprint;
|
|
41
43
|
constructor(deps: StructureCommandDeps, workbookName: string);
|
|
42
44
|
execute(): void;
|
|
43
45
|
undo(): void;
|
|
46
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
44
47
|
toAction(): EngineAction;
|
|
45
48
|
}
|
|
46
49
|
/**
|
|
@@ -51,9 +54,12 @@ export declare class RemoveWorkbookCommand implements EngineCommand {
|
|
|
51
54
|
private workbookName;
|
|
52
55
|
readonly requiresReevaluation = true;
|
|
53
56
|
private snapshot;
|
|
57
|
+
private executeFootprint;
|
|
58
|
+
private undoFootprint;
|
|
54
59
|
constructor(deps: StructureCommandDeps, workbookName: string);
|
|
55
60
|
execute(): void;
|
|
56
61
|
undo(): void;
|
|
62
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
57
63
|
toAction(): EngineAction;
|
|
58
64
|
}
|
|
59
65
|
/**
|
|
@@ -64,9 +70,13 @@ export declare class RenameWorkbookCommand implements EngineCommand {
|
|
|
64
70
|
private workbookName;
|
|
65
71
|
private newWorkbookName;
|
|
66
72
|
readonly requiresReevaluation = true;
|
|
73
|
+
private snapshot;
|
|
74
|
+
private executeFootprint;
|
|
75
|
+
private undoFootprint;
|
|
67
76
|
constructor(deps: StructureCommandDeps, workbookName: string, newWorkbookName: string);
|
|
68
77
|
execute(): void;
|
|
69
78
|
undo(): void;
|
|
79
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
70
80
|
toAction(): EngineAction;
|
|
71
81
|
}
|
|
72
82
|
/**
|
|
@@ -78,9 +88,12 @@ export declare class CloneWorkbookCommand implements EngineCommand {
|
|
|
78
88
|
private fromWorkbookName;
|
|
79
89
|
private toWorkbookName;
|
|
80
90
|
readonly requiresReevaluation = true;
|
|
91
|
+
private executeFootprint;
|
|
92
|
+
private undoFootprint;
|
|
81
93
|
constructor(deps: StructureCommandDeps, fromWorkbookName: string, toWorkbookName: string);
|
|
82
94
|
execute(): void;
|
|
83
95
|
undo(): void;
|
|
96
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
84
97
|
toAction(): EngineAction;
|
|
85
98
|
}
|
|
86
99
|
/**
|
|
@@ -90,12 +103,15 @@ export declare class AddSheetCommand implements EngineCommand {
|
|
|
90
103
|
private deps;
|
|
91
104
|
private opts;
|
|
92
105
|
readonly requiresReevaluation = true;
|
|
106
|
+
private executeFootprint;
|
|
107
|
+
private undoFootprint;
|
|
93
108
|
constructor(deps: StructureCommandDeps, opts: {
|
|
94
109
|
workbookName: string;
|
|
95
110
|
sheetName: string;
|
|
96
111
|
});
|
|
97
112
|
execute(): void;
|
|
98
113
|
undo(): void;
|
|
114
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
99
115
|
toAction(): EngineAction;
|
|
100
116
|
}
|
|
101
117
|
/**
|
|
@@ -106,12 +122,15 @@ export declare class RemoveSheetCommand implements EngineCommand {
|
|
|
106
122
|
private opts;
|
|
107
123
|
readonly requiresReevaluation = true;
|
|
108
124
|
private snapshot;
|
|
125
|
+
private executeFootprint;
|
|
126
|
+
private undoFootprint;
|
|
109
127
|
constructor(deps: StructureCommandDeps, opts: {
|
|
110
128
|
workbookName: string;
|
|
111
129
|
sheetName: string;
|
|
112
130
|
});
|
|
113
131
|
execute(): void;
|
|
114
132
|
undo(): void;
|
|
133
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
115
134
|
toAction(): EngineAction;
|
|
116
135
|
}
|
|
117
136
|
/**
|
|
@@ -121,6 +140,9 @@ export declare class RenameSheetCommand implements EngineCommand {
|
|
|
121
140
|
private deps;
|
|
122
141
|
private opts;
|
|
123
142
|
readonly requiresReevaluation = true;
|
|
143
|
+
private snapshot;
|
|
144
|
+
private executeFootprint;
|
|
145
|
+
private undoFootprint;
|
|
124
146
|
constructor(deps: StructureCommandDeps, opts: {
|
|
125
147
|
workbookName: string;
|
|
126
148
|
sheetName: string;
|
|
@@ -128,5 +150,6 @@ export declare class RenameSheetCommand implements EngineCommand {
|
|
|
128
150
|
});
|
|
129
151
|
execute(): void;
|
|
130
152
|
undo(): void;
|
|
153
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
131
154
|
toAction(): EngineAction;
|
|
132
155
|
}
|
|
@@ -8,7 +8,7 @@ import type { NamedExpressionManager } from "../managers/named-expression-manage
|
|
|
8
8
|
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
9
9
|
import type { SchemaManager } from "../managers/schema-manager";
|
|
10
10
|
import type { CellAddress, SerializedCellValue, SpreadsheetRangeEnd, TableDefinition } from "../types";
|
|
11
|
-
import type { EngineCommand, EngineAction } from "./types";
|
|
11
|
+
import type { EngineCommand, EngineAction, MutationInvalidation } from "./types";
|
|
12
12
|
/**
|
|
13
13
|
* Dependencies needed for table commands.
|
|
14
14
|
*/
|
|
@@ -27,6 +27,8 @@ export declare class AddTableCommand implements EngineCommand {
|
|
|
27
27
|
private deps;
|
|
28
28
|
private props;
|
|
29
29
|
readonly requiresReevaluation = true;
|
|
30
|
+
private executeFootprint;
|
|
31
|
+
private undoFootprint;
|
|
30
32
|
constructor(deps: TableCommandDeps, props: {
|
|
31
33
|
tableName: string;
|
|
32
34
|
sheetName: string;
|
|
@@ -37,6 +39,7 @@ export declare class AddTableCommand implements EngineCommand {
|
|
|
37
39
|
});
|
|
38
40
|
execute(): void;
|
|
39
41
|
undo(): void;
|
|
42
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
40
43
|
toAction(): EngineAction;
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
@@ -47,12 +50,15 @@ export declare class RemoveTableCommand implements EngineCommand {
|
|
|
47
50
|
private opts;
|
|
48
51
|
readonly requiresReevaluation = true;
|
|
49
52
|
private removedTable;
|
|
53
|
+
private executeFootprint;
|
|
54
|
+
private undoFootprint;
|
|
50
55
|
constructor(deps: TableCommandDeps, opts: {
|
|
51
56
|
tableName: string;
|
|
52
57
|
workbookName: string;
|
|
53
58
|
});
|
|
54
59
|
execute(): void;
|
|
55
60
|
undo(): void;
|
|
61
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
56
62
|
toAction(): EngineAction;
|
|
57
63
|
}
|
|
58
64
|
/**
|
|
@@ -64,9 +70,12 @@ export declare class RenameTableCommand implements EngineCommand {
|
|
|
64
70
|
private oldName;
|
|
65
71
|
private newName;
|
|
66
72
|
readonly requiresReevaluation = true;
|
|
73
|
+
private executeFootprint;
|
|
74
|
+
private undoFootprint;
|
|
67
75
|
constructor(deps: TableCommandDeps, workbookName: string, oldName: string, newName: string);
|
|
68
76
|
execute(): void;
|
|
69
77
|
undo(): void;
|
|
78
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
70
79
|
toAction(): EngineAction;
|
|
71
80
|
}
|
|
72
81
|
/**
|
|
@@ -77,6 +86,8 @@ export declare class UpdateTableCommand implements EngineCommand {
|
|
|
77
86
|
private opts;
|
|
78
87
|
readonly requiresReevaluation = true;
|
|
79
88
|
private previousTable;
|
|
89
|
+
private executeFootprint;
|
|
90
|
+
private undoFootprint;
|
|
80
91
|
constructor(deps: TableCommandDeps, opts: {
|
|
81
92
|
tableName: string;
|
|
82
93
|
sheetName?: string;
|
|
@@ -87,6 +98,7 @@ export declare class UpdateTableCommand implements EngineCommand {
|
|
|
87
98
|
});
|
|
88
99
|
execute(): void;
|
|
89
100
|
undo(): void;
|
|
101
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
90
102
|
toAction(): EngineAction;
|
|
91
103
|
}
|
|
92
104
|
/**
|
|
@@ -97,8 +109,11 @@ export declare class ResetTablesCommand implements EngineCommand {
|
|
|
97
109
|
private newTables;
|
|
98
110
|
readonly requiresReevaluation = true;
|
|
99
111
|
private previousTables;
|
|
112
|
+
private executeFootprint;
|
|
113
|
+
private undoFootprint;
|
|
100
114
|
constructor(deps: TableCommandDeps, newTables: Map<string, Map<string, TableDefinition>>);
|
|
101
115
|
execute(): void;
|
|
102
116
|
undo(): void;
|
|
117
|
+
getInvalidationFootprint(phase: "execute" | "undo"): MutationInvalidation;
|
|
103
118
|
toAction(): EngineAction;
|
|
104
119
|
}
|