ooxml-core 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -18
- package/dist/{PptxHandler-75LOVF7I.mjs → PptxHandler-SJTINPU4.mjs} +3 -3
- package/dist/automation/index.cjs +6550 -4115
- package/dist/automation/index.mjs +6550 -4115
- package/dist/chart/color-palettes.d.ts +2 -2
- package/dist/chart/color-palettes.d.ts.map +1 -1
- package/dist/chart/data-cache.d.ts +6 -0
- package/dist/chart/data-cache.d.ts.map +1 -0
- package/dist/chart/gradient-coincident-stops.d.ts +17 -0
- package/dist/chart/gradient-coincident-stops.d.ts.map +1 -0
- package/dist/chart/gradient-definition.d.ts +3 -3
- package/dist/chart/gradient-definition.d.ts.map +1 -1
- package/dist/chart/index.cjs +3065 -139
- package/dist/chart/index.d.ts +7 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +3045 -140
- package/dist/chart/model-chrome.d.ts +39 -0
- package/dist/chart/model-chrome.d.ts.map +1 -0
- package/dist/chart/model-series.d.ts +189 -0
- package/dist/chart/model-series.d.ts.map +1 -0
- package/dist/chart/model.d.ts +202 -0
- package/dist/chart/model.d.ts.map +1 -0
- package/dist/chart/parse-chrome.d.ts +16 -0
- package/dist/chart/parse-chrome.d.ts.map +1 -0
- package/dist/chart/parse-plot.d.ts +11 -0
- package/dist/chart/parse-plot.d.ts.map +1 -0
- package/dist/chart/parse-series.d.ts +8 -0
- package/dist/chart/parse-series.d.ts.map +1 -0
- package/dist/chart/parse-space.d.ts +8 -0
- package/dist/chart/parse-space.d.ts.map +1 -0
- package/dist/chart/parse-text.d.ts +12 -0
- package/dist/chart/parse-text.d.ts.map +1 -0
- package/dist/chart/parse-util.d.ts +42 -0
- package/dist/chart/parse-util.d.ts.map +1 -0
- package/dist/{xlsx/layout → chart/render}/chart-appearance.d.ts +4 -4
- package/dist/chart/render/chart-appearance.d.ts.map +1 -0
- package/dist/chart/render/chart-colors.d.ts +9 -0
- package/dist/chart/render/chart-colors.d.ts.map +1 -0
- package/dist/chart/render/chart-scale.d.ts.map +1 -0
- package/dist/chart/render/chart-spacing.d.ts +6 -0
- package/dist/chart/render/chart-spacing.d.ts.map +1 -0
- package/dist/{xlsx/layout → chart/render}/chart-svg-appearance.d.ts +1 -1
- package/dist/chart/render/chart-svg-appearance.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-legend.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-radial.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-text-metrics.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-title-text.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-util.d.ts.map +1 -0
- package/dist/chart/render/chart-svg.d.ts.map +1 -0
- package/dist/chart/render/chart-title-text.d.ts +14 -0
- package/dist/chart/render/chart-title-text.d.ts.map +1 -0
- package/dist/chart/render/chart-value-axis.d.ts +6 -0
- package/dist/chart/render/chart-value-axis.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +71 -0
- package/dist/chart/render/chart-view.d.ts.map +1 -0
- package/dist/chart/render/index.d.ts +9 -0
- package/dist/chart/render/index.d.ts.map +1 -0
- package/dist/chart/render/render-space.d.ts +34 -0
- package/dist/chart/render/render-space.d.ts.map +1 -0
- package/dist/chart/render/summary-from-space.d.ts +15 -0
- package/dist/chart/render/summary-from-space.d.ts.map +1 -0
- package/dist/chart/render/summary.d.ts +51 -0
- package/dist/chart/render/summary.d.ts.map +1 -0
- package/dist/chart/render/theme-palette.d.ts +8 -0
- package/dist/chart/render/theme-palette.d.ts.map +1 -0
- package/dist/chart/style-definition.d.ts +7 -7
- package/dist/chart/style-definition.d.ts.map +1 -1
- package/dist/chart/write-axes.d.ts +5 -0
- package/dist/chart/write-axes.d.ts.map +1 -0
- package/dist/chart/write-chrome.d.ts +9 -0
- package/dist/chart/write-chrome.d.ts.map +1 -0
- package/dist/chart/write-plot.d.ts +7 -0
- package/dist/chart/write-plot.d.ts.map +1 -0
- package/dist/chart/write-series.d.ts +7 -0
- package/dist/chart/write-series.d.ts.map +1 -0
- package/dist/chart/write-shape.d.ts +21 -0
- package/dist/chart/write-shape.d.ts.map +1 -0
- package/dist/chart/write-space.d.ts +15 -0
- package/dist/chart/write-space.d.ts.map +1 -0
- package/dist/chart/write-text-body.d.ts +6 -0
- package/dist/chart/write-text-body.d.ts.map +1 -0
- package/dist/chart/write-text.d.ts +15 -0
- package/dist/chart/write-text.d.ts.map +1 -0
- package/dist/chart/write-util.d.ts +24 -0
- package/dist/chart/write-util.d.ts.map +1 -0
- package/dist/chart/xml-fragment.d.ts +13 -0
- package/dist/chart/xml-fragment.d.ts.map +1 -0
- package/dist/{chunk-HUBK4EOT.mjs → chunk-3IT6ZD7K.mjs} +2 -0
- package/dist/{chunk-TS3E27NK.mjs → chunk-3UMDVJRN.mjs} +12 -1
- package/dist/{chunk-P22OKTRK.mjs → chunk-54S5A5PZ.mjs} +208 -159
- package/dist/{chunk-75LA7H3F.mjs → chunk-CQQAPUAG.mjs} +27440 -27402
- package/dist/{chunk-Q27H4HFS.mjs → chunk-FI4RSJ24.mjs} +1 -1
- package/dist/{chunk-OJI3N5AY.cjs → chunk-FRUB573B.cjs} +2 -0
- package/dist/{chunk-OMGH6IKY.mjs → chunk-TEOAOAIF.mjs} +42 -5
- package/dist/{chunk-RFX7AJDZ.mjs → chunk-VYTA2OUN.mjs} +2 -2
- package/dist/{chunk-LA7D6ZYQ.mjs → chunk-XCZ7U3GZ.mjs} +3569 -2075
- package/dist/{chunk-2C72N64G.cjs → chunk-XROY25LN.cjs} +12 -0
- package/dist/collab/index.cjs +1 -0
- package/dist/collab/index.mjs +1 -0
- package/dist/collab/transport-provider.d.ts.map +1 -1
- package/dist/color/hex-rgb.d.ts +5 -0
- package/dist/color/hex-rgb.d.ts.map +1 -0
- package/dist/color/index.cjs +12 -0
- package/dist/color/index.d.ts +1 -0
- package/dist/color/index.d.ts.map +1 -1
- package/dist/color/index.mjs +11 -1
- package/dist/diagram/engine/alg-composite.d.ts +18 -0
- package/dist/diagram/engine/alg-composite.d.ts.map +1 -0
- package/dist/diagram/engine/alg-connector.d.ts +17 -0
- package/dist/diagram/engine/alg-connector.d.ts.map +1 -0
- package/dist/diagram/engine/alg-cycle.d.ts +28 -0
- package/dist/diagram/engine/alg-cycle.d.ts.map +1 -0
- package/dist/diagram/engine/alg-hier.d.ts +33 -0
- package/dist/diagram/engine/alg-hier.d.ts.map +1 -0
- package/dist/diagram/engine/alg-linear.d.ts +24 -0
- package/dist/diagram/engine/alg-linear.d.ts.map +1 -0
- package/dist/diagram/engine/alg-pyra.d.ts +117 -0
- package/dist/diagram/engine/alg-pyra.d.ts.map +1 -0
- package/dist/diagram/engine/alg-snake.d.ts +21 -0
- package/dist/diagram/engine/alg-snake.d.ts.map +1 -0
- package/dist/diagram/engine/axis.d.ts +24 -0
- package/dist/diagram/engine/axis.d.ts.map +1 -0
- package/dist/diagram/engine/conditions.d.ts +12 -0
- package/dist/diagram/engine/conditions.d.ts.map +1 -0
- package/dist/diagram/engine/connector-shape.d.ts +25 -0
- package/dist/diagram/engine/connector-shape.d.ts.map +1 -0
- package/dist/diagram/engine/connector-size.d.ts +30 -0
- package/dist/diagram/engine/connector-size.d.ts.map +1 -0
- package/dist/diagram/engine/constraint-eval.d.ts +37 -0
- package/dist/diagram/engine/constraint-eval.d.ts.map +1 -0
- package/dist/diagram/engine/constraint-fill-idiom.d.ts +61 -0
- package/dist/diagram/engine/constraint-fill-idiom.d.ts.map +1 -0
- package/dist/diagram/engine/constraint-units.d.ts +35 -0
- package/dist/diagram/engine/constraint-units.d.ts.map +1 -0
- package/dist/diagram/engine/data-points.d.ts +48 -0
- package/dist/diagram/engine/data-points.d.ts.map +1 -0
- package/dist/diagram/engine/engine-context.d.ts +21 -0
- package/dist/diagram/engine/engine-context.d.ts.map +1 -0
- package/dist/diagram/engine/engine-first-allowlist.d.ts +31 -0
- package/dist/diagram/engine/engine-first-allowlist.d.ts.map +1 -0
- package/dist/diagram/engine/engine-fonts.d.ts +26 -0
- package/dist/diagram/engine/engine-fonts.d.ts.map +1 -0
- package/dist/diagram/engine/engine-node.d.ts +72 -0
- package/dist/diagram/engine/engine-node.d.ts.map +1 -0
- package/dist/diagram/engine/engine-to-result.d.ts +43 -0
- package/dist/diagram/engine/engine-to-result.d.ts.map +1 -0
- package/dist/diagram/engine/engine.d.ts +18 -0
- package/dist/diagram/engine/engine.d.ts.map +1 -0
- package/dist/diagram/engine/font-groups.d.ts +33 -0
- package/dist/diagram/engine/font-groups.d.ts.map +1 -0
- package/dist/diagram/engine/font-length.d.ts +26 -0
- package/dist/diagram/engine/font-length.d.ts.map +1 -0
- package/dist/diagram/engine/font-search.d.ts +38 -0
- package/dist/diagram/engine/font-search.d.ts.map +1 -0
- package/dist/diagram/engine/hier-assistants.d.ts +47 -0
- package/dist/diagram/engine/hier-assistants.d.ts.map +1 -0
- package/dist/diagram/engine/hier-hang.d.ts +28 -0
- package/dist/diagram/engine/hier-hang.d.ts.map +1 -0
- package/dist/diagram/engine/hier-measure.d.ts +33 -0
- package/dist/diagram/engine/hier-measure.d.ts.map +1 -0
- package/dist/diagram/engine/hier-node-size.d.ts +23 -0
- package/dist/diagram/engine/hier-node-size.d.ts.map +1 -0
- package/dist/diagram/engine/hier-shape.d.ts +31 -0
- package/dist/diagram/engine/hier-shape.d.ts.map +1 -0
- package/dist/diagram/engine/index.d.ts +6 -0
- package/dist/diagram/engine/index.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-parse.d.ts +13 -0
- package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-types.d.ts +118 -0
- package/dist/diagram/engine/layout-def-types.d.ts.map +1 -0
- package/dist/diagram/engine/layout-driver.d.ts +41 -0
- package/dist/diagram/engine/layout-driver.d.ts.map +1 -0
- package/dist/diagram/engine/layout-font.d.ts +27 -0
- package/dist/diagram/engine/layout-font.d.ts.map +1 -0
- package/dist/diagram/engine/move-with-merge.d.ts +49 -0
- package/dist/diagram/engine/move-with-merge.d.ts.map +1 -0
- package/dist/diagram/engine/node-text.d.ts +20 -0
- package/dist/diagram/engine/node-text.d.ts.map +1 -0
- package/dist/diagram/engine/ordered-xml.d.ts +30 -0
- package/dist/diagram/engine/ordered-xml.d.ts.map +1 -0
- package/dist/diagram/engine/preferred-size.d.ts +28 -0
- package/dist/diagram/engine/preferred-size.d.ts.map +1 -0
- package/dist/diagram/engine/pres-tree.d.ts +58 -0
- package/dist/diagram/engine/pres-tree.d.ts.map +1 -0
- package/dist/diagram/engine/registry.d.ts +7 -0
- package/dist/diagram/engine/registry.d.ts.map +1 -0
- package/dist/diagram/engine/render-filter.d.ts +43 -0
- package/dist/diagram/engine/render-filter.d.ts.map +1 -0
- package/dist/diagram/engine/shape-adjust.d.ts +16 -0
- package/dist/diagram/engine/shape-adjust.d.ts.map +1 -0
- package/dist/diagram/engine/shape-transform.d.ts +14 -0
- package/dist/diagram/engine/shape-transform.d.ts.map +1 -0
- package/dist/diagram/engine/snake-rule-fit.d.ts +34 -0
- package/dist/diagram/engine/snake-rule-fit.d.ts.map +1 -0
- package/dist/diagram/engine/style-label.d.ts +24 -0
- package/dist/diagram/engine/style-label.d.ts.map +1 -0
- package/dist/diagram/engine/text-fit.d.ts +61 -0
- package/dist/diagram/engine/text-fit.d.ts.map +1 -0
- package/dist/diagram/engine/text-grow.d.ts +33 -0
- package/dist/diagram/engine/text-grow.d.ts.map +1 -0
- package/dist/diagram/engine/text-measure.d.ts +77 -0
- package/dist/diagram/engine/text-measure.d.ts.map +1 -0
- package/dist/diagram/hierarchy/index.d.ts +5 -0
- package/dist/diagram/hierarchy/index.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-pitch.d.ts +65 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-pitch.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-swap-orientation.d.ts +68 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-swap-orientation.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-branch-mode.d.ts +54 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-branch-mode.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-cascade.d.ts +58 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-cascade.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-centered-fan-axis.d.ts +63 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-centered-fan-axis.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-child-order.d.ts +41 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-child-order.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-composite-child.d.ts +129 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-composite-child.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-constraint-lookup.d.ts +76 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-constraint-lookup.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-corner-plan.d.ts +49 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-corner-plan.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-dispatch-lindir.d.ts +58 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-dispatch-lindir.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan-aware-width.d.ts +48 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan-aware-width.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan.d.ts +97 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang-geometry.d.ts +42 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang-geometry.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang.d.ts +74 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fit-item-box.d.ts +111 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fit-item-box.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fold-depth.d.ts +44 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fold-depth.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-gap.d.ts +60 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-gap.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-templates.d.ts +106 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-templates.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-depth.d.ts +133 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-depth.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-dispatch.d.ts +28 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-dispatch.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-arrange.d.ts +28 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-arrange.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-box.d.ts +86 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-box.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-fold.d.ts +36 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-fold.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging.d.ts +118 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-item-template.d.ts +64 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-item-template.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orgchart-tree.d.ts +53 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orgchart-tree.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-resolve.d.ts +36 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-resolve.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-types.d.ts +81 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-types.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation.d.ts +78 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-pitch.d.ts +140 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-pitch.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-shared.d.ts +131 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-shared.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-options.d.ts +91 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-options.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-rows.d.ts +21 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-rows.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard.d.ts +36 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-placer.d.ts +20 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-placer.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-transpose.d.ts +50 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-transpose.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transpose.d.ts +23 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transpose.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transposed-orientation.d.ts +22 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transposed-orientation.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-wrapped-groups.d.ts +93 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-wrapped-groups.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-layout-interpreter-hierarchy.d.ts +49 -0
- package/dist/diagram/hierarchy/smartart-layout-interpreter-hierarchy.d.ts.map +1 -0
- package/dist/diagram/index.cjs +22537 -80
- package/dist/diagram/index.d.ts +4 -0
- package/dist/diagram/index.d.ts.map +1 -1
- package/dist/diagram/index.mjs +22453 -81
- package/dist/diagram/layout/index.d.ts +38 -0
- package/dist/diagram/layout/index.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-choose-xml.d.ts +32 -0
- package/dist/diagram/layout/smartart-choose-xml.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-branch-index.d.ts +49 -0
- package/dist/diagram/layout/smartart-constraint-branch-index.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-declared-by.d.ts +64 -0
- package/dist/diagram/layout/smartart-constraint-declared-by.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-ratio-fallback.d.ts +18 -0
- package/dist/diagram/layout/smartart-constraint-ratio-fallback.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-resolve.d.ts +24 -0
- package/dist/diagram/layout/smartart-constraint-resolve.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-rules.d.ts +26 -0
- package/dist/diagram/layout/smartart-constraint-rules.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-sibling-roles.d.ts +100 -0
- package/dist/diagram/layout/smartart-constraint-sibling-roles.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-solver.d.ts +133 -0
- package/dist/diagram/layout/smartart-constraint-solver.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-values.d.ts +5 -0
- package/dist/diagram/layout/smartart-constraint-values.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-font-table.d.ts +14 -0
- package/dist/diagram/layout/smartart-font-table.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-interpreter-fold-text.d.ts +75 -0
- package/dist/diagram/layout/smartart-interpreter-fold-text.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-control-flow.d.ts +25 -0
- package/dist/diagram/layout/smartart-layout-control-flow.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arranged-selection.d.ts +56 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arranged-selection.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arrangement-kind.d.ts +37 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arrangement-kind.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-aux.d.ts +66 -0
- package/dist/diagram/layout/smartart-layout-interpreter-aux.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-count.d.ts +128 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-count.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-depth.d.ts +73 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-depth.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-hop.d.ts +48 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-hop.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-range.d.ts +19 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-range.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-algorithm.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-algorithm.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-branch.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-branch.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-composite.d.ts +42 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-composite.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-depth.d.ts +102 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-depth.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-resolve.d.ts +32 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-resolve.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-alternative.d.ts +33 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-alternative.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-anchor.d.ts +95 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-anchor.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-aspect.d.ts +84 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-aspect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-candidates.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-candidates.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-children.d.ts +86 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-children.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose-groups.d.ts +44 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose-groups.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose.d.ts +109 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-detect.d.ts +182 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-detect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-fontfit.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-fontfit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-foreach.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-foreach.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-group-slots.d.ts +92 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-group-slots.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-iteration.d.ts +45 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-iteration.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-nested-cycle.d.ts +57 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-nested-cycle.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order-fallback.d.ts +24 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order-fallback.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order.d.ts +41 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-pairs.d.ts +34 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-pairs.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-render.d.ts +29 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-render.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-ring.d.ts +40 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-ring.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slot-dim.d.ts +22 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slot-dim.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slots.d.ts +69 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slots.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite.d.ts +56 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-conn-path.d.ts +42 -0
- package/dist/diagram/layout/smartart-layout-interpreter-conn-path.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-connector-order.d.ts +23 -0
- package/dist/diagram/layout/smartart-layout-interpreter-connector-order.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-constraints.d.ts +28 -0
- package/dist/diagram/layout/smartart-layout-interpreter-constraints.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-custom.d.ts +31 -0
- package/dist/diagram/layout/smartart-layout-interpreter-custom.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-boxes.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-boxes.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-connectors.d.ts +21 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-connectors.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-constraints.d.ts +116 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-constraints.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-extension.d.ts +110 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-extension.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-fontfit.d.ts +50 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-fontfit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-detect.d.ts +66 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-detect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio-usersize.d.ts +81 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio-usersize.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio.d.ts +109 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-aspect.d.ts +121 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-aspect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-node.d.ts +57 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-node.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-bulge.d.ts +34 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-bulge.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-item.d.ts +39 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-item.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-nested-hub.d.ts +22 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-nested-hub.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-offset.d.ts +43 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-offset.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring.d.ts +76 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-sibtrans.d.ts +40 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-sibtrans.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle.d.ts +69 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-dispatch.d.ts +18 -0
- package/dist/diagram/layout/smartart-layout-interpreter-dispatch.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow-direction.d.ts +29 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow-direction.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow.d.ts +49 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-descendant.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-descendant.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-fontfit.d.ts +45 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-fontfit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub-detect.d.ts +26 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub-detect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub.d.ts +62 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-compound.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-compound.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-orientation.d.ts +80 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-orientation.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-shared.d.ts +102 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-shared.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-columns.d.ts +23 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-columns.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-fields.d.ts +77 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-fields.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-rect.d.ts +20 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-rect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack.d.ts +53 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-transition.d.ts +50 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-transition.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-recursive.d.ts +87 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-recursive.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-unwrap.d.ts +57 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-unwrap.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles.d.ts +109 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-content-size.d.ts +42 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-content-size.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-item-aspect.d.ts +94 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-item-aspect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-main-axis.d.ts +17 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-main-axis.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-shared.d.ts +21 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-shared.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-table.d.ts +76 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-table.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear.d.ts +20 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-model.d.ts +77 -0
- package/dist/diagram/layout/smartart-layout-interpreter-model.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-named-rules.d.ts +93 -0
- package/dist/diagram/layout/smartart-layout-interpreter-named-rules.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-position-family.d.ts +58 -0
- package/dist/diagram/layout/smartart-layout-interpreter-position-family.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-preset-node.d.ts +61 -0
- package/dist/diagram/layout/smartart-layout-interpreter-preset-node.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-presof-choose.d.ts +29 -0
- package/dist/diagram/layout/smartart-layout-interpreter-presof-choose.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid-bands.d.ts +41 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid-bands.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid.d.ts +100 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-render.d.ts +86 -0
- package/dist/diagram/layout/smartart-layout-interpreter-render.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-snake.d.ts +18 -0
- package/dist/diagram/layout/smartart-layout-interpreter-snake.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-tree-location.d.ts +28 -0
- package/dist/diagram/layout/smartart-layout-interpreter-tree-location.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-numeric.d.ts +15 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-numeric.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-var.d.ts +12 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-var.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when.d.ts +69 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter.d.ts +80 -0
- package/dist/diagram/layout/smartart-layout-interpreter.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-role.d.ts +80 -0
- package/dist/diagram/layout/smartart-layout-item-font-role.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-size.d.ts +129 -0
- package/dist/diagram/layout/smartart-layout-item-font-size.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier-fit.d.ts +70 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier-fit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier.d.ts +139 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-tx-anchor.d.ts +105 -0
- package/dist/diagram/layout/smartart-layout-item-tx-anchor.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-shape-polygon.d.ts +17 -0
- package/dist/diagram/layout/smartart-layout-shape-polygon.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-shape-preset.d.ts +127 -0
- package/dist/diagram/layout/smartart-layout-shape-preset.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-snake-grid.d.ts +43 -0
- package/dist/diagram/layout/smartart-layout-snake-grid.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-style-helpers.d.ts +84 -0
- package/dist/diagram/layout/smartart-layout-style-helpers.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-types.d.ts +253 -0
- package/dist/diagram/layout/smartart-layout-types.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-line-pitch.d.ts +29 -0
- package/dist/diagram/layout/smartart-line-pitch.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-node-role-colors.d.ts +30 -0
- package/dist/diagram/layout/smartart-node-role-colors.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-node-tree-axis.d.ts +91 -0
- package/dist/diagram/layout/smartart-node-tree-axis.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-text-wrap-fit.d.ts +84 -0
- package/dist/diagram/layout/smartart-text-wrap-fit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-tree.d.ts +33 -0
- package/dist/diagram/layout/smartart-tree.d.ts.map +1 -0
- package/dist/diagram/model/constraint-rules.d.ts +31 -0
- package/dist/diagram/model/constraint-rules.d.ts.map +1 -0
- package/dist/diagram/model/data.d.ts +109 -0
- package/dist/diagram/model/data.d.ts.map +1 -0
- package/dist/diagram/model/index.d.ts +7 -0
- package/dist/diagram/model/index.d.ts.map +1 -0
- package/dist/diagram/model/layout-definition.d.ts +276 -0
- package/dist/diagram/model/layout-definition.d.ts.map +1 -0
- package/dist/diagram/model/layout-primitives.d.ts +82 -0
- package/dist/diagram/model/layout-primitives.d.ts.map +1 -0
- package/dist/diagram/model/node.d.ts +194 -0
- package/dist/diagram/model/node.d.ts.map +1 -0
- package/dist/diagram/model/style-definition.d.ts +131 -0
- package/dist/diagram/model/style-definition.d.ts.map +1 -0
- package/dist/docx/chart-paint.d.ts +14 -0
- package/dist/docx/chart-paint.d.ts.map +1 -0
- package/dist/docx/chart.d.ts +43 -0
- package/dist/docx/chart.d.ts.map +1 -0
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +1393 -326
- package/dist/docx/embedded.mjs +1393 -326
- package/dist/docx/index.cjs +4042 -683
- package/dist/docx/index.d.ts +2 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +4038 -684
- package/dist/docx/inline-model.d.ts +3 -0
- package/dist/docx/inline-model.d.ts.map +1 -1
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/index.cjs +2672 -88
- package/dist/docx/layout/index.mjs +2673 -89
- package/dist/docx/layout/input.d.ts +5 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +1616 -549
- package/dist/docx/load/index.mjs +1616 -549
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/ui/chart-spec.d.ts +10 -0
- package/dist/docx/ui/chart-spec.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +2600 -186
- package/dist/docx/ui/index.d.ts +1 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +2599 -188
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/drawingml/write-line.d.ts +7 -0
- package/dist/drawingml/write-line.d.ts.map +1 -0
- package/dist/geometry/ooxml-arc.d.ts +31 -0
- package/dist/geometry/ooxml-arc.d.ts.map +1 -0
- package/dist/geometry/preset-shape-evaluator.d.ts +73 -0
- package/dist/geometry/preset-shape-evaluator.d.ts.map +1 -0
- package/dist/index.cjs +34835 -18367
- package/dist/index.mjs +34831 -18367
- package/dist/opc/embedded-packages.d.ts +11 -0
- package/dist/opc/embedded-packages.d.ts.map +1 -0
- package/dist/opc/index.cjs +365 -70
- package/dist/opc/index.d.ts +1 -0
- package/dist/opc/index.d.ts.map +1 -1
- package/dist/opc/index.mjs +353 -71
- package/dist/opc/properties/app.d.ts +9 -3
- package/dist/opc/properties/app.d.ts.map +1 -1
- package/dist/opc/properties/core.d.ts +5 -1
- package/dist/opc/properties/core.d.ts.map +1 -1
- package/dist/opc/properties/custom.d.ts +19 -0
- package/dist/opc/properties/custom.d.ts.map +1 -1
- package/dist/opc/properties/index.d.ts +6 -3
- package/dist/opc/properties/index.d.ts.map +1 -1
- package/dist/opc/properties/patch.d.ts +38 -0
- package/dist/opc/properties/patch.d.ts.map +1 -0
- package/dist/opc/properties/title-groups.d.ts +30 -0
- package/dist/opc/properties/title-groups.d.ts.map +1 -0
- package/dist/opc/properties/types.d.ts +15 -0
- package/dist/opc/properties/types.d.ts.map +1 -1
- package/dist/pptx/automation/index.cjs +9023 -7151
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{index-BYkdcS8J.d.ts → index-EZJZ7USt.d.ts} +907 -962
- package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-BHqL5KXH.d.ts → index-JNv7AJx5.d.ts} +163 -210
- package/dist/pptx/chunks/index-JNv7AJx5.d.ts.map +1 -0
- package/dist/pptx/chunks/{smart-art-CO2jmJFf.d.ts → smart-art-Q2kZQtHh.d.ts} +436 -374
- package/dist/pptx/chunks/smart-art-Q2kZQtHh.d.ts.map +1 -0
- package/dist/pptx/chunks/{text-operations-DEJ7alZR.d.ts → text-operations-DtCxXrMh.d.ts} +55 -4
- package/dist/pptx/chunks/text-operations-DtCxXrMh.d.ts.map +1 -0
- package/dist/pptx/cli/index.cjs +8702 -6830
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +7124 -7136
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/table-cell-edit.cjs +7 -3
- package/dist/pptx/editor/render/table-cell-edit.d.ts +16 -1
- package/dist/pptx/editor/render/table-cell-edit.d.ts.map +1 -1
- package/dist/pptx/editor/render/table-cell-edit.mjs +1 -1
- package/dist/pptx/editor/render/table-cell-merge.cjs +3 -3
- package/dist/pptx/editor/render/table-cell-merge.mjs +1 -1
- package/dist/pptx/editor/render/table-data-grid-ops.cjs +7 -7
- package/dist/pptx/editor/render/table-data-grid-ops.mjs +2 -2
- package/dist/pptx/editor/render/table-layout.cjs +6 -6
- package/dist/pptx/editor/render/table-layout.d.ts.map +1 -1
- package/dist/pptx/editor/render/table-layout.mjs +1 -1
- package/dist/pptx/editor/render/table-merge.cjs +5 -5
- package/dist/pptx/editor/render/table-merge.mjs +1 -1
- package/dist/pptx/index.cjs +9345 -7304
- package/dist/pptx/index.d.ts +5 -5
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/smartart-layouts/index.cjs +135 -106
- package/dist/pptx/smartart-layouts/index.d.ts +1 -1
- package/dist/pptx/smartart-layouts/index.mjs +1 -1
- package/dist/teams/content.d.ts.map +1 -1
- package/dist/teams/index.cjs +3778 -1999
- package/dist/teams/index.d.ts +1 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +3777 -1999
- package/dist/teams/server-file-storage.d.ts +11 -0
- package/dist/teams/server-file-storage.d.ts.map +1 -0
- package/dist/teams/store.d.ts +2 -0
- package/dist/teams/store.d.ts.map +1 -1
- package/dist/teams/stored-file.d.ts.map +1 -1
- package/dist/{xlsx/layout/font-family.d.ts → text/css-font-family.d.ts} +1 -1
- package/dist/text/css-font-family.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-aptos-display.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-aptos-display.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-aptos.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-aptos.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-arial.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-arial.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-calibri-light.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-calibri-light.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-calibri.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-calibri.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-segoe-ui.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-segoe-ui.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-times-new-roman.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-times-new-roman.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths.generated.d.ts +48 -0
- package/dist/text/font-metrics/font-advance-widths.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-kerning.d.ts +19 -0
- package/dist/text/font-metrics/font-kerning.d.ts.map +1 -0
- package/dist/visio/index.cjs +645 -119
- package/dist/visio/index.mjs +645 -119
- package/dist/visio/theme-color.d.ts +13 -3
- package/dist/visio/theme-color.d.ts.map +1 -1
- package/dist/visio/theme-resolve.d.ts +2 -1
- package/dist/visio/theme-resolve.d.ts.map +1 -1
- package/dist/visio/theme.d.ts +5 -2
- package/dist/visio/theme.d.ts.map +1 -1
- package/dist/xlsx/collab/adapter.d.ts +18 -0
- package/dist/xlsx/collab/adapter.d.ts.map +1 -0
- package/dist/xlsx/collab/apply.d.ts +8 -0
- package/dist/xlsx/collab/apply.d.ts.map +1 -0
- package/dist/xlsx/collab/bind.d.ts +34 -0
- package/dist/xlsx/collab/bind.d.ts.map +1 -0
- package/dist/xlsx/collab/codec.d.ts +35 -0
- package/dist/xlsx/collab/codec.d.ts.map +1 -0
- package/dist/xlsx/collab/dirty.d.ts +23 -0
- package/dist/xlsx/collab/dirty.d.ts.map +1 -0
- package/dist/xlsx/collab/index.cjs +1245 -0
- package/dist/xlsx/collab/index.d.ts +10 -0
- package/dist/xlsx/collab/index.d.ts.map +1 -0
- package/dist/xlsx/collab/index.mjs +1207 -0
- package/dist/xlsx/collab/lines.d.ts +22 -0
- package/dist/xlsx/collab/lines.d.ts.map +1 -0
- package/dist/xlsx/collab/names.d.ts +16 -0
- package/dist/xlsx/collab/names.d.ts.map +1 -0
- package/dist/xlsx/collab/presence.d.ts +31 -0
- package/dist/xlsx/collab/presence.d.ts.map +1 -0
- package/dist/xlsx/collab/schema.d.ts +30 -0
- package/dist/xlsx/collab/schema.d.ts.map +1 -0
- package/dist/xlsx/collab/sheets.d.ts +34 -0
- package/dist/xlsx/collab/sheets.d.ts.map +1 -0
- package/dist/xlsx/collab/styles.d.ts +26 -0
- package/dist/xlsx/collab/styles.d.ts.map +1 -0
- package/dist/xlsx/collab/write.d.ts +14 -0
- package/dist/xlsx/collab/write.d.ts.map +1 -0
- package/dist/xlsx/edit/chart-colors.d.ts +2 -2
- package/dist/xlsx/edit/chart-colors.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-element-fill.d.ts +3 -3
- package/dist/xlsx/edit/chart-element-fill.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-series-fill.d.ts +2 -2
- package/dist/xlsx/edit/chart-series-fill.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-series-gradient.d.ts +3 -3
- package/dist/xlsx/edit/chart-series-gradient.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-series-target.d.ts +15 -0
- package/dist/xlsx/edit/chart-series-target.d.ts.map +1 -0
- package/dist/xlsx/edit/chart-series-transparency.d.ts +2 -2
- package/dist/xlsx/edit/chart-series-transparency.d.ts.map +1 -1
- package/dist/xlsx/edit/external.d.ts +28 -0
- package/dist/xlsx/edit/external.d.ts.map +1 -0
- package/dist/xlsx/edit/index.d.ts +1 -0
- package/dist/xlsx/edit/index.d.ts.map +1 -1
- package/dist/xlsx/edit/session-calc.d.ts +7 -0
- package/dist/xlsx/edit/session-calc.d.ts.map +1 -1
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/types.d.ts +14 -1
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/lexemes.d.ts +6 -0
- package/dist/xlsx/formula/lexemes.d.ts.map +1 -1
- package/dist/xlsx/formula/tokenizer.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +4599 -2399
- package/dist/xlsx/index.mjs +4589 -2400
- package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
- package/dist/xlsx/layout/chart-view.d.ts +3 -54
- package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
- package/dist/xlsx/layout/colors.d.ts +1 -4
- package/dist/xlsx/layout/colors.d.ts.map +1 -1
- package/dist/xlsx/layout/index.d.ts +7 -4
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/remote-selections.d.ts +40 -0
- package/dist/xlsx/layout/remote-selections.d.ts.map +1 -0
- package/dist/xlsx/layout/sparkline-data.d.ts +19 -0
- package/dist/xlsx/layout/sparkline-data.d.ts.map +1 -0
- package/dist/xlsx/layout/sparkline-view.d.ts +52 -0
- package/dist/xlsx/layout/sparkline-view.d.ts.map +1 -0
- package/dist/xlsx/layout/tint.d.ts +3 -12
- package/dist/xlsx/layout/tint.d.ts.map +1 -1
- package/dist/xlsx/layout/types.d.ts +3 -0
- package/dist/xlsx/layout/types.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +3036 -1286
- package/dist/xlsx/load/index.mjs +3036 -1286
- package/dist/xlsx/model-sparklines.d.ts +52 -0
- package/dist/xlsx/model-sparklines.d.ts.map +1 -0
- package/dist/xlsx/model.d.ts +10 -47
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/read/chart.d.ts +1 -4
- package/dist/xlsx/read/chart.d.ts.map +1 -1
- package/dist/xlsx/read/index.d.ts +1 -0
- package/dist/xlsx/read/index.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-data-source.d.ts +10 -0
- package/dist/xlsx/read/sheet-data-source.d.ts.map +1 -0
- package/dist/xlsx/read/sparklines.d.ts +12 -0
- package/dist/xlsx/read/sparklines.d.ts.map +1 -0
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -1
- package/dist/xlsx/ui/context.d.ts +15 -1
- package/dist/xlsx/ui/context.d.ts.map +1 -1
- package/dist/xlsx/ui/grid/cell-items.d.ts.map +1 -1
- package/dist/xlsx/ui/grid/cell-paint.d.ts +1 -1
- package/dist/xlsx/ui/grid/cell-paint.d.ts.map +1 -1
- package/dist/xlsx/ui/grid/view-cache.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +1127 -559
- package/dist/xlsx/ui/index.mjs +1127 -560
- package/dist/xlsx/ui/locales/de/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/de/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/en/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/es/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/fr/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/zh-CN/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -1
- package/dist/xlsx/ui/ribbon/icon-paths.d.ts.map +1 -1
- package/dist/xlsx/write/chart-colors.d.ts +3 -0
- package/dist/xlsx/write/chart-colors.d.ts.map +1 -1
- package/dist/xlsx/write/chart-space.d.ts +5 -0
- package/dist/xlsx/write/chart-space.d.ts.map +1 -0
- package/dist/xlsx/write/chart-title.d.ts +4 -1
- package/dist/xlsx/write/chart-title.d.ts.map +1 -1
- package/dist/xlsx/write/chart.d.ts +4 -1
- package/dist/xlsx/write/chart.d.ts.map +1 -1
- package/dist/xml/index.cjs +162 -0
- package/dist/xml/index.d.ts +1 -0
- package/dist/xml/index.d.ts.map +1 -1
- package/dist/xml/index.mjs +161 -1
- package/dist/xml/lite.d.ts +30 -0
- package/dist/xml/lite.d.ts.map +1 -0
- package/package.json +6 -1
- package/dist/pptx/chunks/index-BHqL5KXH.d.ts.map +0 -1
- package/dist/pptx/chunks/index-BYkdcS8J.d.ts.map +0 -1
- package/dist/pptx/chunks/smart-art-CO2jmJFf.d.ts.map +0 -1
- package/dist/pptx/chunks/text-operations-DEJ7alZR.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-appearance.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-colors.d.ts +0 -9
- package/dist/xlsx/layout/chart-colors.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-scale.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-spacing.d.ts +0 -6
- package/dist/xlsx/layout/chart-spacing.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-appearance.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-bars.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-cartesian.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-legend.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-radial.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-text-metrics.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-title-text.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-util.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-title-text.d.ts +0 -14
- package/dist/xlsx/layout/chart-title-text.d.ts.map +0 -1
- package/dist/xlsx/layout/font-family.d.ts.map +0 -1
- /package/dist/{xlsx/layout → chart/render}/chart-scale.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-bars.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-cartesian.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-legend.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-radial.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-text-metrics.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-title-text.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-util.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg.d.ts +0 -0
package/dist/xlsx/ui/index.mjs
CHANGED
|
@@ -103,31 +103,31 @@ function quoteSheetName(name) {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
// xlsx/address-r1c1.ts
|
|
106
|
-
var dimension = (
|
|
107
|
-
if (!
|
|
108
|
-
if (
|
|
109
|
-
const offset2 = Number(
|
|
106
|
+
var dimension = (text2, base, size) => {
|
|
107
|
+
if (!text2) return base;
|
|
108
|
+
if (text2.startsWith("[")) {
|
|
109
|
+
const offset2 = Number(text2.slice(1, -1));
|
|
110
110
|
if (Math.abs(offset2) >= size) return void 0;
|
|
111
111
|
return ((base + offset2) % size + size) % size;
|
|
112
112
|
}
|
|
113
|
-
const at = Number(
|
|
113
|
+
const at = Number(text2) - 1;
|
|
114
114
|
return at >= 0 && at < size ? at : void 0;
|
|
115
115
|
};
|
|
116
|
-
function corner(
|
|
117
|
-
const cell = /^R(\[[+-]?\d+\]|\d+)?C(\[[+-]?\d+\]|\d+)?$/i.exec(
|
|
116
|
+
function corner(text2, base) {
|
|
117
|
+
const cell = /^R(\[[+-]?\d+\]|\d+)?C(\[[+-]?\d+\]|\d+)?$/i.exec(text2);
|
|
118
118
|
if (cell) {
|
|
119
119
|
const row2 = dimension(cell[1], base.row, MAX_ROW + 1);
|
|
120
120
|
const col = dimension(cell[2], base.col, MAX_COL + 1);
|
|
121
121
|
if (row2 === void 0 || col === void 0) return void 0;
|
|
122
122
|
return { kind: "cell", range: { start: { row: row2, col }, end: { row: row2, col } } };
|
|
123
123
|
}
|
|
124
|
-
const rowMatch = /^R(\[[+-]?\d+\]|\d+)?$/i.exec(
|
|
124
|
+
const rowMatch = /^R(\[[+-]?\d+\]|\d+)?$/i.exec(text2);
|
|
125
125
|
if (rowMatch) {
|
|
126
126
|
const row2 = dimension(rowMatch[1], base.row, MAX_ROW + 1);
|
|
127
127
|
if (row2 === void 0) return void 0;
|
|
128
128
|
return { kind: "row", range: { start: { row: row2, col: 0 }, end: { row: row2, col: MAX_COL } } };
|
|
129
129
|
}
|
|
130
|
-
const colMatch = /^C(\[[+-]?\d+\]|\d+)?$/i.exec(
|
|
130
|
+
const colMatch = /^C(\[[+-]?\d+\]|\d+)?$/i.exec(text2);
|
|
131
131
|
if (colMatch) {
|
|
132
132
|
const col = dimension(colMatch[1], base.col, MAX_COL + 1);
|
|
133
133
|
if (col === void 0) return void 0;
|
|
@@ -135,10 +135,10 @@ function corner(text, base) {
|
|
|
135
135
|
}
|
|
136
136
|
return void 0;
|
|
137
137
|
}
|
|
138
|
-
function parseR1C1Range(
|
|
138
|
+
function parseR1C1Range(text2, base) {
|
|
139
139
|
if (!Number.isInteger(base.row) || !Number.isInteger(base.col) || base.row < 0 || base.row > MAX_ROW || base.col < 0 || base.col > MAX_COL)
|
|
140
140
|
return void 0;
|
|
141
|
-
const parts =
|
|
141
|
+
const parts = text2.trim().split(":");
|
|
142
142
|
if (parts.length > 2) return void 0;
|
|
143
143
|
const a = corner(parts[0] ?? "", base);
|
|
144
144
|
const b = parts.length === 1 ? a : corner(parts[1] ?? "", base);
|
|
@@ -323,27 +323,27 @@ function styleAt(workbook, styleId) {
|
|
|
323
323
|
}
|
|
324
324
|
function internStyle(workbook, style2) {
|
|
325
325
|
const key = styleKey(style2);
|
|
326
|
-
const
|
|
327
|
-
const known =
|
|
326
|
+
const cache3 = styleCache(workbook);
|
|
327
|
+
const known = cache3.get(key);
|
|
328
328
|
if (known !== void 0 && workbook.styles[known] && styleKey(workbook.styles[known]) === key)
|
|
329
329
|
return known;
|
|
330
330
|
const index2 = workbook.styles.findIndex((candidate) => styleKey(candidate) === key);
|
|
331
331
|
if (index2 >= 0) {
|
|
332
|
-
|
|
332
|
+
cache3.set(key, index2);
|
|
333
333
|
return index2;
|
|
334
334
|
}
|
|
335
335
|
workbook.styles.push(style2);
|
|
336
|
-
|
|
336
|
+
cache3.set(key, workbook.styles.length - 1);
|
|
337
337
|
return workbook.styles.length - 1;
|
|
338
338
|
}
|
|
339
339
|
var caches = /* @__PURE__ */ new WeakMap();
|
|
340
340
|
function styleCache(workbook) {
|
|
341
|
-
let
|
|
342
|
-
if (!
|
|
343
|
-
|
|
344
|
-
caches.set(workbook,
|
|
341
|
+
let cache3 = caches.get(workbook);
|
|
342
|
+
if (!cache3) {
|
|
343
|
+
cache3 = /* @__PURE__ */ new Map();
|
|
344
|
+
caches.set(workbook, cache3);
|
|
345
345
|
}
|
|
346
|
-
return
|
|
346
|
+
return cache3;
|
|
347
347
|
}
|
|
348
348
|
function compact(value2) {
|
|
349
349
|
const out = {};
|
|
@@ -669,15 +669,15 @@ function isElapsedOnly(tokens) {
|
|
|
669
669
|
}
|
|
670
670
|
function renderElapsedOnly(serial, tokens) {
|
|
671
671
|
const seconds = Math.round(Math.abs(serial) * 86400);
|
|
672
|
-
let
|
|
672
|
+
let text2 = "";
|
|
673
673
|
for (const tok of tokens) {
|
|
674
|
-
if (tok.t === "lit")
|
|
674
|
+
if (tok.t === "lit") text2 += tok.v;
|
|
675
675
|
else if (tok.t === "elapsed") {
|
|
676
676
|
const amount = tok.unit === "h" ? Math.floor(seconds / 3600) : tok.unit === "m" ? Math.floor(seconds / 60) : seconds;
|
|
677
|
-
|
|
677
|
+
text2 += String(amount).padStart(tok.width, "0");
|
|
678
678
|
}
|
|
679
679
|
}
|
|
680
|
-
return
|
|
680
|
+
return text2;
|
|
681
681
|
}
|
|
682
682
|
function renderDate(serial, tokens, date1904) {
|
|
683
683
|
if (!(serial >= 0) || serial >= MAX_DATE_SERIAL + 1) return void 0;
|
|
@@ -686,21 +686,21 @@ function renderDate(serial, tokens, date1904) {
|
|
|
686
686
|
if (p.year > 9999) return void 0;
|
|
687
687
|
const twelve = tokens.some((t) => t.t === "ampm");
|
|
688
688
|
const hour12 = p.hours % 12 === 0 ? 12 : p.hours % 12;
|
|
689
|
-
let
|
|
689
|
+
let text2 = "";
|
|
690
690
|
for (const tok of tokens) {
|
|
691
|
-
if (tok.t === "lit")
|
|
691
|
+
if (tok.t === "lit") text2 += tok.v;
|
|
692
692
|
else if (tok.t === "ampm") {
|
|
693
693
|
const pm = p.hours >= 12;
|
|
694
|
-
|
|
694
|
+
text2 += tok.kind === "AM/PM" ? pm ? "PM" : "AM" : tok.kind === "A/P" ? pm ? "P" : "A" : pm ? "p" : "a";
|
|
695
695
|
} else if (tok.t === "subsec") {
|
|
696
696
|
const digits2 = String(p.subsec).padStart(precision, "0");
|
|
697
|
-
|
|
697
|
+
text2 += `.${digits2.slice(0, tok.digits).padEnd(tok.digits, "0")}`;
|
|
698
698
|
} else if (tok.t === "elapsed") {
|
|
699
699
|
const amount = tok.unit === "h" ? Math.floor(p.totalSeconds / 3600) : tok.unit === "m" ? Math.floor(p.totalSeconds / 60) : p.totalSeconds;
|
|
700
|
-
|
|
701
|
-
} else if (tok.t === "date")
|
|
700
|
+
text2 += String(amount).padStart(tok.width, "0");
|
|
701
|
+
} else if (tok.t === "date") text2 += datePart(tok.part, p, twelve ? hour12 : p.hours);
|
|
702
702
|
}
|
|
703
|
-
return
|
|
703
|
+
return text2;
|
|
704
704
|
}
|
|
705
705
|
function datePart(part, p, hour) {
|
|
706
706
|
switch (part) {
|
|
@@ -939,25 +939,25 @@ function renderFraction(value2, plan) {
|
|
|
939
939
|
const dropSeparator = hideFraction || hasInt && intText === "" && numHash;
|
|
940
940
|
const lastInt = plan.tokens.reduce((last, t, i2) => t.r === "int" ? i2 : last, -1);
|
|
941
941
|
const firstNum = plan.tokens.findIndex((t) => t.r === "num");
|
|
942
|
-
let
|
|
942
|
+
let text2 = "";
|
|
943
943
|
let intDone = false;
|
|
944
944
|
plan.tokens.forEach((tok, i2) => {
|
|
945
945
|
if (tok.r === "lit") {
|
|
946
|
-
if (!(dropSeparator && i2 > lastInt && i2 < firstNum))
|
|
946
|
+
if (!(dropSeparator && i2 > lastInt && i2 < firstNum)) text2 += tok.v;
|
|
947
947
|
} else if (tok.r === "int") {
|
|
948
|
-
if (!intDone)
|
|
948
|
+
if (!intDone) text2 += intText;
|
|
949
949
|
intDone = true;
|
|
950
950
|
} else if (hideFraction) ; else if (blank) {
|
|
951
|
-
if (tok.r === "num")
|
|
952
|
-
else if (tok.r === "slash")
|
|
953
|
-
else
|
|
951
|
+
if (tok.r === "num") text2 += " ";
|
|
952
|
+
else if (tok.r === "slash") text2 += " ";
|
|
953
|
+
else text2 += " ".repeat(plan.fixedDenominator ? plan.denWidth : 1);
|
|
954
954
|
} else if (tok.r === "num") {
|
|
955
|
-
if (tok.index === 0)
|
|
956
|
-
} else if (tok.r === "slash")
|
|
957
|
-
else if (plan.fixedDenominator)
|
|
958
|
-
else if (tok.index === 0)
|
|
955
|
+
if (tok.index === 0) text2 += padLeft(String(n), plan.numDigits);
|
|
956
|
+
} else if (tok.r === "slash") text2 += "/";
|
|
957
|
+
else if (plan.fixedDenominator) text2 += String(d);
|
|
958
|
+
else if (tok.index === 0) text2 += padRight(String(d), plan.denDigits);
|
|
959
959
|
});
|
|
960
|
-
return { text, zero };
|
|
960
|
+
return { text: text2, zero };
|
|
961
961
|
}
|
|
962
962
|
|
|
963
963
|
// xlsx/numfmt/decimal.ts
|
|
@@ -1162,18 +1162,18 @@ function renderNumber(value2, plan) {
|
|
|
1162
1162
|
} else rounded = roundDecimals(v, plan.fracDigits.length);
|
|
1163
1163
|
const ints = plan.exponent && isZero(rounded) ? plan.intDigits.map(() => "0") : placeIntegers(integerPart(rounded), plan.intDigits, plan.grouping);
|
|
1164
1164
|
const fracs = placeFraction(fractionPart(rounded, plan.fracDigits.length), plan.fracDigits);
|
|
1165
|
-
let
|
|
1165
|
+
let text2 = "";
|
|
1166
1166
|
for (const tok of plan.tokens) {
|
|
1167
|
-
if (tok.r === "lit")
|
|
1168
|
-
else if (tok.r === "int")
|
|
1169
|
-
else if (tok.r === "frac")
|
|
1170
|
-
else if (tok.r === "point")
|
|
1167
|
+
if (tok.r === "lit") text2 += tok.v;
|
|
1168
|
+
else if (tok.r === "int") text2 += ints[tok.index] ?? "";
|
|
1169
|
+
else if (tok.r === "frac") text2 += fracs[tok.index] ?? "";
|
|
1170
|
+
else if (tok.r === "point") text2 += ".";
|
|
1171
1171
|
else if (plan.exponent) {
|
|
1172
1172
|
const sign2 = exp2 < 0 ? "-" : plan.exponent.plus ? "+" : "";
|
|
1173
|
-
|
|
1173
|
+
text2 += `E${sign2}${String(Math.abs(exp2)).padStart(plan.exponent.digits, "0")}`;
|
|
1174
1174
|
}
|
|
1175
1175
|
}
|
|
1176
|
-
return { text, zero: isZero(rounded) };
|
|
1176
|
+
return { text: text2, zero: isZero(rounded) };
|
|
1177
1177
|
}
|
|
1178
1178
|
|
|
1179
1179
|
// xlsx/numfmt/tokenizer.ts
|
|
@@ -1464,14 +1464,14 @@ function compileFormat(format) {
|
|
|
1464
1464
|
const code = format.trim() === "" ? "General" : format;
|
|
1465
1465
|
const sections = splitSections(code).slice(0, 4).map(compileSection);
|
|
1466
1466
|
let numeric2;
|
|
1467
|
-
let
|
|
1467
|
+
let text2;
|
|
1468
1468
|
const last = sections[sections.length - 1];
|
|
1469
1469
|
if (sections.length === 4) {
|
|
1470
1470
|
numeric2 = sections.slice(0, 3);
|
|
1471
|
-
|
|
1471
|
+
text2 = sections[3];
|
|
1472
1472
|
} else if (last && last.kind === "text") {
|
|
1473
1473
|
numeric2 = sections.slice(0, -1);
|
|
1474
|
-
|
|
1474
|
+
text2 = last;
|
|
1475
1475
|
} else numeric2 = sections;
|
|
1476
1476
|
if (numeric2.length === 0) numeric2 = [generalSection()];
|
|
1477
1477
|
const conditional = numeric2.some((s) => s.condition !== void 0);
|
|
@@ -1481,7 +1481,7 @@ function compileFormat(format) {
|
|
|
1481
1481
|
conditional,
|
|
1482
1482
|
isDate: numeric2.some((s) => s.kind === "date")
|
|
1483
1483
|
};
|
|
1484
|
-
if (
|
|
1484
|
+
if (text2) compiled.text = text2;
|
|
1485
1485
|
if (cache.size >= CACHE_LIMIT) cache.clear();
|
|
1486
1486
|
cache.set(format, compiled);
|
|
1487
1487
|
return compiled;
|
|
@@ -1555,16 +1555,16 @@ function generalDigits(v, width) {
|
|
|
1555
1555
|
}
|
|
1556
1556
|
function formatGeneral(value2, width = GENERAL_WIDTH) {
|
|
1557
1557
|
if (!Number.isFinite(value2)) return "#NUM!";
|
|
1558
|
-
const
|
|
1558
|
+
const text2 = generalDigits(
|
|
1559
1559
|
toDigits(value2),
|
|
1560
1560
|
Math.max(1, Math.min(GENERAL_WIDTH, Math.floor(width)))
|
|
1561
1561
|
);
|
|
1562
|
-
return value2 < 0 &&
|
|
1562
|
+
return value2 < 0 && text2 !== "0" ? `-${text2}` : text2;
|
|
1563
1563
|
}
|
|
1564
1564
|
|
|
1565
1565
|
// xlsx/numfmt/format.ts
|
|
1566
1566
|
var OVERFLOW_TEXT = "########";
|
|
1567
|
-
var result = (
|
|
1567
|
+
var result = (text2, section) => section?.color ? { text: text2, color: section.color } : { text: text2 };
|
|
1568
1568
|
function tokenSource(tok) {
|
|
1569
1569
|
switch (tok.t) {
|
|
1570
1570
|
case "lit":
|
|
@@ -1597,21 +1597,21 @@ function tokenSource(tok) {
|
|
|
1597
1597
|
return "";
|
|
1598
1598
|
}
|
|
1599
1599
|
}
|
|
1600
|
-
function formatText(
|
|
1601
|
-
if (!section) return { text };
|
|
1600
|
+
function formatText(text2, section) {
|
|
1601
|
+
if (!section) return { text: text2 };
|
|
1602
1602
|
let out = "";
|
|
1603
|
-
for (const tok of section.tokens) out += tok.t === "text" ?
|
|
1603
|
+
for (const tok of section.tokens) out += tok.t === "text" ? text2 : tokenSource(tok);
|
|
1604
1604
|
return result(out, section);
|
|
1605
1605
|
}
|
|
1606
1606
|
function renderAbs(v, section, generalWidth) {
|
|
1607
1607
|
if (section.fraction) return renderFraction(v, section.fraction);
|
|
1608
1608
|
if (section.number) return renderNumber(v, section.number);
|
|
1609
1609
|
const general = formatGeneral(Math.abs(v), generalWidth);
|
|
1610
|
-
let
|
|
1610
|
+
let text2 = "";
|
|
1611
1611
|
for (const tok of section.tokens) {
|
|
1612
|
-
|
|
1612
|
+
text2 += tok.t === "general" || tok.t === "text" ? general : tokenSource(tok);
|
|
1613
1613
|
}
|
|
1614
|
-
return { text, zero: general === "0" };
|
|
1614
|
+
return { text: text2, zero: general === "0" };
|
|
1615
1615
|
}
|
|
1616
1616
|
function hashFill(options) {
|
|
1617
1617
|
const width = options.width ?? 0;
|
|
@@ -1621,7 +1621,7 @@ function hashFill(options) {
|
|
|
1621
1621
|
function fitNumber(value2, format, options) {
|
|
1622
1622
|
const date1904 = options.date1904 ?? false;
|
|
1623
1623
|
const width = options.width ?? 0;
|
|
1624
|
-
const fits = (
|
|
1624
|
+
const fits = (text2) => (options.measure ? options.measure(text2) : text2.length) <= width;
|
|
1625
1625
|
const first2 = formatNumber(value2, format, date1904);
|
|
1626
1626
|
if (fits(first2.text) || first2.text === OVERFLOW_TEXT) return first2;
|
|
1627
1627
|
const choice = chooseSection(compileFormat(format), value2);
|
|
@@ -1644,15 +1644,15 @@ function formatNumber(value2, format, date1904, generalWidth) {
|
|
|
1644
1644
|
if (section.kind === "date") {
|
|
1645
1645
|
const serial = abs2 ? Math.abs(value2) : value2;
|
|
1646
1646
|
if (isElapsedOnly(section.tokens)) {
|
|
1647
|
-
const
|
|
1648
|
-
return result(serial < 0 ? `-${
|
|
1647
|
+
const text4 = renderElapsedOnly(serial, section.tokens);
|
|
1648
|
+
return result(serial < 0 ? `-${text4}` : text4, section);
|
|
1649
1649
|
}
|
|
1650
|
-
const
|
|
1651
|
-
return
|
|
1650
|
+
const text3 = renderDate(serial, section.tokens, date1904);
|
|
1651
|
+
return text3 === void 0 ? { text: OVERFLOW_TEXT } : result(text3, section);
|
|
1652
1652
|
}
|
|
1653
|
-
const { text, zero } = renderAbs(value2, section, generalWidth);
|
|
1653
|
+
const { text: text2, zero } = renderAbs(value2, section, generalWidth);
|
|
1654
1654
|
const minus = value2 < 0 && !abs2 && !zero;
|
|
1655
|
-
return result(minus ? `-${
|
|
1655
|
+
return result(minus ? `-${text2}` : text2, section);
|
|
1656
1656
|
}
|
|
1657
1657
|
function formatValue(value2, format, options = {}) {
|
|
1658
1658
|
if (value2 === null) return { text: "" };
|
|
@@ -1689,9 +1689,9 @@ function monthFromName(name) {
|
|
|
1689
1689
|
);
|
|
1690
1690
|
return index2 < 0 ? void 0 : index2 + 1;
|
|
1691
1691
|
}
|
|
1692
|
-
function fullYear(
|
|
1693
|
-
const y = Number(
|
|
1694
|
-
if (
|
|
1692
|
+
function fullYear(text2) {
|
|
1693
|
+
const y = Number(text2);
|
|
1694
|
+
if (text2.length > 2) return y;
|
|
1695
1695
|
return y < 30 ? 2e3 + y : 1900 + y;
|
|
1696
1696
|
}
|
|
1697
1697
|
function serialOf(year, month, day, date1904) {
|
|
@@ -1705,8 +1705,8 @@ function serialOf(year, month, day, date1904) {
|
|
|
1705
1705
|
return serial < minimum ? void 0 : serial;
|
|
1706
1706
|
}
|
|
1707
1707
|
var TIME_RE = /^(\d{1,5}):(\d{1,2})(?::(\d{1,2}))?(?:\.(\d+))?\s*(am|pm|a|p)?$/i;
|
|
1708
|
-
function parseTime(
|
|
1709
|
-
const m = TIME_RE.exec(
|
|
1708
|
+
function parseTime(text2) {
|
|
1709
|
+
const m = TIME_RE.exec(text2);
|
|
1710
1710
|
if (!m) return void 0;
|
|
1711
1711
|
const [, a = "0", b = "0", c, frac, ampm] = m;
|
|
1712
1712
|
let hours = Number(a);
|
|
@@ -1733,11 +1733,11 @@ function parseTime(text) {
|
|
|
1733
1733
|
return { fraction: (hours * 3600 + minutes * 60 + seconds) / 86400, format };
|
|
1734
1734
|
}
|
|
1735
1735
|
var currentYear = () => (/* @__PURE__ */ new Date()).getFullYear();
|
|
1736
|
-
function parseDay(
|
|
1737
|
-
let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(
|
|
1736
|
+
function parseDay(text2) {
|
|
1737
|
+
let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(text2);
|
|
1738
1738
|
if (m)
|
|
1739
1739
|
return { year: Number(m[1]), month: Number(m[2]), day: Number(m[3]), format: "yyyy-mm-dd" };
|
|
1740
|
-
m = /^(\d{1,2})([-/])(\d{1,2})\2(\d{2}|\d{4})$/.exec(
|
|
1740
|
+
m = /^(\d{1,2})([-/])(\d{1,2})\2(\d{2}|\d{4})$/.exec(text2);
|
|
1741
1741
|
if (m)
|
|
1742
1742
|
return {
|
|
1743
1743
|
year: fullYear(m[4] ?? ""),
|
|
@@ -1745,9 +1745,9 @@ function parseDay(text) {
|
|
|
1745
1745
|
day: Number(m[3]),
|
|
1746
1746
|
format: "m/d/yyyy"
|
|
1747
1747
|
};
|
|
1748
|
-
m = /^(\d{1,2})\/(\d{1,2})$/.exec(
|
|
1748
|
+
m = /^(\d{1,2})\/(\d{1,2})$/.exec(text2);
|
|
1749
1749
|
if (m) return { year: currentYear(), month: Number(m[1]), day: Number(m[2]), format: "d-mmm" };
|
|
1750
|
-
m = /^(\d{1,2})[- ]([a-z]+)\.?(?:[- ,]+(\d{2}|\d{4}))?$/i.exec(
|
|
1750
|
+
m = /^(\d{1,2})[- ]([a-z]+)\.?(?:[- ,]+(\d{2}|\d{4}))?$/i.exec(text2);
|
|
1751
1751
|
if (m) {
|
|
1752
1752
|
const month = monthFromName(m[2] ?? "");
|
|
1753
1753
|
if (!month) return void 0;
|
|
@@ -1755,12 +1755,12 @@ function parseDay(text) {
|
|
|
1755
1755
|
return { year: currentYear(), month, day: Number(m[1]), format: "d-mmm" };
|
|
1756
1756
|
return { year: fullYear(m[3]), month, day: Number(m[1]), format: "d-mmm-yy" };
|
|
1757
1757
|
}
|
|
1758
|
-
m = /^([a-z]+)\.?[- ](\d{1,2}),?[- ](\d{4})$/i.exec(
|
|
1758
|
+
m = /^([a-z]+)\.?[- ](\d{1,2}),?[- ](\d{4})$/i.exec(text2);
|
|
1759
1759
|
if (m) {
|
|
1760
1760
|
const month = monthFromName(m[1] ?? "");
|
|
1761
1761
|
return month ? { year: Number(m[3]), month, day: Number(m[2]), format: "d-mmm-yy" } : void 0;
|
|
1762
1762
|
}
|
|
1763
|
-
m = /^([a-z]{3,})[- ]?(\d{1,2})$/i.exec(
|
|
1763
|
+
m = /^([a-z]{3,})[- ]?(\d{1,2})$/i.exec(text2);
|
|
1764
1764
|
if (m) {
|
|
1765
1765
|
const month = monthFromName(m[1] ?? "");
|
|
1766
1766
|
if (!month) return void 0;
|
|
@@ -1770,19 +1770,19 @@ function parseDay(text) {
|
|
|
1770
1770
|
return { year, month, day: n, format: "d-mmm" };
|
|
1771
1771
|
return { year: fullYear(m[2] ?? ""), month, day: 1, format: "mmm-yy" };
|
|
1772
1772
|
}
|
|
1773
|
-
m = /^([a-z]+)\.?[- ](\d{4})$/i.exec(
|
|
1773
|
+
m = /^([a-z]+)\.?[- ](\d{4})$/i.exec(text2);
|
|
1774
1774
|
if (m) {
|
|
1775
1775
|
const month = monthFromName(m[1] ?? "");
|
|
1776
1776
|
return month ? { year: Number(m[2]), month, day: 1, format: "mmm-yy" } : void 0;
|
|
1777
1777
|
}
|
|
1778
1778
|
return void 0;
|
|
1779
1779
|
}
|
|
1780
|
-
function parseDateTimeInput(
|
|
1781
|
-
const time = parseTime(
|
|
1780
|
+
function parseDateTimeInput(text2, date1904) {
|
|
1781
|
+
const time = parseTime(text2);
|
|
1782
1782
|
if (time) return { value: time.fraction, numFmt: time.format };
|
|
1783
|
-
const tail = /(?:\s{1,8}|T)(\d{1,2}:\d{1,2}(?::\d{1,2})?(?:\s{0,8}(?:am|pm|a|p))?)$/i.exec(
|
|
1784
|
-
const split = tail && tail.index > 0 ? [tail[0],
|
|
1785
|
-
const dayText = split ? split[1] ?? "" :
|
|
1783
|
+
const tail = /(?:\s{1,8}|T)(\d{1,2}:\d{1,2}(?::\d{1,2})?(?:\s{0,8}(?:am|pm|a|p))?)$/i.exec(text2);
|
|
1784
|
+
const split = tail && tail.index > 0 ? [tail[0], text2.slice(0, tail.index), tail[1]] : null;
|
|
1785
|
+
const dayText = split ? split[1] ?? "" : text2;
|
|
1786
1786
|
const day = parseDay(dayText);
|
|
1787
1787
|
if (!day) return void 0;
|
|
1788
1788
|
const serial = serialOf(day.year, day.month, day.day, date1904);
|
|
@@ -1801,8 +1801,8 @@ function currencyFormat(symbol2, decimals2) {
|
|
|
1801
1801
|
if (symbol2 === "$") return `$${body2}_);[Red]($${body2})`;
|
|
1802
1802
|
return `${symbol2}${body2}`;
|
|
1803
1803
|
}
|
|
1804
|
-
function parseNumberInput(
|
|
1805
|
-
let s =
|
|
1804
|
+
function parseNumberInput(text2) {
|
|
1805
|
+
let s = text2.trim();
|
|
1806
1806
|
let negative = false;
|
|
1807
1807
|
let parenthesized = false;
|
|
1808
1808
|
if (s.startsWith("(") && s.endsWith(")")) {
|
|
@@ -1859,8 +1859,8 @@ function parseNumberInput(text) {
|
|
|
1859
1859
|
if (grouped) return { value: value2, numFmt: decimals2 ? "#,##0.00" : "#,##0" };
|
|
1860
1860
|
return { value: value2 };
|
|
1861
1861
|
}
|
|
1862
|
-
function parseFractionInput(
|
|
1863
|
-
const m = /^([-+]?)(\d+)\s+(\d+)\/(\d+)$/.exec(
|
|
1862
|
+
function parseFractionInput(text2) {
|
|
1863
|
+
const m = /^([-+]?)(\d+)\s+(\d+)\/(\d+)$/.exec(text2.trim());
|
|
1864
1864
|
if (!m) return void 0;
|
|
1865
1865
|
const den = Number(m[4]);
|
|
1866
1866
|
const num2 = Number(m[3]);
|
|
@@ -1871,27 +1871,27 @@ function parseFractionInput(text) {
|
|
|
1871
1871
|
numFmt: den < 10 ? "# ?/?" : "# ??/??"
|
|
1872
1872
|
};
|
|
1873
1873
|
}
|
|
1874
|
-
function parseCellInput(
|
|
1875
|
-
if (
|
|
1876
|
-
if (
|
|
1877
|
-
if (
|
|
1878
|
-
const trimmed =
|
|
1879
|
-
if (trimmed === "") return { value:
|
|
1874
|
+
function parseCellInput(text2, options = {}) {
|
|
1875
|
+
if (text2 === "") return { value: null };
|
|
1876
|
+
if (text2.startsWith("=") && text2.length > 1) return { value: null, formula: text2.slice(1) };
|
|
1877
|
+
if (text2.startsWith("'")) return { value: text2.slice(1) };
|
|
1878
|
+
const trimmed = text2.trim();
|
|
1879
|
+
if (trimmed === "") return { value: text2 };
|
|
1880
1880
|
const upper2 = trimmed.toUpperCase();
|
|
1881
|
-
if (trimmed ===
|
|
1881
|
+
if (trimmed === text2) {
|
|
1882
1882
|
if (upper2 === "TRUE" || upper2 === "FALSE") return { value: upper2 === "TRUE" };
|
|
1883
1883
|
if (isErrorCode(upper2)) return { value: cellError(upper2) };
|
|
1884
1884
|
}
|
|
1885
1885
|
const parsed = parseNumberInput(trimmed) ?? parseFractionInput(trimmed) ?? parseDateTimeInput(trimmed, options.date1904 ?? false);
|
|
1886
|
-
if (!parsed) return { value:
|
|
1886
|
+
if (!parsed) return { value: text2 };
|
|
1887
1887
|
return parsed.numFmt ? { value: parsed.value, numFmt: parsed.numFmt } : { value: parsed.value };
|
|
1888
1888
|
}
|
|
1889
1889
|
|
|
1890
1890
|
// xlsx/numfmt/decimals.ts
|
|
1891
1891
|
function fromGeneral(delta, sample) {
|
|
1892
|
-
const
|
|
1893
|
-
const sci = /^(\d)(?:\.(\d+))?E/.exec(
|
|
1894
|
-
const shown = sci ? sci[2]?.length ?? 0 : /\.(\d+)/.exec(
|
|
1892
|
+
const text2 = typeof sample === "number" ? formatGeneral(Math.abs(sample)) : "";
|
|
1893
|
+
const sci = /^(\d)(?:\.(\d+))?E/.exec(text2);
|
|
1894
|
+
const shown = sci ? sci[2]?.length ?? 0 : /\.(\d+)/.exec(text2)?.[1]?.length ?? 0;
|
|
1895
1895
|
const next = Math.max(0, shown + delta);
|
|
1896
1896
|
const body2 = next ? `0.${"0".repeat(next)}` : "0";
|
|
1897
1897
|
return sci ? `${body2}E+00` : body2;
|
|
@@ -1965,15 +1965,15 @@ var SPECIALS = {
|
|
|
1965
1965
|
"#totals": "#Totals",
|
|
1966
1966
|
"#this row": "#This Row"
|
|
1967
1967
|
};
|
|
1968
|
-
var unescape = (
|
|
1969
|
-
function splitItems(
|
|
1968
|
+
var unescape = (text2) => text2.replace(/'(.)/g, "$1");
|
|
1969
|
+
function splitItems(text2) {
|
|
1970
1970
|
const items = [];
|
|
1971
1971
|
let depth = 0;
|
|
1972
1972
|
let current = "";
|
|
1973
|
-
for (let i2 = 0; i2 <
|
|
1974
|
-
const ch =
|
|
1973
|
+
for (let i2 = 0; i2 < text2.length; i2++) {
|
|
1974
|
+
const ch = text2[i2] ?? "";
|
|
1975
1975
|
if (ch === "'") {
|
|
1976
|
-
current += ch + (
|
|
1976
|
+
current += ch + (text2[i2 + 1] ?? "");
|
|
1977
1977
|
i2++;
|
|
1978
1978
|
continue;
|
|
1979
1979
|
}
|
|
@@ -1990,9 +1990,9 @@ function splitItems(text) {
|
|
|
1990
1990
|
return items;
|
|
1991
1991
|
}
|
|
1992
1992
|
var strip = (item) => item.startsWith("[") && item.endsWith("]") ? item.slice(1, -1) : item;
|
|
1993
|
-
function parseStructured(
|
|
1994
|
-
const open =
|
|
1995
|
-
const inner2 =
|
|
1993
|
+
function parseStructured(text2, tableName) {
|
|
1994
|
+
const open = text2.indexOf("[");
|
|
1995
|
+
const inner2 = text2.slice(open + 1, -1);
|
|
1996
1996
|
const out = { specials: [] };
|
|
1997
1997
|
if (tableName) out.table = tableName;
|
|
1998
1998
|
const addColumns = (spec2) => {
|
|
@@ -2017,7 +2017,7 @@ function parseStructured(text, tableName) {
|
|
|
2017
2017
|
out.specials.push(special);
|
|
2018
2018
|
return;
|
|
2019
2019
|
}
|
|
2020
|
-
if (out.column !== void 0) throw new FormulaError(`Invalid structured reference ${
|
|
2020
|
+
if (out.column !== void 0) throw new FormulaError(`Invalid structured reference ${text2}`);
|
|
2021
2021
|
addColumns(item);
|
|
2022
2022
|
};
|
|
2023
2023
|
if (!inner2.includes("[")) {
|
|
@@ -2036,13 +2036,28 @@ function parseStructured(text, tableName) {
|
|
|
2036
2036
|
|
|
2037
2037
|
// xlsx/formula/lexemes.ts
|
|
2038
2038
|
var ERRORS_BY_LENGTH = [...ERROR_CODES].sort((a, b) => b.length - a.length);
|
|
2039
|
-
var NAME_START = /[A-Za-z_\\\u00A1-\uFFFF]/;
|
|
2040
|
-
var NAME_CHAR = /[A-Za-z0-9_.?\\\u00A1-\uFFFF]/;
|
|
2041
2039
|
var NAME_RE = /^[A-Za-z_\\\u00A1-\uFFFF][A-Za-z0-9_.?\\\u00A1-\uFFFF]*/;
|
|
2042
2040
|
var CELL_RE = /^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/;
|
|
2043
2041
|
var COLS_RE = /^(\$?)([A-Za-z]{1,3}):(\$?)([A-Za-z]{1,3})/;
|
|
2044
2042
|
var ROWS_RE = /^(\$?)(\d{1,7}):(\$?)(\d{1,7})/;
|
|
2045
2043
|
var NUMBER_RE2 = /^(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/;
|
|
2044
|
+
var sticky = (re) => new RegExp(re.source.replace(/^\^/, ""), "y");
|
|
2045
|
+
var CELL_AT = sticky(CELL_RE);
|
|
2046
|
+
var COLS_AT = sticky(COLS_RE);
|
|
2047
|
+
var ROWS_AT = sticky(ROWS_RE);
|
|
2048
|
+
var NAME_AT = sticky(NAME_RE);
|
|
2049
|
+
var NUMBER_AT = sticky(NUMBER_RE2);
|
|
2050
|
+
function matchAt(re, source, at) {
|
|
2051
|
+
re.lastIndex = at;
|
|
2052
|
+
return re.exec(source);
|
|
2053
|
+
}
|
|
2054
|
+
var isDigitAt = (source, at) => isDigitCode(source.charCodeAt(at));
|
|
2055
|
+
function rangeStartAt(source, at, accept, max) {
|
|
2056
|
+
let i2 = source[at] === "$" ? at + 1 : at;
|
|
2057
|
+
const from = i2;
|
|
2058
|
+
while (i2 - from <= max && accept(source.charCodeAt(i2))) i2++;
|
|
2059
|
+
return i2 > from && i2 - from <= max && source[i2] === ":";
|
|
2060
|
+
}
|
|
2046
2061
|
var OPERATORS = [
|
|
2047
2062
|
"<=",
|
|
2048
2063
|
">=",
|
|
@@ -2060,7 +2075,12 @@ var OPERATORS = [
|
|
|
2060
2075
|
":",
|
|
2061
2076
|
"@"
|
|
2062
2077
|
];
|
|
2063
|
-
var
|
|
2078
|
+
var isLetterCode = (code) => code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
2079
|
+
var isDigitCode = (code) => code >= 48 && code <= 57;
|
|
2080
|
+
var isNameStartCode = (code) => isLetterCode(code) || code === 95 || code === 92 || code >= 161;
|
|
2081
|
+
var isNameCharCode = (code) => isNameStartCode(code) || isDigitCode(code) || code === 46 || code === 63;
|
|
2082
|
+
var isSheetCharCode = (code) => isLetterCode(code) || isDigitCode(code) || code === 95 || code === 46 || code >= 161;
|
|
2083
|
+
var isNameChar = (ch) => ch !== void 0 && ch !== "" && isNameCharCode(ch.charCodeAt(0));
|
|
2064
2084
|
function matchError(source, at) {
|
|
2065
2085
|
const upper2 = source.slice(at, at + 14).toUpperCase();
|
|
2066
2086
|
return ERRORS_BY_LENGTH.find((code) => upper2.startsWith(code));
|
|
@@ -2076,14 +2096,13 @@ var boundary = (source, end) => {
|
|
|
2076
2096
|
return !isNameChar(next) && next !== "(" && next !== "!" && next !== "[";
|
|
2077
2097
|
};
|
|
2078
2098
|
function readReference(source, at) {
|
|
2079
|
-
const
|
|
2080
|
-
const cell = CELL_RE.exec(rest);
|
|
2099
|
+
const cell = matchAt(CELL_AT, source, at);
|
|
2081
2100
|
if (cell) {
|
|
2082
2101
|
const start = corner2(cell[1] ?? "", cell[2] ?? "", cell[3] ?? "", cell[4] ?? "");
|
|
2083
2102
|
let length = cell[0].length;
|
|
2084
2103
|
if (start) {
|
|
2085
|
-
if (
|
|
2086
|
-
const second =
|
|
2104
|
+
if (source[at + length] === ":") {
|
|
2105
|
+
const second = matchAt(CELL_AT, source, at + length + 1);
|
|
2087
2106
|
if (second) {
|
|
2088
2107
|
const end = corner2(second[1] ?? "", second[2] ?? "", second[3] ?? "", second[4] ?? "");
|
|
2089
2108
|
const total2 = length + 1 + second[0].length;
|
|
@@ -2097,8 +2116,8 @@ function readReference(source, at) {
|
|
|
2097
2116
|
}
|
|
2098
2117
|
length = 0;
|
|
2099
2118
|
}
|
|
2100
|
-
const cols =
|
|
2101
|
-
if (cols && boundary(source, at + cols[0].length) &&
|
|
2119
|
+
const cols = rangeStartAt(source, at, isLetterCode, 3) ? matchAt(COLS_AT, source, at) : null;
|
|
2120
|
+
if (cols && boundary(source, at + cols[0].length) && !isDigitAt(source, at + cols[0].length)) {
|
|
2102
2121
|
const c1 = columnIndex(cols[2] ?? "");
|
|
2103
2122
|
const c2 = columnIndex(cols[4] ?? "");
|
|
2104
2123
|
if (c1 >= 0 && c1 <= MAX_COL && c2 >= 0 && c2 <= MAX_COL) {
|
|
@@ -2112,7 +2131,7 @@ function readReference(source, at) {
|
|
|
2112
2131
|
};
|
|
2113
2132
|
}
|
|
2114
2133
|
}
|
|
2115
|
-
const rows2 =
|
|
2134
|
+
const rows2 = rangeStartAt(source, at, isDigitCode, 7) ? matchAt(ROWS_AT, source, at) : null;
|
|
2116
2135
|
if (rows2 && boundary(source, at + rows2[0].length) && source[at + rows2[0].length] !== ".") {
|
|
2117
2136
|
const r1 = Number(rows2[2]) - 1;
|
|
2118
2137
|
const r2 = Number(rows2[4]) - 1;
|
|
@@ -2165,8 +2184,8 @@ function readBrackets(source, at) {
|
|
|
2165
2184
|
}
|
|
2166
2185
|
throw new FormulaError("Unterminated structured reference", at);
|
|
2167
2186
|
}
|
|
2168
|
-
function splitSheets(
|
|
2169
|
-
let rest =
|
|
2187
|
+
function splitSheets(text2) {
|
|
2188
|
+
let rest = text2;
|
|
2170
2189
|
let book;
|
|
2171
2190
|
const bookMatch = /^\[([^\]]*)\]/.exec(rest);
|
|
2172
2191
|
if (bookMatch) {
|
|
@@ -2181,6 +2200,7 @@ function splitSheets(text) {
|
|
|
2181
2200
|
if (book !== void 0) out.book = book;
|
|
2182
2201
|
return out;
|
|
2183
2202
|
}
|
|
2203
|
+
var PREFIX_AT = /(\[\d+\])?([A-Za-z0-9_.\u00A1-\uFFFF]+)(?::([A-Za-z0-9_.\u00A1-\uFFFF]+))?!/y;
|
|
2184
2204
|
function readPrefix(source, at) {
|
|
2185
2205
|
const ch = source[at];
|
|
2186
2206
|
if (ch === "'") {
|
|
@@ -2189,19 +2209,27 @@ function readPrefix(source, at) {
|
|
|
2189
2209
|
const length = quoted.length + 1;
|
|
2190
2210
|
return { prefix: { text: source.slice(at, at + length), ...splitSheets(quoted.name) }, length };
|
|
2191
2211
|
}
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2212
|
+
let i2 = at;
|
|
2213
|
+
if (ch === "[") {
|
|
2214
|
+
i2++;
|
|
2215
|
+
while (isDigitCode(source.charCodeAt(i2))) i2++;
|
|
2216
|
+
if (i2 === at + 1 || source[i2] !== "]") return void 0;
|
|
2217
|
+
i2++;
|
|
2218
|
+
}
|
|
2219
|
+
while (i2 < source.length && isSheetCharCode(source.charCodeAt(i2))) i2++;
|
|
2220
|
+
if (source[i2] !== "!" && source[i2] !== ":") return void 0;
|
|
2221
|
+
const m = matchAt(PREFIX_AT, source, at);
|
|
2195
2222
|
if (!m) return void 0;
|
|
2196
2223
|
if (!m[1] && /^\d/.test(m[2] ?? "") && !m[3]) return void 0;
|
|
2197
2224
|
const raw = m[0].slice(0, -1);
|
|
2198
2225
|
return { prefix: { text: m[0], ...splitSheets(raw) }, length: m[0].length };
|
|
2199
2226
|
}
|
|
2200
|
-
function numberLiteral(
|
|
2201
|
-
|
|
2227
|
+
function numberLiteral(text2) {
|
|
2228
|
+
if (text2.length <= 15) return Number(text2);
|
|
2229
|
+
const [mantissa = "", exponent] = text2.toLowerCase().split("e");
|
|
2202
2230
|
const digits2 = mantissa.replace(".", "");
|
|
2203
2231
|
const firstSignificant = digits2.search(/[1-9]/);
|
|
2204
|
-
if (firstSignificant < 0 || digits2.length - firstSignificant <= 15) return Number(
|
|
2232
|
+
if (firstSignificant < 0 || digits2.length - firstSignificant <= 15) return Number(text2);
|
|
2205
2233
|
const point = mantissa.includes(".") ? mantissa.indexOf(".") : mantissa.length;
|
|
2206
2234
|
const kept = digits2.slice(0, firstSignificant + 15);
|
|
2207
2235
|
const truncated = kept.length >= point ? `${kept.slice(0, point)}.${kept.slice(point)}` : kept + "0".repeat(point - kept.length);
|
|
@@ -2209,6 +2237,17 @@ function numberLiteral(text) {
|
|
|
2209
2237
|
}
|
|
2210
2238
|
|
|
2211
2239
|
// xlsx/formula/tokenizer.ts
|
|
2240
|
+
var SINGLE = {
|
|
2241
|
+
"(": "open",
|
|
2242
|
+
")": "close",
|
|
2243
|
+
",": "comma",
|
|
2244
|
+
";": "semicolon",
|
|
2245
|
+
"{": "lbrace",
|
|
2246
|
+
"}": "rbrace"
|
|
2247
|
+
};
|
|
2248
|
+
var BOOK_INDEX = /\[\d+\]/y;
|
|
2249
|
+
var isSpace = (code) => code === 32 || code === 9 || code === 13 || code === 10;
|
|
2250
|
+
var isDigit3 = (code) => code >= 48 && code <= 57;
|
|
2212
2251
|
function tokenize(formula) {
|
|
2213
2252
|
const source = formula;
|
|
2214
2253
|
const tokens = [];
|
|
@@ -2220,61 +2259,55 @@ function tokenize(formula) {
|
|
|
2220
2259
|
};
|
|
2221
2260
|
while (i2 < source.length) {
|
|
2222
2261
|
const ch = source[i2] ?? "";
|
|
2262
|
+
const code = source.charCodeAt(i2);
|
|
2223
2263
|
const start = i2;
|
|
2224
|
-
if (
|
|
2225
|
-
|
|
2226
|
-
|
|
2264
|
+
if (isSpace(code)) {
|
|
2265
|
+
let j = i2 + 1;
|
|
2266
|
+
while (j < source.length && isSpace(source.charCodeAt(j))) j++;
|
|
2267
|
+
push3({ kind: "ws", text: source.slice(i2, j), start });
|
|
2227
2268
|
continue;
|
|
2228
2269
|
}
|
|
2229
2270
|
if (ch === '"') {
|
|
2230
2271
|
let j = i2 + 1;
|
|
2231
2272
|
let value2 = "";
|
|
2232
2273
|
for (; ; ) {
|
|
2233
|
-
|
|
2234
|
-
if (
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
break;
|
|
2274
|
+
const quote = source.indexOf('"', j);
|
|
2275
|
+
if (quote < 0) throw new FormulaError("Unterminated string", start);
|
|
2276
|
+
value2 += source.slice(j, quote);
|
|
2277
|
+
if (source[quote + 1] === '"') {
|
|
2278
|
+
value2 += '"';
|
|
2279
|
+
j = quote + 2;
|
|
2280
|
+
continue;
|
|
2241
2281
|
}
|
|
2242
|
-
|
|
2243
|
-
|
|
2282
|
+
j = quote;
|
|
2283
|
+
break;
|
|
2244
2284
|
}
|
|
2245
2285
|
push3({ kind: "string", text: source.slice(start, j + 1), start, value: value2 });
|
|
2246
2286
|
continue;
|
|
2247
2287
|
}
|
|
2248
2288
|
if (ch === "#") {
|
|
2249
|
-
const
|
|
2250
|
-
if (!
|
|
2289
|
+
const code2 = matchError(source, i2);
|
|
2290
|
+
if (!code2) throw new FormulaError(`Unexpected '#'`, start);
|
|
2251
2291
|
push3({
|
|
2252
|
-
kind:
|
|
2253
|
-
text: source.slice(i2, i2 +
|
|
2292
|
+
kind: code2 === "#REF!" ? "ref" : "error",
|
|
2293
|
+
text: source.slice(i2, i2 + code2.length),
|
|
2254
2294
|
start,
|
|
2255
|
-
value:
|
|
2295
|
+
value: code2
|
|
2256
2296
|
});
|
|
2257
2297
|
continue;
|
|
2258
2298
|
}
|
|
2259
|
-
const
|
|
2260
|
-
"(": "open",
|
|
2261
|
-
")": "close",
|
|
2262
|
-
",": "comma",
|
|
2263
|
-
";": "semicolon",
|
|
2264
|
-
"{": "lbrace",
|
|
2265
|
-
"}": "rbrace"
|
|
2266
|
-
};
|
|
2267
|
-
const kind = single[ch];
|
|
2299
|
+
const kind = SINGLE[ch];
|
|
2268
2300
|
if (kind) {
|
|
2269
2301
|
push3({ kind, text: ch, start });
|
|
2270
2302
|
continue;
|
|
2271
2303
|
}
|
|
2272
|
-
if (ch === "[" &&
|
|
2304
|
+
if (ch === "[" && !matchAt(BOOK_INDEX, source, i2)) {
|
|
2273
2305
|
const length = readBrackets(source, i2);
|
|
2274
2306
|
push3({ kind: "structured", text: source.slice(i2, i2 + length), start, value: "" });
|
|
2275
2307
|
continue;
|
|
2276
2308
|
}
|
|
2277
|
-
const
|
|
2309
|
+
const nameStart = isNameStartCode(code);
|
|
2310
|
+
const prefixed = ch === "'" || ch === "[" || nameStart || isDigit3(code);
|
|
2278
2311
|
if (prefixed) {
|
|
2279
2312
|
const prefix = readPrefix(source, i2);
|
|
2280
2313
|
if (prefix) {
|
|
@@ -2283,14 +2316,15 @@ function tokenize(formula) {
|
|
|
2283
2316
|
}
|
|
2284
2317
|
if (ch === "'" || ch === "[") throw new FormulaError("Malformed sheet reference", start);
|
|
2285
2318
|
}
|
|
2286
|
-
|
|
2319
|
+
const numeric2 = isDigit3(code) || ch === ".";
|
|
2320
|
+
if (numeric2 || ch === "$" || nameStart) {
|
|
2287
2321
|
const ref = readReference(source, i2);
|
|
2288
2322
|
if (ref) {
|
|
2289
2323
|
push3(refToken(source, start, i2 + ref.length, ref.ref, void 0));
|
|
2290
2324
|
continue;
|
|
2291
2325
|
}
|
|
2292
|
-
if (
|
|
2293
|
-
const m =
|
|
2326
|
+
if (numeric2) {
|
|
2327
|
+
const m = matchAt(NUMBER_AT, source, i2);
|
|
2294
2328
|
if (!m) throw new FormulaError(`Unexpected '${ch}'`, start);
|
|
2295
2329
|
push3({ kind: "number", text: m[0], start, value: numberLiteral(m[0]) });
|
|
2296
2330
|
continue;
|
|
@@ -2327,11 +2361,12 @@ function readAfterPrefix(source, at, start, prefix) {
|
|
|
2327
2361
|
}
|
|
2328
2362
|
const ref = readReference(source, at);
|
|
2329
2363
|
if (ref) return refToken(source, start, at + ref.length, ref.ref, prefix);
|
|
2330
|
-
if (
|
|
2364
|
+
if (at < source.length && isNameStartCode(source.charCodeAt(at)))
|
|
2365
|
+
return readName(source, at, start, prefix);
|
|
2331
2366
|
throw new FormulaError("Invalid reference after sheet name", at);
|
|
2332
2367
|
}
|
|
2333
2368
|
function readName(source, at, start, prefix) {
|
|
2334
|
-
const m =
|
|
2369
|
+
const m = matchAt(NAME_AT, source, at);
|
|
2335
2370
|
if (!m) throw new FormulaError("Invalid name", at);
|
|
2336
2371
|
const name = m[0];
|
|
2337
2372
|
let end = at + name.length;
|
|
@@ -2687,8 +2722,8 @@ function monthFromName2(name) {
|
|
|
2687
2722
|
}
|
|
2688
2723
|
var NUMBER_RE3 = /^(\d+(?:,\d{3,})+|\d*)(\.\d*)?(?:e([+-]?\d+))?$/i;
|
|
2689
2724
|
var TIME_RE2 = /^(\d{1,4})(?::(\d+))?(?::(\d+(?:\.\d*)?))?(?:\s+(am|pm|a|p))?$/i;
|
|
2690
|
-
function parsePlainNumber(
|
|
2691
|
-
const match2 = NUMBER_RE3.exec(
|
|
2725
|
+
function parsePlainNumber(text2) {
|
|
2726
|
+
const match2 = NUMBER_RE3.exec(text2);
|
|
2692
2727
|
if (!match2) return void 0;
|
|
2693
2728
|
const int2 = (match2[1] ?? "").replace(/,/g, "");
|
|
2694
2729
|
const frac = match2[2] ?? "";
|
|
@@ -2696,8 +2731,8 @@ function parsePlainNumber(text) {
|
|
|
2696
2731
|
const value2 = Number(`${int2 || "0"}${frac === "." ? "" : frac}${match2[3] ? `e${match2[3]}` : ""}`);
|
|
2697
2732
|
return Number.isFinite(value2) ? value2 : void 0;
|
|
2698
2733
|
}
|
|
2699
|
-
function parseTime2(
|
|
2700
|
-
const match2 = TIME_RE2.exec(
|
|
2734
|
+
function parseTime2(text2) {
|
|
2735
|
+
const match2 = TIME_RE2.exec(text2);
|
|
2701
2736
|
if (!match2) return void 0;
|
|
2702
2737
|
let hours = Number(match2[1]);
|
|
2703
2738
|
const minutes = Number(match2[2] ?? 0);
|
|
@@ -2720,28 +2755,28 @@ function serialOrUndefined(year, month, day) {
|
|
|
2720
2755
|
}
|
|
2721
2756
|
return ymdToSerial(year, month, day, currentDate1904());
|
|
2722
2757
|
}
|
|
2723
|
-
var fullYear2 = (
|
|
2724
|
-
const year = Number(
|
|
2725
|
-
if (
|
|
2758
|
+
var fullYear2 = (text2) => {
|
|
2759
|
+
const year = Number(text2);
|
|
2760
|
+
if (text2.length > 2) return year;
|
|
2726
2761
|
return year < 30 ? 2e3 + year : 1900 + year;
|
|
2727
2762
|
};
|
|
2728
|
-
function parseDate(
|
|
2763
|
+
function parseDate(text2) {
|
|
2729
2764
|
const thisYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
2730
|
-
let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(
|
|
2765
|
+
let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(text2);
|
|
2731
2766
|
if (m) return serialOrUndefined(Number(m[1]), Number(m[2]), Number(m[3]));
|
|
2732
|
-
m = /^(\d{1,2})\/(\d{1,2})(?:\/(\d{2}|\d{4}))?$/.exec(
|
|
2767
|
+
m = /^(\d{1,2})\/(\d{1,2})(?:\/(\d{2}|\d{4}))?$/.exec(text2);
|
|
2733
2768
|
if (m) return serialOrUndefined(m[3] ? fullYear2(m[3]) : thisYear, Number(m[1]), Number(m[2]));
|
|
2734
|
-
m = /^(\d{1,2})[-\s]([a-z]+)\.?(?:[-\s,]+(\d{2}|\d{4}))?$/i.exec(
|
|
2769
|
+
m = /^(\d{1,2})[-\s]([a-z]+)\.?(?:[-\s,]+(\d{2}|\d{4}))?$/i.exec(text2);
|
|
2735
2770
|
if (m) {
|
|
2736
2771
|
const month = monthFromName2(m[2] ?? "");
|
|
2737
2772
|
if (month) return serialOrUndefined(m[3] ? fullYear2(m[3]) : thisYear, month, Number(m[1]));
|
|
2738
2773
|
}
|
|
2739
|
-
m = /^([a-z]+)\.?[-\s](\d{1,2})(?:,?\s*(\d{4}))?$/i.exec(
|
|
2774
|
+
m = /^([a-z]+)\.?[-\s](\d{1,2})(?:,?\s*(\d{4}))?$/i.exec(text2);
|
|
2740
2775
|
if (m) {
|
|
2741
2776
|
const month = monthFromName2(m[1] ?? "");
|
|
2742
2777
|
if (month) return serialOrUndefined(m[3] ? Number(m[3]) : thisYear, month, Number(m[2]));
|
|
2743
2778
|
}
|
|
2744
|
-
m = /^([a-z]+)\.?[-\s](\d{4})$/i.exec(
|
|
2779
|
+
m = /^([a-z]+)\.?[-\s](\d{4})$/i.exec(text2);
|
|
2745
2780
|
if (m) {
|
|
2746
2781
|
const month = monthFromName2(m[1] ?? "");
|
|
2747
2782
|
if (month) return serialOrUndefined(Number(m[2]), month, 1);
|
|
@@ -2749,43 +2784,43 @@ function parseDate(text) {
|
|
|
2749
2784
|
return void 0;
|
|
2750
2785
|
}
|
|
2751
2786
|
function parseNumberText(input) {
|
|
2752
|
-
let
|
|
2753
|
-
if (
|
|
2787
|
+
let text2 = input.trim();
|
|
2788
|
+
if (text2 === "") return void 0;
|
|
2754
2789
|
let scale2 = 1;
|
|
2755
|
-
if (
|
|
2790
|
+
if (text2.endsWith("%")) {
|
|
2756
2791
|
scale2 = 0.01;
|
|
2757
|
-
|
|
2792
|
+
text2 = text2.slice(0, -1).trimEnd();
|
|
2758
2793
|
}
|
|
2759
2794
|
let sign2 = 1;
|
|
2760
|
-
if (
|
|
2795
|
+
if (text2.startsWith("(") && text2.endsWith(")")) {
|
|
2761
2796
|
sign2 = -1;
|
|
2762
|
-
|
|
2797
|
+
text2 = text2.slice(1, -1).trim();
|
|
2763
2798
|
}
|
|
2764
|
-
const signed = /^([+-]?)\s*\$?\s*([+-]?)\s*/.exec(
|
|
2799
|
+
const signed = /^([+-]?)\s*\$?\s*([+-]?)\s*/.exec(text2);
|
|
2765
2800
|
const signText = `${signed?.[1] ?? ""}${signed?.[2] ?? ""}`;
|
|
2766
2801
|
if (signText.length <= 1) {
|
|
2767
|
-
const body2 =
|
|
2802
|
+
const body2 = text2.slice(signed?.[0].length ?? 0);
|
|
2768
2803
|
const plain2 = parsePlainNumber(body2);
|
|
2769
2804
|
if (plain2 !== void 0) return (signText === "-" ? -1 : 1) * sign2 * plain2 * scale2;
|
|
2770
2805
|
}
|
|
2771
2806
|
if (scale2 !== 1 || sign2 !== 1) return void 0;
|
|
2772
|
-
const fraction = /^([+-]?)(?:(\d+)\s+)?(\d+)\/(\d+)$/.exec(
|
|
2807
|
+
const fraction = /^([+-]?)(?:(\d+)\s+)?(\d+)\/(\d+)$/.exec(text2);
|
|
2773
2808
|
if (fraction && fraction[2] !== void 0) {
|
|
2774
2809
|
const den = Number(fraction[4]);
|
|
2775
2810
|
if (den === 0) return void 0;
|
|
2776
2811
|
const value2 = Number(fraction[2]) + Number(fraction[3]) / den;
|
|
2777
2812
|
return fraction[1] === "-" ? -value2 : value2;
|
|
2778
2813
|
}
|
|
2779
|
-
const time = parseTime2(
|
|
2814
|
+
const time = parseTime2(text2);
|
|
2780
2815
|
if (time !== void 0) return time;
|
|
2781
|
-
const date = parseDate(
|
|
2816
|
+
const date = parseDate(text2);
|
|
2782
2817
|
if (date !== void 0) return date;
|
|
2783
|
-
const space =
|
|
2818
|
+
const space = text2.lastIndexOf(" ");
|
|
2784
2819
|
if (space > 0) {
|
|
2785
|
-
const datePart2 = parseDate(
|
|
2786
|
-
const timePart = parseTime2(
|
|
2820
|
+
const datePart2 = parseDate(text2.slice(0, space).trim());
|
|
2821
|
+
const timePart = parseTime2(text2.slice(space + 1).trim());
|
|
2787
2822
|
if (datePart2 !== void 0 && timePart !== void 0) return datePart2 + timePart;
|
|
2788
|
-
const amPm = /^(.*\S)\s+(\S+\s*(?:am|pm))$/i.exec(
|
|
2823
|
+
const amPm = /^(.*\S)\s+(\S+\s*(?:am|pm))$/i.exec(text2);
|
|
2789
2824
|
if (amPm) {
|
|
2790
2825
|
const d = parseDate(amPm[1] ?? "");
|
|
2791
2826
|
const t = parseTime2(amPm[2] ?? "");
|
|
@@ -3109,8 +3144,8 @@ function wildcardRegex(pattern) {
|
|
|
3109
3144
|
}
|
|
3110
3145
|
return new RegExp(`^${source}$`, "i");
|
|
3111
3146
|
}
|
|
3112
|
-
var escapeRegex = (
|
|
3113
|
-
var hasWildcards = (
|
|
3147
|
+
var escapeRegex = (text2) => text2.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
|
|
3148
|
+
var hasWildcards = (text2) => /[*?~]/.test(text2);
|
|
3114
3149
|
function makeCriteria(criteria) {
|
|
3115
3150
|
if (isError(criteria)) return (value2) => isError(value2) && value2.error === criteria.error;
|
|
3116
3151
|
if (typeof criteria === "number") {
|
|
@@ -4362,22 +4397,22 @@ var NUMBER = String.raw`(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?`;
|
|
|
4362
4397
|
var REAL_ONLY = new RegExp(`^([+-]?${NUMBER})$`);
|
|
4363
4398
|
var IMAGINARY_ONLY = new RegExp(`^([+-]?(?:${NUMBER})?)([ij])$`);
|
|
4364
4399
|
var BOTH = new RegExp(`^([+-]?${NUMBER})([+-])((?:${NUMBER})?)([ij])$`);
|
|
4365
|
-
var coefficient = (
|
|
4400
|
+
var coefficient = (text2) => text2 === "" || text2 === "+" ? 1 : text2 === "-" ? -1 : Number(text2);
|
|
4366
4401
|
function parseComplex(value2) {
|
|
4367
4402
|
if (isError(value2)) fail(value2);
|
|
4368
4403
|
if (typeof value2 === "number") return { re: value2, im: 0, suffix: "i" };
|
|
4369
|
-
const
|
|
4370
|
-
if (
|
|
4371
|
-
const real = REAL_ONLY.exec(
|
|
4404
|
+
const text2 = toText(value2);
|
|
4405
|
+
if (text2 === "") return { re: 0, im: 0, suffix: "i" };
|
|
4406
|
+
const real = REAL_ONLY.exec(text2);
|
|
4372
4407
|
if (real) return { re: Number(real[1]), im: 0, suffix: "i" };
|
|
4373
|
-
const imaginary = IMAGINARY_ONLY.exec(
|
|
4408
|
+
const imaginary = IMAGINARY_ONLY.exec(text2);
|
|
4374
4409
|
if (imaginary)
|
|
4375
4410
|
return {
|
|
4376
4411
|
re: 0,
|
|
4377
4412
|
im: coefficient(imaginary[1] ?? ""),
|
|
4378
4413
|
suffix: imaginary[2] === "j" ? "j" : "i"
|
|
4379
4414
|
};
|
|
4380
|
-
const both = BOTH.exec(
|
|
4415
|
+
const both = BOTH.exec(text2);
|
|
4381
4416
|
if (!both) return fail(ERR.NUM);
|
|
4382
4417
|
const sign2 = both[2] === "-" ? -1 : 1;
|
|
4383
4418
|
return {
|
|
@@ -4387,9 +4422,9 @@ function parseComplex(value2) {
|
|
|
4387
4422
|
};
|
|
4388
4423
|
}
|
|
4389
4424
|
function digits(n) {
|
|
4390
|
-
const
|
|
4391
|
-
const match2 = /^(-?[\d.]+)e([+-])(\d+)$/.exec(
|
|
4392
|
-
return match2 ? `${match2[1]}E${match2[2]}${(match2[3] ?? "").padStart(2, "0")}` :
|
|
4425
|
+
const text2 = Number(n.toPrecision(15)).toString();
|
|
4426
|
+
const match2 = /^(-?[\d.]+)e([+-])(\d+)$/.exec(text2);
|
|
4427
|
+
return match2 ? `${match2[1]}E${match2[2]}${(match2[3] ?? "").padStart(2, "0")}` : text2;
|
|
4393
4428
|
}
|
|
4394
4429
|
function formatComplex({ re, im, suffix }) {
|
|
4395
4430
|
const r = Math.abs(re) < 1e-15 * Math.max(1, Math.abs(im)) ? 0 : re;
|
|
@@ -4741,15 +4776,15 @@ var C7 = "Engineering";
|
|
|
4741
4776
|
var BASES = { BIN: 2, OCT: 8, DEC: 10, HEX: 16 };
|
|
4742
4777
|
var BITS = { BIN: 10, OCT: 30, DEC: 0, HEX: 40 };
|
|
4743
4778
|
function parseBase(value2, base) {
|
|
4744
|
-
const
|
|
4779
|
+
const text2 = toText(scalar(value2)).trim().toUpperCase();
|
|
4745
4780
|
if (base === "DEC") return Math.trunc(num(value2));
|
|
4746
4781
|
const radix = BASES[base];
|
|
4747
4782
|
const digits2 = radix === 2 ? /^[01]{1,10}$/ : radix === 8 ? /^[0-7]{1,10}$/ : /^[0-9A-F]{1,10}$/;
|
|
4748
|
-
if (
|
|
4749
|
-
if (!digits2.test(
|
|
4750
|
-
let n = parseInt(
|
|
4783
|
+
if (text2 === "") return 0;
|
|
4784
|
+
if (!digits2.test(text2)) fail(ERR.NUM);
|
|
4785
|
+
let n = parseInt(text2, radix);
|
|
4751
4786
|
const bits = BITS[base];
|
|
4752
|
-
if (
|
|
4787
|
+
if (text2.length === 10 && n >= Math.pow(2, bits - 1)) n -= Math.pow(2, bits);
|
|
4753
4788
|
return n;
|
|
4754
4789
|
}
|
|
4755
4790
|
function formatBase(n, base, places) {
|
|
@@ -4758,10 +4793,10 @@ function formatBase(n, base, places) {
|
|
|
4758
4793
|
const limit2 = Math.pow(2, bits - 1);
|
|
4759
4794
|
if (n < -limit2 || n >= limit2) fail(ERR.NUM);
|
|
4760
4795
|
if (n < 0) return (Math.pow(2, bits) + n).toString(radix).toUpperCase();
|
|
4761
|
-
const
|
|
4762
|
-
if (places === void 0) return
|
|
4763
|
-
if (places <
|
|
4764
|
-
return
|
|
4796
|
+
const text2 = n.toString(radix).toUpperCase();
|
|
4797
|
+
if (places === void 0) return text2;
|
|
4798
|
+
if (places < text2.length || places > 10) fail(ERR.NUM);
|
|
4799
|
+
return text2.padStart(Math.trunc(places), "0");
|
|
4765
4800
|
}
|
|
4766
4801
|
var conversions = [];
|
|
4767
4802
|
for (const from of Object.keys(BASES)) {
|
|
@@ -4896,9 +4931,9 @@ var ENGINEERING_FUNCTIONS = [
|
|
|
4896
4931
|
1,
|
|
4897
4932
|
1,
|
|
4898
4933
|
(args) => {
|
|
4899
|
-
const
|
|
4900
|
-
const negative =
|
|
4901
|
-
const body2 = negative ?
|
|
4934
|
+
const text2 = str(args[0]).trim().toUpperCase();
|
|
4935
|
+
const negative = text2.startsWith("-");
|
|
4936
|
+
const body2 = negative ? text2.slice(1) : text2;
|
|
4902
4937
|
if (!/^[MDCLXVI]*$/.test(body2)) fail(ERR.VALUE);
|
|
4903
4938
|
const value2 = { M: 1e3, D: 500, C: 100, L: 50, X: 10, V: 5, I: 1 };
|
|
4904
4939
|
let total2 = 0;
|
|
@@ -4932,11 +4967,11 @@ var ENGINEERING_FUNCTIONS = [
|
|
|
4932
4967
|
2,
|
|
4933
4968
|
2,
|
|
4934
4969
|
(args) => {
|
|
4935
|
-
const
|
|
4970
|
+
const text2 = str(args[0]).trim().toLowerCase();
|
|
4936
4971
|
const radix = Math.trunc(num(args[1]));
|
|
4937
4972
|
if (radix < 2 || radix > 36) fail(ERR.NUM);
|
|
4938
4973
|
let total2 = 0;
|
|
4939
|
-
for (const ch of
|
|
4974
|
+
for (const ch of text2) {
|
|
4940
4975
|
const d = parseInt(ch, 36);
|
|
4941
4976
|
if (Number.isNaN(d) || d >= radix) fail(ERR.NUM);
|
|
4942
4977
|
total2 = total2 * radix + d;
|
|
@@ -4973,14 +5008,14 @@ function couponFacts(settlement, maturity, frequency2, basis, ctx) {
|
|
|
4973
5008
|
const daysToNext = basis === 0 ? daysInPeriod - daysSincePrevious : basis === 4 ? days360(s, next, true, ctx) : next - s;
|
|
4974
5009
|
return { previous, next, count: count2, daysSincePrevious, daysInPeriod, daysToNext };
|
|
4975
5010
|
}
|
|
4976
|
-
var security = (name, description,
|
|
5011
|
+
var security = (name, description, pick3) => spec(
|
|
4977
5012
|
name,
|
|
4978
5013
|
C8,
|
|
4979
5014
|
`${name}(settlement, maturity, frequency, [basis])`,
|
|
4980
5015
|
description,
|
|
4981
5016
|
3,
|
|
4982
5017
|
4,
|
|
4983
|
-
(args, ctx) =>
|
|
5018
|
+
(args, ctx) => pick3(
|
|
4984
5019
|
couponFacts(
|
|
4985
5020
|
serialArg(args[0]),
|
|
4986
5021
|
serialArg(args[1]),
|
|
@@ -6857,15 +6892,15 @@ function offset(args) {
|
|
|
6857
6892
|
{ sheet: area.sheet, range: { start: { row: r1, col: c1 }, end: { row: r2, col: c2 } } }
|
|
6858
6893
|
]);
|
|
6859
6894
|
}
|
|
6860
|
-
function parseR1C1(
|
|
6861
|
-
const bang =
|
|
6895
|
+
function parseR1C1(text2, ctx) {
|
|
6896
|
+
const bang = text2.lastIndexOf("!");
|
|
6862
6897
|
let sheet = ctx.sheet;
|
|
6863
|
-
let body2 =
|
|
6898
|
+
let body2 = text2;
|
|
6864
6899
|
if (bang >= 0) {
|
|
6865
|
-
const name =
|
|
6900
|
+
const name = text2.slice(0, bang).replace(/^'(.*)'$/, "$1").replace(/''/g, "'");
|
|
6866
6901
|
sheet = sheetIndex(ctx.frame.host, name);
|
|
6867
6902
|
if (sheet < 0) return void 0;
|
|
6868
|
-
body2 =
|
|
6903
|
+
body2 = text2.slice(bang + 1);
|
|
6869
6904
|
}
|
|
6870
6905
|
const range2 = parseR1C1Range(body2, { row: ctx.row, col: ctx.col });
|
|
6871
6906
|
if (!range2) return void 0;
|
|
@@ -6928,9 +6963,9 @@ var REFERENCE_FUNCTIONS = [
|
|
|
6928
6963
|
1,
|
|
6929
6964
|
2,
|
|
6930
6965
|
(args, ctx) => {
|
|
6931
|
-
const
|
|
6966
|
+
const text2 = str(args[0]).trim();
|
|
6932
6967
|
const a1 = args.length > 1 ? bool(args[1]) : true;
|
|
6933
|
-
const ref = a1 ? ctx.parseReference(
|
|
6968
|
+
const ref = a1 ? ctx.parseReference(text2) : parseR1C1(text2, ctx);
|
|
6934
6969
|
return ref ?? ERR.REF;
|
|
6935
6970
|
},
|
|
6936
6971
|
void 0,
|
|
@@ -7301,13 +7336,13 @@ var numberKey = (n) => `n${round15(n)}`;
|
|
|
7301
7336
|
function equalityKey(criteria) {
|
|
7302
7337
|
if (typeof criteria === "number") return numberKey(criteria);
|
|
7303
7338
|
if (typeof criteria !== "string") return void 0;
|
|
7304
|
-
const
|
|
7305
|
-
if (/^(<|>)/.test(
|
|
7339
|
+
const text2 = criteria.startsWith("=") ? criteria.slice(1) : criteria;
|
|
7340
|
+
if (/^(<|>)/.test(text2) || text2 === "" || hasWildcards(text2) || text2.startsWith("#"))
|
|
7306
7341
|
return void 0;
|
|
7307
|
-
const upper2 =
|
|
7342
|
+
const upper2 = text2.toUpperCase();
|
|
7308
7343
|
if (upper2 === "TRUE" || upper2 === "FALSE") return void 0;
|
|
7309
|
-
const n = parseNumberText(
|
|
7310
|
-
return n !== void 0 ? numberKey(n) : `s${
|
|
7344
|
+
const n = parseNumberText(text2);
|
|
7345
|
+
return n !== void 0 ? numberKey(n) : `s${text2.toLowerCase()}`;
|
|
7311
7346
|
}
|
|
7312
7347
|
function valueKeys(value2, out) {
|
|
7313
7348
|
out.length = 0;
|
|
@@ -10413,12 +10448,12 @@ function fixed(value2, decimals2, commas) {
|
|
|
10413
10448
|
const d = Math.trunc(decimals2);
|
|
10414
10449
|
const rounded = roundTo(value2, d, "half");
|
|
10415
10450
|
const abs2 = Math.abs(rounded);
|
|
10416
|
-
let
|
|
10451
|
+
let text2 = abs2.toFixed(Math.max(0, Math.min(d, 99)));
|
|
10417
10452
|
if (commas) {
|
|
10418
|
-
const [int2 = "", frac] =
|
|
10419
|
-
|
|
10453
|
+
const [int2 = "", frac] = text2.split(".");
|
|
10454
|
+
text2 = int2.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (frac !== void 0 ? `.${frac}` : "");
|
|
10420
10455
|
}
|
|
10421
|
-
return rounded < 0 ? `-${
|
|
10456
|
+
return rounded < 0 ? `-${text2}` : text2;
|
|
10422
10457
|
}
|
|
10423
10458
|
var TEXT_CONVERT = [
|
|
10424
10459
|
spec(
|
|
@@ -10454,19 +10489,19 @@ var TEXT_CONVERT = [
|
|
|
10454
10489
|
(args) => {
|
|
10455
10490
|
const decimal = (args.length > 1 ? str(args[1]) : ".").charAt(0) || ".";
|
|
10456
10491
|
const group = (args.length > 2 ? str(args[2]) : ",").charAt(0) || ",";
|
|
10457
|
-
let
|
|
10458
|
-
if (
|
|
10492
|
+
let text2 = str(args[0]).replace(/\s+/g, "");
|
|
10493
|
+
if (text2 === "") return 0;
|
|
10459
10494
|
let percent = 0;
|
|
10460
|
-
while (
|
|
10495
|
+
while (text2.endsWith("%")) {
|
|
10461
10496
|
percent++;
|
|
10462
|
-
|
|
10497
|
+
text2 = text2.slice(0, -1);
|
|
10463
10498
|
}
|
|
10464
|
-
const decimalAt =
|
|
10465
|
-
if (decimalAt >= 0 &&
|
|
10466
|
-
|
|
10467
|
-
if (decimal !== ".")
|
|
10468
|
-
const value2 = Number(
|
|
10469
|
-
if (!/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(
|
|
10499
|
+
const decimalAt = text2.indexOf(decimal);
|
|
10500
|
+
if (decimalAt >= 0 && text2.slice(decimalAt + 1).includes(group)) fail(ERR.VALUE);
|
|
10501
|
+
text2 = text2.split(group).join("");
|
|
10502
|
+
if (decimal !== ".") text2 = text2.replace(decimal, ".");
|
|
10503
|
+
const value2 = Number(text2);
|
|
10504
|
+
if (!/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text2) || !Number.isFinite(value2))
|
|
10470
10505
|
fail(ERR.VALUE);
|
|
10471
10506
|
return value2 / Math.pow(100, percent);
|
|
10472
10507
|
}
|
|
@@ -10489,8 +10524,8 @@ var TEXT_CONVERT = [
|
|
|
10489
10524
|
2,
|
|
10490
10525
|
(args) => {
|
|
10491
10526
|
const value2 = num(args[0]);
|
|
10492
|
-
const
|
|
10493
|
-
return value2 < 0 &&
|
|
10527
|
+
const text2 = fixed(Math.abs(value2), optNum(args, 1, 2), true);
|
|
10528
|
+
return value2 < 0 && text2.replace(/[0.,]/g, "") !== "" ? `($${text2})` : `$${text2}`;
|
|
10494
10529
|
}
|
|
10495
10530
|
),
|
|
10496
10531
|
spec("CHAR", C33, "CHAR(number)", "The character for a code (Windows-1252).", 1, 1, (args) => {
|
|
@@ -10499,9 +10534,9 @@ var TEXT_CONVERT = [
|
|
|
10499
10534
|
return String.fromCharCode(CP1252[n] ?? n);
|
|
10500
10535
|
}),
|
|
10501
10536
|
spec("CODE", C33, "CODE(text)", "The code of the first character (Windows-1252).", 1, 1, (args) => {
|
|
10502
|
-
const
|
|
10503
|
-
if (
|
|
10504
|
-
const code =
|
|
10537
|
+
const text2 = str(args[0]);
|
|
10538
|
+
if (text2 === "") fail(ERR.VALUE);
|
|
10539
|
+
const code = text2.charCodeAt(0);
|
|
10505
10540
|
return CP1252_REVERSE.get(code) ?? (code <= 255 ? code : 63);
|
|
10506
10541
|
}),
|
|
10507
10542
|
spec("UNICHAR", C33, "UNICHAR(number)", "The Unicode character for a code point.", 1, 1, (args) => {
|
|
@@ -10510,9 +10545,9 @@ var TEXT_CONVERT = [
|
|
|
10510
10545
|
return String.fromCodePoint(n);
|
|
10511
10546
|
}),
|
|
10512
10547
|
spec("UNICODE", C33, "UNICODE(text)", "The code point of the first character.", 1, 1, (args) => {
|
|
10513
|
-
const
|
|
10514
|
-
if (
|
|
10515
|
-
return
|
|
10548
|
+
const text2 = str(args[0]);
|
|
10549
|
+
if (text2 === "") fail(ERR.VALUE);
|
|
10550
|
+
return text2.codePointAt(0) ?? fail(ERR.VALUE);
|
|
10516
10551
|
}),
|
|
10517
10552
|
spec("T", C33, "T(value)", "The text of a value, or empty text.", 1, 1, (args) => {
|
|
10518
10553
|
const v = scalar(args[0]);
|
|
@@ -10536,37 +10571,37 @@ function lowerChar(ch, before, after) {
|
|
|
10536
10571
|
const points = [...low];
|
|
10537
10572
|
return points.length === 1 ? low : points[0] ?? ch;
|
|
10538
10573
|
}
|
|
10539
|
-
function mapChars(
|
|
10540
|
-
const chars = [...
|
|
10574
|
+
function mapChars(text2, fn) {
|
|
10575
|
+
const chars = [...text2];
|
|
10541
10576
|
let out = "";
|
|
10542
10577
|
for (let i2 = 0; i2 < chars.length; i2++) out += fn(chars[i2], i2, chars);
|
|
10543
10578
|
return out;
|
|
10544
10579
|
}
|
|
10545
|
-
var upper = (
|
|
10546
|
-
var lower = (
|
|
10547
|
-
var proper = (
|
|
10580
|
+
var upper = (text2) => mapChars(text2, upperChar);
|
|
10581
|
+
var lower = (text2) => mapChars(text2, (ch, i2, all2) => lowerChar(ch, all2[i2 - 1], all2[i2 + 1]));
|
|
10582
|
+
var proper = (text2) => mapChars(text2, (ch, i2, all2) => {
|
|
10548
10583
|
if (!isLetter(ch)) return ch;
|
|
10549
10584
|
const before = all2[i2 - 1];
|
|
10550
10585
|
return before !== void 0 && isLetter(before) ? lowerChar(ch, before, all2[i2 + 1]) : upperChar(ch);
|
|
10551
10586
|
});
|
|
10552
10587
|
var isHigh = (code) => code >= 55296 && code <= 56319;
|
|
10553
10588
|
var isLow = (code) => code >= 56320 && code <= 57343;
|
|
10554
|
-
function left(
|
|
10555
|
-
let end = Math.min(n,
|
|
10556
|
-
if (end > 0 && end <
|
|
10557
|
-
return
|
|
10589
|
+
function left(text2, n) {
|
|
10590
|
+
let end = Math.min(n, text2.length);
|
|
10591
|
+
if (end > 0 && end < text2.length && isHigh(text2.charCodeAt(end - 1))) end++;
|
|
10592
|
+
return text2.slice(0, end);
|
|
10558
10593
|
}
|
|
10559
|
-
function right(
|
|
10594
|
+
function right(text2, n) {
|
|
10560
10595
|
if (n <= 0) return "";
|
|
10561
|
-
let start = Math.max(0,
|
|
10562
|
-
if (start > 0 && isLow(
|
|
10563
|
-
return
|
|
10596
|
+
let start = Math.max(0, text2.length - n);
|
|
10597
|
+
if (start > 0 && isLow(text2.charCodeAt(start))) start--;
|
|
10598
|
+
return text2.slice(start);
|
|
10564
10599
|
}
|
|
10565
10600
|
|
|
10566
10601
|
// xlsx/formula/functions/text.ts
|
|
10567
10602
|
var C34 = "Text";
|
|
10568
10603
|
var MAX_TEXT = 32767;
|
|
10569
|
-
var limit = (
|
|
10604
|
+
var limit = (text2) => text2.length > MAX_TEXT ? fail(ERR.VALUE) : text2;
|
|
10570
10605
|
function find(args, insensitive) {
|
|
10571
10606
|
const needle = str(args[0]);
|
|
10572
10607
|
const haystack = str(args[1]);
|
|
@@ -10731,19 +10766,19 @@ var TEXT_FUNCTIONS = [
|
|
|
10731
10766
|
3,
|
|
10732
10767
|
4,
|
|
10733
10768
|
(args) => {
|
|
10734
|
-
const
|
|
10769
|
+
const text2 = str(args[0]);
|
|
10735
10770
|
const oldText = str(args[1]);
|
|
10736
10771
|
const newText = str(args[2]);
|
|
10737
|
-
if (oldText === "") return
|
|
10738
|
-
if (args.length < 4) return limit(
|
|
10772
|
+
if (oldText === "") return text2;
|
|
10773
|
+
if (args.length < 4) return limit(text2.split(oldText).join(newText));
|
|
10739
10774
|
const instance = Math.trunc(num(args[3]));
|
|
10740
10775
|
if (instance < 1) fail(ERR.VALUE);
|
|
10741
10776
|
let at = -1;
|
|
10742
10777
|
for (let i2 = 0; i2 < instance; i2++) {
|
|
10743
|
-
at =
|
|
10744
|
-
if (at < 0) return
|
|
10778
|
+
at = text2.indexOf(oldText, at + 1);
|
|
10779
|
+
if (at < 0) return text2;
|
|
10745
10780
|
}
|
|
10746
|
-
return limit(
|
|
10781
|
+
return limit(text2.slice(0, at) + newText + text2.slice(at + oldText.length));
|
|
10747
10782
|
}
|
|
10748
10783
|
),
|
|
10749
10784
|
...["REPLACE", "REPLACEB"].map(
|
|
@@ -10755,11 +10790,11 @@ var TEXT_FUNCTIONS = [
|
|
|
10755
10790
|
4,
|
|
10756
10791
|
4,
|
|
10757
10792
|
(args) => {
|
|
10758
|
-
const
|
|
10793
|
+
const text2 = str(args[0]);
|
|
10759
10794
|
const start = Math.trunc(num(args[1]));
|
|
10760
10795
|
const n = Math.trunc(num(args[2]));
|
|
10761
10796
|
if (start < 1 || n < 0) fail(ERR.VALUE);
|
|
10762
|
-
return limit(
|
|
10797
|
+
return limit(text2.slice(0, start - 1) + str(args[3]) + text2.slice(start - 1 + n));
|
|
10763
10798
|
}
|
|
10764
10799
|
)
|
|
10765
10800
|
),
|
|
@@ -10787,9 +10822,9 @@ var TEXT_FUNCTIONS = [
|
|
|
10787
10822
|
),
|
|
10788
10823
|
spec("REPT", C34, "REPT(text, number_times)", "Repeats a text.", 2, 2, (args) => {
|
|
10789
10824
|
const n = Math.trunc(num(args[1]));
|
|
10790
|
-
const
|
|
10791
|
-
if (n < 0 ||
|
|
10792
|
-
return
|
|
10825
|
+
const text2 = str(args[0]);
|
|
10826
|
+
if (n < 0 || text2.length * n > MAX_TEXT) fail(ERR.VALUE);
|
|
10827
|
+
return text2.repeat(n);
|
|
10793
10828
|
}),
|
|
10794
10829
|
spec(
|
|
10795
10830
|
"EXACT",
|
|
@@ -10813,8 +10848,8 @@ function compile(pattern, caseMode2, global) {
|
|
|
10813
10848
|
}
|
|
10814
10849
|
}
|
|
10815
10850
|
var caseMode = (args, index2) => optNum(args, index2, 0);
|
|
10816
|
-
function encodeUrl(
|
|
10817
|
-
return encodeURIComponent(
|
|
10851
|
+
function encodeUrl(text2) {
|
|
10852
|
+
return encodeURIComponent(text2).replace(
|
|
10818
10853
|
/[!'()*]/g,
|
|
10819
10854
|
(c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`
|
|
10820
10855
|
);
|
|
@@ -10859,15 +10894,15 @@ var TEXT_REGEX_FUNCTIONS = [
|
|
|
10859
10894
|
3,
|
|
10860
10895
|
5,
|
|
10861
10896
|
(args) => {
|
|
10862
|
-
const
|
|
10897
|
+
const text2 = str(args[0]);
|
|
10863
10898
|
const regex = compile(str(args[1]), caseMode(args, 4), true);
|
|
10864
10899
|
const replacement = str(args[2]);
|
|
10865
10900
|
const occurrence = args.length > 3 && args[3] !== null ? int(args[3]) : 0;
|
|
10866
|
-
if (occurrence === 0) return
|
|
10867
|
-
const matches2 = [...
|
|
10901
|
+
if (occurrence === 0) return text2.replace(regex, replacement);
|
|
10902
|
+
const matches2 = [...text2.matchAll(regex)];
|
|
10868
10903
|
const picked = occurrence > 0 ? matches2[occurrence - 1] : matches2.at(occurrence);
|
|
10869
|
-
if (!picked || picked.index === void 0) return
|
|
10870
|
-
return
|
|
10904
|
+
if (!picked || picked.index === void 0) return text2;
|
|
10905
|
+
return text2.slice(0, picked.index) + picked[0].replace(new RegExp(regex.source, regex.flags.replace("g", "")), replacement) + text2.slice(picked.index + picked[0].length);
|
|
10871
10906
|
}
|
|
10872
10907
|
)
|
|
10873
10908
|
];
|
|
@@ -10881,8 +10916,8 @@ function delimitersOf(ctx, value2) {
|
|
|
10881
10916
|
return toText(v);
|
|
10882
10917
|
});
|
|
10883
10918
|
}
|
|
10884
|
-
function occurrences(
|
|
10885
|
-
const hay = insensitive ?
|
|
10919
|
+
function occurrences(text2, delimiters, insensitive) {
|
|
10920
|
+
const hay = insensitive ? text2.toLowerCase() : text2;
|
|
10886
10921
|
const needles = delimiters.map((d) => insensitive ? d.toLowerCase() : d);
|
|
10887
10922
|
const out = [];
|
|
10888
10923
|
let i2 = 0;
|
|
@@ -10902,35 +10937,35 @@ function occurrences(text, delimiters, insensitive) {
|
|
|
10902
10937
|
return out;
|
|
10903
10938
|
}
|
|
10904
10939
|
function textAround(args, ctx, before) {
|
|
10905
|
-
const
|
|
10940
|
+
const text2 = str(args[0]);
|
|
10906
10941
|
const delimiters = delimitersOf(ctx, args[1]);
|
|
10907
10942
|
const instance = Math.trunc(optNum(args, 2, 1));
|
|
10908
10943
|
const insensitive = optNum(args, 3, 0) === 1;
|
|
10909
10944
|
const matchEnd = optBool(args, 4, false);
|
|
10910
10945
|
const notFound = args.length > 5 ? scalar(args[5]) ?? ERR.NA : ERR.NA;
|
|
10911
|
-
if (instance === 0 || Math.abs(instance) >
|
|
10946
|
+
if (instance === 0 || Math.abs(instance) > text2.length + 1) fail(ERR.VALUE);
|
|
10912
10947
|
if (delimiters.length === 0 || delimiters.every((d) => d === "")) {
|
|
10913
|
-
return before ? instance > 0 ? "" :
|
|
10948
|
+
return before ? instance > 0 ? "" : text2 : instance > 0 ? text2 : "";
|
|
10914
10949
|
}
|
|
10915
|
-
const found = occurrences(
|
|
10950
|
+
const found = occurrences(text2, delimiters, insensitive);
|
|
10916
10951
|
if (matchEnd) {
|
|
10917
|
-
if (instance > 0) found.push({ at:
|
|
10952
|
+
if (instance > 0) found.push({ at: text2.length, length: 0 });
|
|
10918
10953
|
else found.unshift({ at: 0, length: 0 });
|
|
10919
10954
|
}
|
|
10920
10955
|
const index2 = instance > 0 ? instance - 1 : found.length + instance;
|
|
10921
10956
|
const hit = found[index2];
|
|
10922
10957
|
if (!hit || index2 < 0) return notFound;
|
|
10923
|
-
return before ?
|
|
10958
|
+
return before ? text2.slice(0, hit.at) : text2.slice(hit.at + hit.length);
|
|
10924
10959
|
}
|
|
10925
|
-
function splitText(
|
|
10926
|
-
if (delimiters.length === 0) return [
|
|
10960
|
+
function splitText(text2, delimiters, insensitive, ignoreEmpty) {
|
|
10961
|
+
if (delimiters.length === 0) return [text2];
|
|
10927
10962
|
const parts = [];
|
|
10928
10963
|
let last = 0;
|
|
10929
|
-
for (const hit of occurrences(
|
|
10930
|
-
parts.push(
|
|
10964
|
+
for (const hit of occurrences(text2, delimiters, insensitive)) {
|
|
10965
|
+
parts.push(text2.slice(last, hit.at));
|
|
10931
10966
|
last = hit.at + hit.length;
|
|
10932
10967
|
}
|
|
10933
|
-
parts.push(
|
|
10968
|
+
parts.push(text2.slice(last));
|
|
10934
10969
|
return ignoreEmpty ? parts.filter((p) => p !== "") : parts;
|
|
10935
10970
|
}
|
|
10936
10971
|
function valueToText(value2, strict) {
|
|
@@ -10968,14 +11003,14 @@ var TEXT_EXTRA_FUNCTIONS = [
|
|
|
10968
11003
|
2,
|
|
10969
11004
|
6,
|
|
10970
11005
|
(args, ctx) => {
|
|
10971
|
-
const
|
|
11006
|
+
const text2 = str(ctx.toScalar(args[0] ?? null));
|
|
10972
11007
|
const colDelims = delimitersOf(ctx, args[1]);
|
|
10973
11008
|
const rowDelims = delimitersOf(ctx, args[2]);
|
|
10974
11009
|
const ignoreEmpty = args.length > 3 && args[3] !== null && Boolean(scalar(ctx.toScalar(args[3] ?? null)));
|
|
10975
11010
|
const insensitive = args.length > 4 && optNum([ctx.toScalar(args[4] ?? null)], 0, 0) === 1;
|
|
10976
11011
|
const pad4 = args.length > 5 ? ctx.toScalar(args[5] ?? null) : ERR.NA;
|
|
10977
11012
|
if (colDelims.length === 0 && rowDelims.length === 0) fail(ERR.VALUE);
|
|
10978
|
-
const rows2 = splitText(
|
|
11013
|
+
const rows2 = splitText(text2, rowDelims, insensitive, ignoreEmpty).map(
|
|
10979
11014
|
(line2) => splitText(line2, colDelims, insensitive, ignoreEmpty)
|
|
10980
11015
|
);
|
|
10981
11016
|
const width = rows2.reduce((w, r) => Math.max(w, r.length), 0);
|
|
@@ -11169,10 +11204,10 @@ function createContext(frame) {
|
|
|
11169
11204
|
scope ? { ...frame, scope, root: void 0 } : { ...frame, root: void 0 }
|
|
11170
11205
|
),
|
|
11171
11206
|
callLambda: (fn, args) => invokeLambda(fn, args, frame),
|
|
11172
|
-
parseReference(
|
|
11207
|
+
parseReference(text2) {
|
|
11173
11208
|
let ast;
|
|
11174
11209
|
try {
|
|
11175
|
-
ast = parseFormula(
|
|
11210
|
+
ast = parseFormula(text2.trim());
|
|
11176
11211
|
} catch (e) {
|
|
11177
11212
|
if (e instanceof FormulaError) return void 0;
|
|
11178
11213
|
throw e;
|
|
@@ -12394,11 +12429,17 @@ var Engine = class extends EngineCore {
|
|
|
12394
12429
|
this.run(new Set(this.allNodes()), true);
|
|
12395
12430
|
}
|
|
12396
12431
|
recalculateFrom(changes) {
|
|
12397
|
-
|
|
12432
|
+
const seeds = /* @__PURE__ */ new Set();
|
|
12433
|
+
if (!this.built && !this.needsFull) {
|
|
12434
|
+
this.build();
|
|
12435
|
+
if (!this.trustsStoredValues(changes, seeds)) {
|
|
12436
|
+
this.recalculateAll();
|
|
12437
|
+
return;
|
|
12438
|
+
}
|
|
12439
|
+
} else if (!this.built || this.needsFull) {
|
|
12398
12440
|
this.recalculateAll();
|
|
12399
12441
|
return;
|
|
12400
12442
|
}
|
|
12401
|
-
const seeds = /* @__PURE__ */ new Set();
|
|
12402
12443
|
const changed = [];
|
|
12403
12444
|
let structural = false;
|
|
12404
12445
|
for (const change of changes) {
|
|
@@ -12439,6 +12480,22 @@ var Engine = class extends EngineCore {
|
|
|
12439
12480
|
for (const node of this.allNodes()) if (node.volatile) seeds.add(node);
|
|
12440
12481
|
this.run(seeds, false);
|
|
12441
12482
|
}
|
|
12483
|
+
/**
|
|
12484
|
+
* Whether the stored results can stand for a fresh graph: apart from the changed cells, every
|
|
12485
|
+
* formula has legacy or CSE array semantics (none can spill). Collects the formulas stored
|
|
12486
|
+
* without a value into `missing`.
|
|
12487
|
+
*/
|
|
12488
|
+
trustsStoredValues(changes, missing) {
|
|
12489
|
+
const changed = new Set(changes.map((c) => `${c.sheet}:${cellKey(c.row, c.col)}`));
|
|
12490
|
+
for (const node of this.allNodes()) {
|
|
12491
|
+
const legacyOrArray = node.legacy || node.arrayRange;
|
|
12492
|
+
if (!legacyOrArray && !changed.has(`${node.sheet}:${cellKey(node.row, node.col)}`))
|
|
12493
|
+
return false;
|
|
12494
|
+
const cell = this.workbook.sheets[node.sheet]?.rows.get(node.row)?.get(node.col);
|
|
12495
|
+
if (cell && cell.value === null && !node.keepCached) missing.add(node);
|
|
12496
|
+
}
|
|
12497
|
+
return true;
|
|
12498
|
+
}
|
|
12442
12499
|
/**
|
|
12443
12500
|
* Whether a spilled cell is still part of its anchor's live spill, so a change reported for it
|
|
12444
12501
|
* is a user overwrite. A cell whose anchor is blocked (or gone) keeps its marker: it was
|
|
@@ -12570,10 +12627,10 @@ function mergeSpacedAreas(tokens) {
|
|
|
12570
12627
|
const colon = tokens[j];
|
|
12571
12628
|
const last = tokens[k];
|
|
12572
12629
|
if (plainCell(first2) && colon?.kind === "op" && colon.text === ":" && plainCell(last) && !last?.prefix && k > i2 + 2 && first2.ref && last?.ref) {
|
|
12573
|
-
const
|
|
12630
|
+
const text2 = tokens.slice(i2, k + 1).map((t) => t.text).join("");
|
|
12574
12631
|
out.push({
|
|
12575
12632
|
...first2,
|
|
12576
|
-
text,
|
|
12633
|
+
text: text2,
|
|
12577
12634
|
ref: { kind: "area", start: first2.ref.start, end: last.ref.start }
|
|
12578
12635
|
});
|
|
12579
12636
|
i2 = k;
|
|
@@ -12636,9 +12693,9 @@ function renameSheetInFormula(formula, oldName, newName) {
|
|
|
12636
12693
|
if (!first2 && !second) continue;
|
|
12637
12694
|
const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
|
|
12638
12695
|
if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
|
|
12639
|
-
const
|
|
12640
|
-
token.text =
|
|
12641
|
-
renamed.text =
|
|
12696
|
+
const text2 = prefixText(renamed);
|
|
12697
|
+
token.text = text2 + token.text.slice(prefix.text.length);
|
|
12698
|
+
renamed.text = text2;
|
|
12642
12699
|
token.prefix = renamed;
|
|
12643
12700
|
}
|
|
12644
12701
|
return joinTokens(tokens);
|
|
@@ -12938,6 +12995,16 @@ function parseColor(element2, palette) {
|
|
|
12938
12995
|
return Object.keys(color).length ? color : void 0;
|
|
12939
12996
|
}
|
|
12940
12997
|
|
|
12998
|
+
// color/hex-rgb.ts
|
|
12999
|
+
function parseArgbHex(hex2) {
|
|
13000
|
+
const clean2 = hex2.replace(/^#/, "");
|
|
13001
|
+
const rgb2 = clean2.length === 8 ? clean2.slice(2) : clean2;
|
|
13002
|
+
if (!/^[0-9a-fA-F]{6}$/.test(rgb2)) return void 0;
|
|
13003
|
+
return [0, 2, 4].map((i2) => parseInt(rgb2.slice(i2, i2 + 2), 16));
|
|
13004
|
+
}
|
|
13005
|
+
var clamp255 = (v) => Math.max(0, Math.min(255, v));
|
|
13006
|
+
var rgbToUpperHex = (rgb2) => `#${rgb2.map((v) => clamp255(Math.round(v)).toString(16).padStart(2, "0")).join("").toUpperCase()}`;
|
|
13007
|
+
|
|
12941
13008
|
// xlsx/read/sheet-props.ts
|
|
12942
13009
|
function parseSqref(sqref) {
|
|
12943
13010
|
if (!sqref) return [];
|
|
@@ -12968,6 +13035,104 @@ function rewriteConditionalExtension(rule, rewrite2) {
|
|
|
12968
13035
|
if (changed) rule.extensionXml = buildXml(doc);
|
|
12969
13036
|
}
|
|
12970
13037
|
|
|
13038
|
+
// xlsx/read/sparklines.ts
|
|
13039
|
+
var XM2 = "http://schemas.microsoft.com/office/excel/2006/main";
|
|
13040
|
+
var TYPES = ["line", "column", "stacked"];
|
|
13041
|
+
var EMPTY = ["gap", "zero", "span"];
|
|
13042
|
+
var AXES = ["individual", "group", "custom"];
|
|
13043
|
+
var COLORS = [
|
|
13044
|
+
"colorSeries",
|
|
13045
|
+
"colorNegative",
|
|
13046
|
+
"colorAxis",
|
|
13047
|
+
"colorMarkers",
|
|
13048
|
+
"colorFirst",
|
|
13049
|
+
"colorLast",
|
|
13050
|
+
"colorHigh",
|
|
13051
|
+
"colorLow"
|
|
13052
|
+
];
|
|
13053
|
+
function pick2(value2, allowed, fallback) {
|
|
13054
|
+
return allowed.includes(value2) ? value2 : fallback;
|
|
13055
|
+
}
|
|
13056
|
+
var text = (element2) => {
|
|
13057
|
+
const value2 = element2?.textContent?.trim();
|
|
13058
|
+
return value2 ? value2 : void 0;
|
|
13059
|
+
};
|
|
13060
|
+
function readSparklineGroup(node) {
|
|
13061
|
+
const attr = (name) => node.hasAttribute(name) ? node.getAttribute(name) : null;
|
|
13062
|
+
const group = {
|
|
13063
|
+
type: pick2(attr("type"), TYPES, "line"),
|
|
13064
|
+
lineWeight: numAttr(node, "lineWeight") ?? 0.75,
|
|
13065
|
+
dateAxis: boolAttr(node, "dateAxis", false),
|
|
13066
|
+
markers: boolAttr(node, "markers", false),
|
|
13067
|
+
high: boolAttr(node, "high", false),
|
|
13068
|
+
low: boolAttr(node, "low", false),
|
|
13069
|
+
first: boolAttr(node, "first", false),
|
|
13070
|
+
last: boolAttr(node, "last", false),
|
|
13071
|
+
negative: boolAttr(node, "negative", false),
|
|
13072
|
+
displayEmptyCellsAs: pick2(attr("displayEmptyCellsAs"), EMPTY, "zero"),
|
|
13073
|
+
displayXAxis: boolAttr(node, "displayXAxis", false),
|
|
13074
|
+
displayHidden: boolAttr(node, "displayHidden", false),
|
|
13075
|
+
rightToLeft: boolAttr(node, "rightToLeft", false),
|
|
13076
|
+
minAxisType: pick2(attr("minAxisType"), AXES, "individual"),
|
|
13077
|
+
maxAxisType: pick2(attr("maxAxisType"), AXES, "individual"),
|
|
13078
|
+
sparklines: []
|
|
13079
|
+
};
|
|
13080
|
+
const manualMin = numAttr(node, "manualMin");
|
|
13081
|
+
const manualMax = numAttr(node, "manualMax");
|
|
13082
|
+
if (manualMin !== void 0) group.manualMin = manualMin;
|
|
13083
|
+
if (manualMax !== void 0) group.manualMax = manualMax;
|
|
13084
|
+
for (const name of COLORS) {
|
|
13085
|
+
const color = parseColor(first(node, name, NS.x14));
|
|
13086
|
+
if (color) group[name] = color;
|
|
13087
|
+
}
|
|
13088
|
+
const dates = text(first(node, "f", XM2));
|
|
13089
|
+
if (dates) group.dateFormula = dates;
|
|
13090
|
+
for (const line2 of children(first(node, "sparklines", NS.x14) ?? node, "sparkline", NS.x14)) {
|
|
13091
|
+
const host = parseRange(text(first(line2, "sqref", XM2)) ?? "");
|
|
13092
|
+
if (!host) continue;
|
|
13093
|
+
const formula = text(first(line2, "f", XM2));
|
|
13094
|
+
group.sparklines.push(formula ? { formula, host } : { host });
|
|
13095
|
+
}
|
|
13096
|
+
return group;
|
|
13097
|
+
}
|
|
13098
|
+
function readSparklineGroups(extLst) {
|
|
13099
|
+
const groups = [];
|
|
13100
|
+
for (const xml of extLst) {
|
|
13101
|
+
if (!xml.includes("sparklineGroup")) continue;
|
|
13102
|
+
let root;
|
|
13103
|
+
try {
|
|
13104
|
+
root = parseXml(xml).documentElement;
|
|
13105
|
+
} catch {
|
|
13106
|
+
continue;
|
|
13107
|
+
}
|
|
13108
|
+
for (const node of descendants(root, "sparklineGroup", NS.x14))
|
|
13109
|
+
groups.push(readSparklineGroup(node));
|
|
13110
|
+
}
|
|
13111
|
+
return groups;
|
|
13112
|
+
}
|
|
13113
|
+
var cache2 = /* @__PURE__ */ new WeakMap();
|
|
13114
|
+
function sheetSparklineGroups(sheet) {
|
|
13115
|
+
const source = sheet.preserved.get("extLst") ?? [];
|
|
13116
|
+
const hit = cache2.get(sheet);
|
|
13117
|
+
if (hit && hit.source.length === source.length && hit.source.every((xml, i2) => xml === source[i2]))
|
|
13118
|
+
return hit.groups;
|
|
13119
|
+
const groups = readSparklineGroups(source);
|
|
13120
|
+
cache2.set(sheet, { source: [...source], groups });
|
|
13121
|
+
return groups;
|
|
13122
|
+
}
|
|
13123
|
+
|
|
13124
|
+
// chart/bar-cluster-geometry.ts
|
|
13125
|
+
function assertBarClusterOptions(options) {
|
|
13126
|
+
for (const [field, min, max] of [
|
|
13127
|
+
["barGapWidth", 0, 500],
|
|
13128
|
+
["barOverlap", -100, 100]
|
|
13129
|
+
]) {
|
|
13130
|
+
const value2 = options[field];
|
|
13131
|
+
if (value2 !== void 0 && (!Number.isInteger(value2) || value2 < min || value2 > max))
|
|
13132
|
+
throw new RangeError(`${field} must be an integer from ${min} to ${max}`);
|
|
13133
|
+
}
|
|
13134
|
+
}
|
|
13135
|
+
|
|
12971
13136
|
// chart/color-palettes.ts
|
|
12972
13137
|
var COLORFUL_VARIATIONS = [
|
|
12973
13138
|
{},
|
|
@@ -13153,24 +13318,19 @@ function hueToRgb(n1, n2, hue) {
|
|
|
13153
13318
|
return n1 + idiv((n2 - n1) * (idiv(HLSMAX * 2, 3) - h2) + idiv(HLSMAX, 12), sixth);
|
|
13154
13319
|
return n1;
|
|
13155
13320
|
}
|
|
13156
|
-
var
|
|
13321
|
+
var clamp2552 = (v) => Math.max(0, Math.min(255, v));
|
|
13157
13322
|
function hls240ToRgb({ h: h2, l, s }) {
|
|
13158
13323
|
if (s === 0) {
|
|
13159
|
-
const v =
|
|
13324
|
+
const v = clamp2552(Math.round(l * RGBMAX / HLSMAX));
|
|
13160
13325
|
return [v, v, v];
|
|
13161
13326
|
}
|
|
13162
13327
|
const m2 = l <= HLSMAX / 2 ? idiv(l * (HLSMAX + s) + idiv(HLSMAX, 2), HLSMAX) : l + s - idiv(l * s + idiv(HLSMAX, 2), HLSMAX);
|
|
13163
13328
|
const m1 = 2 * l - m2;
|
|
13164
|
-
const channel = (hue) =>
|
|
13329
|
+
const channel = (hue) => clamp2552(idiv(hueToRgb(m1, m2, hue) * RGBMAX + idiv(HLSMAX, 2), HLSMAX));
|
|
13165
13330
|
return [channel(h2 + idiv(HLSMAX, 3)), channel(h2), channel(h2 - idiv(HLSMAX, 3))];
|
|
13166
13331
|
}
|
|
13167
|
-
|
|
13168
|
-
|
|
13169
|
-
const rgb2 = clean2.length === 8 ? clean2.slice(2) : clean2;
|
|
13170
|
-
if (!/^[0-9a-fA-F]{6}$/.test(rgb2)) return void 0;
|
|
13171
|
-
return [0, 2, 4].map((i2) => parseInt(rgb2.slice(i2, i2 + 2), 16));
|
|
13172
|
-
}
|
|
13173
|
-
var toHexColor = (rgb2) => `#${rgb2.map((v) => clamp255(Math.round(v)).toString(16).padStart(2, "0")).join("").toUpperCase()}`;
|
|
13332
|
+
var parseHex = parseArgbHex;
|
|
13333
|
+
var toHexColor = rgbToUpperHex;
|
|
13174
13334
|
function applyTint(hex2, tint) {
|
|
13175
13335
|
const rgb2 = parseHex(hex2) ?? [0, 0, 0];
|
|
13176
13336
|
if (!tint) return toHexColor(rgb2);
|
|
@@ -13180,6 +13340,40 @@ function applyTint(hex2, tint) {
|
|
|
13180
13340
|
return toHexColor(hls240ToRgb({ ...hls, l: Math.max(0, Math.min(HLSMAX, l)) }));
|
|
13181
13341
|
}
|
|
13182
13342
|
|
|
13343
|
+
// chart/render/theme-palette.ts
|
|
13344
|
+
var THEME_SLOTS = [
|
|
13345
|
+
"lt1",
|
|
13346
|
+
"dk1",
|
|
13347
|
+
"lt2",
|
|
13348
|
+
"dk2",
|
|
13349
|
+
"accent1",
|
|
13350
|
+
"accent2",
|
|
13351
|
+
"accent3",
|
|
13352
|
+
"accent4",
|
|
13353
|
+
"accent5",
|
|
13354
|
+
"accent6",
|
|
13355
|
+
"hlink",
|
|
13356
|
+
"folHlink"
|
|
13357
|
+
];
|
|
13358
|
+
var DEFAULT_THEME_COLORS = [
|
|
13359
|
+
"FFFFFF",
|
|
13360
|
+
"000000",
|
|
13361
|
+
"E7E6E6",
|
|
13362
|
+
"44546A",
|
|
13363
|
+
"4472C4",
|
|
13364
|
+
"ED7D31",
|
|
13365
|
+
"A5A5A5",
|
|
13366
|
+
"FFC000",
|
|
13367
|
+
"5B9BD5",
|
|
13368
|
+
"70AD47",
|
|
13369
|
+
"0563C1",
|
|
13370
|
+
"954F72"
|
|
13371
|
+
];
|
|
13372
|
+
function themeColor(theme2, index2) {
|
|
13373
|
+
const hex2 = theme2.colors[index2] ?? DEFAULT_THEME_COLORS[index2];
|
|
13374
|
+
return hex2 && parseArgbHex(hex2) ? hex2.replace(/^#/, "") : void 0;
|
|
13375
|
+
}
|
|
13376
|
+
|
|
13183
13377
|
// xlsx/layout/colors.ts
|
|
13184
13378
|
var INDEXED_COLORS = [
|
|
13185
13379
|
"000000",
|
|
@@ -13249,38 +13443,6 @@ var INDEXED_COLORS = [
|
|
|
13249
13443
|
"000000",
|
|
13250
13444
|
"FFFFFF"
|
|
13251
13445
|
];
|
|
13252
|
-
var THEME_SLOTS = [
|
|
13253
|
-
"lt1",
|
|
13254
|
-
"dk1",
|
|
13255
|
-
"lt2",
|
|
13256
|
-
"dk2",
|
|
13257
|
-
"accent1",
|
|
13258
|
-
"accent2",
|
|
13259
|
-
"accent3",
|
|
13260
|
-
"accent4",
|
|
13261
|
-
"accent5",
|
|
13262
|
-
"accent6",
|
|
13263
|
-
"hlink",
|
|
13264
|
-
"folHlink"
|
|
13265
|
-
];
|
|
13266
|
-
var FALLBACK_THEME = [
|
|
13267
|
-
"FFFFFF",
|
|
13268
|
-
"000000",
|
|
13269
|
-
"E7E6E6",
|
|
13270
|
-
"44546A",
|
|
13271
|
-
"4472C4",
|
|
13272
|
-
"ED7D31",
|
|
13273
|
-
"A5A5A5",
|
|
13274
|
-
"FFC000",
|
|
13275
|
-
"5B9BD5",
|
|
13276
|
-
"70AD47",
|
|
13277
|
-
"0563C1",
|
|
13278
|
-
"954F72"
|
|
13279
|
-
];
|
|
13280
|
-
function themeColor(theme2, index2) {
|
|
13281
|
-
const hex2 = theme2.colors[index2] ?? FALLBACK_THEME[index2];
|
|
13282
|
-
return hex2 && parseHex(hex2) ? hex2.replace(/^#/, "") : void 0;
|
|
13283
|
-
}
|
|
13284
13446
|
function resolveColor(color, theme2, fallback, indexed = INDEXED_COLORS) {
|
|
13285
13447
|
if (!color) return fallback;
|
|
13286
13448
|
let base;
|
|
@@ -13303,18 +13465,6 @@ function mixColors(a, b, t, rounding = "nearest") {
|
|
|
13303
13465
|
);
|
|
13304
13466
|
}
|
|
13305
13467
|
|
|
13306
|
-
// chart/bar-cluster-geometry.ts
|
|
13307
|
-
function assertBarClusterOptions(options) {
|
|
13308
|
-
for (const [field, min, max] of [
|
|
13309
|
-
["barGapWidth", 0, 500],
|
|
13310
|
-
["barOverlap", -100, 100]
|
|
13311
|
-
]) {
|
|
13312
|
-
const value2 = options[field];
|
|
13313
|
-
if (value2 !== void 0 && (!Number.isInteger(value2) || value2 < min || value2 > max))
|
|
13314
|
-
throw new RangeError(`${field} must be an integer from ${min} to ${max}`);
|
|
13315
|
-
}
|
|
13316
|
-
}
|
|
13317
|
-
|
|
13318
13468
|
// xlsx/edit/range-math.ts
|
|
13319
13469
|
var axisMax = (axis) => axis === "row" ? MAX_ROW : MAX_COL;
|
|
13320
13470
|
function shiftSpan(start, end, shift2) {
|
|
@@ -13523,8 +13673,8 @@ function syncTableHeader(ctx, sheet, row2, col) {
|
|
|
13523
13673
|
if (!table2) return;
|
|
13524
13674
|
const column = table2.columns[col - table2.range.start.col];
|
|
13525
13675
|
if (!column) return;
|
|
13526
|
-
const
|
|
13527
|
-
if (
|
|
13676
|
+
const text2 = displayText(ctx.workbook, getCell(sheet, row2, col)).trim();
|
|
13677
|
+
if (text2) column.name = text2;
|
|
13528
13678
|
}
|
|
13529
13679
|
function writeScopes(sheet, index2, range2, parts = []) {
|
|
13530
13680
|
const r = normalizeRange(range2);
|
|
@@ -13539,11 +13689,11 @@ function writeScopes(sheet, index2, range2, parts = []) {
|
|
|
13539
13689
|
if (all2.length) scopes.push({ kind: "parts", sheet: index2, parts: all2 });
|
|
13540
13690
|
return scopes;
|
|
13541
13691
|
}
|
|
13542
|
-
function writeInput(ctx, sheet, row2, col,
|
|
13692
|
+
function writeInput(ctx, sheet, row2, col, text2) {
|
|
13543
13693
|
const { workbook } = ctx;
|
|
13544
13694
|
const existing = getCell(sheet, row2, col);
|
|
13545
13695
|
const format = styleAt(workbook, existing?.styleId ?? baseStyleId(sheet, row2, col)).numFmt;
|
|
13546
|
-
if (
|
|
13696
|
+
if (text2 === "") {
|
|
13547
13697
|
if (existing) clearContents(existing);
|
|
13548
13698
|
pruneCell(sheet, row2, col);
|
|
13549
13699
|
return;
|
|
@@ -13551,10 +13701,10 @@ function writeInput(ctx, sheet, row2, col, text) {
|
|
|
13551
13701
|
const cell = ensureCell(sheet, row2, col);
|
|
13552
13702
|
clearContents(cell);
|
|
13553
13703
|
if (format === "@") {
|
|
13554
|
-
cell.value =
|
|
13704
|
+
cell.value = text2;
|
|
13555
13705
|
return;
|
|
13556
13706
|
}
|
|
13557
|
-
const parsed = parseCellInput(
|
|
13707
|
+
const parsed = parseCellInput(text2, { date1904: workbook.date1904 });
|
|
13558
13708
|
if (parsed.formula !== void 0) cell.formula = parsed.formula;
|
|
13559
13709
|
else cell.value = parsed.value;
|
|
13560
13710
|
if (parsed.numFmt && format === "General")
|
|
@@ -13580,7 +13730,7 @@ function clearContents(cell) {
|
|
|
13580
13730
|
delete cell.legacyFormula;
|
|
13581
13731
|
delete cell.spillAnchor;
|
|
13582
13732
|
}
|
|
13583
|
-
function setCellInput(ctx, s, row2, col,
|
|
13733
|
+
function setCellInput(ctx, s, row2, col, text2) {
|
|
13584
13734
|
const sheet = sheetAt(ctx.workbook, s);
|
|
13585
13735
|
const range2 = cellRange(row2, col);
|
|
13586
13736
|
ctx.run(
|
|
@@ -13588,7 +13738,7 @@ function setCellInput(ctx, s, row2, col, text) {
|
|
|
13588
13738
|
"cells",
|
|
13589
13739
|
writeScopes(sheet, s, range2),
|
|
13590
13740
|
() => {
|
|
13591
|
-
writeInput(ctx, sheet, row2, col,
|
|
13741
|
+
writeInput(ctx, sheet, row2, col, text2);
|
|
13592
13742
|
syncTableHeader(ctx, sheet, row2, col);
|
|
13593
13743
|
},
|
|
13594
13744
|
{ sheet: s, ranges: [range2] }
|
|
@@ -13656,10 +13806,10 @@ function clearRange(ctx, s, range2, what) {
|
|
|
13656
13806
|
);
|
|
13657
13807
|
}
|
|
13658
13808
|
function clearIn(ctx, sheet, r, what) {
|
|
13659
|
-
const
|
|
13660
|
-
forEachCellInRange(sheet, r, (_cell, row2, col) =>
|
|
13809
|
+
const positions2 = [];
|
|
13810
|
+
forEachCellInRange(sheet, r, (_cell, row2, col) => positions2.push([row2, col]));
|
|
13661
13811
|
if (what === "contents" || what === "all" || what === "formats") {
|
|
13662
|
-
for (const [row2, col] of
|
|
13812
|
+
for (const [row2, col] of positions2) {
|
|
13663
13813
|
const cell = getCell(sheet, row2, col);
|
|
13664
13814
|
if (!cell) continue;
|
|
13665
13815
|
if (what === "all") deleteCell(sheet, row2, col);
|
|
@@ -13670,7 +13820,7 @@ function clearIn(ctx, sheet, r, what) {
|
|
|
13670
13820
|
}
|
|
13671
13821
|
}
|
|
13672
13822
|
if (what === "contents")
|
|
13673
|
-
for (const [row2, col] of
|
|
13823
|
+
for (const [row2, col] of positions2) syncTableHeader(ctx, sheet, row2, col);
|
|
13674
13824
|
}
|
|
13675
13825
|
if (what === "all" || what === "formats") {
|
|
13676
13826
|
sheet.merges = sheet.merges.filter((m) => !rangesIntersect(m, r));
|
|
@@ -13877,8 +14027,8 @@ var LISTS = [
|
|
|
13877
14027
|
"December"
|
|
13878
14028
|
]
|
|
13879
14029
|
];
|
|
13880
|
-
function listMatch(
|
|
13881
|
-
const lower2 =
|
|
14030
|
+
function listMatch(text2) {
|
|
14031
|
+
const lower2 = text2.toLowerCase();
|
|
13882
14032
|
for (const list of LISTS) {
|
|
13883
14033
|
const index2 = list.findIndex((item) => item.toLowerCase() === lower2);
|
|
13884
14034
|
if (index2 >= 0) return { list, index: index2 };
|
|
@@ -13903,14 +14053,14 @@ function linearTrend(values2) {
|
|
|
13903
14053
|
const slope = den ? num2 / den : 0;
|
|
13904
14054
|
return (k) => Number((meanY + slope * (k - meanX)).toPrecision(15));
|
|
13905
14055
|
}
|
|
13906
|
-
var
|
|
13907
|
-
function matchTextNumber(
|
|
13908
|
-
let end =
|
|
13909
|
-
while (end > 0 && !
|
|
14056
|
+
var isDigit4 = (ch) => ch !== void 0 && ch >= "0" && ch <= "9";
|
|
14057
|
+
function matchTextNumber(text2) {
|
|
14058
|
+
let end = text2.length;
|
|
14059
|
+
while (end > 0 && !isDigit4(text2[end - 1])) end--;
|
|
13910
14060
|
if (end === 0) return null;
|
|
13911
14061
|
let start = end;
|
|
13912
|
-
while (start > 0 &&
|
|
13913
|
-
return [
|
|
14062
|
+
while (start > 0 && isDigit4(text2[start - 1])) start--;
|
|
14063
|
+
return [text2, text2.slice(0, start), text2.slice(start, end), text2.slice(end)];
|
|
13914
14064
|
}
|
|
13915
14065
|
var QUARTER = /^(q|qtr|quarter)(\s?)([1-4])$/i;
|
|
13916
14066
|
function textSeries(texts) {
|
|
@@ -14315,26 +14465,26 @@ function pasteConditionalFormats(sheet, dest, cells, transpose2, skipBlanks, cut
|
|
|
14315
14465
|
}
|
|
14316
14466
|
|
|
14317
14467
|
// xlsx/edit/annotations.ts
|
|
14318
|
-
function setComment(ctx, s, at,
|
|
14468
|
+
function setComment(ctx, s, at, text2, author) {
|
|
14319
14469
|
const sheet = sheetAt(ctx.workbook, s);
|
|
14320
14470
|
const index2 = sheet.comments.findIndex(
|
|
14321
14471
|
(c) => c.address.row === at.row && c.address.col === at.col
|
|
14322
14472
|
);
|
|
14323
|
-
if (index2 < 0 &&
|
|
14473
|
+
if (index2 < 0 && text2 === void 0) return;
|
|
14324
14474
|
ctx.run(
|
|
14325
|
-
|
|
14475
|
+
text2 === void 0 ? "Delete comment" : index2 < 0 ? "New comment" : "Edit comment",
|
|
14326
14476
|
"annotations",
|
|
14327
14477
|
[{ kind: "sheet", sheet: s }],
|
|
14328
14478
|
() => {
|
|
14329
|
-
if (
|
|
14479
|
+
if (text2 === void 0) {
|
|
14330
14480
|
sheet.comments.splice(index2, 1);
|
|
14331
14481
|
return;
|
|
14332
14482
|
}
|
|
14333
14483
|
const existing = sheet.comments[index2];
|
|
14334
14484
|
if (existing) {
|
|
14335
|
-
existing.text =
|
|
14485
|
+
existing.text = text2;
|
|
14336
14486
|
existing.author = author;
|
|
14337
|
-
} else sheet.comments.push({ address: { row: at.row, col: at.col }, author, text });
|
|
14487
|
+
} else sheet.comments.push({ address: { row: at.row, col: at.col }, author, text: text2 });
|
|
14338
14488
|
},
|
|
14339
14489
|
{ sheet: s, ranges: [{ start: at, end: at }] }
|
|
14340
14490
|
);
|
|
@@ -14523,7 +14673,7 @@ function setBorders(ctx, s, range2, preset, edge = { style: "thin" }) {
|
|
|
14523
14673
|
}
|
|
14524
14674
|
|
|
14525
14675
|
// xlsx/edit/shift-preserved.ts
|
|
14526
|
-
var
|
|
14676
|
+
var XM3 = "http://schemas.microsoft.com/office/excel/2006/main";
|
|
14527
14677
|
function descendants2(root, ns, local) {
|
|
14528
14678
|
return Array.from(root.getElementsByTagNameNS(ns, local));
|
|
14529
14679
|
}
|
|
@@ -14583,14 +14733,14 @@ function removeUpwards(node, root) {
|
|
|
14583
14733
|
}
|
|
14584
14734
|
function shiftSqrefs(root, moveRange) {
|
|
14585
14735
|
let changed = false;
|
|
14586
|
-
for (const sqref of descendants2(root,
|
|
14736
|
+
for (const sqref of descendants2(root, XM3, "sqref")) {
|
|
14587
14737
|
const old = sqref.textContent ?? "";
|
|
14588
14738
|
const ranges = parseSqref(old).map(moveRange).filter((r) => !!r);
|
|
14589
|
-
const
|
|
14590
|
-
if (
|
|
14739
|
+
const text2 = ranges.map(formatRange).join(" ");
|
|
14740
|
+
if (text2 === old.trim()) continue;
|
|
14591
14741
|
changed = true;
|
|
14592
14742
|
const owner = sqref.parentNode;
|
|
14593
|
-
if (ranges.length) sqref.textContent =
|
|
14743
|
+
if (ranges.length) sqref.textContent = text2;
|
|
14594
14744
|
else if (owner) removeUpwards(owner, root);
|
|
14595
14745
|
}
|
|
14596
14746
|
if (!changed) return "same";
|
|
@@ -14620,15 +14770,15 @@ function rewritePreservedFormulas(sheet, rewrite2) {
|
|
|
14620
14770
|
"extLst",
|
|
14621
14771
|
(root) => {
|
|
14622
14772
|
let changed = false;
|
|
14623
|
-
for (const f6 of descendants2(root,
|
|
14624
|
-
const
|
|
14625
|
-
let next =
|
|
14773
|
+
for (const f6 of descendants2(root, XM3, "f")) {
|
|
14774
|
+
const text2 = f6.textContent ?? "";
|
|
14775
|
+
let next = text2;
|
|
14626
14776
|
try {
|
|
14627
|
-
next = rewrite2(
|
|
14777
|
+
next = rewrite2(text2, sheet.name);
|
|
14628
14778
|
} catch {
|
|
14629
|
-
next =
|
|
14779
|
+
next = text2;
|
|
14630
14780
|
}
|
|
14631
|
-
if (next ===
|
|
14781
|
+
if (next === text2) continue;
|
|
14632
14782
|
f6.textContent = next;
|
|
14633
14783
|
changed = true;
|
|
14634
14784
|
}
|
|
@@ -14979,7 +15129,7 @@ function pasteHyperlinks(sheet, dest, cells, transpose2, skipBlanks, cutLocation
|
|
|
14979
15129
|
}
|
|
14980
15130
|
|
|
14981
15131
|
// xlsx/edit/clipboard-html.ts
|
|
14982
|
-
var escapeHtml = (
|
|
15132
|
+
var escapeHtml = (text2) => text2.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
14983
15133
|
function cssColor(color, theme2) {
|
|
14984
15134
|
if (!color || color.auto) return void 0;
|
|
14985
15135
|
if (color.rgb) return `#${color.rgb.slice(-6)}`;
|
|
@@ -15044,12 +15194,12 @@ function toHtml(cells, theme2) {
|
|
|
15044
15194
|
if (cell && typeof cell.value === "number") attrs.push(`x:num="${cell.value}"`);
|
|
15045
15195
|
const css = cssFor(cell?.style, theme2);
|
|
15046
15196
|
if (css) attrs.push(`style="${escapeHtml(css)}"`);
|
|
15047
|
-
let
|
|
15197
|
+
let text2 = escapeHtml(cell?.text ?? "").replace(/\n/g, "<br>");
|
|
15048
15198
|
const link = links.get(`${r},${c}`);
|
|
15049
15199
|
const href = htmlHref(link);
|
|
15050
15200
|
if (href)
|
|
15051
|
-
|
|
15052
|
-
tds.push(`<td${attrs.length ? ` ${attrs.join(" ")}` : ""}>${
|
|
15201
|
+
text2 = `<a href="${escapeHtml(href)}"${link?.tooltip ? ` title="${escapeHtml(link.tooltip)}"` : ""}>${text2}</a>`;
|
|
15202
|
+
tds.push(`<td${attrs.length ? ` ${attrs.join(" ")}` : ""}>${text2}</td>`);
|
|
15053
15203
|
}
|
|
15054
15204
|
rows2.push(`<tr>${tds.join("")}</tr>`);
|
|
15055
15205
|
}
|
|
@@ -15077,8 +15227,8 @@ var NAMED_COLORS2 = {
|
|
|
15077
15227
|
aqua: "00FFFF",
|
|
15078
15228
|
fuchsia: "FF00FF"
|
|
15079
15229
|
};
|
|
15080
|
-
function parseCssColor(
|
|
15081
|
-
const value2 =
|
|
15230
|
+
function parseCssColor(text2) {
|
|
15231
|
+
const value2 = text2.trim().toLowerCase();
|
|
15082
15232
|
const hex2 = /^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(value2)?.[1];
|
|
15083
15233
|
if (hex2)
|
|
15084
15234
|
return {
|
|
@@ -15100,33 +15250,33 @@ var ENTITIES = {
|
|
|
15100
15250
|
apos: "'",
|
|
15101
15251
|
nbsp: " "
|
|
15102
15252
|
};
|
|
15103
|
-
function decodeEntities(
|
|
15104
|
-
return
|
|
15253
|
+
function decodeEntities(text2) {
|
|
15254
|
+
return text2.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (whole, name) => {
|
|
15105
15255
|
if (name.startsWith("#x") || name.startsWith("#X"))
|
|
15106
15256
|
return String.fromCodePoint(parseInt(name.slice(2), 16));
|
|
15107
15257
|
if (name.startsWith("#")) return String.fromCodePoint(Number(name.slice(1)));
|
|
15108
15258
|
return ENTITIES[name.toLowerCase()] ?? whole;
|
|
15109
15259
|
});
|
|
15110
15260
|
}
|
|
15111
|
-
function parseAttributes(
|
|
15261
|
+
function parseAttributes(text2) {
|
|
15112
15262
|
const attrs = /* @__PURE__ */ new Map();
|
|
15113
|
-
for (const m of
|
|
15263
|
+
for (const m of text2.matchAll(
|
|
15114
15264
|
/([\w:-]{1,64})\s{0,16}=\s{0,16}(?:"([^"]*)"|'([^']*)'|([^\s>]+))/g
|
|
15115
15265
|
))
|
|
15116
15266
|
attrs.set((m[1] ?? "").toLowerCase(), decodeEntities(m[2] ?? m[3] ?? m[4] ?? ""));
|
|
15117
15267
|
return attrs;
|
|
15118
15268
|
}
|
|
15119
|
-
function parseCss(
|
|
15269
|
+
function parseCss(text2) {
|
|
15120
15270
|
const out = /* @__PURE__ */ new Map();
|
|
15121
|
-
for (const decl of
|
|
15271
|
+
for (const decl of text2.split(";")) {
|
|
15122
15272
|
const colon = decl.indexOf(":");
|
|
15123
15273
|
if (colon < 0) continue;
|
|
15124
15274
|
out.set(decl.slice(0, colon).trim().toLowerCase(), decl.slice(colon + 1).trim());
|
|
15125
15275
|
}
|
|
15126
15276
|
return out;
|
|
15127
15277
|
}
|
|
15128
|
-
function decodeNumberFormat(
|
|
15129
|
-
return
|
|
15278
|
+
function decodeNumberFormat(text2) {
|
|
15279
|
+
return text2.replace(/^["']|["']$/g, "").replace(/\\([0-9A-Fa-f]{4})/g, (_m, hex2) => String.fromCharCode(parseInt(hex2, 16))).replace(/\\(.)/g, "$1");
|
|
15130
15280
|
}
|
|
15131
15281
|
var H_ALIGN = {
|
|
15132
15282
|
left: "left",
|
|
@@ -15167,26 +15317,26 @@ function stylePatchFromCss(css, inner2) {
|
|
|
15167
15317
|
if (numFmt) patch.numFmt = decodeNumberFormat(numFmt);
|
|
15168
15318
|
return patch;
|
|
15169
15319
|
}
|
|
15170
|
-
function removeComments(
|
|
15320
|
+
function removeComments(text2) {
|
|
15171
15321
|
let out = "";
|
|
15172
15322
|
let from = 0;
|
|
15173
15323
|
for (; ; ) {
|
|
15174
|
-
const open =
|
|
15175
|
-
const close = open < 0 ? -1 :
|
|
15176
|
-
if (close < 0) return out +
|
|
15177
|
-
out +=
|
|
15324
|
+
const open = text2.indexOf("<!--", from);
|
|
15325
|
+
const close = open < 0 ? -1 : text2.indexOf("-->", open + 4);
|
|
15326
|
+
if (close < 0) return out + text2.slice(from);
|
|
15327
|
+
out += text2.slice(from, open);
|
|
15178
15328
|
from = close + 3;
|
|
15179
15329
|
}
|
|
15180
15330
|
}
|
|
15181
|
-
function removeTags(
|
|
15331
|
+
function removeTags(text2) {
|
|
15182
15332
|
let out = "";
|
|
15183
15333
|
let i2 = 0;
|
|
15184
|
-
while (i2 <
|
|
15185
|
-
const ch =
|
|
15334
|
+
while (i2 < text2.length) {
|
|
15335
|
+
const ch = text2[i2];
|
|
15186
15336
|
if (ch === "<") {
|
|
15187
15337
|
let j = i2 + 1;
|
|
15188
|
-
while (j <
|
|
15189
|
-
if (
|
|
15338
|
+
while (j < text2.length && text2[j] !== "<" && text2[j] !== ">") j++;
|
|
15339
|
+
if (text2[j] === ">") {
|
|
15190
15340
|
i2 = j + 1;
|
|
15191
15341
|
continue;
|
|
15192
15342
|
}
|
|
@@ -15198,15 +15348,15 @@ function removeTags(text) {
|
|
|
15198
15348
|
}
|
|
15199
15349
|
function stripTags(markup) {
|
|
15200
15350
|
let previous;
|
|
15201
|
-
let
|
|
15351
|
+
let text2 = markup;
|
|
15202
15352
|
do {
|
|
15203
|
-
previous =
|
|
15204
|
-
|
|
15205
|
-
} while (
|
|
15206
|
-
return removeAll(
|
|
15353
|
+
previous = text2;
|
|
15354
|
+
text2 = removeTags(removeComments(text2));
|
|
15355
|
+
} while (text2 !== previous);
|
|
15356
|
+
return removeAll(text2, ["<!--", "-->"]);
|
|
15207
15357
|
}
|
|
15208
|
-
function removeAll(
|
|
15209
|
-
let current =
|
|
15358
|
+
function removeAll(text2, tokens) {
|
|
15359
|
+
let current = text2;
|
|
15210
15360
|
let previous;
|
|
15211
15361
|
do {
|
|
15212
15362
|
previous = current;
|
|
@@ -15248,8 +15398,8 @@ function parseHtmlTable(html, base) {
|
|
|
15248
15398
|
for (const [k, v] of parseCss(attrs.get("style") ?? "")) css.set(k, v);
|
|
15249
15399
|
const patch = stylePatchFromCss(css, inner2);
|
|
15250
15400
|
if (td[1]?.toLowerCase() === "h") patch.font = { bold: true, ...patch.font };
|
|
15251
|
-
const
|
|
15252
|
-
row2[c] =
|
|
15401
|
+
const text2 = cellText(inner2);
|
|
15402
|
+
row2[c] = text2 === "" && !Object.keys(patch).length ? null : toCell(text2, attrs, patch, base);
|
|
15253
15403
|
const rowSpan = Math.max(1, Number(attrs.get("rowspan") ?? 1) || 1);
|
|
15254
15404
|
const colSpan = Math.max(1, Number(attrs.get("colspan") ?? 1) || 1);
|
|
15255
15405
|
const anchor = /<a\b([^>]*)>/i.exec(inner2);
|
|
@@ -15281,35 +15431,35 @@ function parseHtmlTable(html, base) {
|
|
|
15281
15431
|
);
|
|
15282
15432
|
return rows2 && cols ? { rows: rows2, cols, data, merges, hyperlinks } : void 0;
|
|
15283
15433
|
}
|
|
15284
|
-
function toCell(
|
|
15285
|
-
let value2 =
|
|
15434
|
+
function toCell(text2, attrs, patch, base) {
|
|
15435
|
+
let value2 = text2;
|
|
15286
15436
|
const num2 = attrs.get("x:num");
|
|
15287
15437
|
if (num2 !== void 0 && num2 !== "" && Number.isFinite(Number(num2))) value2 = Number(num2);
|
|
15288
|
-
else if (attrs.has("x:bool")) value2 =
|
|
15289
|
-
else if (patch.numFmt !== "@" &&
|
|
15290
|
-
const parsed = parseCellInput(
|
|
15438
|
+
else if (attrs.has("x:bool")) value2 = text2.toUpperCase() === "TRUE";
|
|
15439
|
+
else if (patch.numFmt !== "@" && text2 !== "") {
|
|
15440
|
+
const parsed = parseCellInput(text2);
|
|
15291
15441
|
if (parsed.formula === void 0) value2 = parsed.value;
|
|
15292
15442
|
if (!patch.numFmt && parsed.numFmt && typeof value2 === "number") patch.numFmt = parsed.numFmt;
|
|
15293
15443
|
}
|
|
15294
|
-
return { value: value2, text, style: patchStyle(base, patch) };
|
|
15444
|
+
return { value: value2, text: text2, style: patchStyle(base, patch) };
|
|
15295
15445
|
}
|
|
15296
15446
|
|
|
15297
15447
|
// xlsx/edit/clipboard-text.ts
|
|
15298
|
-
function quoteField(
|
|
15299
|
-
return /[\t\r\n"]/.test(
|
|
15448
|
+
function quoteField(text2) {
|
|
15449
|
+
return /[\t\r\n"]/.test(text2) ? `"${text2.replace(/"/g, '""')}"` : text2;
|
|
15300
15450
|
}
|
|
15301
15451
|
function toTsv(rows2) {
|
|
15302
15452
|
if (!rows2.length) return "";
|
|
15303
15453
|
return rows2.map((row2) => row2.map(quoteField).join(" ")).join("\r\n") + "\r\n";
|
|
15304
15454
|
}
|
|
15305
|
-
function parseTsv(
|
|
15455
|
+
function parseTsv(text2) {
|
|
15306
15456
|
const rows2 = [];
|
|
15307
15457
|
let row2 = [];
|
|
15308
15458
|
let field = "";
|
|
15309
15459
|
let i2 = 0;
|
|
15310
15460
|
let atFieldStart = true;
|
|
15311
|
-
const body2 =
|
|
15312
|
-
if (body2 === "") return
|
|
15461
|
+
const body2 = text2.replace(/\r\n?/g, "\n").replace(/\n$/, "");
|
|
15462
|
+
if (body2 === "") return text2 === "" ? [] : [[""]];
|
|
15313
15463
|
while (i2 < body2.length) {
|
|
15314
15464
|
const ch = body2[i2] ?? "";
|
|
15315
15465
|
if (atFieldStart && ch === '"') {
|
|
@@ -15344,10 +15494,10 @@ function parseTsv(text) {
|
|
|
15344
15494
|
for (const r of rows2) while (r.length < width) r.push("");
|
|
15345
15495
|
return rows2;
|
|
15346
15496
|
}
|
|
15347
|
-
function findClosingQuote(
|
|
15348
|
-
for (let i2 = from; i2 <
|
|
15349
|
-
if (
|
|
15350
|
-
if (
|
|
15497
|
+
function findClosingQuote(text2, from) {
|
|
15498
|
+
for (let i2 = from; i2 < text2.length; i2++) {
|
|
15499
|
+
if (text2[i2] !== '"') continue;
|
|
15500
|
+
if (text2[i2 + 1] === '"') {
|
|
15351
15501
|
i2++;
|
|
15352
15502
|
continue;
|
|
15353
15503
|
}
|
|
@@ -15624,12 +15774,12 @@ function copyRange(workbook, s, range2) {
|
|
|
15624
15774
|
cells
|
|
15625
15775
|
};
|
|
15626
15776
|
}
|
|
15627
|
-
function cellsFromText(workbook,
|
|
15628
|
-
if (/<table\b/i.test(
|
|
15629
|
-
const parsed = parseHtmlTable(
|
|
15777
|
+
function cellsFromText(workbook, text2) {
|
|
15778
|
+
if (/<table\b/i.test(text2)) {
|
|
15779
|
+
const parsed = parseHtmlTable(text2, styleAt(workbook, 0));
|
|
15630
15780
|
if (parsed) return parsed;
|
|
15631
15781
|
}
|
|
15632
|
-
const grid6 = parseTsv(
|
|
15782
|
+
const grid6 = parseTsv(text2);
|
|
15633
15783
|
const data = grid6.map(
|
|
15634
15784
|
(line2) => line2.map((field) => {
|
|
15635
15785
|
if (field === "") return null;
|
|
@@ -15824,13 +15974,32 @@ function pasteSelection(ctx, sheet, selection, payload, request) {
|
|
|
15824
15974
|
);
|
|
15825
15975
|
}
|
|
15826
15976
|
|
|
15977
|
+
// xlsx/edit/external.ts
|
|
15978
|
+
function applyExternal(host, apply) {
|
|
15979
|
+
if (host.busy()) throw new Error("Cannot apply an external change inside an edit");
|
|
15980
|
+
const change = apply();
|
|
15981
|
+
if (!change) return false;
|
|
15982
|
+
const structural = change.structural ?? false;
|
|
15983
|
+
host.calculator.afterExternal(structural, change.cells ?? []);
|
|
15984
|
+
const out = {
|
|
15985
|
+
kind: change.kind ?? "remote",
|
|
15986
|
+
label: change.label,
|
|
15987
|
+
structural,
|
|
15988
|
+
external: true
|
|
15989
|
+
};
|
|
15990
|
+
if (change.sheet !== void 0) out.sheet = change.sheet;
|
|
15991
|
+
if (change.ranges?.length) out.ranges = change.ranges;
|
|
15992
|
+
host.emit(out);
|
|
15993
|
+
return true;
|
|
15994
|
+
}
|
|
15995
|
+
|
|
15827
15996
|
// xlsx/edit/dimensions.ts
|
|
15828
15997
|
var MDW = 7;
|
|
15829
15998
|
var MAX_WIDTH = 255;
|
|
15830
15999
|
var MAX_HEIGHT = 409;
|
|
15831
|
-
function estimateWidth(
|
|
16000
|
+
function estimateWidth(text2, style2) {
|
|
15832
16001
|
const scale2 = (style2.font.size ?? 11) / 11;
|
|
15833
|
-
const longest = Math.max(...
|
|
16002
|
+
const longest = Math.max(...text2.split("\n").map((line2) => line2.length));
|
|
15834
16003
|
return longest * MDW * scale2 * (style2.font.bold ? 1.1 : 1);
|
|
15835
16004
|
}
|
|
15836
16005
|
var pixelsToWidth = (px) => Math.round((px + 5) / MDW * 256) / 256;
|
|
@@ -15839,9 +16008,9 @@ function fitColumnWidth(ctx, sheet, col, measure2) {
|
|
|
15839
16008
|
for (const [row2, cells] of sheet.rows) {
|
|
15840
16009
|
const cell = cells.get(col);
|
|
15841
16010
|
if (!cell || sheet.rowInfo.get(row2)?.hidden) continue;
|
|
15842
|
-
const
|
|
15843
|
-
if (!
|
|
15844
|
-
widest = Math.max(widest, measure2(
|
|
16011
|
+
const text2 = displayText(ctx.workbook, cell);
|
|
16012
|
+
if (!text2) continue;
|
|
16013
|
+
widest = Math.max(widest, measure2(text2, styleAt(ctx.workbook, cell.styleId)));
|
|
15845
16014
|
}
|
|
15846
16015
|
return widest < 0 ? void 0 : Math.min(MAX_WIDTH, pixelsToWidth(widest));
|
|
15847
16016
|
}
|
|
@@ -16092,8 +16261,8 @@ function applyFilter(ctx, sheet, filter2) {
|
|
|
16092
16261
|
for (let row2 = range2.start.row + 1; row2 <= range2.end.row; row2++) {
|
|
16093
16262
|
const visible = (filter2.columns ?? []).every((fc) => {
|
|
16094
16263
|
if (!fc.values && !fc.blank) return true;
|
|
16095
|
-
const
|
|
16096
|
-
return
|
|
16264
|
+
const text2 = displayText(ctx.workbook, getCell(sheet, row2, range2.start.col + fc.offset));
|
|
16265
|
+
return text2 === "" ? !!fc.blank : (fc.values ?? []).includes(text2);
|
|
16097
16266
|
});
|
|
16098
16267
|
const info = { ...sheet.rowInfo.get(row2) };
|
|
16099
16268
|
if (visible) delete info.hidden;
|
|
@@ -16192,11 +16361,11 @@ function formulaBarText(workbook, cell, options = {}) {
|
|
|
16192
16361
|
styleAt(workbook, cell.styleId).numFmt || "General",
|
|
16193
16362
|
workbook.date1904
|
|
16194
16363
|
);
|
|
16195
|
-
const
|
|
16196
|
-
if (
|
|
16197
|
-
const parsed = parseCellInput(
|
|
16198
|
-
const literal2 = parsed.formula === void 0 && parsed.value ===
|
|
16199
|
-
return literal2 ?
|
|
16364
|
+
const text2 = cell.richText?.length ? cell.richText.map((run) => run.text).join("") : value2;
|
|
16365
|
+
if (text2 === "" || options.quote === false) return text2;
|
|
16366
|
+
const parsed = parseCellInput(text2, { date1904: workbook.date1904 });
|
|
16367
|
+
const literal2 = parsed.formula === void 0 && parsed.value === text2;
|
|
16368
|
+
return literal2 ? text2 : `'${text2}`;
|
|
16200
16369
|
}
|
|
16201
16370
|
|
|
16202
16371
|
// xlsx/edit/find.ts
|
|
@@ -16215,7 +16384,7 @@ function queryPattern(query, global = false) {
|
|
|
16215
16384
|
if (query.wholeCell) source = `^(?:${source})$`;
|
|
16216
16385
|
return new RegExp(source, `${query.matchCase ? "" : "i"}${global ? "g" : ""}`);
|
|
16217
16386
|
}
|
|
16218
|
-
var escapeRegex2 = (
|
|
16387
|
+
var escapeRegex2 = (text2) => text2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
16219
16388
|
function searchText(workbook, query, sheet, row2, col) {
|
|
16220
16389
|
const ws = workbook.sheets[sheet];
|
|
16221
16390
|
if (!ws) return "";
|
|
@@ -16232,25 +16401,25 @@ function findAll(workbook, query) {
|
|
|
16232
16401
|
for (const s of indices) {
|
|
16233
16402
|
const sheet = workbook.sheets[s];
|
|
16234
16403
|
if (!sheet) continue;
|
|
16235
|
-
const
|
|
16404
|
+
const positions2 = [];
|
|
16236
16405
|
if (query.lookIn === "comments")
|
|
16237
|
-
for (const c of sheet.comments)
|
|
16238
|
-
else forEachCell(sheet, (_cell, row2, col) =>
|
|
16239
|
-
if (query.order === "columns")
|
|
16240
|
-
else
|
|
16241
|
-
for (const [row2, col] of
|
|
16406
|
+
for (const c of sheet.comments) positions2.push([c.address.row, c.address.col]);
|
|
16407
|
+
else forEachCell(sheet, (_cell, row2, col) => positions2.push([row2, col]));
|
|
16408
|
+
if (query.order === "columns") positions2.sort((a, b) => a[1] - b[1] || a[0] - b[0]);
|
|
16409
|
+
else positions2.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
|
|
16410
|
+
for (const [row2, col] of positions2) {
|
|
16242
16411
|
if (query.range && query.sheet !== void 0 && !rangeContains(query.range, { row: row2, col }))
|
|
16243
16412
|
continue;
|
|
16244
|
-
const
|
|
16245
|
-
if (
|
|
16413
|
+
const text2 = searchText(workbook, query, s, row2, col);
|
|
16414
|
+
if (text2 && pattern.test(text2)) matches2.push({ sheet: s, row: row2, col, text: text2 });
|
|
16246
16415
|
}
|
|
16247
16416
|
}
|
|
16248
16417
|
return matches2;
|
|
16249
16418
|
}
|
|
16250
|
-
function replaceText(
|
|
16419
|
+
function replaceText(text2, query, replacement) {
|
|
16251
16420
|
const pattern = queryPattern(query, true);
|
|
16252
|
-
if (!pattern) return
|
|
16253
|
-
return
|
|
16421
|
+
if (!pattern) return text2;
|
|
16422
|
+
return text2.replace(pattern, (match2) => match2 === "" ? "" : replacement);
|
|
16254
16423
|
}
|
|
16255
16424
|
var isSpilledAt = (workbook, at) => {
|
|
16256
16425
|
const sheet = workbook.sheets[at.sheet];
|
|
@@ -16309,10 +16478,10 @@ function replaceOne(ctx, query, replacement, at) {
|
|
|
16309
16478
|
const q = replaceQuery(query);
|
|
16310
16479
|
if (q.lookIn !== "comments" && isSpilledAt(ctx.workbook, at)) return false;
|
|
16311
16480
|
const pattern = queryPattern(q);
|
|
16312
|
-
const
|
|
16313
|
-
if (!pattern || !
|
|
16314
|
-
const match2 = { ...at, text };
|
|
16315
|
-
if (replaceText(
|
|
16481
|
+
const text2 = searchText(ctx.workbook, q, at.sheet, at.row, at.col);
|
|
16482
|
+
if (!pattern || !text2 || !pattern.test(text2)) return false;
|
|
16483
|
+
const match2 = { ...at, text: text2 };
|
|
16484
|
+
if (replaceText(text2, q, replacement) === text2) return false;
|
|
16316
16485
|
ctx.run(
|
|
16317
16486
|
"Replace",
|
|
16318
16487
|
"cells",
|
|
@@ -16678,10 +16847,22 @@ var SessionCalculator = class {
|
|
|
16678
16847
|
if (isStructural(step)) this.staleGraph = true;
|
|
16679
16848
|
return;
|
|
16680
16849
|
}
|
|
16850
|
+
this.recalc(isStructural(step), () => touchedCells(step));
|
|
16851
|
+
}
|
|
16852
|
+
/** Recalculates after a change applied outside the history (a collaborator's edit). */
|
|
16853
|
+
afterExternal(structural, cells) {
|
|
16854
|
+
if (!this.enabled) return;
|
|
16855
|
+
if (calcModeOf(this.workbook) === "manual") {
|
|
16856
|
+
if (structural) this.staleGraph = true;
|
|
16857
|
+
return;
|
|
16858
|
+
}
|
|
16859
|
+
this.recalc(structural, () => cells);
|
|
16860
|
+
}
|
|
16861
|
+
recalc(structural, cells) {
|
|
16681
16862
|
try {
|
|
16682
|
-
if (this.staleGraph ||
|
|
16863
|
+
if (this.staleGraph || structural) this.full();
|
|
16683
16864
|
else {
|
|
16684
|
-
const changed =
|
|
16865
|
+
const changed = cells();
|
|
16685
16866
|
if (changed.length) this.calc.recalculateFrom(changed);
|
|
16686
16867
|
}
|
|
16687
16868
|
} catch (error) {
|
|
@@ -17014,8 +17195,8 @@ function nextTableName(workbook) {
|
|
|
17014
17195
|
}
|
|
17015
17196
|
function uniqueHeaders(texts) {
|
|
17016
17197
|
const used = /* @__PURE__ */ new Set();
|
|
17017
|
-
return texts.map((
|
|
17018
|
-
let base =
|
|
17198
|
+
return texts.map((text2, i2) => {
|
|
17199
|
+
let base = text2.trim() || `Column${i2 + 1}`;
|
|
17019
17200
|
if (!used.has(base.toLowerCase())) {
|
|
17020
17201
|
used.add(base.toLowerCase());
|
|
17021
17202
|
return base;
|
|
@@ -17490,8 +17671,8 @@ function normalizeDigestAlgorithmName(name) {
|
|
|
17490
17671
|
// digest/base64.ts
|
|
17491
17672
|
var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
17492
17673
|
var VALUES = new Map([...ALPHABET].map((char, index2) => [char, index2]));
|
|
17493
|
-
function decodeBase64(
|
|
17494
|
-
const compact3 =
|
|
17674
|
+
function decodeBase64(text2) {
|
|
17675
|
+
const compact3 = text2.replace(/\s+/g, "");
|
|
17495
17676
|
const body2 = compact3.replace(/={1,2}$/, "");
|
|
17496
17677
|
if (body2.length % 4 === 1) return void 0;
|
|
17497
17678
|
if (compact3.length !== body2.length && compact3.length % 4 !== 0) return void 0;
|
|
@@ -19500,6 +19681,222 @@ function bordersView(border, theme2) {
|
|
|
19500
19681
|
return out;
|
|
19501
19682
|
}
|
|
19502
19683
|
|
|
19684
|
+
// xlsx/layout/sparkline-view.ts
|
|
19685
|
+
var DEFAULTS = {
|
|
19686
|
+
colorSeries: "#376092",
|
|
19687
|
+
colorNegative: "#D00000",
|
|
19688
|
+
colorAxis: "#000000",
|
|
19689
|
+
colorMarkers: "#D00000",
|
|
19690
|
+
colorFirst: "#D00000",
|
|
19691
|
+
colorLast: "#D00000",
|
|
19692
|
+
colorHigh: "#D00000",
|
|
19693
|
+
colorLow: "#D00000"
|
|
19694
|
+
};
|
|
19695
|
+
var COLUMN_GAP = 0.2;
|
|
19696
|
+
function extent(values2) {
|
|
19697
|
+
let min = Infinity;
|
|
19698
|
+
let max = -Infinity;
|
|
19699
|
+
for (const v of values2) {
|
|
19700
|
+
if (v === null) continue;
|
|
19701
|
+
if (v < min) min = v;
|
|
19702
|
+
if (v > max) max = v;
|
|
19703
|
+
}
|
|
19704
|
+
return min <= max ? { min, max } : void 0;
|
|
19705
|
+
}
|
|
19706
|
+
function sparklineValues(group, values2) {
|
|
19707
|
+
return group.displayEmptyCellsAs === "zero" ? values2.map((v) => v ?? 0) : [...values2];
|
|
19708
|
+
}
|
|
19709
|
+
function sparklineScale(group, all2, index2) {
|
|
19710
|
+
const own = extent(sparklineValues(group, all2[index2]?.values ?? []));
|
|
19711
|
+
const needsGroup = group.minAxisType === "group" || group.maxAxisType === "group";
|
|
19712
|
+
const shared = needsGroup ? extent(all2.flatMap((data) => sparklineValues(group, data.values))) : void 0;
|
|
19713
|
+
const end = (type, manual, key) => {
|
|
19714
|
+
if (type === "custom" && manual !== void 0) return manual;
|
|
19715
|
+
if (type === "group" && shared) return shared[key];
|
|
19716
|
+
return own?.[key];
|
|
19717
|
+
};
|
|
19718
|
+
const min = end(group.minAxisType, group.manualMin, "min");
|
|
19719
|
+
const max = end(group.maxAxisType, group.manualMax, "max");
|
|
19720
|
+
return min === void 0 || max === void 0 ? void 0 : { min, max };
|
|
19721
|
+
}
|
|
19722
|
+
function positions(group, data, n) {
|
|
19723
|
+
const dates = data.dates;
|
|
19724
|
+
if (group.dateAxis && dates && dates.length === n) {
|
|
19725
|
+
const span4 = extent(dates);
|
|
19726
|
+
if (span4) {
|
|
19727
|
+
const width = span4.max - span4.min;
|
|
19728
|
+
return dates.map((d) => d === null ? null : width ? (d - span4.min) / width : 0.5);
|
|
19729
|
+
}
|
|
19730
|
+
}
|
|
19731
|
+
return Array.from({ length: n }, (_, i2) => n === 1 ? 0.5 : i2 / (n - 1));
|
|
19732
|
+
}
|
|
19733
|
+
function pointFacts(values2) {
|
|
19734
|
+
const numbers3 = values2.filter((x) => x !== null);
|
|
19735
|
+
let last = values2.length - 1;
|
|
19736
|
+
while (last >= 0 && values2[last] === null) last--;
|
|
19737
|
+
return {
|
|
19738
|
+
high: Math.max(...numbers3),
|
|
19739
|
+
low: Math.min(...numbers3),
|
|
19740
|
+
first: values2.findIndex((x) => x !== null),
|
|
19741
|
+
last
|
|
19742
|
+
};
|
|
19743
|
+
}
|
|
19744
|
+
function pointColor(group, v, i2, facts, colors, markers) {
|
|
19745
|
+
let color = markers && group.markers ? colors.colorMarkers : void 0;
|
|
19746
|
+
if (group.negative && v < 0) color = colors.colorNegative;
|
|
19747
|
+
if (group.high && v === facts.high) color = colors.colorHigh;
|
|
19748
|
+
if (group.low && v === facts.low) color = colors.colorLow;
|
|
19749
|
+
if (group.first && i2 === facts.first) color = colors.colorFirst;
|
|
19750
|
+
if (group.last && i2 === facts.last) color = colors.colorLast;
|
|
19751
|
+
return color;
|
|
19752
|
+
}
|
|
19753
|
+
function resolveColors(group, theme2) {
|
|
19754
|
+
const out = { ...DEFAULTS };
|
|
19755
|
+
for (const key of Object.keys(DEFAULTS)) {
|
|
19756
|
+
const color = group[key];
|
|
19757
|
+
out[key] = resolveColor(color, theme2, DEFAULTS[key]) ?? DEFAULTS[key];
|
|
19758
|
+
}
|
|
19759
|
+
return out;
|
|
19760
|
+
}
|
|
19761
|
+
function sparklineView(group, data, scale2, theme2) {
|
|
19762
|
+
const colors = resolveColors(group, theme2);
|
|
19763
|
+
const view = {
|
|
19764
|
+
type: group.type,
|
|
19765
|
+
color: colors.colorSeries,
|
|
19766
|
+
lineWeightPt: group.lineWeight,
|
|
19767
|
+
lines: [],
|
|
19768
|
+
markers: [],
|
|
19769
|
+
columns: []
|
|
19770
|
+
};
|
|
19771
|
+
const values2 = sparklineValues(group, data.values);
|
|
19772
|
+
const n = values2.length;
|
|
19773
|
+
if (!n || !scale2) return view;
|
|
19774
|
+
const facts = pointFacts(values2);
|
|
19775
|
+
const xs = positions(group, data, n);
|
|
19776
|
+
const flip = (x) => group.rightToLeft ? 1 - x : x;
|
|
19777
|
+
const range2 = scale2.max - scale2.min;
|
|
19778
|
+
const yOf = (v) => range2 ? Math.max(0, Math.min(1, (scale2.max - v) / range2)) : 0.5;
|
|
19779
|
+
if (group.type === "line") {
|
|
19780
|
+
let segment = [];
|
|
19781
|
+
values2.forEach((v, i2) => {
|
|
19782
|
+
const x = xs[i2];
|
|
19783
|
+
if (v === null || x === null || x === void 0) {
|
|
19784
|
+
if (group.displayEmptyCellsAs === "gap" && segment.length) {
|
|
19785
|
+
view.lines.push(segment);
|
|
19786
|
+
segment = [];
|
|
19787
|
+
}
|
|
19788
|
+
return;
|
|
19789
|
+
}
|
|
19790
|
+
const point = { x: flip(x), y: yOf(v) };
|
|
19791
|
+
segment.push(point);
|
|
19792
|
+
const color = pointColor(group, v, i2, facts, colors, true);
|
|
19793
|
+
if (color) view.markers.push({ ...point, color });
|
|
19794
|
+
});
|
|
19795
|
+
if (segment.length) view.lines.push(segment);
|
|
19796
|
+
} else {
|
|
19797
|
+
const slot = 1 / n;
|
|
19798
|
+
const w = slot * (1 - COLUMN_GAP);
|
|
19799
|
+
const base = yOf(Math.max(scale2.min, Math.min(scale2.max, 0)));
|
|
19800
|
+
values2.forEach((v, i2) => {
|
|
19801
|
+
const position = xs[i2];
|
|
19802
|
+
if (v === null || position === null || position === void 0) return;
|
|
19803
|
+
if (v === 0) return;
|
|
19804
|
+
let top;
|
|
19805
|
+
let bottom;
|
|
19806
|
+
if (group.type === "stacked") [top, bottom] = v > 0 ? [0, 0.5] : [0.5, 1];
|
|
19807
|
+
else if (!range2) [top, bottom] = [0, 1];
|
|
19808
|
+
else [top, bottom] = [Math.min(base, yOf(v)), Math.max(base, yOf(v))];
|
|
19809
|
+
const centre = flip(slot / 2 + position * (1 - slot));
|
|
19810
|
+
const color = pointColor(group, v, i2, facts, colors, false) ?? view.color;
|
|
19811
|
+
view.columns.push({ x: centre - w / 2, y: top, w, h: bottom - top, color });
|
|
19812
|
+
});
|
|
19813
|
+
}
|
|
19814
|
+
if (group.type === "stacked") {
|
|
19815
|
+
if (group.displayXAxis) view.axis = { y: 0.5, color: colors.colorAxis };
|
|
19816
|
+
} else if (group.displayXAxis && range2 && scale2.min <= 0 && scale2.max >= 0)
|
|
19817
|
+
view.axis = { y: yOf(0), color: colors.colorAxis };
|
|
19818
|
+
return view;
|
|
19819
|
+
}
|
|
19820
|
+
|
|
19821
|
+
// xlsx/layout/sparkline-data.ts
|
|
19822
|
+
var MAX_POINTS = 1e4;
|
|
19823
|
+
var hostIndex = /* @__PURE__ */ new WeakMap();
|
|
19824
|
+
function hosts(sheet) {
|
|
19825
|
+
const groups = sheetSparklineGroups(sheet);
|
|
19826
|
+
let index2 = hostIndex.get(groups);
|
|
19827
|
+
if (!index2) {
|
|
19828
|
+
index2 = /* @__PURE__ */ new Map();
|
|
19829
|
+
for (const group of groups)
|
|
19830
|
+
group.sparklines.forEach((line2, i2) => {
|
|
19831
|
+
const key = cellKey(line2.host.start.row, line2.host.start.col);
|
|
19832
|
+
if (!index2.has(key)) index2.set(key, { group, index: i2 });
|
|
19833
|
+
});
|
|
19834
|
+
hostIndex.set(groups, index2);
|
|
19835
|
+
}
|
|
19836
|
+
return index2;
|
|
19837
|
+
}
|
|
19838
|
+
function hasSparklineAt(sheet, row2, col) {
|
|
19839
|
+
return hosts(sheet).has(cellKey(row2, col));
|
|
19840
|
+
}
|
|
19841
|
+
function resolveSparklineRange(workbook, sheet, formula) {
|
|
19842
|
+
const ref = formula.trim().replace(/^=/, "");
|
|
19843
|
+
const bang = ref.lastIndexOf("!");
|
|
19844
|
+
let target2 = sheet;
|
|
19845
|
+
if (bang >= 0) {
|
|
19846
|
+
const raw = ref.slice(0, bang);
|
|
19847
|
+
const name = /^'.*'$/.test(raw) ? raw.slice(1, -1).replace(/''/g, "'") : raw;
|
|
19848
|
+
target2 = sheetByName(workbook, name);
|
|
19849
|
+
}
|
|
19850
|
+
const range2 = parseRange(ref.slice(bang + 1).replace(/\$/g, ""));
|
|
19851
|
+
return target2 && range2 ? { sheet: target2, range: normalizeRange(range2) } : void 0;
|
|
19852
|
+
}
|
|
19853
|
+
var rowHidden = (sheet, row2) => sheet.rowInfo.get(row2)?.hidden === true;
|
|
19854
|
+
var colHidden = (sheet, col) => sheet.columns.some((c) => c.hidden === true && col >= c.min && col <= c.max);
|
|
19855
|
+
function readSparklineValues(sheet, range2, displayHidden) {
|
|
19856
|
+
let endRow = range2.end.row;
|
|
19857
|
+
if (endRow - range2.start.row >= MAX_POINTS) {
|
|
19858
|
+
let lastRow = range2.start.row;
|
|
19859
|
+
for (const row2 of sheet.rows.keys()) if (row2 > lastRow) lastRow = row2;
|
|
19860
|
+
endRow = Math.min(endRow, lastRow);
|
|
19861
|
+
}
|
|
19862
|
+
const out = [];
|
|
19863
|
+
for (let row2 = range2.start.row; row2 <= endRow && out.length < MAX_POINTS; row2++) {
|
|
19864
|
+
if (!displayHidden && rowHidden(sheet, row2)) continue;
|
|
19865
|
+
for (let col = range2.start.col; col <= range2.end.col && out.length < MAX_POINTS; col++) {
|
|
19866
|
+
if (!displayHidden && colHidden(sheet, col)) continue;
|
|
19867
|
+
const value2 = getCell(sheet, row2, col)?.value;
|
|
19868
|
+
out.push(typeof value2 === "number" && Number.isFinite(value2) ? value2 : null);
|
|
19869
|
+
}
|
|
19870
|
+
}
|
|
19871
|
+
return out;
|
|
19872
|
+
}
|
|
19873
|
+
function groupData(workbook, sheet, group) {
|
|
19874
|
+
const dateRange = group.dateAxis && group.dateFormula;
|
|
19875
|
+
const dates = dateRange ? resolveSparklineRange(workbook, sheet, dateRange) : void 0;
|
|
19876
|
+
const dateValues = dates ? readSparklineValues(dates.sheet, dates.range, group.displayHidden) : void 0;
|
|
19877
|
+
return group.sparklines.map((line2) => {
|
|
19878
|
+
const source = line2.formula ? resolveSparklineRange(workbook, sheet, line2.formula) : void 0;
|
|
19879
|
+
const values2 = source ? readSparklineValues(source.sheet, source.range, group.displayHidden) : [];
|
|
19880
|
+
return dateValues ? { values: values2, dates: dateValues } : { values: values2 };
|
|
19881
|
+
});
|
|
19882
|
+
}
|
|
19883
|
+
function sparklineViewAt(workbook, sheetIndex2, row2, col) {
|
|
19884
|
+
const sheet = workbook.sheets[sheetIndex2];
|
|
19885
|
+
if (!sheet) return void 0;
|
|
19886
|
+
const entry = hosts(sheet).get(cellKey(row2, col));
|
|
19887
|
+
if (!entry) return void 0;
|
|
19888
|
+
const { group, index: index2 } = entry;
|
|
19889
|
+
const needsGroup = group.minAxisType === "group" || group.maxAxisType === "group";
|
|
19890
|
+
const data = needsGroup ? groupData(workbook, sheet, group) : groupData(workbook, sheet, { ...group, sparklines: [group.sparklines[index2]] });
|
|
19891
|
+
const at = needsGroup ? index2 : 0;
|
|
19892
|
+
return sparklineView(
|
|
19893
|
+
group,
|
|
19894
|
+
data[at] ?? { values: [] },
|
|
19895
|
+
sparklineScale(group, data, at),
|
|
19896
|
+
workbook.theme
|
|
19897
|
+
);
|
|
19898
|
+
}
|
|
19899
|
+
|
|
19503
19900
|
// xlsx/layout/units.ts
|
|
19504
19901
|
var DEFAULT_MAX_DIGIT_WIDTH = 7;
|
|
19505
19902
|
var DEFAULT_BASE_COL_WIDTH = 8;
|
|
@@ -19603,6 +20000,8 @@ function cellView(workbook, sheetIndex2, row2, col, cf, options = {}) {
|
|
|
19603
20000
|
if (fill) view.fill = fill;
|
|
19604
20001
|
if (conditional?.dataBar) view.dataBar = conditional.dataBar;
|
|
19605
20002
|
if (conditional?.icon) view.icon = conditional.icon;
|
|
20003
|
+
const sparkline = sparklineViewAt(workbook, sheetIndex2, row2, col);
|
|
20004
|
+
if (sparkline) view.sparkline = sparkline;
|
|
19606
20005
|
const link = sheet.hyperlinks.find((h2) => rangeContains(h2.range, { row: row2, col }));
|
|
19607
20006
|
if (link) {
|
|
19608
20007
|
view.hasHyperlink = true;
|
|
@@ -19809,9 +20208,9 @@ function lineHeightPoints(sizePt) {
|
|
|
19809
20208
|
}
|
|
19810
20209
|
return Math.max(0.75, Math.ceil(height / 0.75 - 1e-9) * 0.75);
|
|
19811
20210
|
}
|
|
19812
|
-
function wrappedLineCount(
|
|
20211
|
+
function wrappedLineCount(text2, width, measure2) {
|
|
19813
20212
|
let lines = 0;
|
|
19814
|
-
for (const paragraph of
|
|
20213
|
+
for (const paragraph of text2.split(/\r?\n/)) {
|
|
19815
20214
|
lines++;
|
|
19816
20215
|
if (width <= 0) continue;
|
|
19817
20216
|
let current = "";
|
|
@@ -19852,13 +20251,13 @@ function autoFitRowHeight(workbook, sheetIndex2, row2, measure2) {
|
|
|
19852
20251
|
let lines = 1;
|
|
19853
20252
|
if (view.wrap) {
|
|
19854
20253
|
const width = metrics.colWidth(col) - COLUMN_PADDING_PX - 1 - view.indentPx;
|
|
19855
|
-
lines = wrappedLineCount(view.text, width, (
|
|
20254
|
+
lines = wrappedLineCount(view.text, width, (text2) => measure2(text2, view.font));
|
|
19856
20255
|
}
|
|
19857
20256
|
tallest = Math.max(tallest, lines * lineHeightPoints(sizePt));
|
|
19858
20257
|
}
|
|
19859
20258
|
return tallest > 0 ? tallest : sheet.defaultRowHeight;
|
|
19860
20259
|
}
|
|
19861
|
-
var approximateMeasure = (
|
|
20260
|
+
var approximateMeasure = (text2, font) => text2.length * font.sizePx * (font.bold ? 0.58 : 0.53);
|
|
19862
20261
|
|
|
19863
20262
|
// xlsx/edit/row-autofit.ts
|
|
19864
20263
|
var MAX_HEIGHT2 = 409;
|
|
@@ -20121,19 +20520,19 @@ function setTabColor(ctx, index2, color) {
|
|
|
20121
20520
|
|
|
20122
20521
|
// xlsx/edit/validation-list.ts
|
|
20123
20522
|
function listSource(workbook, sheet, formula, evaluate, at, depth = 0) {
|
|
20124
|
-
const
|
|
20125
|
-
const literal2 = /^"((?:[^"]|"")*)"$/.exec(
|
|
20523
|
+
const text2 = formula.replace(/^=/, "").trim();
|
|
20524
|
+
const literal2 = /^"((?:[^"]|"")*)"$/.exec(text2);
|
|
20126
20525
|
if (literal2)
|
|
20127
20526
|
return (literal2[1] ?? "").replace(/""/g, '"').split(",").map((s) => s.trim()).filter((s) => s !== "").map((s) => ({ text: s, value: parseCellInput(s, { date1904: workbook.date1904 }).value }));
|
|
20128
20527
|
const named2 = workbook.definedNames.find(
|
|
20129
|
-
(n) => n.name.toLowerCase() ===
|
|
20528
|
+
(n) => n.name.toLowerCase() === text2.toLowerCase() && (n.localSheet === void 0 || n.localSheet === sheet)
|
|
20130
20529
|
);
|
|
20131
20530
|
if (named2 && depth < 4)
|
|
20132
20531
|
return listSource(workbook, sheet, named2.formula, evaluate, at, depth + 1);
|
|
20133
|
-
const ref = /^(?:'((?:[^']|'')+)'|([^'!]+))!(.+)$/.exec(
|
|
20532
|
+
const ref = /^(?:'((?:[^']|'')+)'|([^'!]+))!(.+)$/.exec(text2);
|
|
20134
20533
|
const sheetName = ref ? ref[1]?.replace(/''/g, "'") ?? ref[2] : void 0;
|
|
20135
20534
|
const target2 = sheetName ? sheetByName(workbook, sheetName) : workbook.sheets[sheet];
|
|
20136
|
-
const range2 = parseRange((ref ? ref[3] ?? "" :
|
|
20535
|
+
const range2 = parseRange((ref ? ref[3] ?? "" : text2).replace(/\$/g, ""));
|
|
20137
20536
|
if (target2 && range2) {
|
|
20138
20537
|
const out = [];
|
|
20139
20538
|
forEachCellInRange(target2, range2, (cell) => {
|
|
@@ -20144,7 +20543,7 @@ function listSource(workbook, sheet, formula, evaluate, at, depth = 0) {
|
|
|
20144
20543
|
}
|
|
20145
20544
|
if (!evaluate) return void 0;
|
|
20146
20545
|
try {
|
|
20147
|
-
const value2 = evaluate(
|
|
20546
|
+
const value2 = evaluate(text2, at);
|
|
20148
20547
|
return value2 === null ? [] : [{ text: rawText(value2), value: value2 }];
|
|
20149
20548
|
} catch {
|
|
20150
20549
|
return void 0;
|
|
@@ -20183,12 +20582,12 @@ function validationAt(workbook, sheet, row2, col) {
|
|
|
20183
20582
|
}
|
|
20184
20583
|
function operand3(formula, evaluate, at) {
|
|
20185
20584
|
if (formula === void 0) return void 0;
|
|
20186
|
-
const
|
|
20187
|
-
if (
|
|
20188
|
-
const quoted = /^"((?:[^"]|"")*)"$/.exec(
|
|
20585
|
+
const text2 = formula.replace(/^=/, "").trim();
|
|
20586
|
+
if (text2 !== "" && Number.isFinite(Number(text2))) return Number(text2);
|
|
20587
|
+
const quoted = /^"((?:[^"]|"")*)"$/.exec(text2);
|
|
20189
20588
|
if (quoted) return (quoted[1] ?? "").replace(/""/g, '"');
|
|
20190
20589
|
try {
|
|
20191
|
-
return evaluate(
|
|
20590
|
+
return evaluate(text2, at);
|
|
20192
20591
|
} catch {
|
|
20193
20592
|
return void 0;
|
|
20194
20593
|
}
|
|
@@ -20230,8 +20629,8 @@ function relativeTo(dv, formula, at) {
|
|
|
20230
20629
|
const dRow = at.row - top;
|
|
20231
20630
|
const dCol = at.col - left2;
|
|
20232
20631
|
if (dRow === 0 && dCol === 0) return formula;
|
|
20233
|
-
const
|
|
20234
|
-
return translateFormula(
|
|
20632
|
+
const text2 = formula.replace(/^=/, "");
|
|
20633
|
+
return translateFormula(text2, dRow, dCol);
|
|
20235
20634
|
}
|
|
20236
20635
|
function withProposedValue(workbook, at, value2, fn) {
|
|
20237
20636
|
const sheet = workbook.sheets[at.sheet];
|
|
@@ -20454,7 +20853,7 @@ function createEditSession(workbook, options = {}) {
|
|
|
20454
20853
|
return {
|
|
20455
20854
|
workbook,
|
|
20456
20855
|
calc,
|
|
20457
|
-
setCellInput: (s, r, c,
|
|
20856
|
+
setCellInput: (s, r, c, text2) => setCellInput(ctx, s, r, c, text2),
|
|
20458
20857
|
setCellValue: (s, r, c, value2) => setCellValue(ctx, s, r, c, value2),
|
|
20459
20858
|
setRangeValues: (s, at, rows2) => setRangeValues(ctx, s, at, rows2),
|
|
20460
20859
|
clearRange: (s, range2, what) => clearRange(ctx, s, range2, what),
|
|
@@ -20487,7 +20886,7 @@ function createEditSession(workbook, options = {}) {
|
|
|
20487
20886
|
setSheetState: (i2, state) => setSheetState(ctx, i2, state),
|
|
20488
20887
|
setTabColor: (i2, color) => setTabColor(ctx, i2, color),
|
|
20489
20888
|
setFreeze: (s, freeze) => setFreeze(ctx, s, freeze),
|
|
20490
|
-
setComment: (s, at,
|
|
20889
|
+
setComment: (s, at, text2, author) => setComment(ctx, s, at, text2, author),
|
|
20491
20890
|
setHyperlink: (s, range2, link) => setHyperlink(ctx, s, range2, link),
|
|
20492
20891
|
addConditionalFormat: (s, cf) => addConditionalFormat(ctx, s, cf),
|
|
20493
20892
|
clearConditionalFormats: (s, range2) => clearConditionalFormats(ctx, s, range2),
|
|
@@ -20564,18 +20963,19 @@ function createEditSession(workbook, options = {}) {
|
|
|
20564
20963
|
onChange(listener) {
|
|
20565
20964
|
listeners2.add(listener);
|
|
20566
20965
|
return () => listeners2.delete(listener);
|
|
20567
|
-
}
|
|
20966
|
+
},
|
|
20967
|
+
applyExternal: (apply) => applyExternal({ calculator, emit, busy: () => !!open }, apply)
|
|
20568
20968
|
};
|
|
20569
20969
|
}
|
|
20570
20970
|
|
|
20571
20971
|
// xlsx/layout/cf-helpers.ts
|
|
20572
20972
|
function literal(formula) {
|
|
20573
|
-
const
|
|
20574
|
-
if (/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(
|
|
20575
|
-
const quoted = /^"((?:[^"]|"")*)"$/.exec(
|
|
20973
|
+
const text2 = formula.trim();
|
|
20974
|
+
if (/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text2)) return Number(text2);
|
|
20975
|
+
const quoted = /^"((?:[^"]|"")*)"$/.exec(text2);
|
|
20576
20976
|
if (quoted) return (quoted[1] ?? "").replace(/""/g, '"');
|
|
20577
|
-
if (/^TRUE$/i.test(
|
|
20578
|
-
if (/^FALSE$/i.test(
|
|
20977
|
+
if (/^TRUE$/i.test(text2)) return true;
|
|
20978
|
+
if (/^FALSE$/i.test(text2)) return false;
|
|
20579
20979
|
return void 0;
|
|
20580
20980
|
}
|
|
20581
20981
|
function localTodaySerial(date1904) {
|
|
@@ -20922,12 +21322,12 @@ function createConditionalFormatEvaluator(workbook, sheetIndex2, evaluate, optio
|
|
|
20922
21322
|
case "beginsWith":
|
|
20923
21323
|
case "endsWith": {
|
|
20924
21324
|
if (isCellError(value2)) return false;
|
|
20925
|
-
const
|
|
21325
|
+
const text2 = valueText(value2).toLowerCase();
|
|
20926
21326
|
const needle = rule.text.toLowerCase();
|
|
20927
|
-
if (rule.type === "containsText") return
|
|
20928
|
-
if (rule.type === "notContainsText") return !
|
|
20929
|
-
if (rule.type === "beginsWith") return
|
|
20930
|
-
return
|
|
21327
|
+
if (rule.type === "containsText") return text2.includes(needle);
|
|
21328
|
+
if (rule.type === "notContainsText") return !text2.includes(needle);
|
|
21329
|
+
if (rule.type === "beginsWith") return text2.startsWith(needle);
|
|
21330
|
+
return text2.endsWith(needle);
|
|
20931
21331
|
}
|
|
20932
21332
|
case "timePeriod":
|
|
20933
21333
|
return typeof value2 === "number" && inTimePeriod(rule.timePeriod, value2, today(), workbook.date1904);
|
|
@@ -21058,7 +21458,7 @@ function overflowExtent(sheet, metrics, row2, col, textWidth, hAlign, maxSpan =
|
|
|
21058
21458
|
return result2();
|
|
21059
21459
|
}
|
|
21060
21460
|
|
|
21061
|
-
//
|
|
21461
|
+
// text/css-font-family.ts
|
|
21062
21462
|
var FALLBACKS = {
|
|
21063
21463
|
calibri: '"Calibri", "Carlito", "Segoe UI", Arial, sans-serif',
|
|
21064
21464
|
"calibri light": '"Calibri Light", "Calibri", "Carlito", "Segoe UI", Arial, sans-serif',
|
|
@@ -21459,7 +21859,7 @@ function styleCssFont(style2) {
|
|
|
21459
21859
|
}
|
|
21460
21860
|
function measure(ctx) {
|
|
21461
21861
|
const grid6 = ctx.grid();
|
|
21462
|
-
return grid6 ? (
|
|
21862
|
+
return grid6 ? (text2, style2) => grid6.measureText(text2, styleCssFont(style2)) : void 0;
|
|
21463
21863
|
}
|
|
21464
21864
|
var UNSET = void 0;
|
|
21465
21865
|
|
|
@@ -21838,19 +22238,19 @@ function mergeMessageModules(modules) {
|
|
|
21838
22238
|
for (const value2 of Object.values(module)) {
|
|
21839
22239
|
if (!value2 || typeof value2 !== "object" || Array.isArray(value2)) continue;
|
|
21840
22240
|
const entries = Object.entries(value2);
|
|
21841
|
-
if (!entries.every(([,
|
|
21842
|
-
for (const [key,
|
|
22241
|
+
if (!entries.every(([, text2]) => typeof text2 === "string")) continue;
|
|
22242
|
+
for (const [key, text2] of entries) merged[key] = text2;
|
|
21843
22243
|
}
|
|
21844
22244
|
}
|
|
21845
22245
|
return merged;
|
|
21846
22246
|
}
|
|
21847
22247
|
|
|
21848
22248
|
// i18n/translator.ts
|
|
21849
|
-
var
|
|
22249
|
+
var SINGLE2 = /\{(\w+)\}/g;
|
|
21850
22250
|
var DOUBLE = /\{\{\s*(\w+)\s*\}\}/g;
|
|
21851
22251
|
function interpolate(template, params, placeholder = "single") {
|
|
21852
22252
|
if (!params) return template;
|
|
21853
|
-
const pattern = placeholder === "double" ? DOUBLE :
|
|
22253
|
+
const pattern = placeholder === "double" ? DOUBLE : SINGLE2;
|
|
21854
22254
|
return template.replace(
|
|
21855
22255
|
pattern,
|
|
21856
22256
|
(match2, name) => Object.prototype.hasOwnProperty.call(params, name) && params[name] !== void 0 ? String(params[name]) : match2
|
|
@@ -21859,15 +22259,45 @@ function interpolate(template, params, placeholder = "single") {
|
|
|
21859
22259
|
function createTranslator(messages, fallbacks = [], options = {}) {
|
|
21860
22260
|
const placeholder = options.placeholder ?? "single";
|
|
21861
22261
|
return (key, params) => {
|
|
21862
|
-
let
|
|
21863
|
-
for (let i2 = 0;
|
|
21864
|
-
return interpolate(
|
|
22262
|
+
let text2 = messages?.[key];
|
|
22263
|
+
for (let i2 = 0; text2 === void 0 && i2 < fallbacks.length; i2++) text2 = fallbacks[i2]?.[key];
|
|
22264
|
+
return interpolate(text2 ?? options.missing?.(key) ?? key, params, placeholder);
|
|
21865
22265
|
};
|
|
21866
22266
|
}
|
|
21867
22267
|
|
|
21868
22268
|
// xlsx/ui/locales/merge.ts
|
|
21869
22269
|
var mergeStringModules = mergeMessageModules;
|
|
21870
22270
|
|
|
22271
|
+
// xlsx/ui/locales/de/collab.ts
|
|
22272
|
+
var collab_exports = {};
|
|
22273
|
+
__export(collab_exports, {
|
|
22274
|
+
collab: () => collab
|
|
22275
|
+
});
|
|
22276
|
+
var collab = {
|
|
22277
|
+
Share: "Freigeben",
|
|
22278
|
+
"Session name": "Sitzungsname",
|
|
22279
|
+
"Start sharing": "Freigabe starten",
|
|
22280
|
+
"Stop sharing": "Freigabe beenden",
|
|
22281
|
+
"People in this session": "Personen in dieser Sitzung",
|
|
22282
|
+
"Session: {room}": "Sitzung: {room}",
|
|
22283
|
+
"Not sharing.": "Keine Freigabe aktiv.",
|
|
22284
|
+
"Connecting...": "Verbindung wird hergestellt...",
|
|
22285
|
+
"Connected.": "Verbunden.",
|
|
22286
|
+
"Joining the session...": "Sitzung wird beigetreten...",
|
|
22287
|
+
"Disconnected. Changes are kept and sent when the connection returns.": "Getrennt. \xC4nderungen bleiben erhalten und werden gesendet, sobald die Verbindung zur\xFCck ist.",
|
|
22288
|
+
"The connection failed. Changes are kept and sent when the connection returns.": "Die Verbindung ist fehlgeschlagen. \xC4nderungen bleiben erhalten und werden gesendet, sobald die Verbindung zur\xFCck ist.",
|
|
22289
|
+
"Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Bearbeiten Sie diese Arbeitsmappe gemeinsam mit anderen. Alle, die derselben Sitzung beitreten, sehen \xC4nderungen sofort.",
|
|
22290
|
+
"Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Zellwerte, Formeln, Formate, Bl\xE4tter, Zeilen, Spalten, verbundene Zellen und Namen werden geteilt. Diagramme, Bilder, Kommentare, bedingte Formatierungen, Daten\xFCberpr\xFCfung, Tabellen und Seiteneinrichtung bleiben in diesem Fenster.",
|
|
22291
|
+
"Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Ohne einen von der Seite festgelegten Server verbindet eine Sitzung nur Fenster und Tabs dieses Browsers. Es wird nichts hochgeladen.",
|
|
22292
|
+
"Reconnected. Changes made while offline were sent.": "Wieder verbunden. Offline vorgenommene \xC4nderungen wurden gesendet.",
|
|
22293
|
+
"Connection lost. Keep working; your changes are sent when it returns.": "Verbindung verloren. Arbeiten Sie weiter; Ihre \xC4nderungen werden gesendet, sobald sie zur\xFCck ist.",
|
|
22294
|
+
"Sharing stopped because another workbook was opened.": "Die Freigabe wurde beendet, weil eine andere Arbeitsmappe ge\xF6ffnet wurde.",
|
|
22295
|
+
"Open or create a workbook before sharing it.": "\xD6ffnen oder erstellen Sie eine Arbeitsmappe, bevor Sie sie freigeben.",
|
|
22296
|
+
"Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Verwenden Sie f\xFCr den Sitzungsnamen 1 bis 128 Buchstaben, Ziffern, Bindestriche oder Unterstriche.",
|
|
22297
|
+
"This browser cannot share between windows; pass a server URL.": "Dieser Browser kann nicht zwischen Fenstern teilen; geben Sie eine Server-URL an.",
|
|
22298
|
+
"Stop the current collaboration session first.": "Beenden Sie zuerst die aktuelle Zusammenarbeitssitzung."
|
|
22299
|
+
};
|
|
22300
|
+
|
|
21871
22301
|
// xlsx/ui/locales/de/commands.ts
|
|
21872
22302
|
var commands_exports = {};
|
|
21873
22303
|
__export(commands_exports, {
|
|
@@ -23437,11 +23867,17 @@ var NAVIGATION_STRINGS = {
|
|
|
23437
23867
|
Hyperlinks: ["Liens hypertexte", "Hyperlinks", "Hiperv\xEDnculos", "\u8D85\u94FE\u63A5"],
|
|
23438
23868
|
"Sort and filter": ["Tri et filtre", "Sortieren und Filtern", "Ordenar y filtrar", "\u6392\u5E8F\u548C\u7B5B\u9009"],
|
|
23439
23869
|
"Freeze panes": ["Figer les volets", "Fenster fixieren", "Inmovilizar paneles", "\u51BB\u7ED3\u7A97\u683C"],
|
|
23440
|
-
"Pivot tables
|
|
23441
|
-
"Tableaux crois\xE9s dynamiques
|
|
23442
|
-
"PivotTables
|
|
23443
|
-
"Tablas din\xE1micas
|
|
23444
|
-
"\u6570\u636E\u900F\u89C6\u8868
|
|
23870
|
+
"Pivot tables (kept in the file but not shown)": [
|
|
23871
|
+
"Tableaux crois\xE9s dynamiques (conserv\xE9s dans le fichier mais non affich\xE9s)",
|
|
23872
|
+
"PivotTables (in der Datei erhalten, aber nicht angezeigt)",
|
|
23873
|
+
"Tablas din\xE1micas (se conservan en el archivo, pero no se muestran)",
|
|
23874
|
+
"\u6570\u636E\u900F\u89C6\u8868(\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\u4F46\u4E0D\u663E\u793A)"
|
|
23875
|
+
],
|
|
23876
|
+
"Creating or editing sparklines (existing ones are shown)": [
|
|
23877
|
+
"Cr\xE9ation ou modification de graphiques sparkline (ceux existants sont affich\xE9s)",
|
|
23878
|
+
"Sparklines erstellen oder bearbeiten (vorhandene werden angezeigt)",
|
|
23879
|
+
"Crear o editar minigr\xE1ficos (los existentes se muestran)",
|
|
23880
|
+
"\u521B\u5EFA\u6216\u7F16\u8F91\u8FF7\u4F60\u56FE(\u73B0\u6709\u8FF7\u4F60\u56FE\u4F1A\u663E\u793A)"
|
|
23445
23881
|
],
|
|
23446
23882
|
"Show Formulas": ["Afficher les formules", "Formeln anzeigen", "Mostrar f\xF3rmulas", "\u663E\u793A\u516C\u5F0F"],
|
|
23447
23883
|
"Manual calculation": ["Calcul manuel", "Manuelle Berechnung", "C\xE1lculo manual", "\u624B\u52A8\u8BA1\u7B97"],
|
|
@@ -25940,7 +26376,7 @@ var shell = {
|
|
|
25940
26376
|
"Inspect Workbook": "Arbeitsmappe pr\xFCfen",
|
|
25941
26377
|
"Compatibility notes": "Kompatibilit\xE4tshinweise",
|
|
25942
26378
|
"No compatibility notes for this workbook.": "Keine Kompatibilit\xE4tshinweise f\xFCr diese Arbeitsmappe.",
|
|
25943
|
-
"Charts are shown but not edited; pivot tables,
|
|
26379
|
+
"Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Diagramme und Sparklines werden angezeigt, aber nicht bearbeitet; PivotTables, Makros und andere nicht unterst\xFCtzte Teile bleiben in der Datei erhalten, werden aber nicht angezeigt.",
|
|
25944
26380
|
"This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "Diese Arbeitsmappe wurde aus einer Excel 97-2003-Datei (.xls) ge\xF6ffnet. Beim Speichern entsteht eine Excel-Arbeitsmappe (.xlsx); die urspr\xFCngliche .xls-Datei bleibt unver\xE4ndert.",
|
|
25945
26381
|
"This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "Diese Arbeitsmappe wurde aus einer CSV-Datei ge\xF6ffnet, die nur Werte enth\xE4lt. Beim Speichern entsteht eine Excel-Arbeitsmappe (.xlsx); verwenden Sie Exportieren, um CSV zu schreiben.",
|
|
25946
26382
|
"Macros are kept in the file but do not run in this editor.": "Makros bleiben in der Datei erhalten, werden in diesem Editor aber nicht ausgef\xFChrt.",
|
|
@@ -26057,11 +26493,42 @@ var shell = {
|
|
|
26057
26493
|
|
|
26058
26494
|
// xlsx/ui/locales/de/index.ts
|
|
26059
26495
|
var de = mergeStringModules({
|
|
26496
|
+
"./collab.ts": collab_exports,
|
|
26060
26497
|
"./commands.ts": commands_exports,
|
|
26061
26498
|
"./grid.ts": grid_exports,
|
|
26062
26499
|
"./shell.ts": shell_exports
|
|
26063
26500
|
});
|
|
26064
26501
|
|
|
26502
|
+
// xlsx/ui/locales/en/collab.ts
|
|
26503
|
+
var collab_exports2 = {};
|
|
26504
|
+
__export(collab_exports2, {
|
|
26505
|
+
collab: () => collab2
|
|
26506
|
+
});
|
|
26507
|
+
var collab2 = {
|
|
26508
|
+
Share: "Share",
|
|
26509
|
+
"Session name": "Session name",
|
|
26510
|
+
"Start sharing": "Start sharing",
|
|
26511
|
+
"Stop sharing": "Stop sharing",
|
|
26512
|
+
"People in this session": "People in this session",
|
|
26513
|
+
"Session: {room}": "Session: {room}",
|
|
26514
|
+
"Not sharing.": "Not sharing.",
|
|
26515
|
+
"Connecting...": "Connecting...",
|
|
26516
|
+
"Connected.": "Connected.",
|
|
26517
|
+
"Joining the session...": "Joining the session...",
|
|
26518
|
+
"Disconnected. Changes are kept and sent when the connection returns.": "Disconnected. Changes are kept and sent when the connection returns.",
|
|
26519
|
+
"The connection failed. Changes are kept and sent when the connection returns.": "The connection failed. Changes are kept and sent when the connection returns.",
|
|
26520
|
+
"Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.",
|
|
26521
|
+
"Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.",
|
|
26522
|
+
"Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.",
|
|
26523
|
+
"Reconnected. Changes made while offline were sent.": "Reconnected. Changes made while offline were sent.",
|
|
26524
|
+
"Connection lost. Keep working; your changes are sent when it returns.": "Connection lost. Keep working; your changes are sent when it returns.",
|
|
26525
|
+
"Sharing stopped because another workbook was opened.": "Sharing stopped because another workbook was opened.",
|
|
26526
|
+
"Open or create a workbook before sharing it.": "Open or create a workbook before sharing it.",
|
|
26527
|
+
"Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Use 1 to 128 letters, digits, hyphens or underscores for the room name.",
|
|
26528
|
+
"This browser cannot share between windows; pass a server URL.": "This browser cannot share between windows; pass a server URL.",
|
|
26529
|
+
"Stop the current collaboration session first.": "Stop the current collaboration session first."
|
|
26530
|
+
};
|
|
26531
|
+
|
|
26065
26532
|
// xlsx/ui/locales/en/commands.ts
|
|
26066
26533
|
var commands_exports2 = {};
|
|
26067
26534
|
__export(commands_exports2, {
|
|
@@ -26294,7 +26761,7 @@ var shell2 = {
|
|
|
26294
26761
|
"Inspect Workbook": "Inspect Workbook",
|
|
26295
26762
|
"Compatibility notes": "Compatibility notes",
|
|
26296
26763
|
"No compatibility notes for this workbook.": "No compatibility notes for this workbook.",
|
|
26297
|
-
"Charts are shown but not edited; pivot tables,
|
|
26764
|
+
"Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.",
|
|
26298
26765
|
"This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.",
|
|
26299
26766
|
"This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.",
|
|
26300
26767
|
"Macros are kept in the file but do not run in this editor.": "Macros are kept in the file but do not run in this editor.",
|
|
@@ -26411,11 +26878,42 @@ var shell2 = {
|
|
|
26411
26878
|
|
|
26412
26879
|
// xlsx/ui/locales/en/index.ts
|
|
26413
26880
|
var en = mergeStringModules({
|
|
26881
|
+
"./collab.ts": collab_exports2,
|
|
26414
26882
|
"./commands.ts": commands_exports2,
|
|
26415
26883
|
"./grid.ts": grid_exports2,
|
|
26416
26884
|
"./shell.ts": shell_exports2
|
|
26417
26885
|
});
|
|
26418
26886
|
|
|
26887
|
+
// xlsx/ui/locales/es/collab.ts
|
|
26888
|
+
var collab_exports3 = {};
|
|
26889
|
+
__export(collab_exports3, {
|
|
26890
|
+
collab: () => collab3
|
|
26891
|
+
});
|
|
26892
|
+
var collab3 = {
|
|
26893
|
+
Share: "Compartir",
|
|
26894
|
+
"Session name": "Nombre de la sesi\xF3n",
|
|
26895
|
+
"Start sharing": "Empezar a compartir",
|
|
26896
|
+
"Stop sharing": "Dejar de compartir",
|
|
26897
|
+
"People in this session": "Personas en esta sesi\xF3n",
|
|
26898
|
+
"Session: {room}": "Sesi\xF3n: {room}",
|
|
26899
|
+
"Not sharing.": "No se est\xE1 compartiendo.",
|
|
26900
|
+
"Connecting...": "Conectando...",
|
|
26901
|
+
"Connected.": "Conectado.",
|
|
26902
|
+
"Joining the session...": "Uni\xE9ndose a la sesi\xF3n...",
|
|
26903
|
+
"Disconnected. Changes are kept and sent when the connection returns.": "Desconectado. Los cambios se conservan y se env\xEDan cuando vuelva la conexi\xF3n.",
|
|
26904
|
+
"The connection failed. Changes are kept and sent when the connection returns.": "La conexi\xF3n fall\xF3. Los cambios se conservan y se env\xEDan cuando vuelva la conexi\xF3n.",
|
|
26905
|
+
"Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Edite este libro junto con otras personas. Todos los que se unan a la misma sesi\xF3n ver\xE1n los cambios a medida que se hacen.",
|
|
26906
|
+
"Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Se comparten los valores, f\xF3rmulas, formatos, hojas, filas, columnas, celdas combinadas y nombres. Los gr\xE1ficos, im\xE1genes, comentarios, formatos condicionales, validaci\xF3n de datos, tablas y la configuraci\xF3n de p\xE1gina permanecen en esta ventana.",
|
|
26907
|
+
"Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Sin un servidor definido por la p\xE1gina, una sesi\xF3n solo conecta ventanas y pesta\xF1as de este navegador. No se sube nada.",
|
|
26908
|
+
"Reconnected. Changes made while offline were sent.": "Reconectado. Se enviaron los cambios hechos sin conexi\xF3n.",
|
|
26909
|
+
"Connection lost. Keep working; your changes are sent when it returns.": "Se perdi\xF3 la conexi\xF3n. Siga trabajando; sus cambios se enviar\xE1n cuando vuelva.",
|
|
26910
|
+
"Sharing stopped because another workbook was opened.": "Se dej\xF3 de compartir porque se abri\xF3 otro libro.",
|
|
26911
|
+
"Open or create a workbook before sharing it.": "Abra o cree un libro antes de compartirlo.",
|
|
26912
|
+
"Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Use de 1 a 128 letras, d\xEDgitos, guiones o guiones bajos para el nombre de la sesi\xF3n.",
|
|
26913
|
+
"This browser cannot share between windows; pass a server URL.": "Este navegador no puede compartir entre ventanas; indique la URL de un servidor.",
|
|
26914
|
+
"Stop the current collaboration session first.": "Detenga primero la sesi\xF3n de colaboraci\xF3n actual."
|
|
26915
|
+
};
|
|
26916
|
+
|
|
26419
26917
|
// xlsx/ui/locales/es/commands.ts
|
|
26420
26918
|
var commands_exports3 = {};
|
|
26421
26919
|
__export(commands_exports3, {
|
|
@@ -26648,7 +27146,7 @@ var shell3 = {
|
|
|
26648
27146
|
"Inspect Workbook": "Inspeccionar libro",
|
|
26649
27147
|
"Compatibility notes": "Notas de compatibilidad",
|
|
26650
27148
|
"No compatibility notes for this workbook.": "No hay notas de compatibilidad para este libro.",
|
|
26651
|
-
"Charts are shown but not edited; pivot tables,
|
|
27149
|
+
"Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Los gr\xE1ficos y minigr\xE1ficos se muestran pero no se editan; las tablas din\xE1micas, macros y otras partes no compatibles se conservan en el archivo pero no se muestran.",
|
|
26652
27150
|
"This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "Este libro se abri\xF3 desde un archivo de Excel 97-2003 (.xls). Al guardar se escribe un libro de Excel (.xlsx); el archivo .xls original no se modifica.",
|
|
26653
27151
|
"This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "Este libro se abri\xF3 desde un archivo CSV, que solo conserva valores. Al guardar se escribe un libro de Excel (.xlsx); use Exportar para escribir CSV.",
|
|
26654
27152
|
"Macros are kept in the file but do not run in this editor.": "Las macros se conservan en el archivo pero no se ejecutan en este editor.",
|
|
@@ -26765,11 +27263,42 @@ var shell3 = {
|
|
|
26765
27263
|
|
|
26766
27264
|
// xlsx/ui/locales/es/index.ts
|
|
26767
27265
|
var es = mergeStringModules({
|
|
27266
|
+
"./collab.ts": collab_exports3,
|
|
26768
27267
|
"./commands.ts": commands_exports3,
|
|
26769
27268
|
"./grid.ts": grid_exports3,
|
|
26770
27269
|
"./shell.ts": shell_exports3
|
|
26771
27270
|
});
|
|
26772
27271
|
|
|
27272
|
+
// xlsx/ui/locales/fr/collab.ts
|
|
27273
|
+
var collab_exports4 = {};
|
|
27274
|
+
__export(collab_exports4, {
|
|
27275
|
+
collab: () => collab4
|
|
27276
|
+
});
|
|
27277
|
+
var collab4 = {
|
|
27278
|
+
Share: "Partager",
|
|
27279
|
+
"Session name": "Nom de la session",
|
|
27280
|
+
"Start sharing": "Commencer le partage",
|
|
27281
|
+
"Stop sharing": "Arr\xEAter le partage",
|
|
27282
|
+
"People in this session": "Personnes dans cette session",
|
|
27283
|
+
"Session: {room}": "Session : {room}",
|
|
27284
|
+
"Not sharing.": "Aucun partage en cours.",
|
|
27285
|
+
"Connecting...": "Connexion...",
|
|
27286
|
+
"Connected.": "Connect\xE9.",
|
|
27287
|
+
"Joining the session...": "Connexion \xE0 la session...",
|
|
27288
|
+
"Disconnected. Changes are kept and sent when the connection returns.": "D\xE9connect\xE9. Les modifications sont conserv\xE9es et envoy\xE9es au retour de la connexion.",
|
|
27289
|
+
"The connection failed. Changes are kept and sent when the connection returns.": "La connexion a \xE9chou\xE9. Les modifications sont conserv\xE9es et envoy\xE9es au retour de la connexion.",
|
|
27290
|
+
"Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Modifiez ce classeur avec d'autres personnes. Toutes les personnes qui rejoignent la m\xEAme session voient les modifications au fur et \xE0 mesure.",
|
|
27291
|
+
"Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Les valeurs, formules, formats, feuilles, lignes, colonnes, fusions et noms sont partag\xE9s. Les graphiques, images, commentaires, mises en forme conditionnelles, validations des donn\xE9es, tableaux et la mise en page restent dans cette fen\xEAtre.",
|
|
27292
|
+
"Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Sans serveur d\xE9fini par la page, une session ne relie que les fen\xEAtres et onglets de ce navigateur. Rien n'est t\xE9l\xE9vers\xE9.",
|
|
27293
|
+
"Reconnected. Changes made while offline were sent.": "Reconnect\xE9. Les modifications faites hors connexion ont \xE9t\xE9 envoy\xE9es.",
|
|
27294
|
+
"Connection lost. Keep working; your changes are sent when it returns.": "Connexion perdue. Continuez \xE0 travailler ; vos modifications seront envoy\xE9es \xE0 son retour.",
|
|
27295
|
+
"Sharing stopped because another workbook was opened.": "Le partage s'est arr\xEAt\xE9 car un autre classeur a \xE9t\xE9 ouvert.",
|
|
27296
|
+
"Open or create a workbook before sharing it.": "Ouvrez ou cr\xE9ez un classeur avant de le partager.",
|
|
27297
|
+
"Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Utilisez de 1 \xE0 128 lettres, chiffres, traits d'union ou traits de soulignement pour le nom de la session.",
|
|
27298
|
+
"This browser cannot share between windows; pass a server URL.": "Ce navigateur ne peut pas partager entre fen\xEAtres ; indiquez l'URL d'un serveur.",
|
|
27299
|
+
"Stop the current collaboration session first.": "Arr\xEAtez d'abord la session de collaboration en cours."
|
|
27300
|
+
};
|
|
27301
|
+
|
|
26773
27302
|
// xlsx/ui/locales/fr/commands.ts
|
|
26774
27303
|
var commands_exports4 = {};
|
|
26775
27304
|
__export(commands_exports4, {
|
|
@@ -27002,7 +27531,7 @@ var shell4 = {
|
|
|
27002
27531
|
"Inspect Workbook": "Inspecter le classeur",
|
|
27003
27532
|
"Compatibility notes": "Notes de compatibilit\xE9",
|
|
27004
27533
|
"No compatibility notes for this workbook.": "Aucune note de compatibilit\xE9 pour ce classeur.",
|
|
27005
|
-
"Charts are shown but not edited; pivot tables,
|
|
27534
|
+
"Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Les graphiques et graphiques sparkline sont affich\xE9s mais non modifiables ; les tableaux crois\xE9s dynamiques, macros et autres \xE9l\xE9ments non pris en charge sont conserv\xE9s dans le fichier mais pas affich\xE9s.",
|
|
27006
27535
|
"This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "Ce classeur a \xE9t\xE9 ouvert \xE0 partir d'un fichier Excel 97-2003 (.xls). L'enregistrement cr\xE9e un classeur Excel (.xlsx) ; le fichier .xls d'origine n'est pas modifi\xE9.",
|
|
27007
27536
|
"This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "Ce classeur a \xE9t\xE9 ouvert \xE0 partir d'un fichier CSV, qui ne conserve que les valeurs. L'enregistrement cr\xE9e un classeur Excel (.xlsx) ; utilisez Exporter pour \xE9crire un CSV.",
|
|
27008
27537
|
"Macros are kept in the file but do not run in this editor.": "Les macros sont conserv\xE9es dans le fichier mais ne s'ex\xE9cutent pas dans cet \xE9diteur.",
|
|
@@ -27119,11 +27648,42 @@ var shell4 = {
|
|
|
27119
27648
|
|
|
27120
27649
|
// xlsx/ui/locales/fr/index.ts
|
|
27121
27650
|
var fr = mergeStringModules({
|
|
27651
|
+
"./collab.ts": collab_exports4,
|
|
27122
27652
|
"./commands.ts": commands_exports4,
|
|
27123
27653
|
"./grid.ts": grid_exports4,
|
|
27124
27654
|
"./shell.ts": shell_exports4
|
|
27125
27655
|
});
|
|
27126
27656
|
|
|
27657
|
+
// xlsx/ui/locales/zh-CN/collab.ts
|
|
27658
|
+
var collab_exports5 = {};
|
|
27659
|
+
__export(collab_exports5, {
|
|
27660
|
+
collab: () => collab5
|
|
27661
|
+
});
|
|
27662
|
+
var collab5 = {
|
|
27663
|
+
Share: "\u5171\u4EAB",
|
|
27664
|
+
"Session name": "\u4F1A\u8BDD\u540D\u79F0",
|
|
27665
|
+
"Start sharing": "\u5F00\u59CB\u5171\u4EAB",
|
|
27666
|
+
"Stop sharing": "\u505C\u6B62\u5171\u4EAB",
|
|
27667
|
+
"People in this session": "\u6B64\u4F1A\u8BDD\u4E2D\u7684\u4EBA\u5458",
|
|
27668
|
+
"Session: {room}": "\u4F1A\u8BDD\uFF1A{room}",
|
|
27669
|
+
"Not sharing.": "\u672A\u5728\u5171\u4EAB\u3002",
|
|
27670
|
+
"Connecting...": "\u6B63\u5728\u8FDE\u63A5...",
|
|
27671
|
+
"Connected.": "\u5DF2\u8FDE\u63A5\u3002",
|
|
27672
|
+
"Joining the session...": "\u6B63\u5728\u52A0\u5165\u4F1A\u8BDD...",
|
|
27673
|
+
"Disconnected. Changes are kept and sent when the connection returns.": "\u5DF2\u65AD\u5F00\u8FDE\u63A5\u3002\u66F4\u6539\u4F1A\u88AB\u4FDD\u7559\uFF0C\u5E76\u5728\u8FDE\u63A5\u6062\u590D\u540E\u53D1\u9001\u3002",
|
|
27674
|
+
"The connection failed. Changes are kept and sent when the connection returns.": "\u8FDE\u63A5\u5931\u8D25\u3002\u66F4\u6539\u4F1A\u88AB\u4FDD\u7559\uFF0C\u5E76\u5728\u8FDE\u63A5\u6062\u590D\u540E\u53D1\u9001\u3002",
|
|
27675
|
+
"Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "\u4E0E\u4ED6\u4EBA\u4E00\u8D77\u7F16\u8F91\u6B64\u5DE5\u4F5C\u7C3F\u3002\u52A0\u5165\u540C\u4E00\u4F1A\u8BDD\u7684\u6BCF\u4E2A\u4EBA\u90FD\u4F1A\u5B9E\u65F6\u770B\u5230\u66F4\u6539\u3002",
|
|
27676
|
+
"Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "\u5355\u5143\u683C\u503C\u3001\u516C\u5F0F\u3001\u683C\u5F0F\u3001\u5DE5\u4F5C\u8868\u3001\u884C\u3001\u5217\u3001\u5408\u5E76\u5355\u5143\u683C\u548C\u540D\u79F0\u4F1A\u88AB\u5171\u4EAB\u3002\u56FE\u8868\u3001\u56FE\u7247\u3001\u6279\u6CE8\u3001\u6761\u4EF6\u683C\u5F0F\u3001\u6570\u636E\u9A8C\u8BC1\u3001\u8868\u683C\u548C\u9875\u9762\u8BBE\u7F6E\u4EC5\u4FDD\u7559\u5728\u6B64\u7A97\u53E3\u4E2D\u3002",
|
|
27677
|
+
"Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "\u5982\u679C\u9875\u9762\u672A\u8BBE\u7F6E\u670D\u52A1\u5668\uFF0C\u4F1A\u8BDD\u53EA\u8FDE\u63A5\u6B64\u6D4F\u89C8\u5668\u4E2D\u7684\u7A97\u53E3\u548C\u6807\u7B7E\u9875\u3002\u4E0D\u4F1A\u4E0A\u4F20\u4EFB\u4F55\u5185\u5BB9\u3002",
|
|
27678
|
+
"Reconnected. Changes made while offline were sent.": "\u5DF2\u91CD\u65B0\u8FDE\u63A5\u3002\u79BB\u7EBF\u65F6\u6240\u505A\u7684\u66F4\u6539\u5DF2\u53D1\u9001\u3002",
|
|
27679
|
+
"Connection lost. Keep working; your changes are sent when it returns.": "\u8FDE\u63A5\u5DF2\u65AD\u5F00\u3002\u8BF7\u7EE7\u7EED\u5DE5\u4F5C\uFF0C\u8FDE\u63A5\u6062\u590D\u540E\u4F1A\u53D1\u9001\u60A8\u7684\u66F4\u6539\u3002",
|
|
27680
|
+
"Sharing stopped because another workbook was opened.": "\u7531\u4E8E\u6253\u5F00\u4E86\u53E6\u4E00\u4E2A\u5DE5\u4F5C\u7C3F\uFF0C\u5171\u4EAB\u5DF2\u505C\u6B62\u3002",
|
|
27681
|
+
"Open or create a workbook before sharing it.": "\u8BF7\u5148\u6253\u5F00\u6216\u521B\u5EFA\u5DE5\u4F5C\u7C3F\uFF0C\u7136\u540E\u518D\u5171\u4EAB\u3002",
|
|
27682
|
+
"Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "\u4F1A\u8BDD\u540D\u79F0\u8BF7\u4F7F\u7528 1 \u5230 128 \u4E2A\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u8FDE\u5B57\u7B26\u6216\u4E0B\u5212\u7EBF\u3002",
|
|
27683
|
+
"This browser cannot share between windows; pass a server URL.": "\u6B64\u6D4F\u89C8\u5668\u65E0\u6CD5\u5728\u7A97\u53E3\u4E4B\u95F4\u5171\u4EAB\uFF1B\u8BF7\u63D0\u4F9B\u670D\u52A1\u5668 URL\u3002",
|
|
27684
|
+
"Stop the current collaboration session first.": "\u8BF7\u5148\u505C\u6B62\u5F53\u524D\u534F\u4F5C\u4F1A\u8BDD\u3002"
|
|
27685
|
+
};
|
|
27686
|
+
|
|
27127
27687
|
// xlsx/ui/locales/zh-CN/commands.ts
|
|
27128
27688
|
var commands_exports5 = {};
|
|
27129
27689
|
__export(commands_exports5, {
|
|
@@ -27356,7 +27916,7 @@ var shell5 = {
|
|
|
27356
27916
|
"Inspect Workbook": "\u68C0\u67E5\u5DE5\u4F5C\u7C3F",
|
|
27357
27917
|
"Compatibility notes": "\u517C\u5BB9\u6027\u8BF4\u660E",
|
|
27358
27918
|
"No compatibility notes for this workbook.": "\u6B64\u5DE5\u4F5C\u7C3F\u6CA1\u6709\u517C\u5BB9\u6027\u8BF4\u660E\u3002",
|
|
27359
|
-
"Charts are shown but not edited; pivot tables,
|
|
27919
|
+
"Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "\u56FE\u8868\u548C\u8FF7\u4F60\u56FE\u4EC5\u663E\u793A\uFF0C\u4E0D\u53EF\u7F16\u8F91\uFF1B\u6570\u636E\u900F\u89C6\u8868\u3001\u5B8F\u548C\u5176\u4ED6\u4E0D\u652F\u6301\u7684\u90E8\u5206\u4F1A\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\uFF0C\u4F46\u4E0D\u663E\u793A\u3002",
|
|
27360
27920
|
"This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "\u6B64\u5DE5\u4F5C\u7C3F\u662F\u4ECE Excel 97-2003 \u6587\u4EF6 (.xls) \u6253\u5F00\u7684\u3002\u4FDD\u5B58\u65F6\u4F1A\u5199\u5165 Excel \u5DE5\u4F5C\u7C3F (.xlsx)\uFF1B\u539F\u59CB .xls \u6587\u4EF6\u4E0D\u4F1A\u66F4\u6539\u3002",
|
|
27361
27921
|
"This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "\u6B64\u5DE5\u4F5C\u7C3F\u662F\u4ECE\u4EC5\u4FDD\u7559\u503C\u7684 CSV \u6587\u4EF6\u6253\u5F00\u7684\u3002\u4FDD\u5B58\u65F6\u4F1A\u5199\u5165 Excel \u5DE5\u4F5C\u7C3F (.xlsx)\uFF1B\u4F7F\u7528\u201C\u5BFC\u51FA\u201D\u5199\u5165 CSV\u3002",
|
|
27362
27922
|
"Macros are kept in the file but do not run in this editor.": "\u5B8F\u4F1A\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\uFF0C\u4F46\u4E0D\u4F1A\u5728\u6B64\u7F16\u8F91\u5668\u4E2D\u8FD0\u884C\u3002",
|
|
@@ -27473,6 +28033,7 @@ var shell5 = {
|
|
|
27473
28033
|
|
|
27474
28034
|
// xlsx/ui/locales/zh-CN/index.ts
|
|
27475
28035
|
var zhCN = mergeStringModules({
|
|
28036
|
+
"./collab.ts": collab_exports5,
|
|
27476
28037
|
"./commands.ts": commands_exports5,
|
|
27477
28038
|
"./grid.ts": grid_exports5,
|
|
27478
28039
|
"./shell.ts": shell_exports5
|
|
@@ -27490,8 +28051,8 @@ var STRINGS = {
|
|
|
27490
28051
|
function normalizeEditorLocale(value2) {
|
|
27491
28052
|
return normalizeLocale(value2, EDITOR_LOCALES, "en");
|
|
27492
28053
|
}
|
|
27493
|
-
function fillTemplate(
|
|
27494
|
-
return interpolate(
|
|
28054
|
+
function fillTemplate(text2, vars) {
|
|
28055
|
+
return interpolate(text2, vars);
|
|
27495
28056
|
}
|
|
27496
28057
|
function translate(locale, key, vars) {
|
|
27497
28058
|
return createTranslator(STRINGS[locale], [STRINGS.en])(key, vars);
|
|
@@ -27508,8 +28069,8 @@ function formatNumber2(locale, value2, digits2 = 10) {
|
|
|
27508
28069
|
}
|
|
27509
28070
|
function sheetBaseName(t) {
|
|
27510
28071
|
const key = "sheet.default-name";
|
|
27511
|
-
const
|
|
27512
|
-
return
|
|
28072
|
+
const text2 = t(key);
|
|
28073
|
+
return text2 && text2 !== key ? text2 : "Sheet";
|
|
27513
28074
|
}
|
|
27514
28075
|
|
|
27515
28076
|
// xlsx/ui/commands/cells.ts
|
|
@@ -29269,6 +29830,11 @@ function tabMenu(state, actions) {
|
|
|
29269
29830
|
);
|
|
29270
29831
|
}
|
|
29271
29832
|
|
|
29833
|
+
// xlsx/ui/context.ts
|
|
29834
|
+
function historyOf(ctx) {
|
|
29835
|
+
return ctx.history ? ctx.history() : ctx.session();
|
|
29836
|
+
}
|
|
29837
|
+
|
|
29272
29838
|
// xlsx/ui/dialogs.ts
|
|
29273
29839
|
function createDialogRegistry(context, onError) {
|
|
29274
29840
|
const openers = /* @__PURE__ */ new Map();
|
|
@@ -29524,8 +30090,8 @@ var DirtyState = class {
|
|
|
29524
30090
|
};
|
|
29525
30091
|
|
|
29526
30092
|
// xlsx/ui/formula-bar/name-resolve.ts
|
|
29527
|
-
function parseSheetReference(workbook, activeSheet,
|
|
29528
|
-
const ref =
|
|
30093
|
+
function parseSheetReference(workbook, activeSheet, text2) {
|
|
30094
|
+
const ref = text2.trim().replace(/^=/, "");
|
|
29529
30095
|
const bang = ref.lastIndexOf("!");
|
|
29530
30096
|
let sheet = activeSheet;
|
|
29531
30097
|
if (bang >= 0) {
|
|
@@ -29543,8 +30109,8 @@ function findDefinedName2(workbook, sheet, name) {
|
|
|
29543
30109
|
const matches2 = workbook.definedNames.filter((d) => d.name.toLowerCase() === lower2);
|
|
29544
30110
|
return matches2.find((d) => d.localSheet === sheet) ?? matches2.find((d) => d.localSheet === void 0);
|
|
29545
30111
|
}
|
|
29546
|
-
function resolveNameBox(workbook, activeSheet,
|
|
29547
|
-
const input =
|
|
30112
|
+
function resolveNameBox(workbook, activeSheet, text2) {
|
|
30113
|
+
const input = text2.trim();
|
|
29548
30114
|
if (!input) return { kind: "invalid" };
|
|
29549
30115
|
const ref = parseSheetReference(workbook, activeSheet, input);
|
|
29550
30116
|
if (ref) return { kind: "go", ...ref };
|
|
@@ -29655,10 +30221,10 @@ function textAlign(hAlign) {
|
|
|
29655
30221
|
if (hAlign === "justify" || hAlign === "distributed") return "justify";
|
|
29656
30222
|
return "left";
|
|
29657
30223
|
}
|
|
29658
|
-
function repeatToFill(
|
|
29659
|
-
if (!
|
|
30224
|
+
function repeatToFill(text2, textWidth, cellWidth) {
|
|
30225
|
+
if (!text2 || textWidth <= 0) return text2;
|
|
29660
30226
|
const times = Math.max(1, Math.floor(cellWidth / textWidth));
|
|
29661
|
-
return
|
|
30227
|
+
return text2.repeat(Math.min(times, 500));
|
|
29662
30228
|
}
|
|
29663
30229
|
function hashes(cellInnerWidth, hashWidth) {
|
|
29664
30230
|
const n = Math.max(1, Math.floor(cellInnerWidth / Math.max(1, hashWidth)));
|
|
@@ -29668,9 +30234,9 @@ function hashes(cellInnerWidth, hashWidth) {
|
|
|
29668
30234
|
// xlsx/ui/grid/cell-items.ts
|
|
29669
30235
|
var PADDING = 2;
|
|
29670
30236
|
function isBlankView(view) {
|
|
29671
|
-
return view.text === "" && !view.fill && !hasBorders(view.borders) && !view.dataBar && !view.icon && !view.hasComment;
|
|
30237
|
+
return view.text === "" && !view.fill && !hasBorders(view.borders) && !view.dataBar && !view.icon && !view.sparkline && !view.hasComment;
|
|
29672
30238
|
}
|
|
29673
|
-
function textWidthOf(input, view,
|
|
30239
|
+
function textWidthOf(input, view, text2) {
|
|
29674
30240
|
if (view.rich?.length)
|
|
29675
30241
|
return view.rich.reduce(
|
|
29676
30242
|
(sum2, run) => sum2 + input.measure(run.text, cssFont(run.font, input.zoom)),
|
|
@@ -29678,7 +30244,7 @@ function textWidthOf(input, view, text) {
|
|
|
29678
30244
|
);
|
|
29679
30245
|
const font = cssFont(view.font, input.zoom);
|
|
29680
30246
|
let widest = 0;
|
|
29681
|
-
for (const line2 of
|
|
30247
|
+
for (const line2 of text2.split("\n")) widest = Math.max(widest, input.measure(line2, font));
|
|
29682
30248
|
return widest;
|
|
29683
30249
|
}
|
|
29684
30250
|
function makeItem(input, row2, col, view, merge2) {
|
|
@@ -29721,7 +30287,7 @@ function makeItem(input, row2, col, view, merge2) {
|
|
|
29721
30287
|
return item;
|
|
29722
30288
|
}
|
|
29723
30289
|
if (view.overflow && !merge2 && measured > inner2) {
|
|
29724
|
-
const
|
|
30290
|
+
const extent2 = overflowExtent(
|
|
29725
30291
|
input.sheet,
|
|
29726
30292
|
metrics,
|
|
29727
30293
|
row2,
|
|
@@ -29729,9 +30295,9 @@ function makeItem(input, row2, col, view, merge2) {
|
|
|
29729
30295
|
measured + 2 * PADDING,
|
|
29730
30296
|
view.hAlign
|
|
29731
30297
|
);
|
|
29732
|
-
item.textLeft =
|
|
29733
|
-
item.textWidth =
|
|
29734
|
-
item.overflowing =
|
|
30298
|
+
item.textLeft = extent2.left - x;
|
|
30299
|
+
item.textWidth = extent2.right - extent2.left;
|
|
30300
|
+
item.overflowing = extent2.startCol !== col || extent2.endCol !== col;
|
|
29735
30301
|
}
|
|
29736
30302
|
return item;
|
|
29737
30303
|
}
|
|
@@ -29840,9 +30406,9 @@ function createEditBridge() {
|
|
|
29840
30406
|
return () => listeners2.delete(listener);
|
|
29841
30407
|
},
|
|
29842
30408
|
begin: (options = {}) => driver?.begin(options) ?? false,
|
|
29843
|
-
update(
|
|
30409
|
+
update(text2, caret, source) {
|
|
29844
30410
|
if (!state.editing) return;
|
|
29845
|
-
state = { ...state, text, caret, source };
|
|
30411
|
+
state = { ...state, text: text2, caret, source };
|
|
29846
30412
|
driver?.changed(source);
|
|
29847
30413
|
emit(source);
|
|
29848
30414
|
},
|
|
@@ -30207,18 +30773,18 @@ function activeRef(selection) {
|
|
|
30207
30773
|
return formatAddress(selection.active);
|
|
30208
30774
|
}
|
|
30209
30775
|
function parseSelectionRef(ref, workbook) {
|
|
30210
|
-
let
|
|
30776
|
+
let text2 = ref.trim();
|
|
30211
30777
|
let sheet;
|
|
30212
|
-
const bang =
|
|
30778
|
+
const bang = text2.lastIndexOf("!");
|
|
30213
30779
|
if (bang > 0) {
|
|
30214
|
-
const name =
|
|
30780
|
+
const name = text2.slice(0, bang).replace(/^'(.*)'$/, "$1").replace(/''/g, "'");
|
|
30215
30781
|
const index2 = workbook?.sheets.findIndex((item) => item.name.toLowerCase() === name.toLowerCase()) ?? -1;
|
|
30216
30782
|
if (index2 < 0) return void 0;
|
|
30217
30783
|
sheet = index2;
|
|
30218
|
-
|
|
30784
|
+
text2 = text2.slice(bang + 1);
|
|
30219
30785
|
}
|
|
30220
30786
|
const ranges = [];
|
|
30221
|
-
for (const part of
|
|
30787
|
+
for (const part of text2.split(",")) {
|
|
30222
30788
|
const range2 = parseRange(part.trim());
|
|
30223
30789
|
if (!range2) return void 0;
|
|
30224
30790
|
ranges.push(range2);
|
|
@@ -30384,7 +30950,7 @@ var CellViewCache = class {
|
|
|
30384
30950
|
let result2 = null;
|
|
30385
30951
|
if (workbook && sheet) {
|
|
30386
30952
|
const stored = getCell(sheet, row2, col);
|
|
30387
|
-
const plain2 = !stored && effectiveStyleId(sheet, row2, col) === 0 && !cfCovers(sheet, row2, col);
|
|
30953
|
+
const plain2 = !stored && effectiveStyleId(sheet, row2, col) === 0 && !cfCovers(sheet, row2, col) && !hasSparklineAt(sheet, row2, col);
|
|
30388
30954
|
if (!plain2) {
|
|
30389
30955
|
const view = cellView(workbook, this.#source.sheetIndex(), row2, col, this.#evaluator());
|
|
30390
30956
|
result2 = isBlankView(view) ? null : view;
|
|
@@ -30447,6 +31013,7 @@ var ICON_PATHS = {
|
|
|
30447
31013
|
link: "M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",
|
|
30448
31014
|
comment: "M4 5h16v11H10l-4 4v-4H4z M8 9h8 M8 12h5",
|
|
30449
31015
|
comments: "M3 4h13v9H9l-3 3v-3H3z M9 17h6l3 3v-3h3V8h-3",
|
|
31016
|
+
share: "M14 4l6 6-6 6M20 10h-8a8 8 0 0 0-8 8",
|
|
30450
31017
|
deleteComment: "M4 5h16v11H10l-4 4v-4H4z M9 8.5l5 5 M14 8.5l-5 5",
|
|
30451
31018
|
previous: "M6 14l6-6 6 6",
|
|
30452
31019
|
next: "M6 10l6 6 6-6",
|
|
@@ -30897,4 +31464,4 @@ function applyThemeColors(host, previous, colors) {
|
|
|
30897
31464
|
return Object.keys(vars);
|
|
30898
31465
|
}
|
|
30899
31466
|
|
|
30900
|
-
export { ACCOUNTING_FORMATS, ALL_RANGE, AUTOSUM_FUNCTIONS, BORDER_PRESETS, CATEGORIES, COLOR_SCALES, COMMAND_TABLES, CORE_FEATURE_STRINGS, CellViewCache, DATA_BAR_COLORS, DATE_CODES, DEFAULT_OPTIONS, DirtyState, EDITOR_LOCALES, EDITOR_THEME_MODES, FONT_NAMES, FONT_SIZES, FORMAT_CELLS_STRINGS, FRACTION_CODES, FUNCTION_MENUS, GridGeometry, HIGHLIGHT_STYLES, ICON_ACCENTS, ICON_PATHS, ICON_SETS, MARGIN_PRESETS, MESSAGE_STRINGS, MORE_FUNCTION_CATEGORIES, NAVIGATION_STRINGS, ORIENTATIONS, PAPER_SIZES, QUADRANTS, RIBBON_HOME_STRINGS, RIBBON_TAB_STRINGS, RULES_STRINGS, SHEET_ICONS, SPECIAL_CODES, STRINGS, SYMBOLS, SheetSelections, TABLE_STYLES, TEMPLATES, THEME_KEYS, TIME_CODES, TOOLS_STRINGS, UNSET, absoluteReference, activeChart, activeRef, activeStyle, activeTable, addRange, alignItems, alignmentCommands, applyThemeColors, autoSumRange, buildChart, buildCode, buildItems, cellCommands, cellMenu, cellRange3 as cellRange, cellStyleItems, clampAddress, clipState, clipboardCommands, colSelected, colorScaleRule, colsOf, colsRange, columnHeaderHeight, columnHeaderMenu, commandStrings, contextualCommands, createCommandRegistry, createDialogRegistry, createEditBridge, createSelectionModel, createTemplateWorkbook, cssFont, cssFontFamily, darkTheme, dataBarRule, dataCommands, detectCategory, diagonalSvg, dxfCss, edgeCss, editBridge, editChart, editing, editingCommands, evaluateRef, expandForMerges, extendSelection, fillPaint, fillSource, fillTemplate, findDefinedName2 as findDefinedName, findSpecial, fitNumber2 as fitNumber, fontCommands, formatNumber2 as formatNumber, formulaCommands, functionsIn, guessHeader, hasBorders, hasWorkbook, hashes, helpTab, icon, iconCount, iconSetRule, iconSvg, iconThresholds, initialSelection, insertFunctionCall, installFormatPainter, isBlankView, isMenuSeparator, isSingleCell, isTabHidden, isWholeCols, isWholeRows2 as isWholeRows, justify, lightTheme, measure, moveWithinSelection, movingEnd, nameForRange, negativeCodes, normalizeEditorLocale, normalizeThemeMode, noteFunctionUse, numberCommands, numberFormatOptions, onRibbonTabsChange, pageLayoutCommands, parseBorderArg, parseSelectionRef, parseSheetReference, pasteWith, patternImage, pickColor, rangeRef, recentFunctions, refresh, regionOf, registerRibbonTabs, repeatToFill, resetRibbonTabs, resolveNameBox, reviewTab, ribbonTabs, rowHeaderMenu, rowHeaderWidth, rowSelected, rowsOf, rowsRange, scrollToReveal, searchCommands, selectCell, selectSpecial, selectTab, selectionCellCount, selectionRef, setTabHidden, sheetBaseName, sheetLocked, sortCommands, span3 as span, spanRange, stepFontSize, structureLocked, style, styleCssFont, tabButton, tabMenu, tableAt, tableStyleColor, tableStylePreview, target, textAlign, textDecoration, themePaletteItems, themeToCssVars, translate, translator, viewTab, viewing, wholeColumns, wholeRows, withTarget };
|
|
31467
|
+
export { ACCOUNTING_FORMATS, ALL_RANGE, AUTOSUM_FUNCTIONS, BORDER_PRESETS, CATEGORIES, COLOR_SCALES, COMMAND_TABLES, CORE_FEATURE_STRINGS, CellViewCache, DATA_BAR_COLORS, DATE_CODES, DEFAULT_OPTIONS, DirtyState, EDITOR_LOCALES, EDITOR_THEME_MODES, FONT_NAMES, FONT_SIZES, FORMAT_CELLS_STRINGS, FRACTION_CODES, FUNCTION_MENUS, GridGeometry, HIGHLIGHT_STYLES, ICON_ACCENTS, ICON_PATHS, ICON_SETS, MARGIN_PRESETS, MESSAGE_STRINGS, MORE_FUNCTION_CATEGORIES, NAVIGATION_STRINGS, ORIENTATIONS, PAPER_SIZES, QUADRANTS, RIBBON_HOME_STRINGS, RIBBON_TAB_STRINGS, RULES_STRINGS, SHEET_ICONS, SPECIAL_CODES, STRINGS, SYMBOLS, SheetSelections, TABLE_STYLES, TEMPLATES, THEME_KEYS, TIME_CODES, TOOLS_STRINGS, UNSET, absoluteReference, activeChart, activeRef, activeStyle, activeTable, addRange, alignItems, alignmentCommands, applyThemeColors, autoSumRange, buildChart, buildCode, buildItems, cellCommands, cellMenu, cellRange3 as cellRange, cellStyleItems, clampAddress, clipState, clipboardCommands, colSelected, colorScaleRule, colsOf, colsRange, columnHeaderHeight, columnHeaderMenu, commandStrings, contextualCommands, createCommandRegistry, createDialogRegistry, createEditBridge, createSelectionModel, createTemplateWorkbook, cssFont, cssFontFamily, darkTheme, dataBarRule, dataCommands, detectCategory, diagonalSvg, dxfCss, edgeCss, editBridge, editChart, editing, editingCommands, evaluateRef, expandForMerges, extendSelection, fillPaint, fillSource, fillTemplate, findDefinedName2 as findDefinedName, findSpecial, fitNumber2 as fitNumber, fontCommands, formatNumber2 as formatNumber, formulaCommands, functionsIn, guessHeader, hasBorders, hasWorkbook, hashes, helpTab, historyOf, icon, iconCount, iconSetRule, iconSvg, iconThresholds, initialSelection, insertFunctionCall, installFormatPainter, isBlankView, isMenuSeparator, isSingleCell, isTabHidden, isWholeCols, isWholeRows2 as isWholeRows, justify, lightTheme, measure, moveWithinSelection, movingEnd, nameForRange, negativeCodes, normalizeEditorLocale, normalizeThemeMode, noteFunctionUse, numberCommands, numberFormatOptions, onRibbonTabsChange, pageLayoutCommands, parseBorderArg, parseSelectionRef, parseSheetReference, pasteWith, patternImage, pickColor, rangeRef, recentFunctions, refresh, regionOf, registerRibbonTabs, repeatToFill, resetRibbonTabs, resolveNameBox, reviewTab, ribbonTabs, rowHeaderMenu, rowHeaderWidth, rowSelected, rowsOf, rowsRange, scrollToReveal, searchCommands, selectCell, selectSpecial, selectTab, selectionCellCount, selectionRef, setTabHidden, sheetBaseName, sheetLocked, sortCommands, span3 as span, spanRange, stepFontSize, structureLocked, style, styleCssFont, tabButton, tabMenu, tableAt, tableStyleColor, tableStylePreview, target, textAlign, textDecoration, themePaletteItems, themeToCssVars, translate, translator, viewTab, viewing, wholeColumns, wholeRows, withTarget };
|