@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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export class SheetUtils {\n \n}"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,WAAW;AAExB;",
|
|
8
|
+
"debugId": "5B049D39B8E133F564756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -85,4 +95,4 @@ function getReferencedTableNames(formula) {
|
|
|
85
95
|
}
|
|
86
96
|
}
|
|
87
97
|
|
|
88
|
-
//# debugId=
|
|
98
|
+
//# debugId=8D51A90CFE61095C64756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { parseFormula } from \"../parser/parser.cjs\";\nimport { astToString } from \"../parser/formatter.cjs\";\nimport { transformAST } from \"./ast-traverser.cjs\";\n\n/**\n * Renames table references in a formula string\n * @param formula - The formula string (without the leading =)\n * @param oldTableName - The current table name to replace\n * @param newTableName - The new table name\n * @returns The updated formula string, or the original if no changes were made\n */\nexport function renameTableInFormula(\n formula: string,\n oldTableName: string,\n newTableName: string\n): string {\n try {\n const ast = parseFormula(formula);\n \n const transformedAST = transformAST(ast, (node) => {\n if (node.type === \"structured-reference\" && node.tableName === oldTableName) {\n return {\n ...node,\n tableName: newTableName\n };\n }\n return node;\n });\n\n return astToString(transformedAST);\n } catch (error) {\n // If parsing fails, return the original formula\n return formula;\n }\n}\n\n/**\n * Checks if a formula contains references to a specific table\n * @param formula - The formula string (without the leading =)\n * @param tableName - The table name to search for\n * @returns True if the formula contains references to the table\n */\nexport function formulaReferencesTable(formula: string, tableName: string): boolean {\n try {\n const ast = parseFormula(formula);\n let hasReference = false;\n\n transformAST(ast, (node) => {\n if (node.type === \"structured-reference\" && node.tableName === tableName) {\n hasReference = true;\n }\n return node;\n });\n\n return hasReference;\n } catch (error) {\n // If parsing fails, assume no reference\n return false;\n }\n}\n\n/**\n * Gets all table names referenced in a formula\n * @param formula - The formula string (without the leading =)\n * @returns Array of unique table names referenced in the formula\n */\nexport function getReferencedTableNames(formula: string): string[] {\n try {\n const ast = parseFormula(formula);\n const tableNames = new Set<string>();\n\n transformAST(ast, (node) => {\n if (node.type === \"structured-reference\" && node.tableName) {\n tableNames.add(node.tableName);\n }\n return node;\n });\n\n return Array.from(tableNames);\n } catch (error) {\n // If parsing fails, return empty array\n return [];\n }\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA6B,IAA7B;AAC4B,IAA5B;AAC6B,IAA7B;AASO,SAAS,oBAAoB,CAClC,SACA,cACA,cACQ;AAAA,EACR,IAAI;AAAA,IACF,MAAM,MAAM,2BAAa,OAAO;AAAA,IAEhC,MAAM,iBAAiB,kCAAa,KAAK,CAAC,SAAS;AAAA,MACjD,IAAI,KAAK,SAAS,0BAA0B,KAAK,cAAc,cAAc;AAAA,QAC3E,OAAO;AAAA,aACF;AAAA,UACH,WAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IAED,OAAO,6BAAY,cAAc;AAAA,IACjC,OAAO,OAAO;AAAA,IAEd,OAAO;AAAA;AAAA;AAUJ,SAAS,sBAAsB,CAAC,SAAiB,WAA4B;AAAA,EAClF,IAAI;AAAA,IACF,MAAM,MAAM,2BAAa,OAAO;AAAA,IAChC,IAAI,eAAe;AAAA,IAEnB,kCAAa,KAAK,CAAC,SAAS;AAAA,MAC1B,IAAI,KAAK,SAAS,0BAA0B,KAAK,cAAc,WAAW;AAAA,QACxE,eAAe;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IAED,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IAEd,OAAO;AAAA;AAAA;AASJ,SAAS,uBAAuB,CAAC,SAA2B;AAAA,EACjE,IAAI;AAAA,IACF,MAAM,MAAM,2BAAa,OAAO;AAAA,IAChC,MAAM,aAAa,IAAI;AAAA,IAEvB,kCAAa,KAAK,CAAC,SAAS;AAAA,MAC1B,IAAI,KAAK,SAAS,0BAA0B,KAAK,WAAW;AAAA,QAC1D,WAAW,IAAI,KAAK,SAAS;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA,KACR;AAAA,IAED,OAAO,MAAM,KAAK,UAAU;AAAA,IAC5B,OAAO,OAAO;AAAA,IAEd,OAAO,CAAC;AAAA;AAAA;",
|
|
8
|
+
"debugId": "8D51A90CFE61095C64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/cjs/core/types.cjs
CHANGED
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -45,4 +55,4 @@ var FormulaError;
|
|
|
45
55
|
FormulaError2["SPILL"] = "#SPILL!";
|
|
46
56
|
})(FormulaError ||= {});
|
|
47
57
|
|
|
48
|
-
//# debugId=
|
|
58
|
+
//# debugId=5EC6531CF2E47C8764756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * Core type definitions for FormulaEngine\n * This file contains all fundamental types used throughout the engine\n */\n\nimport type { EvaluationContext } from \"../evaluator/evaluation-context.cjs\";\nimport type { FormulaEvaluator } from \"../evaluator/formula-evaluator.cjs\";\nimport type { FunctionNode } from \"../parser/ast.cjs\";\nimport type { DependencyNode } from \"./managers/dependency-node.cjs\";\nimport type { LookupOrder } from \"./managers/range-eval-order-builder.cjs\";\n\n// Cell addressing types\nexport interface CellAddress {\n sheetName: string;\n workbookName: string;\n colIndex: number;\n rowIndex: number;\n}\n\nexport interface RangeAddress {\n sheetName: string;\n workbookName: string;\n range: SpreadsheetRange;\n}\n\nexport interface LocalCellAddress {\n colIndex: number;\n rowIndex: number;\n}\n\nexport type ArethmeticEvaluator = (\n left: CellValue,\n right: CellValue,\n context: EvaluationContext\n) => CellValue | ErrorEvaluationResult;\n\nexport type PositiveInfinity = {\n type: \"infinity\";\n sign: \"positive\";\n};\n\nexport type CellInfinity = {\n type: \"infinity\";\n sign: \"positive\" | \"negative\";\n};\n\nexport type CellNumber = {\n type: \"number\";\n value: number;\n};\n\nexport type SpreadsheetRangeEnd = CellNumber | PositiveInfinity;\n\nexport type SpreadsheetRange = {\n start: {\n col: number;\n row: number;\n };\n end: {\n col: SpreadsheetRangeEnd;\n row: SpreadsheetRangeEnd;\n };\n};\n\nexport type RelativeRange = {\n start: {\n col: number;\n row: number;\n };\n width: SpreadsheetRangeEnd;\n height: SpreadsheetRangeEnd;\n};\n\nexport type FiniteSpreadsheetRange = {\n start: {\n col: number;\n row: number;\n };\n end: {\n col: number;\n row: number;\n };\n};\n\nexport type CellString = {\n type: \"string\";\n value: string;\n};\n\nexport type CellBoolean = {\n type: \"boolean\";\n value: boolean;\n};\n\n// Cell value types\nexport type CellValue = CellNumber | CellString | CellBoolean | CellInfinity;\n/**\n * undefined and \"\" are considered empty values\n * undefineds are converted to \"\" in the engine\n *\n * any empty values are deleted from the sheet content\n */\nexport type SerializedCellValue = string | number | boolean | undefined;\n\n// Named expressions\nexport interface NamedExpression {\n name: string;\n expression: string;\n}\n\nexport interface TableDefinition {\n name: string;\n start: {\n rowIndex: number;\n colIndex: number;\n };\n headers: Map<string, { name: string; index: number }>;\n endRow: SpreadsheetRangeEnd;\n sheetName: string;\n workbookName: string;\n}\n\n// Formula errors\nexport enum FormulaError {\n DIV0 = \"#DIV/0!\",\n NA = \"#N/A\",\n NAME = \"#NAME?\",\n NUM = \"#NUM!\",\n REF = \"#REF!\",\n VALUE = \"#VALUE!\",\n CYCLE = \"#CYCLE!\",\n ERROR = \"#ERROR!\",\n SPILL = \"#SPILL!\",\n}\n\n// Sheet structure\nexport interface Sheet<TCellMetadata = unknown, TSheetMetadata = unknown> {\n name: string;\n index: number; // 0-based index of the sheet\n content: Map<string, SerializedCellValue>;\n /**\n * Cell metadata - arbitrary consumer-defined data per cell\n * Examples: rich text content, links, comments, custom app data\n * The engine stores and copies this data but doesn't interpret it\n * Keyed by cell reference (e.g., \"A1\")\n */\n metadata: Map<string, TCellMetadata>;\n /**\n * Sheet-level metadata - arbitrary consumer-defined data for the entire sheet\n * Examples: text boxes, drawings, frozen panes, print settings\n * The engine stores and copies this data but doesn't interpret it\n */\n sheetMetadata: TSheetMetadata;\n}\n\nexport interface Workbook<\n TCellMetadata = unknown,\n TSheetMetadata = unknown,\n TWorkbookMetadata = unknown\n> {\n name: string;\n sheets: Map<string, Sheet<TCellMetadata, TSheetMetadata>>;\n /**\n * Workbook-level metadata - arbitrary consumer-defined data for the entire workbook\n * Examples: themes, custom ribbons, document properties, workbook settings\n * The engine stores and copies this data but doesn't interpret it\n */\n workbookMetadata: TWorkbookMetadata;\n}\n\n/**\n * Tracked reference - a stable reference to a range that updates automatically\n * when workbooks/sheets are renamed and becomes invalid when they're deleted\n */\nexport interface TrackedReference {\n id: string; // UUID\n address: RangeAddress; // The range being tracked\n isValid: boolean; // False if sheet/workbook deleted\n}\n\nexport type ValueEvaluationResult = {\n type: \"value\";\n result: CellValue;\n /**\n * If the terminating evaluation result is a reference (see evaluateReference)\n * then we store information about the source cell for context dependent functions like CELL\n */\n sourceCell?: CellAddress;\n};\n\nexport type AwaitingEvaluationResult = {\n type: \"awaiting-evaluation\";\n waitingFor: DependencyNode;\n errAddress: DependencyNode;\n /**\n * If the terminating evaluation result is a reference (see evaluateReference)\n * then we store information about the source cell for context dependent functions like CELL\n */\n sourceCell?: CellAddress;\n};\n\nexport type DoesNotSpillResult = {\n type: \"does-not-spill\";\n};\n\nexport type ErrorEvaluationResult =\n | {\n type: \"error\";\n err: FormulaError;\n errAddress: DependencyNode;\n message: string;\n /**\n * If the terminating evaluation result is a reference (see evaluateReference)\n * then we store information about the source cell for context dependent functions like CELL\n */\n sourceCell?: CellAddress;\n }\n | AwaitingEvaluationResult;\n\nexport type SingleEvaluationResult =\n | ValueEvaluationResult\n | ErrorEvaluationResult;\n\nexport type SpilledValuesEvaluator = (\n spillOffset: { x: number; y: number },\n context: EvaluationContext\n) => SingleEvaluationResult;\n\nexport type SpilledValuesEvaluationResult = {\n type: \"spilled-values\";\n\n /**\n * When a raw range is evaluated, we will add it to the sourceRange so it can be used e.g. for context dependent functions\n */\n sourceRange?: RangeAddress;\n\n /**\n * If the terminating evaluation result is a reference (see evaluateReference)\n * then we store information about the source cell for context dependent functions like CELL\n * sourceCell will only be defined on a spilledValue when a single value is looked up,\n */\n sourceCell?: CellAddress;\n\n spillArea: (origin: CellAddress) => SpreadsheetRange;\n /**\n * for debugging we add a source string to denote where the spilled values were created\n */\n source: string;\n evaluate: SpilledValuesEvaluator;\n /**\n * evaluateAllCells evaluates all non-empty cells in the spilled range.\n * Because a spilled range can be open-ended, we need to have logic for which cells we should evaluate.\n * e.g. when evaluating a range such as D:D only the cells in the current sheet residing in\n * column D should be evaluated and cells producing spilled values that spill onto D:D.\n *\n * In order to evaluate spilled cells in D:D the range evaluateAllCells need to get all cells in the\n * the intersection of the spilled range and D:D, for that reason evaluateAllCells gets an intersection parameter,\n * where the intersection is relative to the origin.\n *\n * #### Producers:\n * In e.g. SEQUENCE and evaluateRange we have logic for which cells in a spilled range we should evaluate,\n *\n * #### Nesting:\n * e.g. evaluation of scalar operators where we want to nest e.g. `5 * right.evaluate()`\n * can be implemented by calling\n * ```ts\n * const vals = child.evaluateAllCells.call(this, options);\n * return vals.map(val => ({ ...val, result: 5 * val.result }));\n * ```\n *\n * #### Consumers:\n * Only functions that need access to all spilled values in a range end up calling evaluateAllCells, e.g.\n * SUM, MIN, MAX, MATCH. Other types of functions like INDEX doesn't need to evaluate all cells in a range,\n * but does a lookup into a spilled range using the evaluate method.\n *\n */\n evaluateAllCells: (\n this: FormulaEvaluator,\n options: {\n /**\n * an intersection relative to the origin\n */\n intersection?: SpreadsheetRange;\n evaluate: SpilledValuesEvaluator;\n context: EvaluationContext;\n /**\n * origin is the cell address that the spilled range is spilled from\n * e.g. in A3=B2:B4 the origin is A3\n */\n origin: CellAddress;\n\n lookupOrder: LookupOrder;\n }\n ) => EvaluateAllCellsResult;\n};\n\nexport type EvaluateAllCellsResult =\n | ErrorEvaluationResult\n | {\n type: \"values\";\n values: CellInRangeResult[];\n };\n\nexport type CellInRangeResult = {\n result: SingleEvaluationResult;\n relativePos: { x: number; y: number };\n};\n\nexport type FunctionEvaluationResult =\n | SingleEvaluationResult\n | SpilledValuesEvaluationResult;\n\nexport type SpilledValue = {\n /**\n * spillOnto is the range that the spilled value is spilled onto\n */\n spillOnto: SpreadsheetRange;\n /**\n * origin is the cell address that the spilled value is spilled from\n */\n origin: CellAddress;\n};\n\n/**\n * Function definition\n */\nexport interface FunctionDefinition {\n name: string;\n evaluate: (\n this: FormulaEvaluator,\n node: FunctionNode,\n context: EvaluationContext\n ) => FunctionEvaluationResult;\n aliases?: string[];\n}\n\n/**\n * Evaluation result\n */\nexport type EvaluationResult = {\n dependencies: Set<string>;\n} & FunctionEvaluationResult;\n\nexport type SCC = {\n id: number;\n nodes: Set<DependencyNode>; // All nodes considering soft + hard edges\n evaluationOrder: DependencyNode[]; // Flat topologically ordered list\n resolved: boolean;\n hardEdgeSCCs: Set<DependencyNode>[]; // SCCs formed by only hard edges (regular dependencies)\n};\n\nexport type SCCDAG = {\n sccList: SCC[];\n sccGraph: Map<number, Set<number>>; // Adjacency list of SCC dependencies\n};\n\nexport type EvaluationOrder = {\n evaluationOrder: Set<DependencyNode>;\n hasCycle: boolean;\n cycleNodes?: Set<DependencyNode>;\n hash: string;\n sccDAG?: SCCDAG;\n};\n\n// Conditional Styling types\nexport interface LCHColor {\n l: number; // Lightness: 0-100\n c: number; // Chroma: 0-150+\n h: number; // Hue: 0-360\n}\n\nexport interface FormulaStyleCondition {\n type: \"formula\";\n formula: string;\n color: LCHColor;\n}\n\nexport interface GradientStyleCondition {\n type: \"gradient\";\n min:\n | { type: \"lowest_value\"; color: LCHColor }\n | { type: \"number\"; color: LCHColor; valueFormula: string };\n max:\n | { type: \"highest_value\"; color: LCHColor }\n | { type: \"number\"; color: LCHColor; valueFormula: string };\n}\n\nexport type StyleCondition = FormulaStyleCondition | GradientStyleCondition;\n\nexport interface ConditionalStyle {\n areas: RangeAddress[];\n condition: StyleCondition;\n}\n\nexport interface DirectCellStyle {\n areas: RangeAddress[];\n style: CellStyle;\n}\n\nexport interface CellStyle {\n backgroundColor?: string; // Hex color format\n color?: string; // Text color in hex format\n fontSize?: number; // Font size in pixels\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n}\n\nexport interface CopyCellsOptions {\n /**\n * Whether this is a cut operation (clears source cells after copying)\n * @default false\n */\n cut?: boolean;\n /**\n * What to include in the copy operation.\n * - Use 'all' as shorthand for ['content', 'style', 'metadata']\n * - Use array for fine-grained control over what to copy:\n * - ['content'] - copy only values/formulas\n * - ['style'] - copy only formatting\n * - ['metadata'] - copy only metadata (rich text, links, etc.)\n * - ['content', 'style'] - copy content and formatting\n * - ['content', 'metadata'] - copy content and metadata\n * - ['style', 'metadata'] - copy formatting and metadata\n * - ['content', 'style', 'metadata'] - same as 'all'\n * @default 'all'\n */\n include?: \"all\" | (\"content\" | \"style\" | \"metadata\")[];\n /**\n * The type of the content to copy\n * value: Copy the value from the source to the target,\n * e.g. if the cell has the formula =123 + 123 then the value is 246\n * formula: Copy the formula from the source to the target,\n * e.g. if the cell has the formula =123 + 123 then the formula is =123 + 123 is copied\n * @default 'formula'\n */\n type?: \"value\" | \"formula\";\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HO,IAAK;AAAA,CAAL,CAAK,kBAAL;AAAA,EACL,wBAAO;AAAA,EACP,sBAAK;AAAA,EACL,wBAAO;AAAA,EACP,uBAAM;AAAA,EACN,uBAAM;AAAA,EACN,yBAAQ;AAAA,EACR,yBAAQ;AAAA,EACR,yBAAQ;AAAA,EACR,yBAAQ;AAAA,GATE;",
|
|
8
|
+
"debugId": "5EC6531CF2E47C8764756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -134,4 +144,4 @@ function calculateGradientFactor(value, min, max) {
|
|
|
134
144
|
return Math.max(0, Math.min(1, factor));
|
|
135
145
|
}
|
|
136
146
|
|
|
137
|
-
//# debugId=
|
|
147
|
+
//# debugId=272FD8CCC2EBB06764756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * Color utilities for conditional styling\n * Handles LCH color space conversions and interpolation\n */\n\nimport type { LCHColor } from \"../types.cjs\";\n\n/**\n * Convert LCH color to hex string\n * LCH uses the CIELCH color space which provides perceptually uniform colors\n */\nexport function lchToHex(color: LCHColor): string {\n // First convert LCH to LAB\n const { l, c, h } = color;\n const hRad = (h * Math.PI) / 180;\n const a = c * Math.cos(hRad);\n const b = c * Math.sin(hRad);\n\n // Then convert LAB to XYZ (using D65 illuminant)\n let y = (l + 16) / 116;\n let x = a / 500 + y;\n let z = y - b / 200;\n\n // Apply inverse f function\n const delta = 6 / 29;\n const deltaCubed = delta * delta * delta;\n \n x = x > delta ? x * x * x : 3 * delta * delta * (x - 4 / 29);\n y = y > delta ? y * y * y : 3 * delta * delta * (y - 4 / 29);\n z = z > delta ? z * z * z : 3 * delta * delta * (z - 4 / 29);\n\n // Scale by D65 white point\n x *= 0.95047;\n y *= 1.0;\n z *= 1.08883;\n\n // Convert XYZ to RGB\n let r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n let g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n let bVal = x * 0.0557 + y * -0.204 + z * 1.057;\n\n // Apply gamma correction\n const gammaCorrect = (val: number) => {\n return val > 0.0031308\n ? 1.055 * Math.pow(val, 1 / 2.4) - 0.055\n : 12.92 * val;\n };\n\n r = gammaCorrect(r);\n g = gammaCorrect(g);\n bVal = gammaCorrect(bVal);\n\n // Clamp to [0, 1] and convert to 0-255\n r = Math.max(0, Math.min(1, r)) * 255;\n g = Math.max(0, Math.min(1, g)) * 255;\n bVal = Math.max(0, Math.min(1, bVal)) * 255;\n\n // Convert to hex\n const toHex = (n: number) => {\n const hex = Math.round(n).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(bVal)}`;\n}\n\n/**\n * Convert hex color string to LCH color\n * @param hex Hex color string (e.g., \"#FF0000\" or \"FF0000\")\n * @returns LCH color\n */\nexport function hexToLch(hex: string): LCHColor {\n // Remove # if present and normalize\n const normalizedHex = hex.startsWith(\"#\") ? hex.slice(1) : hex;\n \n // Parse RGB values\n const r = parseInt(normalizedHex.slice(0, 2), 16) / 255;\n const g = parseInt(normalizedHex.slice(2, 4), 16) / 255;\n const b = parseInt(normalizedHex.slice(4, 6), 16) / 255;\n\n // Apply inverse gamma correction\n const inverseGamma = (val: number) => {\n return val > 0.04045\n ? Math.pow((val + 0.055) / 1.055, 2.4)\n : val / 12.92;\n };\n\n let rLinear = inverseGamma(r);\n let gLinear = inverseGamma(g);\n let bLinear = inverseGamma(b);\n\n // Convert RGB to XYZ (using sRGB matrix)\n let x = rLinear * 0.4124564 + gLinear * 0.3575761 + bLinear * 0.1804375;\n let y = rLinear * 0.2126729 + gLinear * 0.7151522 + bLinear * 0.0721750;\n let z = rLinear * 0.0193339 + gLinear * 0.1191920 + bLinear * 0.9503041;\n\n // Normalize by D65 white point\n x /= 0.95047;\n y /= 1.0;\n z /= 1.08883;\n\n // Convert XYZ to LAB\n const f = (t: number) => {\n const delta = 6 / 29;\n if (t > delta * delta * delta) {\n return Math.cbrt(t);\n }\n return t / (3 * delta * delta) + 4 / 29;\n };\n\n const fx = f(x);\n const fy = f(y);\n const fz = f(z);\n\n const l = 116 * fy - 16;\n const a = 500 * (fx - fy);\n const bLab = 200 * (fy - fz);\n\n // Convert LAB to LCH\n const c = Math.sqrt(a * a + bLab * bLab);\n let h = Math.atan2(bLab, a) * (180 / Math.PI);\n \n // Normalize hue to [0, 360)\n if (h < 0) {\n h += 360;\n }\n\n return {\n l: Math.max(0, Math.min(100, l)),\n c: Math.max(0, c),\n h: h,\n };\n}\n\n/**\n * Interpolate between two LCH colors\n * @param color1 Starting color\n * @param color2 Ending color\n * @param t Interpolation factor (0-1)\n * @returns Interpolated LCH color\n */\nexport function interpolateLCH(\n color1: LCHColor,\n color2: LCHColor,\n t: number\n): LCHColor {\n // Clamp t to [0, 1]\n t = Math.max(0, Math.min(1, t));\n\n // Interpolate lightness and chroma linearly\n const l = color1.l + (color2.l - color1.l) * t;\n const c = color1.c + (color2.c - color1.c) * t;\n\n // Interpolate hue taking the shortest path around the circle\n let h1 = color1.h;\n let h2 = color2.h;\n\n // Find shortest path\n const diff = h2 - h1;\n if (diff > 180) {\n h1 += 360;\n } else if (diff < -180) {\n h2 += 360;\n }\n\n let h = h1 + (h2 - h1) * t;\n\n // Normalize hue to [0, 360)\n h = ((h % 360) + 360) % 360;\n\n return { l, c, h };\n}\n\n/**\n * Calculate interpolation factor for a value within a range\n * @param value Current value\n * @param min Minimum value\n * @param max Maximum value\n * @returns Factor between 0 and 1\n */\nexport function calculateGradientFactor(\n value: number,\n min: number,\n max: number\n): number {\n // Handle edge cases\n if (max === min) {\n return 0.5; // If min equals max, return middle value\n }\n\n // Calculate factor and clamp to [0, 1]\n const factor = (value - min) / (max - min);\n return Math.max(0, Math.min(1, factor));\n}\n\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,SAAS,QAAQ,CAAC,OAAyB;AAAA,EAEhD,QAAQ,GAAG,GAAG,MAAM;AAAA,EACpB,MAAM,OAAQ,IAAI,KAAK,KAAM;AAAA,EAC7B,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI;AAAA,EAC3B,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI;AAAA,EAG3B,IAAI,KAAK,IAAI,MAAM;AAAA,EACnB,IAAI,IAAI,IAAI,MAAM;AAAA,EAClB,IAAI,IAAI,IAAI,IAAI;AAAA,EAGhB,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,aAAa,QAAQ,QAAQ;AAAA,EAEnC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,QAAQ,SAAS,IAAI,IAAI;AAAA,EACzD,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,QAAQ,SAAS,IAAI,IAAI;AAAA,EACzD,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,QAAQ,SAAS,IAAI,IAAI;AAAA,EAGzD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EAGL,IAAI,IAAI,IAAI,SAAS,IAAI,UAAU,IAAI;AAAA,EACvC,IAAI,IAAI,IAAI,UAAU,IAAI,SAAS,IAAI;AAAA,EACvC,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,IAAI;AAAA,EAGzC,MAAM,eAAe,CAAC,QAAgB;AAAA,IACpC,OAAO,MAAM,YACT,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,QACjC,QAAQ;AAAA;AAAA,EAGd,IAAI,aAAa,CAAC;AAAA,EAClB,IAAI,aAAa,CAAC;AAAA,EAClB,OAAO,aAAa,IAAI;AAAA,EAGxB,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI;AAAA,EAClC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI;AAAA,EAClC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI;AAAA,EAGxC,MAAM,QAAQ,CAAC,MAAc;AAAA,IAC3B,MAAM,MAAM,KAAK,MAAM,CAAC,EAAE,SAAS,EAAE;AAAA,IACrC,OAAO,IAAI,WAAW,IAAI,MAAM,MAAM;AAAA;AAAA,EAGxC,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI;AAAA;AAQtC,SAAS,QAAQ,CAAC,KAAuB;AAAA,EAE9C,MAAM,gBAAgB,IAAI,WAAW,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI;AAAA,EAG3D,MAAM,IAAI,SAAS,cAAc,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAAA,EACpD,MAAM,IAAI,SAAS,cAAc,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAAA,EACpD,MAAM,IAAI,SAAS,cAAc,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAAA,EAGpD,MAAM,eAAe,CAAC,QAAgB;AAAA,IACpC,OAAO,MAAM,UACT,KAAK,KAAK,MAAM,SAAS,OAAO,GAAG,IACnC,MAAM;AAAA;AAAA,EAGZ,IAAI,UAAU,aAAa,CAAC;AAAA,EAC5B,IAAI,UAAU,aAAa,CAAC;AAAA,EAC5B,IAAI,UAAU,aAAa,CAAC;AAAA,EAG5B,IAAI,IAAI,UAAU,YAAY,UAAU,YAAY,UAAU;AAAA,EAC9D,IAAI,IAAI,UAAU,YAAY,UAAU,YAAY,UAAU;AAAA,EAC9D,IAAI,IAAI,UAAU,YAAY,UAAU,WAAY,UAAU;AAAA,EAG9D,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EAGL,MAAM,IAAI,CAAC,MAAc;AAAA,IACvB,MAAM,QAAQ,IAAI;AAAA,IAClB,IAAI,IAAI,QAAQ,QAAQ,OAAO;AAAA,MAC7B,OAAO,KAAK,KAAK,CAAC;AAAA,IACpB;AAAA,IACA,OAAO,KAAK,IAAI,QAAQ,SAAS,IAAI;AAAA;AAAA,EAGvC,MAAM,KAAK,EAAE,CAAC;AAAA,EACd,MAAM,KAAK,EAAE,CAAC;AAAA,EACd,MAAM,KAAK,EAAE,CAAC;AAAA,EAEd,MAAM,IAAI,MAAM,KAAK;AAAA,EACrB,MAAM,IAAI,OAAO,KAAK;AAAA,EACtB,MAAM,OAAO,OAAO,KAAK;AAAA,EAGzB,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI;AAAA,EACvC,IAAI,IAAI,KAAK,MAAM,MAAM,CAAC,KAAK,MAAM,KAAK;AAAA,EAG1C,IAAI,IAAI,GAAG;AAAA,IACT,KAAK;AAAA,EACP;AAAA,EAEA,OAAO;AAAA,IACL,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC;AAAA,IAC/B,GAAG,KAAK,IAAI,GAAG,CAAC;AAAA,IAChB;AAAA,EACF;AAAA;AAUK,SAAS,cAAc,CAC5B,QACA,QACA,GACU;AAAA,EAEV,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,EAG9B,MAAM,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK;AAAA,EAC7C,MAAM,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK;AAAA,EAG7C,IAAI,KAAK,OAAO;AAAA,EAChB,IAAI,KAAK,OAAO;AAAA,EAGhB,MAAM,OAAO,KAAK;AAAA,EAClB,IAAI,OAAO,KAAK;AAAA,IACd,MAAM;AAAA,EACR,EAAO,SAAI,OAAO,MAAM;AAAA,IACtB,MAAM;AAAA,EACR;AAAA,EAEA,IAAI,IAAI,MAAM,KAAK,MAAM;AAAA,EAGzB,KAAM,IAAI,MAAO,OAAO;AAAA,EAExB,OAAO,EAAE,GAAG,GAAG,EAAE;AAAA;AAUZ,SAAS,uBAAuB,CACrC,OACA,KACA,KACQ;AAAA,EAER,IAAI,QAAQ,KAAK;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,UAAU,QAAQ,QAAQ,MAAM;AAAA,EACtC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC;AAAA;",
|
|
8
|
+
"debugId": "272FD8CCC2EBB06764756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -62,4 +72,4 @@ function serializeRangeWithSheet(range, sheetName) {
|
|
|
62
72
|
return rangeStr;
|
|
63
73
|
}
|
|
64
74
|
|
|
65
|
-
//# debugId=
|
|
75
|
+
//# debugId=3BB50F423BC1C5A264756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { SpreadsheetRange } from \"../types.cjs\";\nimport { indexToColumn, getRowNumber } from \"../utils.cjs\";\n\n/**\n * Serializes a SpreadsheetRange into a human-readable range string following canonical format.\n * \n * Examples:\n * - Finite range: A2:B10\n * - Column-infinite range: A2:B (row infinite, column bounded)\n * - Row-infinite range: A2:10 (column infinite, row bounded)\n * - Fully infinite range: A2:INFINITY (both infinite)\n * \n * @param range The SpreadsheetRange to serialize\n * @returns A human-readable range string in canonical format\n */\nexport function serializeRange(range: SpreadsheetRange): string {\n // Format start cell\n const startCell = `${indexToColumn(range.start.col)}${getRowNumber(range.start.row)}`;\n \n // Determine end format based on infinity types\n const endRowIsInfinity = range.end.row.type === \"infinity\";\n const endColIsInfinity = range.end.col.type === \"infinity\";\n \n let rangeEnd: string;\n \n if (endRowIsInfinity && endColIsInfinity) {\n // Both infinite: A2:INFINITY\n rangeEnd = \"INFINITY\";\n } else if (endRowIsInfinity && range.end.col.type === \"number\") {\n // Row infinite, col finite: A2:B (column only)\n rangeEnd = indexToColumn(range.end.col.value);\n } else if (range.end.row.type === \"number\" && endColIsInfinity) {\n // Row finite, col infinite: A2:10 (row only)\n rangeEnd = getRowNumber(range.end.row.value).toString();\n } else if (range.end.row.type === \"number\" && range.end.col.type === \"number\") {\n // Both finite: A2:B10\n rangeEnd = `${indexToColumn(range.end.col.value)}${getRowNumber(range.end.row.value)}`;\n } else {\n throw new Error(\"Invalid range end configuration\");\n }\n \n return `${startCell}:${rangeEnd}`;\n}\n\n/**\n * Serializes a SpreadsheetRange with an optional sheet name prefix.\n * \n * @param range The SpreadsheetRange to serialize\n * @param sheetName Optional sheet name to prefix the range\n * @returns A human-readable range string, optionally prefixed with sheet name\n */\nexport function serializeRangeWithSheet(range: SpreadsheetRange, sheetName?: string): string {\n const rangeStr = serializeRange(range);\n \n if (sheetName) {\n // Handle sheet names that need quoting (contain spaces or special characters)\n const needsQuotes = /[^A-Za-z0-9_]/.test(sheetName);\n const quotedSheetName = needsQuotes ? `'${sheetName}'` : sheetName;\n return `${quotedSheetName}!${rangeStr}`;\n }\n \n return rangeStr;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAC4C,IAA5C;AAcO,SAAS,cAAc,CAAC,OAAiC;AAAA,EAE9D,MAAM,YAAY,GAAG,2BAAc,MAAM,MAAM,GAAG,IAAI,0BAAa,MAAM,MAAM,GAAG;AAAA,EAGlF,MAAM,mBAAmB,MAAM,IAAI,IAAI,SAAS;AAAA,EAChD,MAAM,mBAAmB,MAAM,IAAI,IAAI,SAAS;AAAA,EAEhD,IAAI;AAAA,EAEJ,IAAI,oBAAoB,kBAAkB;AAAA,IAExC,WAAW;AAAA,EACb,EAAO,SAAI,oBAAoB,MAAM,IAAI,IAAI,SAAS,UAAU;AAAA,IAE9D,WAAW,2BAAc,MAAM,IAAI,IAAI,KAAK;AAAA,EAC9C,EAAO,SAAI,MAAM,IAAI,IAAI,SAAS,YAAY,kBAAkB;AAAA,IAE9D,WAAW,0BAAa,MAAM,IAAI,IAAI,KAAK,EAAE,SAAS;AAAA,EACxD,EAAO,SAAI,MAAM,IAAI,IAAI,SAAS,YAAY,MAAM,IAAI,IAAI,SAAS,UAAU;AAAA,IAE7E,WAAW,GAAG,2BAAc,MAAM,IAAI,IAAI,KAAK,IAAI,0BAAa,MAAM,IAAI,IAAI,KAAK;AAAA,EACrF,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,iCAAiC;AAAA;AAAA,EAGnD,OAAO,GAAG,aAAa;AAAA;AAUlB,SAAS,uBAAuB,CAAC,OAAyB,WAA4B;AAAA,EAC3F,MAAM,WAAW,eAAe,KAAK;AAAA,EAErC,IAAI,WAAW;AAAA,IAEb,MAAM,cAAc,gBAAgB,KAAK,SAAS;AAAA,IAClD,MAAM,kBAAkB,cAAc,IAAI,eAAe;AAAA,IACzD,OAAO,GAAG,mBAAmB;AAAA,EAC/B;AAAA,EAEA,OAAO;AAAA;",
|
|
8
|
+
"debugId": "3BB50F423BC1C5A264756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -132,4 +142,4 @@ function intersectRanges(range1, range2) {
|
|
|
132
142
|
};
|
|
133
143
|
}
|
|
134
144
|
|
|
135
|
-
//# debugId=
|
|
145
|
+
//# debugId=C7B123826D489BDD64756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * Range utility functions for handling range arithmetic and operations\n */\n\nimport type { SpreadsheetRange, SpreadsheetRangeEnd } from \"../types.cjs\";\n\n/**\n * Check if two ranges intersect\n */\nexport function rangesIntersect(\n range1: SpreadsheetRange,\n range2: SpreadsheetRange\n): boolean {\n // Get finite end values\n const r1EndCol =\n range1.end.col.type === \"number\" ? range1.end.col.value : Infinity;\n const r1EndRow =\n range1.end.row.type === \"number\" ? range1.end.row.value : Infinity;\n const r2EndCol =\n range2.end.col.type === \"number\" ? range2.end.col.value : Infinity;\n const r2EndRow =\n range2.end.row.type === \"number\" ? range2.end.row.value : Infinity;\n\n // Check if ranges overlap\n const colOverlap =\n range1.start.col <= r2EndCol && range2.start.col <= r1EndCol;\n const rowOverlap =\n range1.start.row <= r2EndRow && range2.start.row <= r1EndRow;\n\n return colOverlap && rowOverlap;\n}\n\n/**\n * Check if one range is completely contained within another\n */\nexport function isRangeContained(\n inner: SpreadsheetRange,\n outer: SpreadsheetRange\n): boolean {\n const innerEndCol =\n inner.end.col.type === \"number\" ? inner.end.col.value : Infinity;\n const innerEndRow =\n inner.end.row.type === \"number\" ? inner.end.row.value : Infinity;\n const outerEndCol =\n outer.end.col.type === \"number\" ? outer.end.col.value : Infinity;\n const outerEndRow =\n outer.end.row.type === \"number\" ? outer.end.row.value : Infinity;\n\n return (\n inner.start.col >= outer.start.col &&\n inner.start.row >= outer.start.row &&\n innerEndCol <= outerEndCol &&\n innerEndRow <= outerEndRow\n );\n}\n\n/**\n * Subtract one range from another, returning the remaining ranges\n * Returns an array of ranges representing `original - subtract`\n * \n * For infinite ranges in the original:\n * - If subtract range is finite, we still return the infinite portions\n * - This can result in up to 4 ranges (4 sides around the subtracted area)\n */\nexport function subtractRange(\n original: SpreadsheetRange,\n subtract: SpreadsheetRange\n): SpreadsheetRange[] {\n // If ranges don't intersect, return original unchanged\n if (!rangesIntersect(original, subtract)) {\n return [original];\n }\n\n // If original is completely contained in subtract, return empty\n if (isRangeContained(original, subtract)) {\n return [];\n }\n\n const result: SpreadsheetRange[] = [];\n\n // Get finite end values for easier arithmetic\n const origEndCol =\n original.end.col.type === \"number\" ? original.end.col.value : Infinity;\n const origEndRow =\n original.end.row.type === \"number\" ? original.end.row.value : Infinity;\n const subEndCol =\n subtract.end.col.type === \"number\" ? subtract.end.col.value : Infinity;\n const subEndRow =\n subtract.end.row.type === \"number\" ? subtract.end.row.value : Infinity;\n\n // Calculate the intersection bounds\n const intersectStartCol = Math.max(original.start.col, subtract.start.col);\n const intersectStartRow = Math.max(original.start.row, subtract.start.row);\n const intersectEndCol = Math.min(origEndCol, subEndCol);\n const intersectEndRow = Math.min(origEndRow, subEndRow);\n\n // Create up to 4 rectangles around the intersection:\n // Top, Bottom, Left, Right\n\n // Top rectangle (above the intersection)\n if (original.start.row < intersectStartRow) {\n result.push({\n start: { col: original.start.col, row: original.start.row },\n end: {\n col: createRangeEnd(origEndCol),\n row: createRangeEnd(intersectStartRow - 1),\n },\n });\n }\n\n // Bottom rectangle (below the intersection)\n if (origEndRow > intersectEndRow) {\n result.push({\n start: { col: original.start.col, row: intersectEndRow + 1 },\n end: {\n col: createRangeEnd(origEndCol),\n row: createRangeEnd(origEndRow),\n },\n });\n }\n\n // Left rectangle (left of the intersection, within the vertical bounds of intersection)\n if (original.start.col < intersectStartCol) {\n result.push({\n start: { col: original.start.col, row: intersectStartRow },\n end: {\n col: createRangeEnd(intersectStartCol - 1),\n row: createRangeEnd(intersectEndRow),\n },\n });\n }\n\n // Right rectangle (right of the intersection, within the vertical bounds of intersection)\n if (origEndCol > intersectEndCol) {\n result.push({\n start: { col: intersectEndCol + 1, row: intersectStartRow },\n end: {\n col: createRangeEnd(origEndCol),\n row: createRangeEnd(intersectEndRow),\n },\n });\n }\n\n return result;\n}\n\n/**\n * Helper to create a SpreadsheetRangeEnd from a number (handles infinity)\n */\nfunction createRangeEnd(value: number): SpreadsheetRangeEnd {\n if (!isFinite(value)) {\n return { type: \"infinity\", sign: \"positive\" };\n }\n return { type: \"number\", value };\n}\n\n/**\n * Calculate the intersection of two ranges\n * Returns the overlapping rectangle, or null if ranges don't intersect\n */\nexport function intersectRanges(\n range1: SpreadsheetRange,\n range2: SpreadsheetRange\n): SpreadsheetRange | null {\n if (!rangesIntersect(range1, range2)) {\n return null;\n }\n\n // Get finite end values\n const r1EndCol =\n range1.end.col.type === \"number\" ? range1.end.col.value : Infinity;\n const r1EndRow =\n range1.end.row.type === \"number\" ? range1.end.row.value : Infinity;\n const r2EndCol =\n range2.end.col.type === \"number\" ? range2.end.col.value : Infinity;\n const r2EndRow =\n range2.end.row.type === \"number\" ? range2.end.row.value : Infinity;\n\n // Calculate intersection bounds\n const startCol = Math.max(range1.start.col, range2.start.col);\n const startRow = Math.max(range1.start.row, range2.start.row);\n const endCol = Math.min(r1EndCol, r2EndCol);\n const endRow = Math.min(r1EndRow, r2EndRow);\n\n return {\n start: { col: startCol, row: startRow },\n end: {\n col: createRangeEnd(endCol),\n row: createRangeEnd(endRow),\n },\n };\n}\n\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "C7B123826D489BDD64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -139,4 +149,4 @@ function visualizeSpreadsheet(engine, options) {
|
|
|
139
149
|
return result;
|
|
140
150
|
}
|
|
141
151
|
|
|
142
|
-
//# debugId=
|
|
152
|
+
//# debugId=782995995596648164756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { FormulaEngine } from \"../engine.cjs\";\n\nexport interface SpreadsheetVisualizerOptions {\n workbookName: string;\n /** Number of rows to display (1-based) */\n numRows: number;\n /** Number of columns to display (0-based, so 11 = A-K) */\n numCols: number;\n /** Starting row (1-based, default: 1) */\n startRow?: number;\n /** Starting column (0-based, default: 0 = A) */\n startCol?: number;\n /** Sheet name to visualize (default: uses engine's current sheet) */\n sheetName?: string;\n /** Character to use for empty cells (default: \".\") */\n emptyCellChar?: string;\n /** Minimum column width (default: 3) */\n minColWidth?: number;\n /** Maximum column width (default: 20) */\n maxColWidth?: number;\n /** Whether to show column headers (A, B, C...) */\n showColumnHeaders?: boolean;\n /** Whether to show row numbers */\n showRowNumbers?: boolean;\n /** If output is used for snapshotting */\n snapshot?: boolean;\n}\n\n/**\n * Generates a visual ASCII representation of a spreadsheet region\n */\nexport function visualizeSpreadsheet(\n engine: FormulaEngine,\n options: SpreadsheetVisualizerOptions\n): string {\n const {\n workbookName,\n numRows,\n numCols,\n startRow = 1,\n startCol = 0,\n sheetName,\n emptyCellChar = \".\",\n minColWidth = 3,\n maxColWidth = 20,\n showColumnHeaders = true,\n showRowNumbers = true,\n snapshot = false,\n } = options;\n\n // Determine the sheet name to use upfront\n const targetSheetName =\n sheetName ||\n (() => {\n const sheets = engine.getSheets(workbookName);\n const sheetNames = Array.from(sheets.keys());\n return sheetNames.length > 0 ? sheetNames[0]! : null;\n })();\n\n // First pass: collect all cell values and calculate column widths\n const cellValues: string[][] = [];\n const columnWidths: number[] = new Array(numCols).fill(minColWidth);\n\n // Collect column headers if needed\n if (showColumnHeaders) {\n const headerRow: string[] = [];\n for (let col = 0; col < numCols; col++) {\n const colLetter = String.fromCharCode(65 + startCol + col);\n headerRow.push(colLetter);\n columnWidths[col] = Math.max(columnWidths[col]!, colLetter.length);\n }\n cellValues.push(headerRow);\n }\n\n // Collect all cell data\n for (let row = startRow; row < startRow + numRows; row++) {\n const rowValues: string[] = [];\n for (let col = 0; col < numCols; col++) {\n let value: string;\n if (targetSheetName) {\n const cellValue = engine.getCellValue({\n sheetName: targetSheetName,\n workbookName,\n rowIndex: row - 1,\n colIndex: startCol + col,\n });\n value =\n cellValue === \"\" || cellValue == null\n ? emptyCellChar\n : String(cellValue);\n } else {\n // No sheets available\n value = emptyCellChar;\n }\n\n rowValues.push(value);\n // Update column width, respecting max width\n columnWidths[col] = Math.max(\n columnWidths[col]!,\n Math.min(value.length, maxColWidth)\n );\n }\n cellValues.push(rowValues);\n }\n\n // Calculate total row width for consistent formatting\n let totalRowWidth = 0;\n if (showRowNumbers) {\n totalRowWidth += 3; // Row number width\n }\n for (let col = 0; col < numCols; col++) {\n totalRowWidth += columnWidths[col]!;\n }\n // Add separator characters: \" | \" between columns (3 chars each, but last column doesn't have trailing separator)\n if (numCols > 0) {\n totalRowWidth += (numCols - 1) * 3; // \" | \" between columns\n if (showRowNumbers) {\n totalRowWidth += 3; // \" | \" after row number\n }\n }\n\n // Second pass: format the output with proper column widths\n let result = \"\";\n\n for (let i = 0; i < cellValues.length; i++) {\n const rowValues = cellValues[i]!;\n const formattedCells: string[] = [];\n\n // Add row number if requested\n if (showRowNumbers) {\n if (i === 0 && showColumnHeaders) {\n formattedCells.push(\" \"); // Empty space for header row\n } else {\n const rowNum = showColumnHeaders ? startRow + i - 1 : startRow + i;\n formattedCells.push(rowNum.toString().padStart(3));\n }\n }\n\n // Format each cell with proper width\n for (let col = 0; col < rowValues.length; col++) {\n let cellValue = rowValues[col]!;\n\n // Truncate if too long\n if (cellValue.length > maxColWidth) {\n cellValue = cellValue.substring(0, maxColWidth - 3) + \"...\";\n }\n\n // Pad to column width\n formattedCells.push(cellValue.padEnd(columnWidths[col]!));\n }\n\n // Join with consistent separators and ensure exact row width\n let rowContent = formattedCells.join(\" | \");\n // Pad the entire row to ensure consistent width\n rowContent = rowContent.padEnd(totalRowWidth);\n if (snapshot && i > 0) {\n rowContent = \" \" + rowContent;\n }\n result += rowContent + \"\\n\";\n\n // Add separator line after header\n if (i === 0 && showColumnHeaders) {\n const separatorParts: string[] = [];\n\n if (showRowNumbers) {\n separatorParts.push(snapshot ? \"----\" : \"---\");\n }\n\n for (let col = 0; col < numCols; col++) {\n separatorParts.push(\"-\".repeat(columnWidths[col]!));\n }\n\n // Create separator line with same width as data rows\n let separatorLine = separatorParts.join(\"-+-\");\n separatorLine = separatorLine.padEnd(totalRowWidth);\n result += separatorLine + \"\\n\";\n }\n }\n\n return result;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "782995995596648164756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/cjs/core/utils.cjs
CHANGED
|
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
|
|
5
|
+
function __accessProp(key) {
|
|
6
|
+
return this[key];
|
|
7
|
+
}
|
|
6
8
|
var __toCommonJS = (from) => {
|
|
7
|
-
var entry = __moduleCache.get(from), desc;
|
|
9
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
8
10
|
if (entry)
|
|
9
11
|
return entry;
|
|
10
12
|
entry = __defProp({}, "__esModule", { value: true });
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (var key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(entry, key))
|
|
16
|
+
__defProp(entry, key, {
|
|
17
|
+
get: __accessProp.bind(from, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
16
21
|
__moduleCache.set(from, entry);
|
|
17
22
|
return entry;
|
|
18
23
|
};
|
|
24
|
+
var __moduleCache;
|
|
25
|
+
var __returnValue = (v) => v;
|
|
26
|
+
function __exportSetter(name, newValue) {
|
|
27
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
28
|
+
}
|
|
19
29
|
var __export = (target, all) => {
|
|
20
30
|
for (var name in all)
|
|
21
31
|
__defProp(target, name, {
|
|
22
32
|
get: all[name],
|
|
23
33
|
enumerable: true,
|
|
24
34
|
configurable: true,
|
|
25
|
-
set: (
|
|
35
|
+
set: __exportSetter.bind(all, name)
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
|
|
@@ -431,4 +441,4 @@ function mapJSErrorToFormulaError(error) {
|
|
|
431
441
|
return import_types.FormulaError.ERROR;
|
|
432
442
|
}
|
|
433
443
|
|
|
434
|
-
//# debugId=
|
|
444
|
+
//# debugId=E97C648893DC73C364756E2164756E21
|