ooxml-core 1.1.0 → 1.2.1
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-VQQS4VS6.mjs} +3 -3
- package/dist/automation/index.cjs +7567 -4401
- package/dist/automation/index.mjs +7567 -4401
- package/dist/chart/bar-cluster-geometry.d.ts +6 -0
- package/dist/chart/bar-cluster-geometry.d.ts.map +1 -1
- 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 +3069 -140
- package/dist/chart/index.d.ts +7 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +3048 -141
- 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-OMGH6IKY.mjs → chunk-5U27IVB7.mjs} +42 -5
- package/dist/{chunk-RFX7AJDZ.mjs → chunk-5VLNF4OX.mjs} +2 -2
- package/dist/{chunk-OJI3N5AY.cjs → chunk-FRUB573B.cjs} +2 -0
- package/dist/{chunk-75LA7H3F.mjs → chunk-V2BIGIH4.mjs} +27504 -27464
- package/dist/{chunk-Q27H4HFS.mjs → chunk-XBNSBDNT.mjs} +1 -1
- package/dist/{chunk-2C72N64G.cjs → chunk-XROY25LN.cjs} +12 -0
- package/dist/{chunk-LA7D6ZYQ.mjs → chunk-XSFHGZFH.mjs} +3579 -2083
- 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 +4044 -683
- package/dist/docx/index.d.ts +2 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +4040 -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 +2674 -88
- package/dist/docx/layout/index.mjs +2675 -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 +2602 -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 +2601 -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 +34839 -18368
- package/dist/index.mjs +34835 -18368
- 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 +9049 -7167
- 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 +8728 -6846
- 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 +9300 -7249
- 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 +3931 -2077
- package/dist/teams/index.d.ts +1 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +3930 -2077
- 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/context.d.ts +3 -1
- package/dist/xlsx/edit/context.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/history.d.ts +18 -0
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- 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 +32 -3
- 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/sheets.d.ts.map +1 -1
- package/dist/xlsx/edit/types.d.ts +37 -4
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/engine-core.d.ts.map +1 -1
- package/dist/xlsx/formula/engine-host.d.ts +6 -2
- package/dist/xlsx/formula/engine-host.d.ts.map +1 -1
- package/dist/xlsx/formula/engine-prepare.d.ts +33 -0
- package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -0
- package/dist/xlsx/formula/engine-structure.d.ts +40 -0
- package/dist/xlsx/formula/engine-structure.d.ts.map +1 -0
- package/dist/xlsx/formula/engine-types.d.ts +26 -0
- package/dist/xlsx/formula/engine-types.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/formula-shape.d.ts +28 -0
- package/dist/xlsx/formula/formula-shape.d.ts.map +1 -0
- package/dist/xlsx/formula/graph-index.d.ts +3 -1
- package/dist/xlsx/formula/graph-index.d.ts.map +1 -1
- package/dist/xlsx/formula/graph.d.ts +5 -0
- package/dist/xlsx/formula/graph.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/parse-cache.d.ts +9 -0
- package/dist/xlsx/formula/parse-cache.d.ts.map +1 -0
- package/dist/xlsx/formula/parser.d.ts +3 -0
- package/dist/xlsx/formula/parser.d.ts.map +1 -1
- package/dist/xlsx/formula/ref-text.d.ts +14 -0
- package/dist/xlsx/formula/ref-text.d.ts.map +1 -0
- package/dist/xlsx/formula/references.d.ts.map +1 -1
- package/dist/xlsx/formula/shift-formula.d.ts +19 -0
- package/dist/xlsx/formula/shift-formula.d.ts.map +1 -0
- package/dist/xlsx/formula/shift-graph.d.ts +42 -0
- package/dist/xlsx/formula/shift-graph.d.ts.map +1 -0
- package/dist/xlsx/formula/tokenizer.d.ts.map +1 -1
- package/dist/xlsx/formula/transform.d.ts +2 -23
- package/dist/xlsx/formula/transform.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +5620 -2680
- package/dist/xlsx/index.mjs +5609 -2681
- 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 +8 -5
- 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/sheet-queries.d.ts +7 -0
- package/dist/xlsx/layout/sheet-queries.d.ts.map +1 -1
- 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 +3124 -1312
- package/dist/xlsx/load/index.mjs +3124 -1312
- 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 +2165 -866
- package/dist/xlsx/ui/index.mjs +2165 -867
- 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/docx/load/index.cjs
CHANGED
|
@@ -271,14 +271,14 @@ function parseOle2(buffer) {
|
|
|
271
271
|
return result.subarray(0, size);
|
|
272
272
|
}
|
|
273
273
|
function getStream(name) {
|
|
274
|
-
const
|
|
275
|
-
if (!
|
|
274
|
+
const entry2 = entries.find((e) => (e.type === ENTRY_TYPE_STREAM || e.type === ENTRY_TYPE_ROOT) && e.name === name);
|
|
275
|
+
if (!entry2) {
|
|
276
276
|
return void 0;
|
|
277
277
|
}
|
|
278
|
-
if (
|
|
279
|
-
return readMiniStream(
|
|
278
|
+
if (entry2.size < miniStreamCutoff && entry2.type !== ENTRY_TYPE_ROOT) {
|
|
279
|
+
return readMiniStream(entry2.startSector, entry2.size);
|
|
280
280
|
}
|
|
281
|
-
return readStream(
|
|
281
|
+
return readStream(entry2.startSector, entry2.size);
|
|
282
282
|
}
|
|
283
283
|
return { entries, getStream };
|
|
284
284
|
}
|
|
@@ -1262,8 +1262,8 @@ function applyLane(r, ops, f6, x, startTarget) {
|
|
|
1262
1262
|
const i4 = (target + 4) % 5;
|
|
1263
1263
|
const sum = r[target] + f6(r[i1], r[i2], r[i3]) + x[k] + addConst >>> 0;
|
|
1264
1264
|
const newTarget = (sum << s | sum >>> 32 - s) + r[i4] >>> 0;
|
|
1265
|
-
const
|
|
1266
|
-
r[i2] = (
|
|
1265
|
+
const c2 = r[i2];
|
|
1266
|
+
r[i2] = (c2 << 10 | c2 >>> 22) >>> 0;
|
|
1267
1267
|
r[target] = newTarget;
|
|
1268
1268
|
target = (target + 4) % 5;
|
|
1269
1269
|
}
|
|
@@ -1376,32 +1376,32 @@ var rotr = (x, n) => x >>> n | x << 32 - n;
|
|
|
1376
1376
|
function compress(h2, view, offset) {
|
|
1377
1377
|
for (let i2 = 0; i2 < 16; i2++) W[i2] = view.getUint32(offset + i2 * 4);
|
|
1378
1378
|
for (let i2 = 16; i2 < 64; i2++) {
|
|
1379
|
-
const
|
|
1379
|
+
const a3 = W[i2 - 15];
|
|
1380
1380
|
const b2 = W[i2 - 2];
|
|
1381
|
-
const s0 = rotr(
|
|
1381
|
+
const s0 = rotr(a3, 7) ^ rotr(a3, 18) ^ a3 >>> 3;
|
|
1382
1382
|
const s1 = rotr(b2, 17) ^ rotr(b2, 19) ^ b2 >>> 10;
|
|
1383
1383
|
W[i2] = W[i2 - 16] + s0 + W[i2 - 7] + s1 >>> 0;
|
|
1384
1384
|
}
|
|
1385
|
-
let
|
|
1385
|
+
let a2 = h2[0], b = h2[1], c2 = h2[2], d = h2[3], e = h2[4], f6 = h2[5], g2 = h2[6], k = h2[7];
|
|
1386
1386
|
for (let i2 = 0; i2 < 64; i2++) {
|
|
1387
1387
|
const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
|
|
1388
1388
|
const ch = e & f6 ^ ~e & g2;
|
|
1389
1389
|
const t1 = k + S1 + ch + K[i2] + W[i2] >>> 0;
|
|
1390
|
-
const S0 = rotr(
|
|
1391
|
-
const maj =
|
|
1390
|
+
const S0 = rotr(a2, 2) ^ rotr(a2, 13) ^ rotr(a2, 22);
|
|
1391
|
+
const maj = a2 & b ^ a2 & c2 ^ b & c2;
|
|
1392
1392
|
const t2 = S0 + maj >>> 0;
|
|
1393
1393
|
k = g2;
|
|
1394
1394
|
g2 = f6;
|
|
1395
1395
|
f6 = e;
|
|
1396
1396
|
e = d + t1 >>> 0;
|
|
1397
|
-
d =
|
|
1398
|
-
|
|
1399
|
-
b =
|
|
1400
|
-
|
|
1397
|
+
d = c2;
|
|
1398
|
+
c2 = b;
|
|
1399
|
+
b = a2;
|
|
1400
|
+
a2 = t1 + t2 >>> 0;
|
|
1401
1401
|
}
|
|
1402
|
-
h2[0] = h2[0] +
|
|
1402
|
+
h2[0] = h2[0] + a2 >>> 0;
|
|
1403
1403
|
h2[1] = h2[1] + b >>> 0;
|
|
1404
|
-
h2[2] = h2[2] +
|
|
1404
|
+
h2[2] = h2[2] + c2 >>> 0;
|
|
1405
1405
|
h2[3] = h2[3] + d >>> 0;
|
|
1406
1406
|
h2[4] = h2[4] + e >>> 0;
|
|
1407
1407
|
h2[5] = h2[5] + f6 >>> 0;
|
|
@@ -1437,33 +1437,33 @@ var rotl = (x, n) => x << n | x >>> 32 - n;
|
|
|
1437
1437
|
function compress2(h2, view, offset) {
|
|
1438
1438
|
for (let i2 = 0; i2 < 16; i2++) W2[i2] = view.getUint32(offset + i2 * 4);
|
|
1439
1439
|
for (let i2 = 16; i2 < 80; i2++) W2[i2] = rotl(W2[i2 - 3] ^ W2[i2 - 8] ^ W2[i2 - 14] ^ W2[i2 - 16], 1);
|
|
1440
|
-
let
|
|
1440
|
+
let a2 = h2[0], b = h2[1], c2 = h2[2], d = h2[3], e = h2[4];
|
|
1441
1441
|
for (let i2 = 0; i2 < 80; i2++) {
|
|
1442
1442
|
let f6;
|
|
1443
1443
|
let k;
|
|
1444
1444
|
if (i2 < 20) {
|
|
1445
|
-
f6 = b &
|
|
1445
|
+
f6 = b & c2 | ~b & d;
|
|
1446
1446
|
k = 1518500249;
|
|
1447
1447
|
} else if (i2 < 40) {
|
|
1448
|
-
f6 = b ^
|
|
1448
|
+
f6 = b ^ c2 ^ d;
|
|
1449
1449
|
k = 1859775393;
|
|
1450
1450
|
} else if (i2 < 60) {
|
|
1451
|
-
f6 = b &
|
|
1451
|
+
f6 = b & c2 | b & d | c2 & d;
|
|
1452
1452
|
k = 2400959708;
|
|
1453
1453
|
} else {
|
|
1454
|
-
f6 = b ^
|
|
1454
|
+
f6 = b ^ c2 ^ d;
|
|
1455
1455
|
k = 3395469782;
|
|
1456
1456
|
}
|
|
1457
|
-
const t = rotl(
|
|
1457
|
+
const t = rotl(a2, 5) + f6 + e + k + W2[i2] >>> 0;
|
|
1458
1458
|
e = d;
|
|
1459
|
-
d =
|
|
1460
|
-
|
|
1461
|
-
b =
|
|
1462
|
-
|
|
1459
|
+
d = c2;
|
|
1460
|
+
c2 = rotl(b, 30) >>> 0;
|
|
1461
|
+
b = a2;
|
|
1462
|
+
a2 = t;
|
|
1463
1463
|
}
|
|
1464
|
-
h2[0] = h2[0] +
|
|
1464
|
+
h2[0] = h2[0] + a2 >>> 0;
|
|
1465
1465
|
h2[1] = h2[1] + b >>> 0;
|
|
1466
|
-
h2[2] = h2[2] +
|
|
1466
|
+
h2[2] = h2[2] + c2 >>> 0;
|
|
1467
1467
|
h2[3] = h2[3] + d >>> 0;
|
|
1468
1468
|
h2[4] = h2[4] + e >>> 0;
|
|
1469
1469
|
}
|
|
@@ -2050,8 +2050,8 @@ var ROUND_CONSTANTS = [
|
|
|
2050
2050
|
0xfbee7c66dd17479en,
|
|
2051
2051
|
0xca2dbf07ad5a8333n
|
|
2052
2052
|
];
|
|
2053
|
-
var ROUND_CONSTANTS_HI = Uint32Array.from(ROUND_CONSTANTS, (
|
|
2054
|
-
var ROUND_CONSTANTS_LO = Uint32Array.from(ROUND_CONSTANTS, (
|
|
2053
|
+
var ROUND_CONSTANTS_HI = Uint32Array.from(ROUND_CONSTANTS, (c2) => Number(c2 >> 32n));
|
|
2054
|
+
var ROUND_CONSTANTS_LO = Uint32Array.from(ROUND_CONSTANTS, (c2) => Number(c2 & LOW_MASK));
|
|
2055
2055
|
|
|
2056
2056
|
// digest/whirlpool.ts
|
|
2057
2057
|
var TABLES_HI2 = TABLES_HI;
|
|
@@ -2372,7 +2372,7 @@ function openEncryptedPackage(input) {
|
|
|
2372
2372
|
if (!isCompoundFile(bytes)) return void 0;
|
|
2373
2373
|
try {
|
|
2374
2374
|
const file = parseOle2(toArrayBuffer(bytes));
|
|
2375
|
-
if (!file.entries.some((
|
|
2375
|
+
if (!file.entries.some((entry2) => entry2.name === "EncryptedPackage")) return void 0;
|
|
2376
2376
|
const encryptionInfo = file.getStream("EncryptionInfo");
|
|
2377
2377
|
const encryptedPackage = encryptionInfo && file.getStream("EncryptedPackage");
|
|
2378
2378
|
return encryptionInfo && encryptedPackage ? { encryptionInfo, encryptedPackage } : void 0;
|
|
@@ -2384,7 +2384,7 @@ function isEncryptedOoxmlPackage(input) {
|
|
|
2384
2384
|
const bytes = toBytes(input);
|
|
2385
2385
|
if (!isCompoundFile(bytes)) return false;
|
|
2386
2386
|
try {
|
|
2387
|
-
const names = new Set(parseOle2(toArrayBuffer(bytes)).entries.map((
|
|
2387
|
+
const names = new Set(parseOle2(toArrayBuffer(bytes)).entries.map((entry2) => entry2.name));
|
|
2388
2388
|
return names.has("EncryptionInfo") && names.has("EncryptedPackage");
|
|
2389
2389
|
} catch {
|
|
2390
2390
|
return false;
|
|
@@ -2392,14 +2392,14 @@ function isEncryptedOoxmlPackage(input) {
|
|
|
2392
2392
|
}
|
|
2393
2393
|
|
|
2394
2394
|
// ../../node_modules/.bun/@christophervr+ole2@0.12.0/node_modules/@christophervr/ole2/dist/ole2-parser-write-helpers.js
|
|
2395
|
-
function compareDirEntryNames(
|
|
2396
|
-
const ua =
|
|
2395
|
+
function compareDirEntryNames(a2, b) {
|
|
2396
|
+
const ua = a2.toUpperCase();
|
|
2397
2397
|
const ub = b.toUpperCase();
|
|
2398
|
-
if (ua.length !==
|
|
2398
|
+
if (ua.length !== a2.length || ub.length !== b.length) {
|
|
2399
2399
|
throw new Error("CFB stream names with expanding uppercase mappings are unsupported");
|
|
2400
2400
|
}
|
|
2401
|
-
if (
|
|
2402
|
-
return
|
|
2401
|
+
if (a2.length !== b.length) {
|
|
2402
|
+
return a2.length - b.length;
|
|
2403
2403
|
}
|
|
2404
2404
|
for (let i2 = 0; i2 < ua.length; i2++) {
|
|
2405
2405
|
const diff = ua.charCodeAt(i2) - ub.charCodeAt(i2);
|
|
@@ -2518,15 +2518,15 @@ function serializeDirectoryEntries(dirEntries, numDirSectors, sectorSize) {
|
|
|
2518
2518
|
const dirView = new DataView(dirData.buffer);
|
|
2519
2519
|
const tree = buildDirectoryTree(dirEntries.length);
|
|
2520
2520
|
for (let i2 = 0; i2 < dirEntries.length; i2++) {
|
|
2521
|
-
const
|
|
2521
|
+
const entry2 = dirEntries[i2];
|
|
2522
2522
|
const entryOffset = i2 * DIR_ENTRY_SIZE;
|
|
2523
|
-
const nameBytes = encodeName(
|
|
2523
|
+
const nameBytes = encodeName(entry2.name);
|
|
2524
2524
|
dirData.set(nameBytes.subarray(0, Math.min(nameBytes.length, 64)), entryOffset);
|
|
2525
|
-
dirView.setUint16(entryOffset + 64, Math.min((
|
|
2526
|
-
dirData[entryOffset + 66] =
|
|
2525
|
+
dirView.setUint16(entryOffset + 64, Math.min((entry2.name.length + 1) * 2, 64), true);
|
|
2526
|
+
dirData[entryOffset + 66] = entry2.type;
|
|
2527
2527
|
dirData[entryOffset + 67] = i2 === 0 ? 1 : tree.links.get(i2).color;
|
|
2528
|
-
if (
|
|
2529
|
-
dirData.set(
|
|
2528
|
+
if (entry2.clsid) {
|
|
2529
|
+
dirData.set(entry2.clsid.subarray(0, 16), entryOffset + 80);
|
|
2530
2530
|
}
|
|
2531
2531
|
if (i2 === 0) {
|
|
2532
2532
|
dirView.setUint32(entryOffset + 68, 4294967295, true);
|
|
@@ -2537,8 +2537,8 @@ function serializeDirectoryEntries(dirEntries, numDirSectors, sectorSize) {
|
|
|
2537
2537
|
dirView.setUint32(entryOffset + 72, tree.links.get(i2).right, true);
|
|
2538
2538
|
dirView.setUint32(entryOffset + 76, 4294967295, true);
|
|
2539
2539
|
}
|
|
2540
|
-
dirView.setUint32(entryOffset + 116,
|
|
2541
|
-
dirView.setUint32(entryOffset + 120,
|
|
2540
|
+
dirView.setUint32(entryOffset + 116, entry2.startSector, true);
|
|
2541
|
+
dirView.setUint32(entryOffset + 120, entry2.size, true);
|
|
2542
2542
|
}
|
|
2543
2543
|
return dirData;
|
|
2544
2544
|
}
|
|
@@ -2649,7 +2649,7 @@ function buildOle2(streams2, rootClsid, miniStreamCutoff = 4096) {
|
|
|
2649
2649
|
});
|
|
2650
2650
|
}
|
|
2651
2651
|
const [rootEntry, ...streamEntries] = dirEntries;
|
|
2652
|
-
streamEntries.sort((
|
|
2652
|
+
streamEntries.sort((a2, b) => compareDirEntryNames(a2.name, b.name));
|
|
2653
2653
|
const sortedDirEntries = [rootEntry, ...streamEntries];
|
|
2654
2654
|
const numDirSectors = Math.ceil(dirEntries.length * DIR_ENTRY_SIZE / sectorSize);
|
|
2655
2655
|
const firstDirSector = nextSector;
|
|
@@ -3077,12 +3077,18 @@ var NS = {
|
|
|
3077
3077
|
w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
|
|
3078
3078
|
/** DrawingML main. */
|
|
3079
3079
|
a: "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
3080
|
+
/** DrawingML chart. */
|
|
3081
|
+
c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
3082
|
+
/** Office 2010 chart extensions, including built-in modern chart styles. */
|
|
3083
|
+
c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
|
|
3080
3084
|
/** DrawingML diagram (SmartArt) main. */
|
|
3081
3085
|
dgm: "http://schemas.openxmlformats.org/drawingml/2006/diagram",
|
|
3082
3086
|
/** Office 2007+ diagram drawing (`dsp`). */
|
|
3083
3087
|
dsp: "http://schemas.microsoft.com/office/drawing/2008/diagram",
|
|
3084
3088
|
/** Relationships (`r:id`, `r:embed`). */
|
|
3085
3089
|
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
3090
|
+
/** Markup compatibility (`mc:AlternateContent`). */
|
|
3091
|
+
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
|
3086
3092
|
/** OPC relationships part. */
|
|
3087
3093
|
rels: "http://schemas.openxmlformats.org/package/2006/relationships",
|
|
3088
3094
|
/** OPC content types part. */
|
|
@@ -3163,6 +3169,10 @@ function resolvePartPath(basePart, target) {
|
|
|
3163
3169
|
}
|
|
3164
3170
|
return resolved.join("/");
|
|
3165
3171
|
}
|
|
3172
|
+
function relationshipsPartFor(partName) {
|
|
3173
|
+
const slash = partName.lastIndexOf("/");
|
|
3174
|
+
return `${partName.slice(0, slash + 1)}_rels/${partName.slice(slash + 1)}.rels`;
|
|
3175
|
+
}
|
|
3166
3176
|
function nextRelationshipId(used) {
|
|
3167
3177
|
let index = 1;
|
|
3168
3178
|
while (used.has(`rId${index}`)) index++;
|
|
@@ -3305,7 +3315,7 @@ function parseCoreProperties(xml) {
|
|
|
3305
3315
|
}
|
|
3306
3316
|
return Object.keys(result).length ? result : void 0;
|
|
3307
3317
|
}
|
|
3308
|
-
var same = (
|
|
3318
|
+
var same = (a2, b) => PROPERTY_FIELDS.every((field) => (a2?.[field] ?? "") === (b?.[field] ?? ""));
|
|
3309
3319
|
async function applyCoreProperties(zip, next, prior) {
|
|
3310
3320
|
if (same(next, prior)) return;
|
|
3311
3321
|
const existing = zip.file(CORE_PATH);
|
|
@@ -3464,13 +3474,13 @@ function buildCommentsExtendedDocument(comments) {
|
|
|
3464
3474
|
);
|
|
3465
3475
|
const root = doc.documentElement;
|
|
3466
3476
|
comments.forEach((comment, index) => {
|
|
3467
|
-
const
|
|
3468
|
-
|
|
3469
|
-
if (comment.resolved)
|
|
3470
|
-
const parentIndex = comments.findIndex((
|
|
3477
|
+
const entry2 = doc.createElementNS(W15_NS, "w15:commentEx");
|
|
3478
|
+
entry2.setAttributeNS(W15_NS, "w15:paraId", paraIdFor(comment.id, index));
|
|
3479
|
+
if (comment.resolved) entry2.setAttributeNS(W15_NS, "w15:done", "1");
|
|
3480
|
+
const parentIndex = comments.findIndex((c2) => c2.id === comment.parentId);
|
|
3471
3481
|
if (parentIndex >= 0)
|
|
3472
|
-
|
|
3473
|
-
root.appendChild(
|
|
3482
|
+
entry2.setAttributeNS(W15_NS, "w15:paraIdParent", paraIdFor(comment.parentId, parentIndex));
|
|
3483
|
+
root.appendChild(entry2);
|
|
3474
3484
|
});
|
|
3475
3485
|
return doc;
|
|
3476
3486
|
}
|
|
@@ -3600,7 +3610,7 @@ function rangeEdges(runs, ranges) {
|
|
|
3600
3610
|
const opens = /* @__PURE__ */ new Map();
|
|
3601
3611
|
const closes = /* @__PURE__ */ new Map();
|
|
3602
3612
|
const order = (key) => key.startsWith("comment:") ? 0 : 1;
|
|
3603
|
-
for (const key of [...first3.keys()].sort((
|
|
3613
|
+
for (const key of [...first3.keys()].sort((a2, b) => order(a2) - order(b))) {
|
|
3604
3614
|
if (!ranges?.before.has(key)) {
|
|
3605
3615
|
const index = first3.get(key);
|
|
3606
3616
|
(opens.get(index) ?? opens.set(index, []).get(index)).push(edgeFor(key, index));
|
|
@@ -3948,8 +3958,8 @@ function orderChildren(parent, order) {
|
|
|
3948
3958
|
if (rank >= 0) previousRank = rank;
|
|
3949
3959
|
return { element, index, rank: rank >= 0 ? rank : previousRank + 0.5 };
|
|
3950
3960
|
});
|
|
3951
|
-
const sorted = [...ranked].sort((
|
|
3952
|
-
if (sorted.every((
|
|
3961
|
+
const sorted = [...ranked].sort((a2, b) => a2.rank - b.rank || a2.index - b.index);
|
|
3962
|
+
if (sorted.every((entry2, index) => entry2.element === elements2[index])) return;
|
|
3953
3963
|
for (const { element } of sorted) parent.appendChild(element);
|
|
3954
3964
|
}
|
|
3955
3965
|
var SECTPR_ORDER = [
|
|
@@ -4911,7 +4921,7 @@ function borderElement(doc, name, side) {
|
|
|
4911
4921
|
}
|
|
4912
4922
|
return element;
|
|
4913
4923
|
}
|
|
4914
|
-
var sameJson = (
|
|
4924
|
+
var sameJson = (a2, b) => JSON.stringify(a2 ?? null) === JSON.stringify(b ?? null);
|
|
4915
4925
|
function updateShading(doc, props, paragraph, base) {
|
|
4916
4926
|
if (base && paragraph.shadingFill === base.shadingFill) return;
|
|
4917
4927
|
for (const element of children2(props, "shd")) props.removeChild(element);
|
|
@@ -5103,8 +5113,8 @@ function reconcileBookmarks(doc, starts, ends, names, baseNames, nextId) {
|
|
|
5103
5113
|
function setAttribute3(element, local, value) {
|
|
5104
5114
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
5105
5115
|
}
|
|
5106
|
-
function sameNumbering(
|
|
5107
|
-
return
|
|
5116
|
+
function sameNumbering(a2, b) {
|
|
5117
|
+
return a2?.numId === b?.numId && a2?.level === b?.level;
|
|
5108
5118
|
}
|
|
5109
5119
|
function writeNumberingProperties(doc, props, paragraph, base) {
|
|
5110
5120
|
if (base && sameNumbering(paragraph.numbering, base.numbering)) return;
|
|
@@ -5431,11 +5441,11 @@ var allowedRunPropertyAttributes = {
|
|
|
5431
5441
|
shd: ["val", "fill", "color", "themeFill", "themeFillTint", "themeFillShade"]
|
|
5432
5442
|
};
|
|
5433
5443
|
function hasUnexpectedAttributes(element, allowed, allowDateUtc = false) {
|
|
5434
|
-
for (const
|
|
5435
|
-
if (
|
|
5436
|
-
if (allowDateUtc &&
|
|
5444
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5445
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5446
|
+
if (allowDateUtc && attribute2.namespaceURI === WORD_DATE_UTC_NS && attribute2.localName === "dateUtc")
|
|
5437
5447
|
continue;
|
|
5438
|
-
if (
|
|
5448
|
+
if (attribute2.namespaceURI !== WORD_NS || !allowed.includes(attribute2.localName)) return true;
|
|
5439
5449
|
}
|
|
5440
5450
|
return false;
|
|
5441
5451
|
}
|
|
@@ -5462,7 +5472,7 @@ function runPropertiesHaveUnknownContent(properties) {
|
|
|
5462
5472
|
if (!isLigatures(property.getAttributeNS(WORD_2010_NS, "val")) || elements(property).length)
|
|
5463
5473
|
return true;
|
|
5464
5474
|
if (Array.from(property.attributes).some(
|
|
5465
|
-
(
|
|
5475
|
+
(attribute2) => attribute2.namespaceURI !== "http://www.w3.org/2000/xmlns/" && (attribute2.namespaceURI !== WORD_2010_NS || attribute2.localName !== "val")
|
|
5466
5476
|
))
|
|
5467
5477
|
return true;
|
|
5468
5478
|
continue;
|
|
@@ -5512,12 +5522,12 @@ function runPropertyChanged(run, base, key) {
|
|
|
5512
5522
|
function parseDirectRunProperties(props) {
|
|
5513
5523
|
const result = parseRunProperties(props);
|
|
5514
5524
|
const language = first2(props, "lang");
|
|
5515
|
-
for (const [
|
|
5525
|
+
for (const [attribute2, key] of [
|
|
5516
5526
|
["val", "language"],
|
|
5517
5527
|
["eastAsia", "eastAsiaLanguage"],
|
|
5518
5528
|
["bidi", "bidiLanguage"]
|
|
5519
5529
|
]) {
|
|
5520
|
-
const value = getW(language,
|
|
5530
|
+
const value = getW(language, attribute2);
|
|
5521
5531
|
if (value !== void 0) result[key] = value;
|
|
5522
5532
|
}
|
|
5523
5533
|
const rtl = onOffElement(first2(props, "rtl"));
|
|
@@ -5730,19 +5740,19 @@ function colorOf(value) {
|
|
|
5730
5740
|
}
|
|
5731
5741
|
function parseWatermarkShape(shape) {
|
|
5732
5742
|
if (!shape || !(shape.getAttribute("id") ?? "").startsWith(WATERMARK_PREFIX)) return void 0;
|
|
5733
|
-
const
|
|
5734
|
-
if (!
|
|
5743
|
+
const path2 = Array.from(shape.getElementsByTagNameNS(VML_NS, "textpath"))[0];
|
|
5744
|
+
if (!path2) return void 0;
|
|
5735
5745
|
const style = shape.getAttribute("style") ?? "";
|
|
5736
5746
|
const fill = Array.from(shape.getElementsByTagNameNS(VML_NS, "fill"))[0];
|
|
5737
5747
|
const opacity = fill?.getAttribute("opacity");
|
|
5738
5748
|
const family = /font-family:\s*(?:"|"|')?([^;"'&]+)/i.exec(
|
|
5739
|
-
|
|
5749
|
+
path2.getAttribute("style") ?? ""
|
|
5740
5750
|
)?.[1];
|
|
5741
5751
|
const width = /width:\s*([\d.]+)pt/i.exec(style);
|
|
5742
5752
|
const height = /height:\s*([\d.]+)pt/i.exec(style);
|
|
5743
5753
|
const rotation = /rotation:\s*(-?[\d.]+)/i.exec(style);
|
|
5744
5754
|
const spec = {
|
|
5745
|
-
text:
|
|
5755
|
+
text: path2.getAttribute("string") ?? "",
|
|
5746
5756
|
color: colorOf(shape.getAttribute("fillcolor")),
|
|
5747
5757
|
semitransparent: opacity !== null && opacity !== "" && opacity !== "1",
|
|
5748
5758
|
layout: rotation && Math.abs(Number(rotation[1]) % 360) > 1 ? "diagonal" : "horizontal",
|
|
@@ -5798,11 +5808,11 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
5798
5808
|
f6.setAttribute("eqn", eqn);
|
|
5799
5809
|
formulas.appendChild(f6);
|
|
5800
5810
|
}
|
|
5801
|
-
const
|
|
5802
|
-
|
|
5803
|
-
|
|
5804
|
-
|
|
5805
|
-
|
|
5811
|
+
const path2 = v("path");
|
|
5812
|
+
path2.setAttribute("textpathok", "t");
|
|
5813
|
+
path2.setAttributeNS(OFFICE_NS, "o:connecttype", "custom");
|
|
5814
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectlocs", "@9,0;@10,10800;@11,21600;@12,10800");
|
|
5815
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectangles", "270,180,90,0");
|
|
5806
5816
|
const typePath = v("textpath");
|
|
5807
5817
|
typePath.setAttribute("on", "t");
|
|
5808
5818
|
typePath.setAttribute("fitshape", "t");
|
|
@@ -5815,7 +5825,7 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
5815
5825
|
lock.setAttributeNS(VML_NS, "v:ext", "edit");
|
|
5816
5826
|
lock.setAttribute("text", "t");
|
|
5817
5827
|
lock.setAttribute("shapetype", "t");
|
|
5818
|
-
for (const child3 of [formulas,
|
|
5828
|
+
for (const child3 of [formulas, path2, typePath, handles, lock]) type.appendChild(child3);
|
|
5819
5829
|
const size = watermarkSizePt(spec);
|
|
5820
5830
|
const shape = v("shape");
|
|
5821
5831
|
shape.setAttribute("id", `${WATERMARK_PREFIX}${uniqueId}`);
|
|
@@ -6048,8 +6058,8 @@ var CUSTOM_LAYOUT_ATTRIBUTES = [
|
|
|
6048
6058
|
];
|
|
6049
6059
|
function parseCustomLayoutAttributes(get) {
|
|
6050
6060
|
const custom = {};
|
|
6051
|
-
for (const [key,
|
|
6052
|
-
const raw = get(
|
|
6061
|
+
for (const [key, attribute2, kind] of CUSTOM_LAYOUT_ATTRIBUTES) {
|
|
6062
|
+
const raw = get(attribute2);
|
|
6053
6063
|
const value = kind === "flag" ? optionalBoolean(raw) : optionalScaled(raw, kind === "angle" ? 6e4 : 1e5);
|
|
6054
6064
|
if (value !== void 0) custom[key] = value;
|
|
6055
6065
|
}
|
|
@@ -6063,8 +6073,8 @@ var RELATIONSHIP_ATTRIBUTES = [
|
|
|
6063
6073
|
];
|
|
6064
6074
|
function parseRelationshipIdAttributes(get) {
|
|
6065
6075
|
const result = {};
|
|
6066
|
-
for (const [property,
|
|
6067
|
-
const value = optionalString(get(
|
|
6076
|
+
for (const [property, attribute2] of RELATIONSHIP_ATTRIBUTES) {
|
|
6077
|
+
const value = optionalString(get(attribute2));
|
|
6068
6078
|
if (value) result[property] = value;
|
|
6069
6079
|
}
|
|
6070
6080
|
return result;
|
|
@@ -6126,7 +6136,7 @@ async function resolveDiagramDrawingPart(hostPart, dataRelId, drawingExtensionRe
|
|
|
6126
6136
|
const entries = await host.readRelationshipEntries(diagramRelationshipsPart(dataPath));
|
|
6127
6137
|
if (!entries) return void 0;
|
|
6128
6138
|
const drawing = entries.find(
|
|
6129
|
-
(
|
|
6139
|
+
(entry2) => (!drawingExtensionRelId || entry2.id.trim() === drawingExtensionRelId) && entry2.type.endsWith("/diagramDrawing")
|
|
6130
6140
|
);
|
|
6131
6141
|
const id = drawing?.id.trim() ?? "";
|
|
6132
6142
|
const target = drawing?.target.trim() ?? "";
|
|
@@ -6271,14 +6281,14 @@ function parseDiagramDataModel(source, part) {
|
|
|
6271
6281
|
if (connection.modelId && connectionIds.has(connection.modelId))
|
|
6272
6282
|
report("CONNECTION_ID_DUPLICATE", `Duplicate dgm:cxn modelId: ${connection.modelId}.`);
|
|
6273
6283
|
if (connection.modelId) connectionIds.add(connection.modelId);
|
|
6274
|
-
for (const [
|
|
6284
|
+
for (const [attribute2, id] of [
|
|
6275
6285
|
["srcId", connection.sourceId],
|
|
6276
6286
|
["destId", connection.destId]
|
|
6277
6287
|
])
|
|
6278
6288
|
if (!ids.has(id))
|
|
6279
6289
|
report(
|
|
6280
6290
|
"CONNECTION_ENDPOINT_MISSING",
|
|
6281
|
-
`dgm:cxn ${
|
|
6291
|
+
`dgm:cxn ${attribute2} references missing point: ${id}.`
|
|
6282
6292
|
);
|
|
6283
6293
|
const label = connectionLabel(connection, transitionText);
|
|
6284
6294
|
connections.push(label ? { ...connection, label } : connection);
|
|
@@ -6307,10 +6317,10 @@ var COLOR_ELEMENTS = {
|
|
|
6307
6317
|
hslClr: "hsl"
|
|
6308
6318
|
};
|
|
6309
6319
|
function colorValue(kind, element) {
|
|
6310
|
-
const
|
|
6311
|
-
if (kind === "scrgb") return `${
|
|
6312
|
-
if (kind === "hsl") return `${
|
|
6313
|
-
return
|
|
6320
|
+
const attribute2 = (name) => element.getAttribute(name) ?? "";
|
|
6321
|
+
if (kind === "scrgb") return `${attribute2("r")},${attribute2("g")},${attribute2("b")}`;
|
|
6322
|
+
if (kind === "hsl") return `${attribute2("hue")},${attribute2("sat")},${attribute2("lum")}`;
|
|
6323
|
+
return attribute2("val");
|
|
6314
6324
|
}
|
|
6315
6325
|
function parseDrawingColorIn(container2) {
|
|
6316
6326
|
if (!container2) return void 0;
|
|
@@ -6468,7 +6478,7 @@ function parseDrawingFill(properties) {
|
|
|
6468
6478
|
});
|
|
6469
6479
|
const angle = Number.parseInt(first(fill, "lin", NS.a)?.getAttribute("ang") ?? "", 10);
|
|
6470
6480
|
const scaled = first(fill, "lin", NS.a)?.getAttribute("scaled");
|
|
6471
|
-
const
|
|
6481
|
+
const path2 = first(fill, "path", NS.a)?.getAttribute("path");
|
|
6472
6482
|
const focus = first(first(fill, "path", NS.a), "fillToRect", NS.a);
|
|
6473
6483
|
const tile = first(fill, "tileRect", NS.a);
|
|
6474
6484
|
const tileRect = tile ? {
|
|
@@ -6490,7 +6500,7 @@ function parseDrawingFill(properties) {
|
|
|
6490
6500
|
...Number.isFinite(angle) ? { angle: angle / 6e4 } : {},
|
|
6491
6501
|
...scaled === "1" || scaled === "true" ? { scaled: true } : {},
|
|
6492
6502
|
...scaled === "0" || scaled === "false" ? { scaled: false } : {},
|
|
6493
|
-
...
|
|
6503
|
+
...path2 ? { path: path2 } : {},
|
|
6494
6504
|
...fillToRect && Object.values(fillToRect).every(Number.isFinite) ? { fillToRect } : {},
|
|
6495
6505
|
...tileRect && Object.values(tileRect).every(Number.isFinite) ? { tileRect } : {}
|
|
6496
6506
|
};
|
|
@@ -6594,13 +6604,13 @@ function parseDrawingTextBody(body) {
|
|
|
6594
6604
|
const anchor = properties?.getAttribute("anchor");
|
|
6595
6605
|
if (anchor) result.anchor = anchor;
|
|
6596
6606
|
const insets = {};
|
|
6597
|
-
for (const [key,
|
|
6607
|
+
for (const [key, attribute2] of [
|
|
6598
6608
|
["left", "lIns"],
|
|
6599
6609
|
["top", "tIns"],
|
|
6600
6610
|
["right", "rIns"],
|
|
6601
6611
|
["bottom", "bIns"]
|
|
6602
6612
|
]) {
|
|
6603
|
-
const value = Number.parseInt(properties?.getAttribute(
|
|
6613
|
+
const value = Number.parseInt(properties?.getAttribute(attribute2) ?? "", 10);
|
|
6604
6614
|
if (Number.isFinite(value)) insets[key] = value;
|
|
6605
6615
|
}
|
|
6606
6616
|
if (Object.keys(insets).length > 0) result.insetsEmu = insets;
|
|
@@ -6631,18 +6641,18 @@ function parseTransform(xfrm) {
|
|
|
6631
6641
|
...booleanAttribute(xfrm, "flipV") ? { flipVertical: true } : {}
|
|
6632
6642
|
};
|
|
6633
6643
|
}
|
|
6634
|
-
function parsePathCommands(
|
|
6644
|
+
function parsePathCommands(path2) {
|
|
6635
6645
|
const commands = [];
|
|
6636
6646
|
const point = (element) => {
|
|
6637
6647
|
const x = int(element, "x");
|
|
6638
6648
|
const y = int(element, "y");
|
|
6639
6649
|
return Number.isFinite(x) && Number.isFinite(y) ? { x, y } : void 0;
|
|
6640
6650
|
};
|
|
6641
|
-
for (const element of Array.from(
|
|
6651
|
+
for (const element of Array.from(path2.childNodes)) {
|
|
6642
6652
|
if (element.nodeType !== 1) continue;
|
|
6643
6653
|
const node = element;
|
|
6644
6654
|
const points = children(node, "pt", NS.a).map(point);
|
|
6645
|
-
if (points.some((
|
|
6655
|
+
if (points.some((entry2) => entry2 === void 0)) return void 0;
|
|
6646
6656
|
const [p0, p1, p2] = points;
|
|
6647
6657
|
switch (node.localName) {
|
|
6648
6658
|
case "moveTo":
|
|
@@ -6685,17 +6695,17 @@ function parseDrawingGeometry(spPr) {
|
|
|
6685
6695
|
const custom = first(spPr, "custGeom", NS.a);
|
|
6686
6696
|
if (custom) {
|
|
6687
6697
|
const paths = [];
|
|
6688
|
-
for (const
|
|
6689
|
-
const commands = parsePathCommands(
|
|
6698
|
+
for (const path2 of children(first(custom, "pathLst", NS.a) ?? custom, "path", NS.a)) {
|
|
6699
|
+
const commands = parsePathCommands(path2);
|
|
6690
6700
|
if (!commands) return { geometry: "custom", issue: "CUSTOM_GEOMETRY_GUIDES_UNSUPPORTED" };
|
|
6691
|
-
const width = int(
|
|
6692
|
-
const height = int(
|
|
6701
|
+
const width = int(path2, "w");
|
|
6702
|
+
const height = int(path2, "h");
|
|
6693
6703
|
paths.push({
|
|
6694
6704
|
commands,
|
|
6695
6705
|
...Number.isFinite(width) ? { width } : {},
|
|
6696
6706
|
...Number.isFinite(height) ? { height } : {},
|
|
6697
|
-
...
|
|
6698
|
-
...
|
|
6707
|
+
...path2.getAttribute("fill") ? { fill: path2.getAttribute("fill") } : {},
|
|
6708
|
+
...path2.getAttribute("stroke") === "0" || path2.getAttribute("stroke") === "false" ? { stroke: false } : {}
|
|
6699
6709
|
});
|
|
6700
6710
|
}
|
|
6701
6711
|
return { geometry: "custom", paths };
|
|
@@ -6963,78 +6973,1316 @@ function parseDiagramGraphic(graphicData, extent, docPr, rels, isAnchor) {
|
|
|
6963
6973
|
const id = docPr?.getAttribute("id") || void 0;
|
|
6964
6974
|
return {
|
|
6965
6975
|
placement: isAnchor ? "anchor" : "inline",
|
|
6966
|
-
extentEmu: { width: emu2(extent, "cx"), height: emu2(extent, "cy") },
|
|
6976
|
+
extentEmu: { width: emu2(extent, "cx"), height: emu2(extent, "cy") },
|
|
6977
|
+
...name ? { name } : {},
|
|
6978
|
+
...id ? { id } : {},
|
|
6979
|
+
relationshipIds,
|
|
6980
|
+
parts,
|
|
6981
|
+
hostRelationships,
|
|
6982
|
+
nodes: [],
|
|
6983
|
+
rendering: "placeholder",
|
|
6984
|
+
notice: diagramNotice("placeholder"),
|
|
6985
|
+
issues
|
|
6986
|
+
};
|
|
6987
|
+
}
|
|
6988
|
+
async function resolveDiagramParts(diagram, readText) {
|
|
6989
|
+
const hostPart = "word/document.xml";
|
|
6990
|
+
const dataPart = diagram.parts.data?.partName;
|
|
6991
|
+
let declaredDrawing;
|
|
6992
|
+
try {
|
|
6993
|
+
const dataXml = dataPart ? await readText(dataPart) : void 0;
|
|
6994
|
+
declaredDrawing = dataXml ? parseDiagramDataModel(dataXml).drawingRelId : void 0;
|
|
6995
|
+
} catch {
|
|
6996
|
+
}
|
|
6997
|
+
const offered = Object.entries(diagram.hostRelationships).filter(
|
|
6998
|
+
([id]) => id === declaredDrawing || !isDrawingRelationship(diagram, id)
|
|
6999
|
+
);
|
|
7000
|
+
const loaded = await loadDiagram(hostPart, diagram.relationshipIds, {
|
|
7001
|
+
hostRelationships: () => new Map(offered.map(([id, name]) => [id, `/${name}`])),
|
|
7002
|
+
resolvePath: resolvePartPath,
|
|
7003
|
+
readText,
|
|
7004
|
+
readRelationshipEntries: async (relsPart) => {
|
|
7005
|
+
const xml = await readText(relsPart);
|
|
7006
|
+
if (!xml) return void 0;
|
|
7007
|
+
try {
|
|
7008
|
+
return [...parseRelationships(xml).values()].map(({ id, type, target }) => ({
|
|
7009
|
+
id,
|
|
7010
|
+
type,
|
|
7011
|
+
target
|
|
7012
|
+
}));
|
|
7013
|
+
} catch {
|
|
7014
|
+
return void 0;
|
|
7015
|
+
}
|
|
7016
|
+
}
|
|
7017
|
+
});
|
|
7018
|
+
const known = new Set(diagram.issues.map((issue) => `${issue.code}|${issue.message}`));
|
|
7019
|
+
const fresh = loaded.issues.filter(
|
|
7020
|
+
(issue) => !issue.code.startsWith("DIAGRAM_RELATIONSHIP_") && !known.has(`${issue.code}|${issue.message}`)
|
|
7021
|
+
);
|
|
7022
|
+
diagram.issues.push(...fresh);
|
|
7023
|
+
if (loaded.paths.drawing && loaded.drawingRelId)
|
|
7024
|
+
diagram.parts.drawing = { relId: loaded.drawingRelId, partName: loaded.paths.drawing };
|
|
7025
|
+
if (loaded.layout) {
|
|
7026
|
+
diagram.layout = {
|
|
7027
|
+
uniqueId: loaded.layout.uniqueId,
|
|
7028
|
+
...loaded.layout.family ? { family: loaded.layout.family } : {},
|
|
7029
|
+
...loaded.layout.rootAlgorithm ? { rootAlgorithm: loaded.layout.rootAlgorithm } : {}
|
|
7030
|
+
};
|
|
7031
|
+
}
|
|
7032
|
+
if (loaded.colors?.uniqueId) diagram.colorsId = loaded.colors.uniqueId;
|
|
7033
|
+
if (loaded.quickStyle?.uniqueId) diagram.quickStyleId = loaded.quickStyle.uniqueId;
|
|
7034
|
+
if (loaded.data)
|
|
7035
|
+
diagram.nodes = loaded.data.nodes.map((node) => ({
|
|
7036
|
+
id: node.modelId,
|
|
7037
|
+
text: node.text,
|
|
7038
|
+
...loaded.data?.parentById.get(node.modelId) ? { parentId: loaded.data.parentById.get(node.modelId) } : {}
|
|
7039
|
+
}));
|
|
7040
|
+
if (loaded.drawing && loaded.drawing.shapes.length > 0) {
|
|
7041
|
+
diagram.drawing = loaded.drawing;
|
|
7042
|
+
diagram.rendering = "cached-drawing";
|
|
7043
|
+
} else {
|
|
7044
|
+
delete diagram.drawing;
|
|
7045
|
+
diagram.rendering = "placeholder";
|
|
7046
|
+
}
|
|
7047
|
+
diagram.notice = diagramNotice(diagram.rendering);
|
|
7048
|
+
}
|
|
7049
|
+
|
|
7050
|
+
// chart/color-style.ts
|
|
7051
|
+
var CHART_COLOR_STYLE_NS = "http://schemas.microsoft.com/office/drawing/2012/chartStyle";
|
|
7052
|
+
function chartColorStyleId(xml) {
|
|
7053
|
+
const root = parseXml(xml).documentElement;
|
|
7054
|
+
if (root.localName !== "colorStyle" || root.namespaceURI !== CHART_COLOR_STYLE_NS)
|
|
7055
|
+
return void 0;
|
|
7056
|
+
const value = root.getAttribute("id");
|
|
7057
|
+
if (!value || !/^\d+$/.test(value)) return void 0;
|
|
7058
|
+
const id = Number(value);
|
|
7059
|
+
return Number.isInteger(id) && id >= 0 ? id : void 0;
|
|
7060
|
+
}
|
|
7061
|
+
|
|
7062
|
+
// chart/built-in-text-style.ts
|
|
7063
|
+
var C14 = NS.c14;
|
|
7064
|
+
function readBuiltInChartStyle(root) {
|
|
7065
|
+
for (const content of children(root, "AlternateContent", NS.mc)) {
|
|
7066
|
+
for (const choice of children(content, "Choice", NS.mc)) {
|
|
7067
|
+
const requires = choice.getAttribute("Requires")?.trim().split(/\s+/);
|
|
7068
|
+
if (!requires?.length || !requires.every((prefix) => choice.lookupNamespaceURI(prefix) === C14))
|
|
7069
|
+
continue;
|
|
7070
|
+
const modern = first(choice, "style", C14)?.getAttribute("val");
|
|
7071
|
+
if (modern && /^\d+$/.test(modern) && Number(modern) >= 101 && Number(modern) <= 148)
|
|
7072
|
+
return Number(modern);
|
|
7073
|
+
}
|
|
7074
|
+
}
|
|
7075
|
+
const legacy = first(root, "style", NS.c) ?? first(first(first(root, "AlternateContent", NS.mc), "Fallback", NS.mc), "style", NS.c);
|
|
7076
|
+
const value = legacy?.getAttribute("val");
|
|
7077
|
+
if (!legacy) return 2;
|
|
7078
|
+
return value && /^\d+$/.test(value) && Number.isSafeInteger(Number(value)) ? Number(value) : void 0;
|
|
7079
|
+
}
|
|
7080
|
+
|
|
7081
|
+
// chart/read-appearance.ts
|
|
7082
|
+
function readChartAppearance(text, properties) {
|
|
7083
|
+
const out = {};
|
|
7084
|
+
const size = Number(text?.getAttribute("sz") ?? NaN);
|
|
7085
|
+
if (Number.isFinite(size) && size > 0) out.fontSize = size / 100;
|
|
7086
|
+
for (const [attribute2, key] of [
|
|
7087
|
+
["b", "bold"],
|
|
7088
|
+
["i", "italic"]
|
|
7089
|
+
]) {
|
|
7090
|
+
const value = text?.getAttribute(attribute2);
|
|
7091
|
+
if (value !== null && value !== void 0) out[key] = value === "1" || value === "true";
|
|
7092
|
+
}
|
|
7093
|
+
const typeface = first(text, "latin", NS.a)?.getAttribute("typeface");
|
|
7094
|
+
const underline = text?.getAttribute("u");
|
|
7095
|
+
if (underline) out.underline = underline !== "none";
|
|
7096
|
+
if (typeface) out.typeface = typeface;
|
|
7097
|
+
const color = parseDrawingColorIn(first(text, "solidFill", NS.a));
|
|
7098
|
+
if (color) out.textColor = color;
|
|
7099
|
+
const fill = parseDrawingFill(properties);
|
|
7100
|
+
const line = parseDrawingLine(first(properties, "ln", NS.a));
|
|
7101
|
+
if (fill) out.fill = fill;
|
|
7102
|
+
if (line) out.line = line;
|
|
7103
|
+
const effects = first(text, "effectLst", NS.a);
|
|
7104
|
+
if (effects) out.textEffectsXml = buildXml(effects);
|
|
7105
|
+
return out;
|
|
7106
|
+
}
|
|
7107
|
+
|
|
7108
|
+
// chart/formatting-nodes.ts
|
|
7109
|
+
function chartFormattingNodes(root) {
|
|
7110
|
+
const chart = first(root, "chart", NS.c);
|
|
7111
|
+
const plot = first(chart, "plotArea", NS.c);
|
|
7112
|
+
const category = first(plot, "catAx", NS.c) ?? first(plot, "dateAx", NS.c);
|
|
7113
|
+
const values = plot ? children(plot, "valAx", NS.c) : [];
|
|
7114
|
+
return {
|
|
7115
|
+
chartArea: root,
|
|
7116
|
+
plotArea: plot,
|
|
7117
|
+
title: first(chart, "title", NS.c),
|
|
7118
|
+
legend: first(chart, "legend", NS.c),
|
|
7119
|
+
categoryAxis: category ?? values[0],
|
|
7120
|
+
valueAxis: category ? values[0] : values[1],
|
|
7121
|
+
gridlineMajor: first(values[0], "majorGridlines", NS.c),
|
|
7122
|
+
gridlineMinor: first(values[0], "minorGridlines", NS.c)
|
|
7123
|
+
};
|
|
7124
|
+
}
|
|
7125
|
+
|
|
7126
|
+
// chart/manual-layout.ts
|
|
7127
|
+
function readChartManualLayoutValues(value) {
|
|
7128
|
+
const result = {};
|
|
7129
|
+
const enumeration = (name, values) => {
|
|
7130
|
+
const raw = value(name);
|
|
7131
|
+
return values.includes(raw) ? raw : void 0;
|
|
7132
|
+
};
|
|
7133
|
+
const target = enumeration("layoutTarget", ["inner", "outer"]);
|
|
7134
|
+
if (target) result.layoutTarget = target;
|
|
7135
|
+
for (const [xml, key] of [
|
|
7136
|
+
["xMode", "xMode"],
|
|
7137
|
+
["yMode", "yMode"],
|
|
7138
|
+
["wMode", "widthMode"],
|
|
7139
|
+
["hMode", "heightMode"]
|
|
7140
|
+
]) {
|
|
7141
|
+
const mode = enumeration(xml, ["edge", "factor"]);
|
|
7142
|
+
if (mode) result[key] = mode;
|
|
7143
|
+
}
|
|
7144
|
+
for (const [xml, key] of [
|
|
7145
|
+
["x", "x"],
|
|
7146
|
+
["y", "y"],
|
|
7147
|
+
["w", "width"],
|
|
7148
|
+
["h", "height"]
|
|
7149
|
+
]) {
|
|
7150
|
+
const raw = value(xml);
|
|
7151
|
+
if (typeof raw !== "string" && typeof raw !== "number" || typeof raw === "string" && !raw.trim())
|
|
7152
|
+
continue;
|
|
7153
|
+
const number = Number(raw);
|
|
7154
|
+
if (Number.isFinite(number)) result[key] = number;
|
|
7155
|
+
}
|
|
7156
|
+
return Object.keys(result).length ? result : void 0;
|
|
7157
|
+
}
|
|
7158
|
+
|
|
7159
|
+
// chart/read-formatting.ts
|
|
7160
|
+
var c = (parent, name) => first(parent, name, NS.c);
|
|
7161
|
+
var a = (parent, name) => first(parent, name, NS.a);
|
|
7162
|
+
function entry(node) {
|
|
7163
|
+
const body = c(node, "txPr");
|
|
7164
|
+
const paragraph = a(body, "p");
|
|
7165
|
+
const defaults = a(a(paragraph, "pPr"), "defRPr");
|
|
7166
|
+
const rich = c(c(node, "tx"), "rich");
|
|
7167
|
+
const richParagraph = a(rich, "p");
|
|
7168
|
+
const textBody = parseDrawingTextBody(rich);
|
|
7169
|
+
const manual = c(c(node, "layout"), "manualLayout");
|
|
7170
|
+
const layout2 = manual ? readChartManualLayoutValues((name) => c(manual, name)?.getAttribute("val")) : void 0;
|
|
7171
|
+
const overlay = c(node, "overlay")?.getAttribute("val");
|
|
7172
|
+
const out = {
|
|
7173
|
+
sourceXml: buildXml(node),
|
|
7174
|
+
...layout2 ? { layout: layout2 } : {},
|
|
7175
|
+
...overlay === "0" || overlay === "false" ? { overlay: false } : overlay === "1" || overlay === "true" ? { overlay: true } : {},
|
|
7176
|
+
...readChartAppearance(defaults, c(node, "spPr")),
|
|
7177
|
+
...readChartAppearance(a(a(richParagraph, "pPr"), "defRPr"), void 0),
|
|
7178
|
+
...readChartAppearance(a(a(richParagraph, "r"), "rPr"), void 0),
|
|
7179
|
+
...textBody ? { textBody, textBodyStyle: readChartAppearance(defaults, void 0) } : {}
|
|
7180
|
+
};
|
|
7181
|
+
if (["catAx", "dateAx", "valAx"].includes(node.localName)) {
|
|
7182
|
+
const deleted = c(node, "delete")?.getAttribute("val");
|
|
7183
|
+
if (deleted !== void 0) out.axisVisible = deleted !== "1" && deleted !== "true";
|
|
7184
|
+
out.labelsVisible = out.axisVisible !== false && c(node, "tickLblPos")?.getAttribute("val") !== "none";
|
|
7185
|
+
}
|
|
7186
|
+
return out;
|
|
7187
|
+
}
|
|
7188
|
+
function readChartFormatting(root) {
|
|
7189
|
+
const nodes = chartFormattingNodes(root);
|
|
7190
|
+
const entries = Object.fromEntries(
|
|
7191
|
+
Object.entries(nodes).flatMap(([name, node]) => node ? [[name, entry(node)]] : [])
|
|
7192
|
+
);
|
|
7193
|
+
const builtInStyle = readBuiltInChartStyle(root);
|
|
7194
|
+
const textBody = c(root, "txPr");
|
|
7195
|
+
const textDefaults = textBody ? {
|
|
7196
|
+
sourceXml: buildXml(textBody),
|
|
7197
|
+
...readChartAppearance(a(a(a(textBody, "p"), "pPr"), "defRPr"), void 0)
|
|
7198
|
+
} : void 0;
|
|
7199
|
+
return Object.keys(entries).length ? {
|
|
7200
|
+
entries,
|
|
7201
|
+
sourceXml: buildXml(root),
|
|
7202
|
+
...builtInStyle === void 0 ? {} : { builtInStyle },
|
|
7203
|
+
...textDefaults ? { textDefaults } : {}
|
|
7204
|
+
} : void 0;
|
|
7205
|
+
}
|
|
7206
|
+
|
|
7207
|
+
// chart/data-cache.ts
|
|
7208
|
+
function chartCacheValues(cache) {
|
|
7209
|
+
if (!cache) return [];
|
|
7210
|
+
const numeric = cache.type === "number";
|
|
7211
|
+
const out = [];
|
|
7212
|
+
for (const point of cache.points) {
|
|
7213
|
+
const text = point.value;
|
|
7214
|
+
out[point.index ?? out.length] = numeric && text.trim() !== "" && Number.isFinite(Number(text)) ? Number(text) : text;
|
|
7215
|
+
}
|
|
7216
|
+
const size = Math.max(cache.pointCount ?? 0, out.length);
|
|
7217
|
+
for (let index = 0; index < size; index++) if (out[index] === void 0) out[index] = "";
|
|
7218
|
+
return out;
|
|
7219
|
+
}
|
|
7220
|
+
|
|
7221
|
+
// chart/xml-fragment.ts
|
|
7222
|
+
var CHART_ROOT_BINDINGS = /* @__PURE__ */ new Map([
|
|
7223
|
+
["c", NS.c],
|
|
7224
|
+
["a", NS.a],
|
|
7225
|
+
["r", NS.r]
|
|
7226
|
+
]);
|
|
7227
|
+
var DECLARATION = / xmlns:([A-Za-z_][\w.-]*)="([^"]*)"/g;
|
|
7228
|
+
function stripDeclarations(xml, bindings) {
|
|
7229
|
+
const conflicting = /* @__PURE__ */ new Set();
|
|
7230
|
+
for (const [, prefix, uri] of xml.matchAll(DECLARATION))
|
|
7231
|
+
if (prefix !== void 0 && bindings.has(prefix) && bindings.get(prefix) !== uri)
|
|
7232
|
+
conflicting.add(prefix);
|
|
7233
|
+
return xml.replace(
|
|
7234
|
+
DECLARATION,
|
|
7235
|
+
(match, prefix, uri) => bindings.get(prefix) === uri && !conflicting.has(prefix) ? "" : match
|
|
7236
|
+
);
|
|
7237
|
+
}
|
|
7238
|
+
var innerXml = (element) => stripDeclarations(elements(element).map(buildXml).join(""), CHART_ROOT_BINDINGS);
|
|
7239
|
+
|
|
7240
|
+
// chart/parse-util.ts
|
|
7241
|
+
var cChild = (parent, local) => first(parent, local, NS.c);
|
|
7242
|
+
var attribute = (element, name) => element?.hasAttribute(name) ? element.getAttribute(name) ?? void 0 : void 0;
|
|
7243
|
+
var cVal = (parent, local) => attribute(cChild(parent, local), "val");
|
|
7244
|
+
var path = (element) => `c:${element.parentNode?.localName ?? ""}/c:${element.localName}`;
|
|
7245
|
+
function malformed(context, element, value) {
|
|
7246
|
+
context.issues.push({
|
|
7247
|
+
code: "CHART_VALUE_INVALID",
|
|
7248
|
+
message: `${path(element)} has an unreadable value "${value}".`
|
|
7249
|
+
});
|
|
7250
|
+
}
|
|
7251
|
+
function cBool(context, parent, local) {
|
|
7252
|
+
const element = cChild(parent, local);
|
|
7253
|
+
if (!element) return void 0;
|
|
7254
|
+
const raw = attribute(element, "val");
|
|
7255
|
+
if (raw === void 0) return true;
|
|
7256
|
+
const value = raw.trim().toLowerCase();
|
|
7257
|
+
if (value === "1" || value === "true") return true;
|
|
7258
|
+
if (value === "0" || value === "false") return false;
|
|
7259
|
+
malformed(context, element, raw);
|
|
7260
|
+
return void 0;
|
|
7261
|
+
}
|
|
7262
|
+
function cNumber(context, parent, local) {
|
|
7263
|
+
const element = cChild(parent, local);
|
|
7264
|
+
const raw = attribute(element, "val");
|
|
7265
|
+
if (!element || raw === void 0) return void 0;
|
|
7266
|
+
const value = raw.trim() ? Number(raw) : Number.NaN;
|
|
7267
|
+
if (Number.isFinite(value)) return value;
|
|
7268
|
+
malformed(context, element, raw);
|
|
7269
|
+
return void 0;
|
|
7270
|
+
}
|
|
7271
|
+
function reportUnmodelled(context, element, handled) {
|
|
7272
|
+
for (const child3 of elements(element)) {
|
|
7273
|
+
if (handled.has(child3.localName)) continue;
|
|
7274
|
+
context.issues.push({
|
|
7275
|
+
code: "CHART_ELEMENT_NOT_MODELLED",
|
|
7276
|
+
message: `${path(child3)} is not modelled; it is kept only in the source part.`
|
|
7277
|
+
});
|
|
7278
|
+
}
|
|
7279
|
+
}
|
|
7280
|
+
function extensionList(parent) {
|
|
7281
|
+
const extLst = cChild(parent, "extLst");
|
|
7282
|
+
return extLst ? buildXml(extLst) : void 0;
|
|
7283
|
+
}
|
|
7284
|
+
function readShapeFields(spPr) {
|
|
7285
|
+
const out = {};
|
|
7286
|
+
const fill = parseDrawingFill(spPr);
|
|
7287
|
+
if (fill) out.fill = fill;
|
|
7288
|
+
const line = parseDrawingLine(first(spPr, "ln", NS.a));
|
|
7289
|
+
if (line) out.line = line;
|
|
7290
|
+
const effects = first(spPr, "effectLst", NS.a);
|
|
7291
|
+
if (effects) out.effectsXml = buildXml(effects);
|
|
7292
|
+
return out;
|
|
7293
|
+
}
|
|
7294
|
+
function shapeProperties(parent) {
|
|
7295
|
+
const spPr = cChild(parent, "spPr");
|
|
7296
|
+
if (!spPr) return void 0;
|
|
7297
|
+
const out = readShapeFields(spPr);
|
|
7298
|
+
const source = innerXml(spPr);
|
|
7299
|
+
if (source) out.sourceXml = source;
|
|
7300
|
+
return out;
|
|
7301
|
+
}
|
|
7302
|
+
function chartTextBody(element) {
|
|
7303
|
+
const body = parseDrawingTextBody(element);
|
|
7304
|
+
if (!body || !element) return body;
|
|
7305
|
+
const source = innerXml(element);
|
|
7306
|
+
if (source) body.sourceXml = source;
|
|
7307
|
+
return body;
|
|
7308
|
+
}
|
|
7309
|
+
var textProperties = (parent) => chartTextBody(cChild(parent, "txPr"));
|
|
7310
|
+
function chartLines(parent, local) {
|
|
7311
|
+
const element = cChild(parent, local);
|
|
7312
|
+
if (!element) return void 0;
|
|
7313
|
+
const spPr = shapeProperties(element);
|
|
7314
|
+
return spPr ? { spPr } : {};
|
|
7315
|
+
}
|
|
7316
|
+
function numberFormat(parent) {
|
|
7317
|
+
const element = cChild(parent, "numFmt");
|
|
7318
|
+
const formatCode = attribute(element, "formatCode");
|
|
7319
|
+
if (formatCode === void 0) return void 0;
|
|
7320
|
+
const linked = attribute(element, "sourceLinked");
|
|
7321
|
+
return {
|
|
7322
|
+
formatCode,
|
|
7323
|
+
...linked === "1" || linked === "true" ? { sourceLinked: true } : {},
|
|
7324
|
+
...linked === "0" || linked === "false" ? { sourceLinked: false } : {}
|
|
7325
|
+
};
|
|
7326
|
+
}
|
|
7327
|
+
function readLayoutFields(layout2) {
|
|
7328
|
+
const manual = cChild(layout2, "manualLayout");
|
|
7329
|
+
return (manual && readChartManualLayoutValues((name) => cVal(manual, name))) ?? {};
|
|
7330
|
+
}
|
|
7331
|
+
function manualLayout(parent) {
|
|
7332
|
+
const layout2 = cChild(parent, "layout");
|
|
7333
|
+
if (!layout2) return void 0;
|
|
7334
|
+
const out = readLayoutFields(layout2);
|
|
7335
|
+
const source = innerXml(layout2);
|
|
7336
|
+
if (source) out.sourceXml = source;
|
|
7337
|
+
return out;
|
|
7338
|
+
}
|
|
7339
|
+
function assignDefined(target, values) {
|
|
7340
|
+
for (const [key, value] of Object.entries(values))
|
|
7341
|
+
if (value !== void 0) target[key] = value;
|
|
7342
|
+
return target;
|
|
7343
|
+
}
|
|
7344
|
+
|
|
7345
|
+
// chart/parse-text.ts
|
|
7346
|
+
function parseCache(node) {
|
|
7347
|
+
const cache = {
|
|
7348
|
+
type: node.localName === "numCache" || node.localName === "numLit" ? "number" : "string",
|
|
7349
|
+
points: children(node, "pt", NS.c).map((pt) => {
|
|
7350
|
+
const point = { value: cChild(pt, "v")?.textContent ?? "" };
|
|
7351
|
+
const index = Number(attribute(pt, "idx") ?? Number.NaN);
|
|
7352
|
+
if (Number.isInteger(index) && index >= 0) point.index = index;
|
|
7353
|
+
const formatCode2 = attribute(pt, "formatCode");
|
|
7354
|
+
if (formatCode2 !== void 0) point.formatCode = formatCode2;
|
|
7355
|
+
return point;
|
|
7356
|
+
})
|
|
7357
|
+
};
|
|
7358
|
+
const count = Number(cVal(node, "ptCount") ?? Number.NaN);
|
|
7359
|
+
if (Number.isInteger(count) && count >= 0) cache.pointCount = count;
|
|
7360
|
+
const formatCode = cChild(node, "formatCode")?.textContent;
|
|
7361
|
+
if (formatCode) cache.formatCode = formatCode;
|
|
7362
|
+
return cache;
|
|
7363
|
+
}
|
|
7364
|
+
function parseDataSource(element) {
|
|
7365
|
+
if (!element) return void 0;
|
|
7366
|
+
const source = {};
|
|
7367
|
+
const ref = cChild(element, "numRef") ?? cChild(element, "strRef") ?? cChild(element, "multiLvlStrRef");
|
|
7368
|
+
if (ref) {
|
|
7369
|
+
source.kind = ref.localName;
|
|
7370
|
+
const formula = cChild(ref, "f")?.textContent;
|
|
7371
|
+
if (formula) source.formula = formula;
|
|
7372
|
+
const cache = cChild(ref, "numCache") ?? cChild(ref, "strCache");
|
|
7373
|
+
if (cache) source.cache = parseCache(cache);
|
|
7374
|
+
const levels = cChild(ref, "multiLvlStrCache");
|
|
7375
|
+
if (levels) {
|
|
7376
|
+
source.levels = children(levels, "lvl", NS.c).map(parseCache);
|
|
7377
|
+
const count = Number(cVal(levels, "ptCount") ?? Number.NaN);
|
|
7378
|
+
if (Number.isInteger(count) && count >= 0) source.levelPointCount = count;
|
|
7379
|
+
}
|
|
7380
|
+
return source;
|
|
7381
|
+
}
|
|
7382
|
+
const literal = cChild(element, "numLit") ?? cChild(element, "strLit");
|
|
7383
|
+
if (literal) {
|
|
7384
|
+
source.kind = literal.localName;
|
|
7385
|
+
source.cache = parseCache(literal);
|
|
7386
|
+
}
|
|
7387
|
+
return source;
|
|
7388
|
+
}
|
|
7389
|
+
function parseChartText(context, tx, allowValue) {
|
|
7390
|
+
if (!tx) return void 0;
|
|
7391
|
+
const text = {};
|
|
7392
|
+
const rich = chartTextBody(cChild(tx, "rich"));
|
|
7393
|
+
if (rich) text.rich = rich;
|
|
7394
|
+
if (cChild(tx, "strRef")) {
|
|
7395
|
+
const reference = parseDataSource(tx);
|
|
7396
|
+
if (reference) text.reference = reference;
|
|
7397
|
+
}
|
|
7398
|
+
const value = allowValue ? cChild(tx, "v")?.textContent : void 0;
|
|
7399
|
+
if (value !== void 0 && value !== null) text.value = value;
|
|
7400
|
+
const cached2 = chartCacheValues(text.reference?.cache)[0];
|
|
7401
|
+
const flat = text.value ?? (rich ? rich.text : cached2 === void 0 ? void 0 : String(cached2));
|
|
7402
|
+
if (flat !== void 0) text.text = flat;
|
|
7403
|
+
reportUnmodelled(context, tx, new Set(allowValue ? ["strRef", "v"] : ["rich", "strRef"]));
|
|
7404
|
+
return text;
|
|
7405
|
+
}
|
|
7406
|
+
var TITLE = /* @__PURE__ */ new Set(["tx", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
7407
|
+
function parseTitle(context, element) {
|
|
7408
|
+
const tx = parseChartText(context, cChild(element, "tx"), false);
|
|
7409
|
+
reportUnmodelled(context, element, TITLE);
|
|
7410
|
+
return assignDefined(
|
|
7411
|
+
{},
|
|
7412
|
+
{
|
|
7413
|
+
tx,
|
|
7414
|
+
text: tx?.text,
|
|
7415
|
+
overlay: cBool(context, element, "overlay"),
|
|
7416
|
+
layout: manualLayout(element),
|
|
7417
|
+
spPr: shapeProperties(element),
|
|
7418
|
+
txPr: textProperties(element),
|
|
7419
|
+
extLst: extensionList(element)
|
|
7420
|
+
}
|
|
7421
|
+
);
|
|
7422
|
+
}
|
|
7423
|
+
var LABEL_OPTIONS = [
|
|
7424
|
+
"delete",
|
|
7425
|
+
"showLegendKey",
|
|
7426
|
+
"showVal",
|
|
7427
|
+
"showCatName",
|
|
7428
|
+
"showSerName",
|
|
7429
|
+
"showPercent",
|
|
7430
|
+
"showBubbleSize",
|
|
7431
|
+
"separator",
|
|
7432
|
+
"dLblPos",
|
|
7433
|
+
"numFmt",
|
|
7434
|
+
"spPr",
|
|
7435
|
+
"txPr",
|
|
7436
|
+
"extLst"
|
|
7437
|
+
];
|
|
7438
|
+
function labelOptions(context, element) {
|
|
7439
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
7440
|
+
return assignDefined(
|
|
7441
|
+
{},
|
|
7442
|
+
{
|
|
7443
|
+
deleted: flag2("delete"),
|
|
7444
|
+
showLegendKey: flag2("showLegendKey"),
|
|
7445
|
+
showValue: flag2("showVal"),
|
|
7446
|
+
showCategoryName: flag2("showCatName"),
|
|
7447
|
+
showSeriesName: flag2("showSerName"),
|
|
7448
|
+
showPercent: flag2("showPercent"),
|
|
7449
|
+
showBubbleSize: flag2("showBubbleSize"),
|
|
7450
|
+
separator: cChild(element, "separator")?.textContent ?? void 0,
|
|
7451
|
+
position: cVal(element, "dLblPos"),
|
|
7452
|
+
numberFormat: numberFormat(element),
|
|
7453
|
+
spPr: shapeProperties(element),
|
|
7454
|
+
txPr: textProperties(element),
|
|
7455
|
+
extLst: extensionList(element)
|
|
7456
|
+
}
|
|
7457
|
+
);
|
|
7458
|
+
}
|
|
7459
|
+
var LABEL = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "idx", "layout", "tx"]);
|
|
7460
|
+
var LABELS = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "dLbl", "showLeaderLines", "leaderLines"]);
|
|
7461
|
+
function parseDataLabels(context, element) {
|
|
7462
|
+
if (!element) return void 0;
|
|
7463
|
+
const labels = children(element, "dLbl", NS.c).map((node) => {
|
|
7464
|
+
reportUnmodelled(context, node, LABEL);
|
|
7465
|
+
return assignDefined(labelOptions(context, node), {
|
|
7466
|
+
index: cNumber(context, node, "idx"),
|
|
7467
|
+
tx: parseChartText(context, cChild(node, "tx"), false),
|
|
7468
|
+
layout: manualLayout(node)
|
|
7469
|
+
});
|
|
7470
|
+
});
|
|
7471
|
+
reportUnmodelled(context, element, LABELS);
|
|
7472
|
+
return assignDefined(
|
|
7473
|
+
{ ...labelOptions(context, element), labels },
|
|
7474
|
+
{
|
|
7475
|
+
showLeaderLines: cBool(context, element, "showLeaderLines"),
|
|
7476
|
+
leaderLines: chartLines(element, "leaderLines")
|
|
7477
|
+
}
|
|
7478
|
+
);
|
|
7479
|
+
}
|
|
7480
|
+
|
|
7481
|
+
// chart/parse-chrome.ts
|
|
7482
|
+
var SURFACE = /* @__PURE__ */ new Set(["thickness", "spPr", "pictureOptions", "extLst"]);
|
|
7483
|
+
function parseSurface(context, element) {
|
|
7484
|
+
if (!element) return void 0;
|
|
7485
|
+
reportUnmodelled(context, element, SURFACE);
|
|
7486
|
+
const pictureOptions = cChild(element, "pictureOptions");
|
|
7487
|
+
return assignDefined(
|
|
7488
|
+
{},
|
|
7489
|
+
{
|
|
7490
|
+
thickness: cNumber(context, element, "thickness"),
|
|
7491
|
+
spPr: shapeProperties(element),
|
|
7492
|
+
pictureOptionsXml: pictureOptions ? buildXml(pictureOptions) : void 0,
|
|
7493
|
+
extLst: extensionList(element)
|
|
7494
|
+
}
|
|
7495
|
+
);
|
|
7496
|
+
}
|
|
7497
|
+
var DATA_TABLE = /* @__PURE__ */ new Set([
|
|
7498
|
+
"showHorzBorder",
|
|
7499
|
+
"showVertBorder",
|
|
7500
|
+
"showOutline",
|
|
7501
|
+
"showKeys",
|
|
7502
|
+
"spPr",
|
|
7503
|
+
"txPr",
|
|
7504
|
+
"extLst"
|
|
7505
|
+
]);
|
|
7506
|
+
function parseDataTable(context, element) {
|
|
7507
|
+
if (!element) return void 0;
|
|
7508
|
+
reportUnmodelled(context, element, DATA_TABLE);
|
|
7509
|
+
return assignDefined(
|
|
7510
|
+
{},
|
|
7511
|
+
{
|
|
7512
|
+
showHorizontalBorder: cBool(context, element, "showHorzBorder"),
|
|
7513
|
+
showVerticalBorder: cBool(context, element, "showVertBorder"),
|
|
7514
|
+
showOutline: cBool(context, element, "showOutline"),
|
|
7515
|
+
showKeys: cBool(context, element, "showKeys"),
|
|
7516
|
+
spPr: shapeProperties(element),
|
|
7517
|
+
txPr: textProperties(element),
|
|
7518
|
+
extLst: extensionList(element)
|
|
7519
|
+
}
|
|
7520
|
+
);
|
|
7521
|
+
}
|
|
7522
|
+
var DISPLAY_UNITS = /* @__PURE__ */ new Set(["custUnit", "builtInUnit", "dispUnitsLbl", "extLst"]);
|
|
7523
|
+
var DISPLAY_UNITS_LABEL = /* @__PURE__ */ new Set(["layout", "tx", "spPr", "txPr"]);
|
|
7524
|
+
function parseDisplayUnits(context, element) {
|
|
7525
|
+
if (!element) return void 0;
|
|
7526
|
+
reportUnmodelled(context, element, DISPLAY_UNITS);
|
|
7527
|
+
const labelElement = cChild(element, "dispUnitsLbl");
|
|
7528
|
+
let label;
|
|
7529
|
+
if (labelElement) {
|
|
7530
|
+
reportUnmodelled(context, labelElement, DISPLAY_UNITS_LABEL);
|
|
7531
|
+
label = assignDefined(
|
|
7532
|
+
{},
|
|
7533
|
+
{
|
|
7534
|
+
layout: manualLayout(labelElement),
|
|
7535
|
+
tx: parseChartText(context, cChild(labelElement, "tx"), false),
|
|
7536
|
+
spPr: shapeProperties(labelElement),
|
|
7537
|
+
txPr: textProperties(labelElement)
|
|
7538
|
+
}
|
|
7539
|
+
);
|
|
7540
|
+
}
|
|
7541
|
+
return assignDefined(
|
|
7542
|
+
{},
|
|
7543
|
+
{
|
|
7544
|
+
builtInUnit: cVal(element, "builtInUnit"),
|
|
7545
|
+
customUnit: cNumber(context, element, "custUnit"),
|
|
7546
|
+
label,
|
|
7547
|
+
extLst: extensionList(element)
|
|
7548
|
+
}
|
|
7549
|
+
);
|
|
7550
|
+
}
|
|
7551
|
+
|
|
7552
|
+
// chart/parse-series.ts
|
|
7553
|
+
var MARKER = /* @__PURE__ */ new Set(["symbol", "size", "spPr", "extLst"]);
|
|
7554
|
+
function parseMarker(context, element) {
|
|
7555
|
+
if (!element) return void 0;
|
|
7556
|
+
reportUnmodelled(context, element, MARKER);
|
|
7557
|
+
return assignDefined(
|
|
7558
|
+
{},
|
|
7559
|
+
{
|
|
7560
|
+
symbol: cVal(element, "symbol"),
|
|
7561
|
+
size: cNumber(context, element, "size"),
|
|
7562
|
+
spPr: shapeProperties(element),
|
|
7563
|
+
extLst: extensionList(element)
|
|
7564
|
+
}
|
|
7565
|
+
);
|
|
7566
|
+
}
|
|
7567
|
+
var POINT = /* @__PURE__ */ new Set([
|
|
7568
|
+
"idx",
|
|
7569
|
+
"invertIfNegative",
|
|
7570
|
+
"marker",
|
|
7571
|
+
"bubble3D",
|
|
7572
|
+
"explosion",
|
|
7573
|
+
"spPr",
|
|
7574
|
+
"extLst"
|
|
7575
|
+
]);
|
|
7576
|
+
function parseDataPoint(context, element) {
|
|
7577
|
+
reportUnmodelled(context, element, POINT);
|
|
7578
|
+
const index = cNumber(context, element, "idx");
|
|
7579
|
+
return assignDefined(
|
|
7580
|
+
{},
|
|
7581
|
+
{
|
|
7582
|
+
index: index !== void 0 && Number.isInteger(index) && index >= 0 ? index : void 0,
|
|
7583
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
7584
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
7585
|
+
explosion: cNumber(context, element, "explosion"),
|
|
7586
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
7587
|
+
spPr: shapeProperties(element),
|
|
7588
|
+
extLst: extensionList(element)
|
|
7589
|
+
}
|
|
7590
|
+
);
|
|
7591
|
+
}
|
|
7592
|
+
var SERIES = /* @__PURE__ */ new Set([
|
|
7593
|
+
"idx",
|
|
7594
|
+
"order",
|
|
7595
|
+
"tx",
|
|
7596
|
+
"spPr",
|
|
7597
|
+
"invertIfNegative",
|
|
7598
|
+
"dPt",
|
|
7599
|
+
"dLbls",
|
|
7600
|
+
"cat",
|
|
7601
|
+
"val",
|
|
7602
|
+
"xVal",
|
|
7603
|
+
"yVal",
|
|
7604
|
+
"smooth",
|
|
7605
|
+
"marker",
|
|
7606
|
+
"explosion",
|
|
7607
|
+
"bubbleSize",
|
|
7608
|
+
"bubble3D",
|
|
7609
|
+
"shape",
|
|
7610
|
+
"extLst"
|
|
7611
|
+
]);
|
|
7612
|
+
function parseSeries(context, element) {
|
|
7613
|
+
reportUnmodelled(context, element, SERIES);
|
|
7614
|
+
return assignDefined(
|
|
7615
|
+
{ dataPoints: children(element, "dPt", NS.c).map((point) => parseDataPoint(context, point)) },
|
|
7616
|
+
{
|
|
7617
|
+
index: cNumber(context, element, "idx"),
|
|
7618
|
+
order: cNumber(context, element, "order"),
|
|
7619
|
+
tx: parseChartText(context, cChild(element, "tx"), true),
|
|
7620
|
+
spPr: shapeProperties(element),
|
|
7621
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
7622
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
7623
|
+
categories: parseDataSource(cChild(element, "cat")),
|
|
7624
|
+
values: parseDataSource(cChild(element, "val")),
|
|
7625
|
+
xValues: parseDataSource(cChild(element, "xVal")),
|
|
7626
|
+
yValues: parseDataSource(cChild(element, "yVal")),
|
|
7627
|
+
bubbleSizes: parseDataSource(cChild(element, "bubbleSize")),
|
|
7628
|
+
smooth: cBool(context, element, "smooth"),
|
|
7629
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
7630
|
+
explosion: cNumber(context, element, "explosion"),
|
|
7631
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
7632
|
+
shape: cVal(element, "shape"),
|
|
7633
|
+
extLst: extensionList(element)
|
|
7634
|
+
}
|
|
7635
|
+
);
|
|
7636
|
+
}
|
|
7637
|
+
|
|
7638
|
+
// chart/parse-plot.ts
|
|
7639
|
+
var CHART_GROUP_ELEMENTS = {
|
|
7640
|
+
barChart: { kind: "bar", is3D: false },
|
|
7641
|
+
bar3DChart: { kind: "bar", is3D: true },
|
|
7642
|
+
lineChart: { kind: "line", is3D: false },
|
|
7643
|
+
line3DChart: { kind: "line", is3D: true },
|
|
7644
|
+
areaChart: { kind: "area", is3D: false },
|
|
7645
|
+
area3DChart: { kind: "area", is3D: true },
|
|
7646
|
+
pieChart: { kind: "pie", is3D: false },
|
|
7647
|
+
pie3DChart: { kind: "pie", is3D: true },
|
|
7648
|
+
ofPieChart: { kind: "ofPie", is3D: false },
|
|
7649
|
+
doughnutChart: { kind: "doughnut", is3D: false },
|
|
7650
|
+
scatterChart: { kind: "scatter", is3D: false },
|
|
7651
|
+
radarChart: { kind: "radar", is3D: false },
|
|
7652
|
+
bubbleChart: { kind: "bubble", is3D: false },
|
|
7653
|
+
stockChart: { kind: "stock", is3D: false },
|
|
7654
|
+
surfaceChart: { kind: "surface", is3D: false },
|
|
7655
|
+
surface3DChart: { kind: "surface", is3D: true }
|
|
7656
|
+
};
|
|
7657
|
+
var AXIS_ELEMENTS = {
|
|
7658
|
+
catAx: "cat",
|
|
7659
|
+
valAx: "val",
|
|
7660
|
+
dateAx: "date",
|
|
7661
|
+
serAx: "ser"
|
|
7662
|
+
};
|
|
7663
|
+
var GROUP = /* @__PURE__ */ new Set([
|
|
7664
|
+
"ser",
|
|
7665
|
+
"axId",
|
|
7666
|
+
"varyColors",
|
|
7667
|
+
"dLbls",
|
|
7668
|
+
"barDir",
|
|
7669
|
+
"grouping",
|
|
7670
|
+
"gapWidth",
|
|
7671
|
+
"overlap",
|
|
7672
|
+
"gapDepth",
|
|
7673
|
+
"shape",
|
|
7674
|
+
"marker",
|
|
7675
|
+
"smooth",
|
|
7676
|
+
"dropLines",
|
|
7677
|
+
"hiLowLines",
|
|
7678
|
+
"upDownBars",
|
|
7679
|
+
"serLines",
|
|
7680
|
+
"firstSliceAng",
|
|
7681
|
+
"holeSize",
|
|
7682
|
+
"ofPieType",
|
|
7683
|
+
"scatterStyle",
|
|
7684
|
+
"radarStyle",
|
|
7685
|
+
"bubble3D",
|
|
7686
|
+
"bubbleScale",
|
|
7687
|
+
"showNegBubbles",
|
|
7688
|
+
"sizeRepresents",
|
|
7689
|
+
"wireframe",
|
|
7690
|
+
"extLst"
|
|
7691
|
+
]);
|
|
7692
|
+
function parseGroup(context, element) {
|
|
7693
|
+
const { kind, is3D } = CHART_GROUP_ELEMENTS[element.localName] ?? { kind: "bar", is3D: false };
|
|
7694
|
+
reportUnmodelled(context, element, GROUP);
|
|
7695
|
+
const number = (local) => cNumber(context, element, local);
|
|
7696
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
7697
|
+
const barDir = cVal(element, "barDir");
|
|
7698
|
+
const present = (local) => cChild(element, local) ? true : void 0;
|
|
7699
|
+
const linesShape = (local) => chartLines(element, local)?.spPr;
|
|
7700
|
+
const bars = cChild(element, "upDownBars");
|
|
7701
|
+
return assignDefined(
|
|
7702
|
+
{
|
|
7703
|
+
kind,
|
|
7704
|
+
element: element.localName,
|
|
7705
|
+
is3D,
|
|
7706
|
+
series: children(element, "ser", NS.c).map((ser) => parseSeries(context, ser)),
|
|
7707
|
+
axisIds: children(element, "axId", NS.c).flatMap((axis) => {
|
|
7708
|
+
const raw = attribute(axis, "val")?.trim();
|
|
7709
|
+
const id = raw ? Number(raw) : Number.NaN;
|
|
7710
|
+
return Number.isFinite(id) ? [id] : [];
|
|
7711
|
+
})
|
|
7712
|
+
},
|
|
7713
|
+
{
|
|
7714
|
+
varyColors: flag2("varyColors"),
|
|
7715
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
7716
|
+
barDirection: barDir === "bar" || barDir === "col" ? barDir : void 0,
|
|
7717
|
+
grouping: cVal(element, "grouping"),
|
|
7718
|
+
gapWidth: number("gapWidth"),
|
|
7719
|
+
overlap: number("overlap"),
|
|
7720
|
+
gapDepth: number("gapDepth"),
|
|
7721
|
+
shape: cVal(element, "shape"),
|
|
7722
|
+
marker: flag2("marker"),
|
|
7723
|
+
smooth: flag2("smooth"),
|
|
7724
|
+
dropLines: present("dropLines"),
|
|
7725
|
+
hiLowLines: present("hiLowLines"),
|
|
7726
|
+
upDownBars: present("upDownBars"),
|
|
7727
|
+
seriesLines: present("serLines"),
|
|
7728
|
+
dropLinesSpPr: linesShape("dropLines"),
|
|
7729
|
+
hiLowLinesSpPr: linesShape("hiLowLines"),
|
|
7730
|
+
seriesLinesSpPr: linesShape("serLines"),
|
|
7731
|
+
upDownBarsGapWidth: cNumber(context, bars, "gapWidth"),
|
|
7732
|
+
upBars: chartLines(bars, "upBars"),
|
|
7733
|
+
downBars: chartLines(bars, "downBars"),
|
|
7734
|
+
firstSliceAngle: number("firstSliceAng"),
|
|
7735
|
+
holeSize: number("holeSize"),
|
|
7736
|
+
ofPieType: cVal(element, "ofPieType"),
|
|
7737
|
+
scatterStyle: cVal(element, "scatterStyle"),
|
|
7738
|
+
radarStyle: cVal(element, "radarStyle"),
|
|
7739
|
+
bubble3D: flag2("bubble3D"),
|
|
7740
|
+
bubbleScale: number("bubbleScale"),
|
|
7741
|
+
showNegativeBubbles: flag2("showNegBubbles"),
|
|
7742
|
+
sizeRepresents: cVal(element, "sizeRepresents"),
|
|
7743
|
+
wireframe: flag2("wireframe"),
|
|
7744
|
+
extLst: extensionList(element)
|
|
7745
|
+
}
|
|
7746
|
+
);
|
|
7747
|
+
}
|
|
7748
|
+
var SCALING = /* @__PURE__ */ new Set(["orientation", "logBase", "min", "max", "extLst"]);
|
|
7749
|
+
var AXIS = /* @__PURE__ */ new Set([
|
|
7750
|
+
"axId",
|
|
7751
|
+
"scaling",
|
|
7752
|
+
"delete",
|
|
7753
|
+
"axPos",
|
|
7754
|
+
"majorGridlines",
|
|
7755
|
+
"minorGridlines",
|
|
7756
|
+
"title",
|
|
7757
|
+
"numFmt",
|
|
7758
|
+
"majorTickMark",
|
|
7759
|
+
"minorTickMark",
|
|
7760
|
+
"tickLblPos",
|
|
7761
|
+
"spPr",
|
|
7762
|
+
"txPr",
|
|
7763
|
+
"crossAx",
|
|
7764
|
+
"crosses",
|
|
7765
|
+
"crossesAt",
|
|
7766
|
+
"crossBetween",
|
|
7767
|
+
"majorUnit",
|
|
7768
|
+
"minorUnit",
|
|
7769
|
+
"auto",
|
|
7770
|
+
"lblAlgn",
|
|
7771
|
+
"lblOffset",
|
|
7772
|
+
"tickLblSkip",
|
|
7773
|
+
"tickMarkSkip",
|
|
7774
|
+
"noMultiLvlLbl",
|
|
7775
|
+
"baseTimeUnit",
|
|
7776
|
+
"dispUnits",
|
|
7777
|
+
"extLst"
|
|
7778
|
+
]);
|
|
7779
|
+
function parseAxis(context, element, kind) {
|
|
7780
|
+
reportUnmodelled(context, element, AXIS);
|
|
7781
|
+
const number = (local) => cNumber(context, element, local);
|
|
7782
|
+
const scalingElement = cChild(element, "scaling");
|
|
7783
|
+
if (scalingElement) reportUnmodelled(context, scalingElement, SCALING);
|
|
7784
|
+
const scaling = assignDefined(
|
|
7785
|
+
{},
|
|
7786
|
+
{
|
|
7787
|
+
orientation: cVal(scalingElement, "orientation"),
|
|
7788
|
+
min: cNumber(context, scalingElement, "min"),
|
|
7789
|
+
max: cNumber(context, scalingElement, "max"),
|
|
7790
|
+
logBase: cNumber(context, scalingElement, "logBase")
|
|
7791
|
+
}
|
|
7792
|
+
);
|
|
7793
|
+
const title = cChild(element, "title");
|
|
7794
|
+
return assignDefined(
|
|
7795
|
+
{
|
|
7796
|
+
kind,
|
|
7797
|
+
scaling,
|
|
7798
|
+
majorGridlines: cChild(element, "majorGridlines") !== void 0,
|
|
7799
|
+
minorGridlines: cChild(element, "minorGridlines") !== void 0
|
|
7800
|
+
},
|
|
7801
|
+
{
|
|
7802
|
+
majorGridlinesSpPr: chartLines(element, "majorGridlines")?.spPr,
|
|
7803
|
+
minorGridlinesSpPr: chartLines(element, "minorGridlines")?.spPr,
|
|
7804
|
+
id: number("axId"),
|
|
7805
|
+
crossAxisId: number("crossAx"),
|
|
7806
|
+
position: cVal(element, "axPos"),
|
|
7807
|
+
deleted: cBool(context, element, "delete"),
|
|
7808
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
7809
|
+
numberFormat: numberFormat(element),
|
|
7810
|
+
majorTickMark: cVal(element, "majorTickMark"),
|
|
7811
|
+
minorTickMark: cVal(element, "minorTickMark"),
|
|
7812
|
+
tickLabelPosition: cVal(element, "tickLblPos"),
|
|
7813
|
+
crosses: cVal(element, "crosses"),
|
|
7814
|
+
crossesAt: number("crossesAt"),
|
|
7815
|
+
crossBetween: cVal(element, "crossBetween"),
|
|
7816
|
+
majorUnit: number("majorUnit"),
|
|
7817
|
+
minorUnit: number("minorUnit"),
|
|
7818
|
+
auto: cBool(context, element, "auto"),
|
|
7819
|
+
labelAlign: cVal(element, "lblAlgn"),
|
|
7820
|
+
labelOffset: number("lblOffset"),
|
|
7821
|
+
tickLabelSkip: number("tickLblSkip"),
|
|
7822
|
+
tickMarkSkip: number("tickMarkSkip"),
|
|
7823
|
+
noMultiLevelLabels: cBool(context, element, "noMultiLvlLbl"),
|
|
7824
|
+
baseTimeUnit: cVal(element, "baseTimeUnit"),
|
|
7825
|
+
displayUnits: parseDisplayUnits(context, cChild(element, "dispUnits")),
|
|
7826
|
+
spPr: shapeProperties(element),
|
|
7827
|
+
txPr: textProperties(element),
|
|
7828
|
+
extLst: extensionList(element)
|
|
7829
|
+
}
|
|
7830
|
+
);
|
|
7831
|
+
}
|
|
7832
|
+
var PLOT_AREA = /* @__PURE__ */ new Set(["layout", "dTable", "spPr", "extLst"]);
|
|
7833
|
+
function parsePlotArea(context, element) {
|
|
7834
|
+
const plotArea = { groups: [], axes: [] };
|
|
7835
|
+
if (!element) {
|
|
7836
|
+
context.issues.push({
|
|
7837
|
+
code: "CHART_PLOT_AREA_MISSING",
|
|
7838
|
+
message: "The chart has no c:plotArea."
|
|
7839
|
+
});
|
|
7840
|
+
return plotArea;
|
|
7841
|
+
}
|
|
7842
|
+
const handled = new Set(PLOT_AREA);
|
|
7843
|
+
for (const child3 of elements(element)) {
|
|
7844
|
+
if (CHART_GROUP_ELEMENTS[child3.localName]) {
|
|
7845
|
+
plotArea.groups.push(parseGroup(context, child3));
|
|
7846
|
+
handled.add(child3.localName);
|
|
7847
|
+
}
|
|
7848
|
+
const axis = AXIS_ELEMENTS[child3.localName];
|
|
7849
|
+
if (axis) {
|
|
7850
|
+
plotArea.axes.push(parseAxis(context, child3, axis));
|
|
7851
|
+
handled.add(child3.localName);
|
|
7852
|
+
}
|
|
7853
|
+
}
|
|
7854
|
+
reportUnmodelled(context, element, handled);
|
|
7855
|
+
return assignDefined(plotArea, {
|
|
7856
|
+
layout: manualLayout(element),
|
|
7857
|
+
dataTable: parseDataTable(context, cChild(element, "dTable")),
|
|
7858
|
+
spPr: shapeProperties(element),
|
|
7859
|
+
extLst: extensionList(element)
|
|
7860
|
+
});
|
|
7861
|
+
}
|
|
7862
|
+
|
|
7863
|
+
// chart/parse-space.ts
|
|
7864
|
+
var LEGEND = /* @__PURE__ */ new Set(["legendPos", "legendEntry", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
7865
|
+
function parseLegend(context, element) {
|
|
7866
|
+
reportUnmodelled(context, element, LEGEND);
|
|
7867
|
+
const entries = children(element, "legendEntry", NS.c).map(
|
|
7868
|
+
(entry2) => assignDefined(
|
|
7869
|
+
{},
|
|
7870
|
+
{
|
|
7871
|
+
index: cNumber(context, entry2, "idx"),
|
|
7872
|
+
deleted: cBool(context, entry2, "delete"),
|
|
7873
|
+
txPr: textProperties(entry2)
|
|
7874
|
+
}
|
|
7875
|
+
)
|
|
7876
|
+
);
|
|
7877
|
+
return assignDefined(
|
|
7878
|
+
{ entries },
|
|
7879
|
+
{
|
|
7880
|
+
position: cVal(element, "legendPos"),
|
|
7881
|
+
overlay: cBool(context, element, "overlay"),
|
|
7882
|
+
layout: manualLayout(element),
|
|
7883
|
+
spPr: shapeProperties(element),
|
|
7884
|
+
txPr: textProperties(element),
|
|
7885
|
+
extLst: extensionList(element)
|
|
7886
|
+
}
|
|
7887
|
+
);
|
|
7888
|
+
}
|
|
7889
|
+
var VIEW_3D = /* @__PURE__ */ new Set(["rotX", "rotY", "depthPercent", "hPercent", "rAngAx", "perspective"]);
|
|
7890
|
+
function parseView3D(context, element) {
|
|
7891
|
+
reportUnmodelled(context, element, VIEW_3D);
|
|
7892
|
+
return assignDefined(
|
|
7893
|
+
{},
|
|
7894
|
+
{
|
|
7895
|
+
rotX: cNumber(context, element, "rotX"),
|
|
7896
|
+
rotY: cNumber(context, element, "rotY"),
|
|
7897
|
+
depthPercent: cNumber(context, element, "depthPercent"),
|
|
7898
|
+
heightPercent: cNumber(context, element, "hPercent"),
|
|
7899
|
+
rightAngleAxes: cBool(context, element, "rAngAx"),
|
|
7900
|
+
perspective: cNumber(context, element, "perspective")
|
|
7901
|
+
}
|
|
7902
|
+
);
|
|
7903
|
+
}
|
|
7904
|
+
function chartStyle(context, space) {
|
|
7905
|
+
const direct = cNumber(context, space, "style");
|
|
7906
|
+
if (direct !== void 0) return direct;
|
|
7907
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
7908
|
+
const style = cNumber(context, first(alternate, "Fallback", NS.mc), "style");
|
|
7909
|
+
if (style !== void 0) return style;
|
|
7910
|
+
}
|
|
7911
|
+
return void 0;
|
|
7912
|
+
}
|
|
7913
|
+
function c14Style(space) {
|
|
7914
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
7915
|
+
const raw = attribute(first(first(alternate, "Choice", NS.mc), "style", NS.c14, false), "val");
|
|
7916
|
+
const value = raw?.trim() ? Number(raw) : Number.NaN;
|
|
7917
|
+
if (Number.isFinite(value)) return value;
|
|
7918
|
+
}
|
|
7919
|
+
return void 0;
|
|
7920
|
+
}
|
|
7921
|
+
function namespaceDeclarations(root) {
|
|
7922
|
+
const out = [];
|
|
7923
|
+
for (const item of Array.from(root.attributes)) {
|
|
7924
|
+
if (item.prefix !== "xmlns" || CHART_ROOT_BINDINGS.get(item.localName) === item.value) continue;
|
|
7925
|
+
out.push({ prefix: item.localName, uri: item.value });
|
|
7926
|
+
}
|
|
7927
|
+
return out.length ? out : void 0;
|
|
7928
|
+
}
|
|
7929
|
+
var CHART = /* @__PURE__ */ new Set([
|
|
7930
|
+
"title",
|
|
7931
|
+
"autoTitleDeleted",
|
|
7932
|
+
"view3D",
|
|
7933
|
+
"floor",
|
|
7934
|
+
"sideWall",
|
|
7935
|
+
"backWall",
|
|
7936
|
+
"plotArea",
|
|
7937
|
+
"legend",
|
|
7938
|
+
"plotVisOnly",
|
|
7939
|
+
"dispBlanksAs",
|
|
7940
|
+
"showDLblsOverMax",
|
|
7941
|
+
"extLst"
|
|
7942
|
+
]);
|
|
7943
|
+
var SPACE = /* @__PURE__ */ new Set([
|
|
7944
|
+
"date1904",
|
|
7945
|
+
"lang",
|
|
7946
|
+
"roundedCorners",
|
|
7947
|
+
"AlternateContent",
|
|
7948
|
+
"style",
|
|
7949
|
+
"chart",
|
|
7950
|
+
"spPr",
|
|
7951
|
+
"txPr",
|
|
7952
|
+
"externalData",
|
|
7953
|
+
"printSettings",
|
|
7954
|
+
"userShapes",
|
|
7955
|
+
"extLst"
|
|
7956
|
+
]);
|
|
7957
|
+
function parseChartSpace(source) {
|
|
7958
|
+
const context = { issues: [] };
|
|
7959
|
+
const root = typeof source === "string" ? parseXml(source, { label: "Chart part" }).documentElement : source;
|
|
7960
|
+
if (root.localName !== "chartSpace" || root.namespaceURI && root.namespaceURI !== NS.c) {
|
|
7961
|
+
context.issues.push({
|
|
7962
|
+
code: "CHART_ROOT_UNEXPECTED",
|
|
7963
|
+
message: `The part root is {${root.namespaceURI ?? ""}}${root.localName}, not c:chartSpace (chartex parts are not modelled).`
|
|
7964
|
+
});
|
|
7965
|
+
return { chartSpace: { plotArea: { groups: [], axes: [] } }, issues: context.issues };
|
|
7966
|
+
}
|
|
7967
|
+
reportUnmodelled(context, root, SPACE);
|
|
7968
|
+
const chart = cChild(root, "chart");
|
|
7969
|
+
if (!chart)
|
|
7970
|
+
context.issues.push({ code: "CHART_CHART_MISSING", message: "The part has no c:chart." });
|
|
7971
|
+
else reportUnmodelled(context, chart, CHART);
|
|
7972
|
+
const title = cChild(chart, "title");
|
|
7973
|
+
const legend = cChild(chart, "legend");
|
|
7974
|
+
const view3D = cChild(chart, "view3D");
|
|
7975
|
+
const printSettings = cChild(root, "printSettings");
|
|
7976
|
+
const chartSpace = assignDefined(
|
|
7977
|
+
{ plotArea: parsePlotArea(context, cChild(chart, "plotArea")) },
|
|
7978
|
+
{
|
|
7979
|
+
date1904: cBool(context, root, "date1904"),
|
|
7980
|
+
language: cVal(root, "lang"),
|
|
7981
|
+
roundedCorners: cBool(context, root, "roundedCorners"),
|
|
7982
|
+
style: chartStyle(context, root),
|
|
7983
|
+
c14Style: c14Style(root),
|
|
7984
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
7985
|
+
autoTitleDeleted: cBool(context, chart, "autoTitleDeleted"),
|
|
7986
|
+
view3D: view3D ? parseView3D(context, view3D) : void 0,
|
|
7987
|
+
floor: parseSurface(context, cChild(chart, "floor")),
|
|
7988
|
+
sideWall: parseSurface(context, cChild(chart, "sideWall")),
|
|
7989
|
+
backWall: parseSurface(context, cChild(chart, "backWall")),
|
|
7990
|
+
legend: legend ? parseLegend(context, legend) : void 0,
|
|
7991
|
+
plotVisibleOnly: cBool(context, chart, "plotVisOnly"),
|
|
7992
|
+
displayBlanksAs: cVal(chart, "dispBlanksAs"),
|
|
7993
|
+
showDataLabelsOverMax: cBool(context, chart, "showDLblsOverMax"),
|
|
7994
|
+
spPr: shapeProperties(root),
|
|
7995
|
+
txPr: textProperties(root),
|
|
7996
|
+
externalDataRelId: relAttr(cChild(root, "externalData"), "id") || void 0,
|
|
7997
|
+
externalDataAutoUpdate: cBool(context, cChild(root, "externalData"), "autoUpdate"),
|
|
7998
|
+
printSettings: printSettings ? buildXml(printSettings) : void 0,
|
|
7999
|
+
userShapesRelId: relAttr(cChild(root, "userShapes"), "id") || void 0,
|
|
8000
|
+
chartExtLst: extensionList(chart),
|
|
8001
|
+
extLst: extensionList(root),
|
|
8002
|
+
namespaceDeclarations: namespaceDeclarations(root)
|
|
8003
|
+
}
|
|
8004
|
+
);
|
|
8005
|
+
return { chartSpace, issues: context.issues };
|
|
8006
|
+
}
|
|
8007
|
+
|
|
8008
|
+
// drawingml/theme.ts
|
|
8009
|
+
new Set(THEME_COLOR_SLOTS);
|
|
8010
|
+
function nonEmpty(value) {
|
|
8011
|
+
return value ? value : void 0;
|
|
8012
|
+
}
|
|
8013
|
+
function parseThemeColorScheme(scheme) {
|
|
8014
|
+
const result = { colors: {} };
|
|
8015
|
+
if (!scheme) return result;
|
|
8016
|
+
const name = nonEmpty(scheme.getAttribute("name"));
|
|
8017
|
+
if (name) result.name = name;
|
|
8018
|
+
for (const slot2 of THEME_COLOR_SLOTS) {
|
|
8019
|
+
const color = parseDrawingColorIn(first(scheme, slot2, NS.a));
|
|
8020
|
+
if (color) result.colors[slot2] = color;
|
|
8021
|
+
}
|
|
8022
|
+
return result;
|
|
8023
|
+
}
|
|
8024
|
+
function parseFontCollection(collection) {
|
|
8025
|
+
const result = { scripts: {} };
|
|
8026
|
+
if (!collection) return result;
|
|
8027
|
+
const typeface = (local) => nonEmpty(first(collection, local, NS.a)?.getAttribute("typeface"));
|
|
8028
|
+
const latin = typeface("latin");
|
|
8029
|
+
const eastAsia = typeface("ea");
|
|
8030
|
+
const complexScript = typeface("cs");
|
|
8031
|
+
if (latin) result.latin = latin;
|
|
8032
|
+
if (eastAsia) result.eastAsia = eastAsia;
|
|
8033
|
+
if (complexScript) result.complexScript = complexScript;
|
|
8034
|
+
for (const font of elements(collection)) {
|
|
8035
|
+
if (font.localName !== "font") continue;
|
|
8036
|
+
const script = nonEmpty(font.getAttribute("script"));
|
|
8037
|
+
const face = nonEmpty(font.getAttribute("typeface"));
|
|
8038
|
+
if (script && face && !Object.hasOwn(result.scripts, script)) result.scripts[script] = face;
|
|
8039
|
+
}
|
|
8040
|
+
return result;
|
|
8041
|
+
}
|
|
8042
|
+
function parseThemeFontScheme(scheme) {
|
|
8043
|
+
const result = {
|
|
8044
|
+
major: parseFontCollection(first(scheme, "majorFont", NS.a)),
|
|
8045
|
+
minor: parseFontCollection(first(scheme, "minorFont", NS.a))
|
|
8046
|
+
};
|
|
8047
|
+
const name = nonEmpty(scheme?.getAttribute("name"));
|
|
8048
|
+
if (name) result.name = name;
|
|
8049
|
+
return result;
|
|
8050
|
+
}
|
|
8051
|
+
function rootOf2(source) {
|
|
8052
|
+
return "documentElement" in source ? source.documentElement : source;
|
|
8053
|
+
}
|
|
8054
|
+
function parseTheme(source) {
|
|
8055
|
+
const root = rootOf2(source);
|
|
8056
|
+
const holder = first(root, "themeElements", NS.a) ?? root;
|
|
8057
|
+
const theme = {
|
|
8058
|
+
colorScheme: parseThemeColorScheme(first(holder, "clrScheme", NS.a)),
|
|
8059
|
+
fontScheme: parseThemeFontScheme(first(holder, "fontScheme", NS.a))
|
|
8060
|
+
};
|
|
8061
|
+
const name = nonEmpty(root.getAttribute("name"));
|
|
8062
|
+
if (name) theme.name = name;
|
|
8063
|
+
return theme;
|
|
8064
|
+
}
|
|
8065
|
+
|
|
8066
|
+
// drawingml/theme-color.ts
|
|
8067
|
+
function themeSlotHex(color) {
|
|
8068
|
+
if (!color) return void 0;
|
|
8069
|
+
const value = color.kind === "srgb" ? color.value : color.kind === "system" ? color.fallback : void 0;
|
|
8070
|
+
return value ? value.toUpperCase() : void 0;
|
|
8071
|
+
}
|
|
8072
|
+
|
|
8073
|
+
// docx/breaks.ts
|
|
8074
|
+
function isCachedPageBreak(element) {
|
|
8075
|
+
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
8076
|
+
(attribute2) => attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
8077
|
+
);
|
|
8078
|
+
}
|
|
8079
|
+
function hasSpecialBreak(element) {
|
|
8080
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
8081
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
8082
|
+
if (attribute2.namespaceURI !== WORD_NS) return true;
|
|
8083
|
+
if (attribute2.localName === "type") {
|
|
8084
|
+
if (attribute2.value !== "textWrapping") return true;
|
|
8085
|
+
} else if (attribute2.localName === "clear") {
|
|
8086
|
+
if (attribute2.value !== "none") return true;
|
|
8087
|
+
} else return true;
|
|
8088
|
+
}
|
|
8089
|
+
return false;
|
|
8090
|
+
}
|
|
8091
|
+
function classifyBreak(element) {
|
|
8092
|
+
const type = getW(element, "type");
|
|
8093
|
+
return type === "page" || type === "column" ? type : "textWrapping";
|
|
8094
|
+
}
|
|
8095
|
+
function isModeledBreak(element) {
|
|
8096
|
+
const kind = classifyBreak(element);
|
|
8097
|
+
if (kind === "textWrapping") return false;
|
|
8098
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
8099
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
8100
|
+
if (attribute2.namespaceURI !== WORD_NS || attribute2.localName !== "type") return false;
|
|
8101
|
+
}
|
|
8102
|
+
return true;
|
|
8103
|
+
}
|
|
8104
|
+
|
|
8105
|
+
// docx/parse-warnings.ts
|
|
8106
|
+
function hasAny(document, names) {
|
|
8107
|
+
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
8108
|
+
}
|
|
8109
|
+
function warningsFor(document) {
|
|
8110
|
+
const warnings = [];
|
|
8111
|
+
const features = [
|
|
8112
|
+
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
8113
|
+
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
8114
|
+
[
|
|
8115
|
+
["fldSimple", "instrText", "fldChar"],
|
|
8116
|
+
"Fields show the result Word last saved while editing; Print Layout recalculates PAGE, NUMPAGES, SECTIONPAGES, DATE and TIME, and tables of contents update from the References tab."
|
|
8117
|
+
],
|
|
8118
|
+
[
|
|
8119
|
+
["moveFrom", "moveTo"],
|
|
8120
|
+
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
8121
|
+
],
|
|
8122
|
+
[
|
|
8123
|
+
["rPrChange"],
|
|
8124
|
+
"Formatting-change revisions retain their prior run-properties snapshots and support acceptance and rejection; recording new formatting changes and showing prior formatting in Original display are not supported yet."
|
|
8125
|
+
],
|
|
8126
|
+
[
|
|
8127
|
+
["pPrChange"],
|
|
8128
|
+
"Paragraph-formatting-change revisions retain their prior properties snapshots and support acceptance and rejection; recording new paragraph formatting changes and showing prior formatting in Original display are not supported yet."
|
|
8129
|
+
],
|
|
8130
|
+
[
|
|
8131
|
+
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
8132
|
+
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
8133
|
+
]
|
|
8134
|
+
];
|
|
8135
|
+
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
8136
|
+
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
8137
|
+
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
8138
|
+
))
|
|
8139
|
+
warnings.push(
|
|
8140
|
+
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
8141
|
+
);
|
|
8142
|
+
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
8143
|
+
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
8144
|
+
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
8145
|
+
(cr) => cr.attributes.length > 0
|
|
8146
|
+
);
|
|
8147
|
+
if (specialBreak)
|
|
8148
|
+
warnings.push(
|
|
8149
|
+
"Some non-line breaks other than page and column breaks are not distinguished from line breaks in the document model; edits to paragraphs containing them are rejected to preserve the original XML."
|
|
8150
|
+
);
|
|
8151
|
+
return warnings;
|
|
8152
|
+
}
|
|
8153
|
+
function forEachParagraph2(blocks, visit) {
|
|
8154
|
+
for (const block of blocks) {
|
|
8155
|
+
if (block.type === "paragraph") visit(block);
|
|
8156
|
+
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
8157
|
+
}
|
|
8158
|
+
}
|
|
8159
|
+
function imageAndBookmarkWarnings(blocks) {
|
|
8160
|
+
const warnings = [];
|
|
8161
|
+
let hasPicture = false;
|
|
8162
|
+
let hasAnchored = false;
|
|
8163
|
+
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
8164
|
+
let hasBookmarks = false;
|
|
8165
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
8166
|
+
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
8167
|
+
for (const run of paragraph.runs) {
|
|
8168
|
+
if (!run.image) continue;
|
|
8169
|
+
if (run.image.unsupported) {
|
|
8170
|
+
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
8171
|
+
unsupportedKinds.add(run.image.unsupported);
|
|
8172
|
+
} else hasPicture = true;
|
|
8173
|
+
if (run.image.anchored) hasAnchored = true;
|
|
8174
|
+
}
|
|
8175
|
+
});
|
|
8176
|
+
if (hasPicture)
|
|
8177
|
+
warnings.push(
|
|
8178
|
+
"Inline pictures render from their original bytes and can be deleted or newly inserted; crop, artistic effects, and non-inline text wrapping are not reproduced."
|
|
8179
|
+
);
|
|
8180
|
+
if (hasAnchored)
|
|
8181
|
+
warnings.push(
|
|
8182
|
+
"Floating pictures follow their text wrapping approximately (floated left or right, or on their own line); exact positions, vertical offsets and in-front/behind layering are not reproduced."
|
|
8183
|
+
);
|
|
8184
|
+
if (unsupportedKinds.size)
|
|
8185
|
+
warnings.push(
|
|
8186
|
+
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
8187
|
+
);
|
|
8188
|
+
if (hasBookmarks)
|
|
8189
|
+
warnings.push(
|
|
8190
|
+
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
8191
|
+
);
|
|
8192
|
+
return warnings;
|
|
8193
|
+
}
|
|
8194
|
+
|
|
8195
|
+
// docx/chart.ts
|
|
8196
|
+
var CHART_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
|
|
8197
|
+
var CHART_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";
|
|
8198
|
+
var PACKAGE_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package";
|
|
8199
|
+
var CHART_NOTICE = "The chart is drawn from the values cached in its part (bar, column, line, area, pie, doughnut, scatter and radar charts; other kinds show a labelled frame). It is not editable, and the chart part and its workbook are preserved unchanged on save.";
|
|
8200
|
+
function parseChartGraphic(graphicData, docPr, rels, isAnchor) {
|
|
8201
|
+
const element = Array.from(graphicData.childNodes).find(
|
|
8202
|
+
(node) => isElement(node) && node.localName === "chart"
|
|
8203
|
+
);
|
|
8204
|
+
const relId = getR(element, "id") || void 0;
|
|
8205
|
+
const issues = [];
|
|
8206
|
+
let partName;
|
|
8207
|
+
const rel = relId ? rels.get(relId) : void 0;
|
|
8208
|
+
if (!relId)
|
|
8209
|
+
issues.push({
|
|
8210
|
+
code: "CHART_RELATIONSHIP_MISSING",
|
|
8211
|
+
message: "The graphic has no c:chart/@r:id."
|
|
8212
|
+
});
|
|
8213
|
+
else if (!rel || rel.mode === "External")
|
|
8214
|
+
issues.push({
|
|
8215
|
+
code: "CHART_RELATIONSHIP_UNRESOLVED",
|
|
8216
|
+
message: `Chart relationship ${relId} does not point at a part in this package.`
|
|
8217
|
+
});
|
|
8218
|
+
else {
|
|
8219
|
+
if (rel.type !== CHART_RELATIONSHIP_TYPE)
|
|
8220
|
+
issues.push({
|
|
8221
|
+
code: "CHART_RELATIONSHIP_TYPE",
|
|
8222
|
+
message: `Chart relationship ${relId} has type ${rel.type}, expected ${CHART_RELATIONSHIP_TYPE}.`
|
|
8223
|
+
});
|
|
8224
|
+
partName = resolvePartPath("word/document.xml", rel.target);
|
|
8225
|
+
}
|
|
8226
|
+
const name = docPr?.getAttribute("name") || void 0;
|
|
8227
|
+
const id = docPr?.getAttribute("id") || void 0;
|
|
8228
|
+
return {
|
|
8229
|
+
placement: isAnchor ? "anchor" : "inline",
|
|
6967
8230
|
...name ? { name } : {},
|
|
6968
8231
|
...id ? { id } : {},
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
nodes: [],
|
|
6973
|
-
rendering: "placeholder",
|
|
6974
|
-
notice: diagramNotice("placeholder"),
|
|
8232
|
+
...relId ? { relId } : {},
|
|
8233
|
+
...partName ? { partName } : {},
|
|
8234
|
+
notice: CHART_NOTICE,
|
|
6975
8235
|
issues
|
|
6976
8236
|
};
|
|
6977
8237
|
}
|
|
6978
|
-
async function
|
|
6979
|
-
|
|
6980
|
-
const dataPart = diagram.parts.data?.partName;
|
|
6981
|
-
let declaredDrawing;
|
|
8238
|
+
async function resolveChartPart(chart, readText) {
|
|
8239
|
+
if (!chart.partName) return;
|
|
6982
8240
|
try {
|
|
6983
|
-
const
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
const loaded = await loadDiagram(hostPart, diagram.relationshipIds, {
|
|
6991
|
-
hostRelationships: () => new Map(offered.map(([id, name]) => [id, `/${name}`])),
|
|
6992
|
-
resolvePath: resolvePartPath,
|
|
6993
|
-
readText,
|
|
6994
|
-
readRelationshipEntries: async (relsPart) => {
|
|
6995
|
-
const xml = await readText(relsPart);
|
|
6996
|
-
if (!xml) return void 0;
|
|
6997
|
-
try {
|
|
6998
|
-
return [...parseRelationships(xml).values()].map(({ id, type, target }) => ({
|
|
6999
|
-
id,
|
|
7000
|
-
type,
|
|
7001
|
-
target
|
|
7002
|
-
}));
|
|
7003
|
-
} catch {
|
|
7004
|
-
return void 0;
|
|
7005
|
-
}
|
|
8241
|
+
const xml = await readText(chart.partName);
|
|
8242
|
+
if (xml === void 0) {
|
|
8243
|
+
chart.issues.push({
|
|
8244
|
+
code: "CHART_PART_MISSING",
|
|
8245
|
+
message: `The chart part ${chart.partName} is not in the package.`
|
|
8246
|
+
});
|
|
8247
|
+
return;
|
|
7006
8248
|
}
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
7011
|
-
|
|
7012
|
-
|
|
7013
|
-
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7023
|
-
|
|
7024
|
-
|
|
7025
|
-
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
} else {
|
|
7034
|
-
delete diagram.drawing;
|
|
7035
|
-
diagram.rendering = "placeholder";
|
|
8249
|
+
const root = parseXml(xml, { label: "Chart part" }).documentElement;
|
|
8250
|
+
const { chartSpace, issues } = parseChartSpace(root);
|
|
8251
|
+
chart.chartSpace = chartSpace;
|
|
8252
|
+
chart.issues.push(...issues);
|
|
8253
|
+
const title = chartSpace.autoTitleDeleted ? void 0 : chartSpace.title?.text;
|
|
8254
|
+
if (title) chart.title = title;
|
|
8255
|
+
if (chartSpace.plotArea.groups.length) {
|
|
8256
|
+
const formatting = readChartFormatting(root);
|
|
8257
|
+
if (formatting) chart.formatting = formatting;
|
|
8258
|
+
}
|
|
8259
|
+
const rels = parseRelationships(await readText(relationshipsPartFor(chart.partName)));
|
|
8260
|
+
const dataRelId = chartSpace.externalDataRelId;
|
|
8261
|
+
const dataRel = dataRelId ? rels.get(dataRelId) : void 0;
|
|
8262
|
+
if (dataRel && dataRel.mode !== "External" && dataRel.type === PACKAGE_RELATIONSHIP_TYPE)
|
|
8263
|
+
chart.workbookPartName = resolvePartPath(chart.partName, dataRel.target);
|
|
8264
|
+
const colorsRel = [...rels.values()].find(
|
|
8265
|
+
(rel) => rel.mode !== "External" && rel.type.endsWith("/chartColorStyle")
|
|
8266
|
+
);
|
|
8267
|
+
const colorsXml = colorsRel && await readText(resolvePartPath(chart.partName, colorsRel.target));
|
|
8268
|
+
const palette = colorsXml ? chartColorStyleId(colorsXml) : void 0;
|
|
8269
|
+
if (palette !== void 0) chart.colorPalette = palette;
|
|
8270
|
+
} catch (error) {
|
|
8271
|
+
chart.issues.push({
|
|
8272
|
+
code: "CHART_PART_UNREADABLE",
|
|
8273
|
+
message: `The chart part ${chart.partName} could not be read: ${error instanceof Error ? error.message : String(error)}`
|
|
8274
|
+
});
|
|
7036
8275
|
}
|
|
7037
|
-
|
|
8276
|
+
}
|
|
8277
|
+
function chartsIn(blocks) {
|
|
8278
|
+
const charts = [];
|
|
8279
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
8280
|
+
for (const run of paragraph.runs) if (run.image?.chart) charts.push(run.image.chart);
|
|
8281
|
+
});
|
|
8282
|
+
return charts;
|
|
8283
|
+
}
|
|
8284
|
+
async function resolveDocumentCharts(blocks, readText) {
|
|
8285
|
+
for (const chart of chartsIn(blocks)) await resolveChartPart(chart, readText);
|
|
7038
8286
|
}
|
|
7039
8287
|
|
|
7040
8288
|
// docx/drawing.ts
|
|
@@ -7152,6 +8400,7 @@ function parseModernDrawing(node, context) {
|
|
|
7152
8400
|
...svg ? { svgPartName: svg.partName } : {}
|
|
7153
8401
|
};
|
|
7154
8402
|
const diagram = uri === DIAGRAM_GRAPHIC_URI && graphicData ? parseDiagramGraphic(graphicData, extent, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
8403
|
+
const chart = uri === CHART_GRAPHIC_URI && graphicData ? parseChartGraphic(graphicData, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
7155
8404
|
const textBox = uri.includes("wordprocessingShape") ? textBoxParagraphs(graphicData) : void 0;
|
|
7156
8405
|
return {
|
|
7157
8406
|
relId: relId ?? "",
|
|
@@ -7162,6 +8411,7 @@ function parseModernDrawing(node, context) {
|
|
|
7162
8411
|
...definedProps({ altText, title, anchored }),
|
|
7163
8412
|
unsupported: textBox ? "Text box" : unsupportedKindLabel(uri),
|
|
7164
8413
|
...diagram ? { diagram } : {},
|
|
8414
|
+
...chart ? { chart } : {},
|
|
7165
8415
|
...diagram && placement ? { placement } : {},
|
|
7166
8416
|
...textBox ? { textBoxText: textBox } : {},
|
|
7167
8417
|
...textBox && isSimpleTextBox(graphicData, Boolean(anchored)) ? { textBoxEditable: true, textBoxBorder: textBoxHasBorder(graphicData) } : {}
|
|
@@ -7241,8 +8491,8 @@ function findDrawingChild(run) {
|
|
|
7241
8491
|
if (isElement(child3) && (named2(child3, "drawing") || named2(child3, "pict"))) return child3;
|
|
7242
8492
|
return void 0;
|
|
7243
8493
|
}
|
|
7244
|
-
function sameUnderlyingImage(
|
|
7245
|
-
return Boolean(
|
|
8494
|
+
function sameUnderlyingImage(a2, b) {
|
|
8495
|
+
return Boolean(a2.partName) && a2.relId === b.relId && a2.partName === b.partName;
|
|
7246
8496
|
}
|
|
7247
8497
|
function walk(root, visit) {
|
|
7248
8498
|
const stack = [root];
|
|
@@ -7452,17 +8702,17 @@ function setBooleanAttribute(doc, props, local, value) {
|
|
|
7452
8702
|
}
|
|
7453
8703
|
setAttribute6(element, "val", value ? "1" : "0");
|
|
7454
8704
|
}
|
|
7455
|
-
function setLanguageAttribute(doc, props,
|
|
8705
|
+
function setLanguageAttribute(doc, props, attribute2, value) {
|
|
7456
8706
|
let language = first2(props, "lang");
|
|
7457
8707
|
if (value === void 0 || value === "") {
|
|
7458
8708
|
if (!language) return;
|
|
7459
|
-
language.removeAttributeNS(WORD_NS,
|
|
8709
|
+
language.removeAttributeNS(WORD_NS, attribute2);
|
|
7460
8710
|
} else {
|
|
7461
8711
|
if (!language) {
|
|
7462
8712
|
language = makeW(doc, "lang");
|
|
7463
8713
|
props.appendChild(language);
|
|
7464
8714
|
}
|
|
7465
|
-
setAttribute6(language,
|
|
8715
|
+
setAttribute6(language, attribute2, value);
|
|
7466
8716
|
}
|
|
7467
8717
|
if (language && !language.attributes.length && !language.childNodes.length)
|
|
7468
8718
|
props.removeChild(language);
|
|
@@ -7562,8 +8812,8 @@ function setRunProperties(doc, runNode, run, base) {
|
|
|
7562
8812
|
};
|
|
7563
8813
|
for (const script of ["ascii", "hAnsi", "eastAsia", "cs"]) {
|
|
7564
8814
|
const role = run.fontTheme?.[script];
|
|
7565
|
-
const [
|
|
7566
|
-
if (role) setAttribute6(fonts,
|
|
8815
|
+
const [attribute2, suffix] = themeAttribute[script];
|
|
8816
|
+
if (role) setAttribute6(fonts, attribute2, `${role}${suffix}`);
|
|
7567
8817
|
}
|
|
7568
8818
|
props.appendChild(fonts);
|
|
7569
8819
|
}
|
|
@@ -7651,8 +8901,8 @@ function createRun(doc, run, base, old, allocator) {
|
|
|
7651
8901
|
}
|
|
7652
8902
|
|
|
7653
8903
|
// docx/inline-source.ts
|
|
7654
|
-
function samePictureSource(
|
|
7655
|
-
return !!
|
|
8904
|
+
function samePictureSource(a2, b) {
|
|
8905
|
+
return !!a2?.partName && a2.partName === b?.partName && a2.relId === b?.relId;
|
|
7656
8906
|
}
|
|
7657
8907
|
function inlineSourceLookup(runs, base) {
|
|
7658
8908
|
const usedPictures = /* @__PURE__ */ new Set();
|
|
@@ -7694,8 +8944,8 @@ function takeSimpleFieldCommentEdges(doc, runs, start, end, opens, closes) {
|
|
|
7694
8944
|
}
|
|
7695
8945
|
|
|
7696
8946
|
// docx/field-lock.ts
|
|
7697
|
-
function sameFieldFlags(
|
|
7698
|
-
return
|
|
8947
|
+
function sameFieldFlags(a2, b) {
|
|
8948
|
+
return a2?.locked === b?.locked && a2?.dirty === b?.dirty;
|
|
7699
8949
|
}
|
|
7700
8950
|
var MATH_NAMESPACES = /* @__PURE__ */ new Set([
|
|
7701
8951
|
"http://schemas.openxmlformats.org/officeDocument/2006/math",
|
|
@@ -7722,38 +8972,6 @@ function preserveEquation(run, base, old) {
|
|
|
7722
8972
|
return old.cloneNode(true);
|
|
7723
8973
|
}
|
|
7724
8974
|
|
|
7725
|
-
// docx/breaks.ts
|
|
7726
|
-
function isCachedPageBreak(element) {
|
|
7727
|
-
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
7728
|
-
(attribute) => attribute.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
7729
|
-
);
|
|
7730
|
-
}
|
|
7731
|
-
function hasSpecialBreak(element) {
|
|
7732
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
7733
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
7734
|
-
if (attribute.namespaceURI !== WORD_NS) return true;
|
|
7735
|
-
if (attribute.localName === "type") {
|
|
7736
|
-
if (attribute.value !== "textWrapping") return true;
|
|
7737
|
-
} else if (attribute.localName === "clear") {
|
|
7738
|
-
if (attribute.value !== "none") return true;
|
|
7739
|
-
} else return true;
|
|
7740
|
-
}
|
|
7741
|
-
return false;
|
|
7742
|
-
}
|
|
7743
|
-
function classifyBreak(element) {
|
|
7744
|
-
const type = getW(element, "type");
|
|
7745
|
-
return type === "page" || type === "column" ? type : "textWrapping";
|
|
7746
|
-
}
|
|
7747
|
-
function isModeledBreak(element) {
|
|
7748
|
-
const kind = classifyBreak(element);
|
|
7749
|
-
if (kind === "textWrapping") return false;
|
|
7750
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
7751
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
7752
|
-
if (attribute.namespaceURI !== WORD_NS || attribute.localName !== "type") return false;
|
|
7753
|
-
}
|
|
7754
|
-
return true;
|
|
7755
|
-
}
|
|
7756
|
-
|
|
7757
8975
|
// docx/parse-revisions.ts
|
|
7758
8976
|
var REVISION_WRAPPERS = {
|
|
7759
8977
|
ins: "insert",
|
|
@@ -7775,7 +8993,7 @@ function trackMoveRange(item, moves) {
|
|
|
7775
8993
|
const open = moves[range.kind];
|
|
7776
8994
|
if (range.start) open.push({ name: getW(item, "name") ?? id, id });
|
|
7777
8995
|
else {
|
|
7778
|
-
const index = open.findIndex((
|
|
8996
|
+
const index = open.findIndex((entry2) => entry2.id === id);
|
|
7779
8997
|
if (index >= 0) open.splice(index, 1);
|
|
7780
8998
|
}
|
|
7781
8999
|
return true;
|
|
@@ -7948,10 +9166,10 @@ function replaceableInlineChildren(paragraph) {
|
|
|
7948
9166
|
(child3) => isElement(child3) && (isEquationElement(child3) || named2(child3, "r") || named2(child3, "hyperlink") || named2(child3, "fldSimple") || isRevisionWrapperElement(child3) || isCommentAnchorElement(child3))
|
|
7949
9167
|
);
|
|
7950
9168
|
}
|
|
7951
|
-
function sameLink(
|
|
7952
|
-
if (!
|
|
7953
|
-
if (!
|
|
7954
|
-
return
|
|
9169
|
+
function sameLink(a2, b) {
|
|
9170
|
+
if (!a2 && !b) return true;
|
|
9171
|
+
if (!a2 || !b) return false;
|
|
9172
|
+
return a2.href === b.href && a2.anchor === b.anchor && a2.tooltip === b.tooltip;
|
|
7955
9173
|
}
|
|
7956
9174
|
function setW6(element, local, value) {
|
|
7957
9175
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
@@ -8040,10 +9258,10 @@ function containerGroup(run) {
|
|
|
8040
9258
|
};
|
|
8041
9259
|
return void 0;
|
|
8042
9260
|
}
|
|
8043
|
-
function sameGroup(
|
|
8044
|
-
if (!
|
|
8045
|
-
if (
|
|
8046
|
-
return
|
|
9261
|
+
function sameGroup(a2, b) {
|
|
9262
|
+
if (!a2 || !b) return a2 === b;
|
|
9263
|
+
if (a2.kind === "link" && b.kind === "link") return sameLink(a2.link, b.link);
|
|
9264
|
+
return a2.kind === "simpleField" && b.kind === "simpleField" && a2.instr === b.instr && a2.instanceId === b.instanceId && sameFieldFlags(a2.fieldFlags, b.fieldFlags);
|
|
8047
9265
|
}
|
|
8048
9266
|
|
|
8049
9267
|
// docx/paragraph-styles.ts
|
|
@@ -8392,8 +9610,8 @@ var IMAGE_RELATIONSHIP_TYPE = RELATIONSHIP_TYPES.image;
|
|
|
8392
9610
|
function scanUsedRelationshipIds(doc) {
|
|
8393
9611
|
const used = /* @__PURE__ */ new Set();
|
|
8394
9612
|
const visit = (node) => {
|
|
8395
|
-
for (const
|
|
8396
|
-
if (
|
|
9613
|
+
for (const attribute2 of Array.from(node.attributes))
|
|
9614
|
+
if (attribute2.namespaceURI === REL_NS) used.add(attribute2.value);
|
|
8397
9615
|
for (const child3 of Array.from(node.childNodes)) if (isElement(child3)) visit(child3);
|
|
8398
9616
|
};
|
|
8399
9617
|
if (doc.documentElement) visit(doc.documentElement);
|
|
@@ -8631,9 +9849,9 @@ function isXsdDateTime(value) {
|
|
|
8631
9849
|
return !zone || Number(zone[1]) <= 14 && Number(zone[2]) <= 59;
|
|
8632
9850
|
}
|
|
8633
9851
|
var Checker = class _Checker {
|
|
8634
|
-
constructor(issues,
|
|
9852
|
+
constructor(issues, path2) {
|
|
8635
9853
|
this.issues = issues;
|
|
8636
|
-
this.path =
|
|
9854
|
+
this.path = path2;
|
|
8637
9855
|
}
|
|
8638
9856
|
issues;
|
|
8639
9857
|
path;
|
|
@@ -8679,78 +9897,78 @@ var Checker = class _Checker {
|
|
|
8679
9897
|
|
|
8680
9898
|
// docx/validate-paragraph.ts
|
|
8681
9899
|
var isFraction = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1;
|
|
8682
|
-
function validateThemeReference(
|
|
9900
|
+
function validateThemeReference(c2, field, value) {
|
|
8683
9901
|
if (value === void 0) return;
|
|
8684
|
-
const at =
|
|
9902
|
+
const at = c2.at(`.${field}`);
|
|
8685
9903
|
at.theme("token", value.token);
|
|
8686
9904
|
at.check("tint", value.tint, isFraction, "must be a fraction between 0 and 1");
|
|
8687
9905
|
at.check("shade", value.shade, isFraction, "must be a fraction between 0 and 1");
|
|
8688
9906
|
}
|
|
8689
|
-
function validateRevision(
|
|
9907
|
+
function validateRevision(c2, field, revision) {
|
|
8690
9908
|
if (revision === void 0) return;
|
|
8691
|
-
|
|
9909
|
+
c2.at(`.${field}`).dateTime("date", revision.date);
|
|
8692
9910
|
}
|
|
8693
|
-
function validateFontSize(
|
|
8694
|
-
|
|
9911
|
+
function validateFontSize(c2, value) {
|
|
9912
|
+
c2.check(
|
|
8695
9913
|
"fontSize",
|
|
8696
9914
|
value,
|
|
8697
9915
|
(v) => typeof v === "number" && Number.isFinite(v) && Math.round(v * 2) >= 0,
|
|
8698
9916
|
"must be a finite, non-negative point size that converts to whole half-points (ST_HpsMeasure)"
|
|
8699
9917
|
);
|
|
8700
9918
|
}
|
|
8701
|
-
function validateRun(
|
|
8702
|
-
|
|
8703
|
-
validateFontSize(
|
|
8704
|
-
|
|
9919
|
+
function validateRun(c2, run) {
|
|
9920
|
+
c2.enum("ligatures", run.ligatures, isLigatures, "ST_Ligatures");
|
|
9921
|
+
validateFontSize(c2, run.fontSize);
|
|
9922
|
+
c2.check(
|
|
8705
9923
|
"textScalePercent",
|
|
8706
9924
|
run.textScalePercent,
|
|
8707
9925
|
(v) => Number.isSafeInteger(v) && v >= 0 && v <= 600,
|
|
8708
9926
|
"must be a whole percentage from 0 through 600 (ST_TextScale)"
|
|
8709
9927
|
);
|
|
8710
|
-
|
|
9928
|
+
c2.check(
|
|
8711
9929
|
"kerningHalfPoints",
|
|
8712
9930
|
run.kerningHalfPoints,
|
|
8713
9931
|
(v) => Number.isSafeInteger(v) && v >= 0,
|
|
8714
9932
|
"must be a nonnegative whole number of half-points (ST_HpsMeasure)"
|
|
8715
9933
|
);
|
|
8716
|
-
|
|
9934
|
+
c2.check(
|
|
8717
9935
|
"positionHalfPoints",
|
|
8718
9936
|
run.positionHalfPoints,
|
|
8719
9937
|
Number.isSafeInteger,
|
|
8720
9938
|
"must be a signed whole number of half-points (ST_SignedHpsMeasure)"
|
|
8721
9939
|
);
|
|
8722
|
-
|
|
8723
|
-
|
|
8724
|
-
|
|
8725
|
-
validateThemeReference(
|
|
8726
|
-
validateThemeReference(
|
|
8727
|
-
|
|
9940
|
+
c2.hex("color", run.color);
|
|
9941
|
+
c2.hex("shadingFill", run.shadingFill);
|
|
9942
|
+
c2.hex("underlineColor", run.underlineColor);
|
|
9943
|
+
validateThemeReference(c2, "colorTheme", run.colorTheme);
|
|
9944
|
+
validateThemeReference(c2, "shadingThemeFill", run.shadingThemeFill);
|
|
9945
|
+
c2.enum("underlineStyle", run.underlineStyle, isStUnderline, "ST_Underline");
|
|
8728
9946
|
if (run.highlight !== void 0 && !isStHighlightColor(run.highlight))
|
|
8729
|
-
|
|
9947
|
+
c2.fail(
|
|
8730
9948
|
"highlight",
|
|
8731
9949
|
run.highlight,
|
|
8732
9950
|
`Unsupported Word highlight token: ${String(run.highlight)}`
|
|
8733
9951
|
);
|
|
8734
|
-
|
|
8735
|
-
|
|
8736
|
-
|
|
9952
|
+
c2.enum("break", run.break, isStBrType, "ST_BrType");
|
|
9953
|
+
c2.enum("fieldChar", run.fieldChar, isStFldCharType, "ST_FldCharType");
|
|
9954
|
+
c2.check(
|
|
8737
9955
|
"characterSpacingTwips",
|
|
8738
9956
|
run.characterSpacingTwips,
|
|
8739
9957
|
(v) => typeof v === "number" && Number.isFinite(v),
|
|
8740
9958
|
"must be a finite number of twips (ST_SignedTwipsMeasure)"
|
|
8741
9959
|
);
|
|
8742
|
-
|
|
8743
|
-
|
|
8744
|
-
|
|
8745
|
-
|
|
9960
|
+
c2.language("language", run.language);
|
|
9961
|
+
c2.language("eastAsiaLanguage", run.eastAsiaLanguage);
|
|
9962
|
+
c2.language("bidiLanguage", run.bidiLanguage);
|
|
9963
|
+
c2.check(
|
|
8746
9964
|
"verticalAlign",
|
|
8747
9965
|
run.verticalAlign,
|
|
8748
9966
|
isStVerticalAlignRun,
|
|
8749
9967
|
'must be "baseline", "superscript" or "subscript"'
|
|
8750
9968
|
);
|
|
8751
|
-
validateRevision(
|
|
9969
|
+
validateRevision(c2, "revision", run.revision);
|
|
8752
9970
|
if (run.image) {
|
|
8753
|
-
const image =
|
|
9971
|
+
const image = c2.at(".image");
|
|
8754
9972
|
for (const key of ["widthPx", "heightPx"])
|
|
8755
9973
|
image.check(
|
|
8756
9974
|
key,
|
|
@@ -8760,14 +9978,14 @@ function validateRun(c, run) {
|
|
|
8760
9978
|
);
|
|
8761
9979
|
}
|
|
8762
9980
|
}
|
|
8763
|
-
function validateTabStop(
|
|
8764
|
-
|
|
8765
|
-
|
|
8766
|
-
|
|
9981
|
+
function validateTabStop(c2, stop) {
|
|
9982
|
+
c2.signed("posTwips", stop.posTwips, "CT_TabStop/@pos");
|
|
9983
|
+
c2.enum("align", stop.align, isStTabJc, "ST_TabJc");
|
|
9984
|
+
c2.enum("leader", stop.leader, isStTabTlc, "ST_TabTlc");
|
|
8767
9985
|
}
|
|
8768
|
-
function validateParagraph(
|
|
9986
|
+
function validateParagraph(c2, paragraph) {
|
|
8769
9987
|
if (paragraph.dropCap) {
|
|
8770
|
-
const at =
|
|
9988
|
+
const at = c2.at(".dropCap");
|
|
8771
9989
|
at.check(
|
|
8772
9990
|
"style",
|
|
8773
9991
|
paragraph.dropCap.style,
|
|
@@ -8787,14 +10005,14 @@ function validateParagraph(c, paragraph) {
|
|
|
8787
10005
|
"must be a nonnegative whole number of twips"
|
|
8788
10006
|
);
|
|
8789
10007
|
}
|
|
8790
|
-
|
|
10008
|
+
c2.check(
|
|
8791
10009
|
"align",
|
|
8792
10010
|
paragraph.align,
|
|
8793
10011
|
(v) => v === "left" || v === "center" || v === "right" || v === "justify",
|
|
8794
10012
|
'must be "left", "center", "right" or "justify"'
|
|
8795
10013
|
);
|
|
8796
|
-
|
|
8797
|
-
|
|
10014
|
+
c2.enum("justification", paragraph.justification, isStJc, "ST_Jc");
|
|
10015
|
+
c2.check(
|
|
8798
10016
|
"direction",
|
|
8799
10017
|
paragraph.direction,
|
|
8800
10018
|
(v) => v === "ltr" || v === "rtl",
|
|
@@ -8806,7 +10024,7 @@ function validateParagraph(c, paragraph) {
|
|
|
8806
10024
|
"firstLineTwips",
|
|
8807
10025
|
"hangingTwips"
|
|
8808
10026
|
])
|
|
8809
|
-
|
|
10027
|
+
c2.unsigned(key, paragraph[key], "ST_TwipsMeasure");
|
|
8810
10028
|
for (const key of [
|
|
8811
10029
|
"lineSpacingTwips",
|
|
8812
10030
|
"indentLeftTwips",
|
|
@@ -8814,87 +10032,87 @@ function validateParagraph(c, paragraph) {
|
|
|
8814
10032
|
"indentStartTwips",
|
|
8815
10033
|
"indentEndTwips"
|
|
8816
10034
|
])
|
|
8817
|
-
|
|
8818
|
-
|
|
10035
|
+
c2.signed(key, paragraph[key], "ST_SignedTwipsMeasure");
|
|
10036
|
+
c2.enum("lineSpacingRule", paragraph.lineSpacingRule, isStLineSpacingRule, "ST_LineSpacingRule");
|
|
8819
10037
|
if (paragraph.numbering) {
|
|
8820
|
-
const numbering =
|
|
10038
|
+
const numbering = c2.at(".numbering");
|
|
8821
10039
|
numbering.unsigned("numId", paragraph.numbering.numId, "ST_DecimalNumber");
|
|
8822
10040
|
numbering.unsigned("level", paragraph.numbering.level, "ST_DecimalNumber");
|
|
8823
10041
|
}
|
|
8824
|
-
paragraph.tabStops?.forEach((stop, index) => validateTabStop(
|
|
8825
|
-
validateRevision(
|
|
8826
|
-
paragraph.runs.forEach((run, index) => validateRun(
|
|
10042
|
+
paragraph.tabStops?.forEach((stop, index) => validateTabStop(c2.at(`.tabStops[${index}]`), stop));
|
|
10043
|
+
validateRevision(c2, "markRevision", paragraph.markRevision);
|
|
10044
|
+
paragraph.runs.forEach((run, index) => validateRun(c2.at(`.runs[${index}]`), run));
|
|
8827
10045
|
}
|
|
8828
10046
|
|
|
8829
10047
|
// docx/validate-structure.ts
|
|
8830
|
-
function validateBorderSide(
|
|
10048
|
+
function validateBorderSide(c2, side) {
|
|
8831
10049
|
if (!side) return;
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
8835
|
-
|
|
8836
|
-
|
|
10050
|
+
c2.enum("style", side.style, isStBorder, "ST_Border");
|
|
10051
|
+
c2.unsigned("sizeEighthPoints", side.sizeEighthPoints, "ST_EighthPointMeasure");
|
|
10052
|
+
c2.unsigned("spacePoints", side.spacePoints, "ST_PointMeasure");
|
|
10053
|
+
c2.hex("color", side.color);
|
|
10054
|
+
c2.theme("themeColor", side.themeColor);
|
|
8837
10055
|
}
|
|
8838
|
-
function validateBorders(
|
|
10056
|
+
function validateBorders(c2, borders) {
|
|
8839
10057
|
if (!borders) return;
|
|
8840
10058
|
for (const side of ["top", "left", "bottom", "right", "insideH", "insideV"])
|
|
8841
|
-
validateBorderSide(
|
|
10059
|
+
validateBorderSide(c2.at(`.${side}`), borders[side]);
|
|
8842
10060
|
}
|
|
8843
|
-
function validateCell(
|
|
8844
|
-
|
|
10061
|
+
function validateCell(c2, cell) {
|
|
10062
|
+
c2.check(
|
|
8845
10063
|
"gridSpan",
|
|
8846
10064
|
cell.gridSpan,
|
|
8847
10065
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v >= 1,
|
|
8848
10066
|
"must be a positive integer (CT_DecimalNumber)"
|
|
8849
10067
|
);
|
|
8850
|
-
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
validateThemeReference(
|
|
8855
|
-
validateBorders(
|
|
10068
|
+
c2.enum("verticalMerge", cell.verticalMerge, isStMerge, "ST_Merge");
|
|
10069
|
+
c2.unsigned("widthTwips", cell.widthTwips, "ST_TwipsMeasure");
|
|
10070
|
+
c2.enum("verticalAlign", cell.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
10071
|
+
c2.hex("shadingFill", cell.shadingFill);
|
|
10072
|
+
validateThemeReference(c2, "shadingThemeFill", cell.shadingThemeFill);
|
|
10073
|
+
validateBorders(c2.at(".borders"), cell.borders);
|
|
8856
10074
|
if (cell.margins)
|
|
8857
10075
|
for (const side of ["top", "bottom", "left", "right"])
|
|
8858
|
-
|
|
10076
|
+
c2.at(".margins").signed(side, cell.margins[side], "ST_SignedTwipsMeasure");
|
|
8859
10077
|
}
|
|
8860
|
-
function validateTable(
|
|
8861
|
-
|
|
8862
|
-
|
|
8863
|
-
|
|
10078
|
+
function validateTable(c2, table) {
|
|
10079
|
+
c2.unsigned("widthTwips", table.widthTwips, "ST_TwipsMeasure");
|
|
10080
|
+
c2.signed("indentTwips", table.indentTwips, "ST_SignedTwipsMeasure");
|
|
10081
|
+
c2.check(
|
|
8864
10082
|
"alignment",
|
|
8865
10083
|
table.alignment,
|
|
8866
10084
|
(v) => v === "left" || v === "center" || v === "right",
|
|
8867
10085
|
'must be "left", "center" or "right"'
|
|
8868
10086
|
);
|
|
8869
|
-
|
|
10087
|
+
c2.enum("justification", table.justification, isStJcTable, "ST_JcTable");
|
|
8870
10088
|
table.grid?.forEach(
|
|
8871
|
-
(width, index) =>
|
|
10089
|
+
(width, index) => c2.at(`.grid[${index}]`).unsigned("width", width, "ST_TwipsMeasure")
|
|
8872
10090
|
);
|
|
8873
|
-
validateBorders(
|
|
10091
|
+
validateBorders(c2.at(".borders"), table.borders);
|
|
8874
10092
|
if (table.cellMargins)
|
|
8875
10093
|
for (const side of ["top", "bottom", "left", "right"])
|
|
8876
|
-
|
|
10094
|
+
c2.at(".cellMargins").signed(side, table.cellMargins[side], "ST_SignedTwipsMeasure");
|
|
8877
10095
|
table.rowProperties?.forEach((row, index) => {
|
|
8878
10096
|
if (row)
|
|
8879
|
-
|
|
10097
|
+
c2.at(`.rowProperties[${index}]`).unsigned("heightTwips", row.heightTwips, "ST_TwipsMeasure");
|
|
8880
10098
|
});
|
|
8881
10099
|
table.rows.forEach(
|
|
8882
|
-
(row, r) => row.forEach((cell, k) => validateCell(
|
|
10100
|
+
(row, r) => row.forEach((cell, k) => validateCell(c2.at(`.rows[${r}][${k}]`), cell))
|
|
8883
10101
|
);
|
|
8884
10102
|
}
|
|
8885
|
-
function validateSection(
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
10103
|
+
function validateSection(c2, section) {
|
|
10104
|
+
c2.enum("type", section.type, isStSectionMark, "ST_SectionMark");
|
|
10105
|
+
c2.enum("orientation", section.orientation, isStPageOrientation, "ST_PageOrientation");
|
|
10106
|
+
c2.enum("verticalAlign", section.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
8889
10107
|
for (const key of ["pageWidthTwips", "pageHeightTwips"])
|
|
8890
|
-
|
|
10108
|
+
c2.check(
|
|
8891
10109
|
key,
|
|
8892
10110
|
section[key],
|
|
8893
10111
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v > 0,
|
|
8894
10112
|
"must be a positive integer number of twips (CT_PageSz)"
|
|
8895
10113
|
);
|
|
8896
10114
|
for (const key of ["marginTopTwips", "marginBottomTwips"])
|
|
8897
|
-
|
|
10115
|
+
c2.signed(key, section[key], "ST_SignedTwipsMeasure");
|
|
8898
10116
|
for (const key of [
|
|
8899
10117
|
"marginLeftTwips",
|
|
8900
10118
|
"marginRightTwips",
|
|
@@ -8902,8 +10120,8 @@ function validateSection(c, section) {
|
|
|
8902
10120
|
"footerDistanceTwips",
|
|
8903
10121
|
"gutterTwips"
|
|
8904
10122
|
])
|
|
8905
|
-
|
|
8906
|
-
const columns =
|
|
10123
|
+
c2.unsigned(key, section[key], "ST_TwipsMeasure");
|
|
10124
|
+
const columns = c2.at(".columns");
|
|
8907
10125
|
columns.check(
|
|
8908
10126
|
"count",
|
|
8909
10127
|
section.columns?.count,
|
|
@@ -8917,7 +10135,7 @@ function validateSection(c, section) {
|
|
|
8917
10135
|
at.unsigned("spacingTwips", column.spacingTwips, "ST_TwipsMeasure");
|
|
8918
10136
|
});
|
|
8919
10137
|
if (section.lineNumberSettings) {
|
|
8920
|
-
const line =
|
|
10138
|
+
const line = c2.at(".lineNumberSettings");
|
|
8921
10139
|
const settings = section.lineNumberSettings;
|
|
8922
10140
|
line.check(
|
|
8923
10141
|
"countBy",
|
|
@@ -8940,12 +10158,12 @@ function validateSection(c, section) {
|
|
|
8940
10158
|
line.unsigned("distanceTwips", settings.distanceTwips, "ST_TwipsMeasure");
|
|
8941
10159
|
}
|
|
8942
10160
|
if (section.pageNumbering) {
|
|
8943
|
-
const numbering =
|
|
10161
|
+
const numbering = c2.at(".pageNumbering");
|
|
8944
10162
|
numbering.enum("format", section.pageNumbering.format, isStNumberFormat, "ST_NumberFormat");
|
|
8945
10163
|
numbering.signed("start", section.pageNumbering.start, "ST_DecimalNumber");
|
|
8946
10164
|
}
|
|
8947
10165
|
}
|
|
8948
|
-
function validateNumberingCatalog(
|
|
10166
|
+
function validateNumberingCatalog(c2, catalog) {
|
|
8949
10167
|
const levelOf = (at, level) => {
|
|
8950
10168
|
at.enum("numFmt", level.numFmt, isStNumberFormat, "ST_NumberFormat");
|
|
8951
10169
|
at.signed("start", level.start, "ST_DecimalNumber");
|
|
@@ -8976,19 +10194,19 @@ function validateNumberingCatalog(c, catalog) {
|
|
|
8976
10194
|
};
|
|
8977
10195
|
for (const [id, abstract] of Object.entries(catalog.abstractNums))
|
|
8978
10196
|
for (const [key, level] of Object.entries(abstract.levels))
|
|
8979
|
-
levelOf(new Checker(
|
|
10197
|
+
levelOf(new Checker(c2.issues, `${c2.path}.abstractNums[${id}].levels[${key}]`), level);
|
|
8980
10198
|
for (const [id, num] of Object.entries(catalog.nums))
|
|
8981
10199
|
for (const [key, override] of Object.entries(num.levelOverrides ?? {})) {
|
|
8982
|
-
const at = new Checker(
|
|
10200
|
+
const at = new Checker(c2.issues, `${c2.path}.nums[${id}].levelOverrides[${key}]`);
|
|
8983
10201
|
at.signed("startOverride", override.startOverride, "ST_DecimalNumber");
|
|
8984
10202
|
if (override.lvl) levelOf(at.at(".lvl"), override.lvl);
|
|
8985
10203
|
}
|
|
8986
10204
|
}
|
|
8987
10205
|
|
|
8988
10206
|
// docx/validate-model.ts
|
|
8989
|
-
function validateBlocks(
|
|
10207
|
+
function validateBlocks(c2, blocks) {
|
|
8990
10208
|
blocks?.forEach((block, index) => {
|
|
8991
|
-
const at =
|
|
10209
|
+
const at = c2.at(`[${index}]`);
|
|
8992
10210
|
if (block.type === "paragraph") return validateParagraph(at, block);
|
|
8993
10211
|
validateTable(at, block);
|
|
8994
10212
|
block.rows.forEach(
|
|
@@ -9002,8 +10220,8 @@ function validateBlocks(c, blocks) {
|
|
|
9002
10220
|
}
|
|
9003
10221
|
function validateDocumentModel(model) {
|
|
9004
10222
|
const issues = [];
|
|
9005
|
-
const
|
|
9006
|
-
const page =
|
|
10223
|
+
const path2 = (suffix) => new Checker(issues, suffix);
|
|
10224
|
+
const page = path2("page");
|
|
9007
10225
|
for (const key of ["width", "height"])
|
|
9008
10226
|
page.check(
|
|
9009
10227
|
key,
|
|
@@ -9018,9 +10236,9 @@ function validateDocumentModel(model) {
|
|
|
9018
10236
|
(v) => typeof v === "number" && Number.isFinite(v) && (key === "marginTop" || key === "marginBottom" || v >= 0),
|
|
9019
10237
|
"must be a finite pixel size (converted to integer twips; left/right non-negative)"
|
|
9020
10238
|
);
|
|
9021
|
-
validateBlocks(
|
|
10239
|
+
validateBlocks(path2("blocks"), model.blocks);
|
|
9022
10240
|
model.sections?.forEach((section, index) => {
|
|
9023
|
-
const at =
|
|
10241
|
+
const at = path2(`sections[${index}]`);
|
|
9024
10242
|
validateSection(at, section);
|
|
9025
10243
|
for (const kind of ["headers", "footers"])
|
|
9026
10244
|
for (const [slot2, content] of Object.entries(section[kind] ?? {}))
|
|
@@ -9028,16 +10246,16 @@ function validateDocumentModel(model) {
|
|
|
9028
10246
|
});
|
|
9029
10247
|
for (const kind of ["footnotes", "endnotes"])
|
|
9030
10248
|
model[kind]?.forEach(
|
|
9031
|
-
(note, index) => validateBlocks(
|
|
10249
|
+
(note, index) => validateBlocks(path2(`${kind}[${index}].blocks`), note.blocks)
|
|
9032
10250
|
);
|
|
9033
10251
|
model.comments?.forEach(
|
|
9034
|
-
(comment, index) =>
|
|
10252
|
+
(comment, index) => path2(`comments[${index}]`).dateTime("date", comment.date)
|
|
9035
10253
|
);
|
|
9036
|
-
|
|
9037
|
-
|
|
9038
|
-
|
|
10254
|
+
path2("model").hex("pageColor", model.pageColor);
|
|
10255
|
+
path2("model").enum("footnoteNumFmt", model.footnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
10256
|
+
path2("model").enum("endnoteNumFmt", model.endnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
9039
10257
|
if (model.numberingCatalog)
|
|
9040
|
-
validateNumberingCatalog(
|
|
10258
|
+
validateNumberingCatalog(path2("numberingCatalog"), model.numberingCatalog);
|
|
9041
10259
|
return issues;
|
|
9042
10260
|
}
|
|
9043
10261
|
function assertValidDocumentModel(model) {
|
|
@@ -9153,12 +10371,12 @@ function parseNum(element) {
|
|
|
9153
10371
|
const levelOverrides = {};
|
|
9154
10372
|
for (const override of children2(element, "lvlOverride")) {
|
|
9155
10373
|
const level = integer2(getW(override, "ilvl"), 0);
|
|
9156
|
-
const
|
|
10374
|
+
const entry2 = {};
|
|
9157
10375
|
const startOverride = getW(first2(override, "startOverride"), "val");
|
|
9158
|
-
if (startOverride !== void 0)
|
|
10376
|
+
if (startOverride !== void 0) entry2.startOverride = integer2(startOverride, 1);
|
|
9159
10377
|
const lvl = first2(override, "lvl");
|
|
9160
|
-
if (lvl)
|
|
9161
|
-
if (Object.keys(
|
|
10378
|
+
if (lvl) entry2.lvl = parseNumberingLevel(lvl);
|
|
10379
|
+
if (Object.keys(entry2).length) levelOverrides[level] = entry2;
|
|
9162
10380
|
}
|
|
9163
10381
|
return {
|
|
9164
10382
|
id,
|
|
@@ -9364,7 +10582,7 @@ function buildAbstractNumElement(doc, def) {
|
|
|
9364
10582
|
const element = makeW(doc, "abstractNum");
|
|
9365
10583
|
setAttribute8(element, "abstractNumId", def.id);
|
|
9366
10584
|
element.appendChild(valueElement(doc, "multiLevelType", "hybridMultilevel"));
|
|
9367
|
-
for (const level of Object.values(def.levels).sort((
|
|
10585
|
+
for (const level of Object.values(def.levels).sort((a2, b) => a2.level - b.level))
|
|
9368
10586
|
element.appendChild(buildLevelElement(doc, level));
|
|
9369
10587
|
return element;
|
|
9370
10588
|
}
|
|
@@ -9483,13 +10701,13 @@ async function applyStyleNumbering(zip, model, base) {
|
|
|
9483
10701
|
// docx/part-relationships.ts
|
|
9484
10702
|
var CONTENT_TYPES_PART = "[Content_Types].xml";
|
|
9485
10703
|
var extensionOf = (partName) => partName.split(".").pop()?.toLowerCase() ?? "";
|
|
9486
|
-
function
|
|
10704
|
+
function relationshipsPartFor2(partName) {
|
|
9487
10705
|
const slash = partName.lastIndexOf("/");
|
|
9488
10706
|
return `${partName.slice(0, slash)}/_rels/${partName.slice(slash + 1)}.rels`;
|
|
9489
10707
|
}
|
|
9490
10708
|
async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
9491
10709
|
const declared = parseRelationships(
|
|
9492
|
-
await zip.file(
|
|
10710
|
+
await zip.file(relationshipsPartFor2(partName))?.async("string")
|
|
9493
10711
|
);
|
|
9494
10712
|
const allocator = new RelationshipAllocator(
|
|
9495
10713
|
[...scanUsedRelationshipIds(doc), ...declared.keys()],
|
|
@@ -9500,7 +10718,7 @@ async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
|
9500
10718
|
}
|
|
9501
10719
|
async function writeNewRelationships(zip, partName, created, pendingMedia) {
|
|
9502
10720
|
if (!created.length) return;
|
|
9503
|
-
const relsPath =
|
|
10721
|
+
const relsPath = relationshipsPartFor2(partName);
|
|
9504
10722
|
const relationships = parseRelationships(await zip.file(relsPath)?.async("string"));
|
|
9505
10723
|
let contentTypesXml = await zip.file(CONTENT_TYPES_PART)?.async("string");
|
|
9506
10724
|
for (const relationship of created) {
|
|
@@ -9584,8 +10802,8 @@ async function createHeaderFooterParts(zip, model, base, docPrIds) {
|
|
|
9584
10802
|
(_match, start, end) => `${start}${docPrIds.next()}${end}`
|
|
9585
10803
|
) : xml
|
|
9586
10804
|
);
|
|
9587
|
-
const rels = zip.file(
|
|
9588
|
-
if (rels) zip.file(
|
|
10805
|
+
const rels = zip.file(relationshipsPartFor2(content.sourcePartName));
|
|
10806
|
+
if (rels) zip.file(relationshipsPartFor2(partName), await rels.async("uint8array"));
|
|
9589
10807
|
}
|
|
9590
10808
|
await ensureContentTypeOverride(
|
|
9591
10809
|
zip,
|
|
@@ -10805,15 +12023,15 @@ function parseNotesPart(xml, kind, parseBlocks) {
|
|
|
10805
12023
|
}
|
|
10806
12024
|
|
|
10807
12025
|
// docx/document-parts.ts
|
|
10808
|
-
async function partContext(zip,
|
|
12026
|
+
async function partContext(zip, path2, base) {
|
|
10809
12027
|
if (!base) return void 0;
|
|
10810
|
-
const slash =
|
|
10811
|
-
const relsPath = `${
|
|
12028
|
+
const slash = path2.lastIndexOf("/");
|
|
12029
|
+
const relsPath = `${path2.slice(0, slash)}/_rels/${path2.slice(slash + 1)}.rels`;
|
|
10812
12030
|
return { ...base, rels: parseRelationships(await readPart(zip, relsPath)) };
|
|
10813
12031
|
}
|
|
10814
12032
|
var FIELD_MARKUP = /<w:(?:fldSimple|instrText|fldChar)\b/;
|
|
10815
|
-
async function readPart(zip,
|
|
10816
|
-
return zip.file(
|
|
12033
|
+
async function readPart(zip, path2) {
|
|
12034
|
+
return zip.file(path2)?.async("string");
|
|
10817
12035
|
}
|
|
10818
12036
|
function parseSettings(xml) {
|
|
10819
12037
|
if (!xml) return { evenAndOddHeaders: false, autoHyphenation: false };
|
|
@@ -10841,21 +12059,21 @@ async function resolveSlots(zip, relationships, refs, cache, fieldMarkup, drawin
|
|
|
10841
12059
|
for (const ref of refs) {
|
|
10842
12060
|
const relationship = relationships.get(ref.rId);
|
|
10843
12061
|
if (!relationship) continue;
|
|
10844
|
-
const
|
|
10845
|
-
let blocks = cache.get(
|
|
12062
|
+
const path2 = resolvePartPath("word/document.xml", relationship.target);
|
|
12063
|
+
let blocks = cache.get(path2);
|
|
10846
12064
|
if (!blocks) {
|
|
10847
|
-
const xml = await readPart(zip,
|
|
12065
|
+
const xml = await readPart(zip, path2);
|
|
10848
12066
|
if (xml === void 0) continue;
|
|
10849
12067
|
if (FIELD_MARKUP.test(xml)) fieldMarkup.seen = true;
|
|
10850
|
-
const context = await partContext(zip,
|
|
12068
|
+
const context = await partContext(zip, path2, drawings);
|
|
10851
12069
|
const root = parseXml2(xml).documentElement;
|
|
10852
12070
|
blocks = withParseWarnings(
|
|
10853
12071
|
sink2,
|
|
10854
|
-
() => parseBlocksFromContainer(root, `${
|
|
12072
|
+
() => parseBlocksFromContainer(root, `${path2.replace(/[^a-z0-9]+/gi, "")}-`, context)
|
|
10855
12073
|
);
|
|
10856
|
-
cache.set(
|
|
12074
|
+
cache.set(path2, blocks);
|
|
10857
12075
|
}
|
|
10858
|
-
slots[ref.slot] = { blocks, partName:
|
|
12076
|
+
slots[ref.slot] = { blocks, partName: path2 };
|
|
10859
12077
|
}
|
|
10860
12078
|
return Object.keys(slots).length ? slots : void 0;
|
|
10861
12079
|
}
|
|
@@ -10891,8 +12109,8 @@ async function parseDocumentParts(zip, body, blocks, drawings) {
|
|
|
10891
12109
|
}
|
|
10892
12110
|
const footnotesXml = await readPart(zip, "word/footnotes.xml");
|
|
10893
12111
|
const endnotesXml = await readPart(zip, "word/endnotes.xml");
|
|
10894
|
-
const notesParser = async (
|
|
10895
|
-
const context = await partContext(zip,
|
|
12112
|
+
const notesParser = async (path2) => {
|
|
12113
|
+
const context = await partContext(zip, path2, drawings);
|
|
10896
12114
|
return (container2, prefix) => withParseWarnings(warnings, () => parseBlocksFromContainer(container2, prefix, context));
|
|
10897
12115
|
};
|
|
10898
12116
|
const footnotes = footnotesXml ? parseNotesPart(footnotesXml, "footnote", await notesParser("word/footnotes.xml")) : void 0;
|
|
@@ -10944,15 +12162,15 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
10944
12162
|
});
|
|
10945
12163
|
if (extendedXml) {
|
|
10946
12164
|
const extended = parseXml2(extendedXml);
|
|
10947
|
-
for (const
|
|
12165
|
+
for (const entry2 of Array.from(
|
|
10948
12166
|
extended.getElementsByTagNameNS(W15_NS2, "commentEx")
|
|
10949
12167
|
)) {
|
|
10950
|
-
const paraId =
|
|
10951
|
-
const comment = paraId && comments.find((
|
|
12168
|
+
const paraId = entry2.getAttributeNS(W15_NS2, "paraId");
|
|
12169
|
+
const comment = paraId && comments.find((c2) => c2.id === paraIdToCommentId.get(paraId));
|
|
10952
12170
|
if (!comment) continue;
|
|
10953
|
-
const done =
|
|
12171
|
+
const done = entry2.getAttributeNS(W15_NS2, "done");
|
|
10954
12172
|
comment.resolved = done === "1" || done === "true";
|
|
10955
|
-
const parentParaId =
|
|
12173
|
+
const parentParaId = entry2.getAttributeNS(W15_NS2, "paraIdParent");
|
|
10956
12174
|
const parentId = parentParaId && paraIdToCommentId.get(parentParaId);
|
|
10957
12175
|
if (parentId) comment.parentId = parentId;
|
|
10958
12176
|
}
|
|
@@ -10960,71 +12178,6 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
10960
12178
|
return comments;
|
|
10961
12179
|
}
|
|
10962
12180
|
|
|
10963
|
-
// drawingml/theme.ts
|
|
10964
|
-
new Set(THEME_COLOR_SLOTS);
|
|
10965
|
-
function nonEmpty(value) {
|
|
10966
|
-
return value ? value : void 0;
|
|
10967
|
-
}
|
|
10968
|
-
function parseThemeColorScheme(scheme) {
|
|
10969
|
-
const result = { colors: {} };
|
|
10970
|
-
if (!scheme) return result;
|
|
10971
|
-
const name = nonEmpty(scheme.getAttribute("name"));
|
|
10972
|
-
if (name) result.name = name;
|
|
10973
|
-
for (const slot2 of THEME_COLOR_SLOTS) {
|
|
10974
|
-
const color = parseDrawingColorIn(first(scheme, slot2, NS.a));
|
|
10975
|
-
if (color) result.colors[slot2] = color;
|
|
10976
|
-
}
|
|
10977
|
-
return result;
|
|
10978
|
-
}
|
|
10979
|
-
function parseFontCollection(collection) {
|
|
10980
|
-
const result = { scripts: {} };
|
|
10981
|
-
if (!collection) return result;
|
|
10982
|
-
const typeface = (local) => nonEmpty(first(collection, local, NS.a)?.getAttribute("typeface"));
|
|
10983
|
-
const latin = typeface("latin");
|
|
10984
|
-
const eastAsia = typeface("ea");
|
|
10985
|
-
const complexScript = typeface("cs");
|
|
10986
|
-
if (latin) result.latin = latin;
|
|
10987
|
-
if (eastAsia) result.eastAsia = eastAsia;
|
|
10988
|
-
if (complexScript) result.complexScript = complexScript;
|
|
10989
|
-
for (const font of elements(collection)) {
|
|
10990
|
-
if (font.localName !== "font") continue;
|
|
10991
|
-
const script = nonEmpty(font.getAttribute("script"));
|
|
10992
|
-
const face = nonEmpty(font.getAttribute("typeface"));
|
|
10993
|
-
if (script && face && !Object.hasOwn(result.scripts, script)) result.scripts[script] = face;
|
|
10994
|
-
}
|
|
10995
|
-
return result;
|
|
10996
|
-
}
|
|
10997
|
-
function parseThemeFontScheme(scheme) {
|
|
10998
|
-
const result = {
|
|
10999
|
-
major: parseFontCollection(first(scheme, "majorFont", NS.a)),
|
|
11000
|
-
minor: parseFontCollection(first(scheme, "minorFont", NS.a))
|
|
11001
|
-
};
|
|
11002
|
-
const name = nonEmpty(scheme?.getAttribute("name"));
|
|
11003
|
-
if (name) result.name = name;
|
|
11004
|
-
return result;
|
|
11005
|
-
}
|
|
11006
|
-
function rootOf2(source) {
|
|
11007
|
-
return "documentElement" in source ? source.documentElement : source;
|
|
11008
|
-
}
|
|
11009
|
-
function parseTheme(source) {
|
|
11010
|
-
const root = rootOf2(source);
|
|
11011
|
-
const holder = first(root, "themeElements", NS.a) ?? root;
|
|
11012
|
-
const theme = {
|
|
11013
|
-
colorScheme: parseThemeColorScheme(first(holder, "clrScheme", NS.a)),
|
|
11014
|
-
fontScheme: parseThemeFontScheme(first(holder, "fontScheme", NS.a))
|
|
11015
|
-
};
|
|
11016
|
-
const name = nonEmpty(root.getAttribute("name"));
|
|
11017
|
-
if (name) theme.name = name;
|
|
11018
|
-
return theme;
|
|
11019
|
-
}
|
|
11020
|
-
|
|
11021
|
-
// drawingml/theme-color.ts
|
|
11022
|
-
function themeSlotHex(color) {
|
|
11023
|
-
if (!color) return void 0;
|
|
11024
|
-
const value = color.kind === "srgb" ? color.value : color.kind === "system" ? color.fallback : void 0;
|
|
11025
|
-
return value ? value.toUpperCase() : void 0;
|
|
11026
|
-
}
|
|
11027
|
-
|
|
11028
12181
|
// docx/theme.ts
|
|
11029
12182
|
function fontSetOf(collection) {
|
|
11030
12183
|
const { latin, eastAsia, complexScript } = collection;
|
|
@@ -11075,96 +12228,6 @@ function parseColorSchemeMapping(xml) {
|
|
|
11075
12228
|
return result;
|
|
11076
12229
|
}
|
|
11077
12230
|
|
|
11078
|
-
// docx/parse-warnings.ts
|
|
11079
|
-
function hasAny(document, names) {
|
|
11080
|
-
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
11081
|
-
}
|
|
11082
|
-
function warningsFor(document) {
|
|
11083
|
-
const warnings = [];
|
|
11084
|
-
const features = [
|
|
11085
|
-
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
11086
|
-
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
11087
|
-
[
|
|
11088
|
-
["fldSimple", "instrText", "fldChar"],
|
|
11089
|
-
"Fields show the result Word last saved while editing; Print Layout recalculates PAGE, NUMPAGES, SECTIONPAGES, DATE and TIME, and tables of contents update from the References tab."
|
|
11090
|
-
],
|
|
11091
|
-
[
|
|
11092
|
-
["moveFrom", "moveTo"],
|
|
11093
|
-
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
11094
|
-
],
|
|
11095
|
-
[
|
|
11096
|
-
["rPrChange"],
|
|
11097
|
-
"Formatting-change revisions retain their prior run-properties snapshots and support acceptance and rejection; recording new formatting changes and showing prior formatting in Original display are not supported yet."
|
|
11098
|
-
],
|
|
11099
|
-
[
|
|
11100
|
-
["pPrChange"],
|
|
11101
|
-
"Paragraph-formatting-change revisions retain their prior properties snapshots and support acceptance and rejection; recording new paragraph formatting changes and showing prior formatting in Original display are not supported yet."
|
|
11102
|
-
],
|
|
11103
|
-
[
|
|
11104
|
-
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
11105
|
-
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
11106
|
-
]
|
|
11107
|
-
];
|
|
11108
|
-
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
11109
|
-
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
11110
|
-
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
11111
|
-
))
|
|
11112
|
-
warnings.push(
|
|
11113
|
-
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
11114
|
-
);
|
|
11115
|
-
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
11116
|
-
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
11117
|
-
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
11118
|
-
(cr) => cr.attributes.length > 0
|
|
11119
|
-
);
|
|
11120
|
-
if (specialBreak)
|
|
11121
|
-
warnings.push(
|
|
11122
|
-
"Some non-line breaks other than page and column breaks are not distinguished from line breaks in the document model; edits to paragraphs containing them are rejected to preserve the original XML."
|
|
11123
|
-
);
|
|
11124
|
-
return warnings;
|
|
11125
|
-
}
|
|
11126
|
-
function forEachParagraph2(blocks, visit) {
|
|
11127
|
-
for (const block of blocks) {
|
|
11128
|
-
if (block.type === "paragraph") visit(block);
|
|
11129
|
-
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
11130
|
-
}
|
|
11131
|
-
}
|
|
11132
|
-
function imageAndBookmarkWarnings(blocks) {
|
|
11133
|
-
const warnings = [];
|
|
11134
|
-
let hasPicture = false;
|
|
11135
|
-
let hasAnchored = false;
|
|
11136
|
-
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
11137
|
-
let hasBookmarks = false;
|
|
11138
|
-
forEachParagraph2(blocks, (paragraph) => {
|
|
11139
|
-
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
11140
|
-
for (const run of paragraph.runs) {
|
|
11141
|
-
if (!run.image) continue;
|
|
11142
|
-
if (run.image.unsupported) {
|
|
11143
|
-
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
11144
|
-
unsupportedKinds.add(run.image.unsupported);
|
|
11145
|
-
} else hasPicture = true;
|
|
11146
|
-
if (run.image.anchored) hasAnchored = true;
|
|
11147
|
-
}
|
|
11148
|
-
});
|
|
11149
|
-
if (hasPicture)
|
|
11150
|
-
warnings.push(
|
|
11151
|
-
"Inline pictures render from their original bytes and can be deleted or newly inserted; crop, artistic effects, and non-inline text wrapping are not reproduced."
|
|
11152
|
-
);
|
|
11153
|
-
if (hasAnchored)
|
|
11154
|
-
warnings.push(
|
|
11155
|
-
"Floating pictures follow their text wrapping approximately (floated left or right, or on their own line); exact positions, vertical offsets and in-front/behind layering are not reproduced."
|
|
11156
|
-
);
|
|
11157
|
-
if (unsupportedKinds.size)
|
|
11158
|
-
warnings.push(
|
|
11159
|
-
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
11160
|
-
);
|
|
11161
|
-
if (hasBookmarks)
|
|
11162
|
-
warnings.push(
|
|
11163
|
-
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
11164
|
-
);
|
|
11165
|
-
return warnings;
|
|
11166
|
-
}
|
|
11167
|
-
|
|
11168
12231
|
// docx/diagram-document.ts
|
|
11169
12232
|
function diagramsIn(blocks) {
|
|
11170
12233
|
const diagrams = [];
|
|
@@ -11202,7 +12265,7 @@ async function readPackage(input) {
|
|
|
11202
12265
|
const entries = Object.values(zip.files);
|
|
11203
12266
|
if (entries.length > 5e3) throw new Error("DOCX package exceeds the 5,000 part limit");
|
|
11204
12267
|
const totalSize = entries.reduce(
|
|
11205
|
-
(sum,
|
|
12268
|
+
(sum, entry2) => sum + Number(entry2._data?.uncompressedSize ?? 0),
|
|
11206
12269
|
0
|
|
11207
12270
|
);
|
|
11208
12271
|
if (totalSize > 200 * 1024 * 1024)
|
|
@@ -11353,6 +12416,10 @@ async function readPackage(input) {
|
|
|
11353
12416
|
pictureBlocks,
|
|
11354
12417
|
async (partName) => zip.file(partName)?.async("string")
|
|
11355
12418
|
);
|
|
12419
|
+
await resolveDocumentCharts(
|
|
12420
|
+
pictureBlocks,
|
|
12421
|
+
async (partName) => zip.file(partName)?.async("string")
|
|
12422
|
+
);
|
|
11356
12423
|
model.warnings.push(...imageAndBookmarkWarnings(blocks), ...diagramWarnings(pictureBlocks));
|
|
11357
12424
|
for (const warning of schemaWarnings)
|
|
11358
12425
|
if (!model.warnings.includes(warning)) model.warnings.push(warning);
|
|
@@ -11531,10 +12598,10 @@ function chainToEnd(table, start, max) {
|
|
|
11531
12598
|
}
|
|
11532
12599
|
return out;
|
|
11533
12600
|
}
|
|
11534
|
-
function processCompoundFileStream(input,
|
|
12601
|
+
function processCompoundFileStream(input, path2, replacement) {
|
|
11535
12602
|
const reject = () => replacement ? input : void 0;
|
|
11536
12603
|
try {
|
|
11537
|
-
if (
|
|
12604
|
+
if (path2.length === 0 || path2.some((part) => !part) || input.length < 512)
|
|
11538
12605
|
return reject();
|
|
11539
12606
|
const view = new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
11540
12607
|
const read32 = (offset2) => view.getUint32(offset2, true);
|
|
@@ -11617,7 +12684,7 @@ function processCompoundFileStream(input, path, replacement) {
|
|
|
11617
12684
|
if (!root)
|
|
11618
12685
|
return reject();
|
|
11619
12686
|
let parent = root, target;
|
|
11620
|
-
for (let partIndex = 0; partIndex <
|
|
12687
|
+
for (let partIndex = 0; partIndex < path2.length; partIndex++) {
|
|
11621
12688
|
const matches = [], seen = /* @__PURE__ */ new Set();
|
|
11622
12689
|
const visit = (id) => {
|
|
11623
12690
|
if (id === NIL)
|
|
@@ -11629,7 +12696,7 @@ function processCompoundFileStream(input, path, replacement) {
|
|
|
11629
12696
|
if (!e)
|
|
11630
12697
|
throw new Error("Invalid directory ID");
|
|
11631
12698
|
visit(e.left);
|
|
11632
|
-
if (e.name.toLocaleLowerCase() ===
|
|
12699
|
+
if (e.name.toLocaleLowerCase() === path2[partIndex].toLocaleLowerCase())
|
|
11633
12700
|
matches.push(e);
|
|
11634
12701
|
visit(e.right);
|
|
11635
12702
|
};
|
|
@@ -11637,7 +12704,7 @@ function processCompoundFileStream(input, path, replacement) {
|
|
|
11637
12704
|
if (matches.length !== 1)
|
|
11638
12705
|
return reject();
|
|
11639
12706
|
target = matches[0];
|
|
11640
|
-
if (partIndex <
|
|
12707
|
+
if (partIndex < path2.length - 1) {
|
|
11641
12708
|
if (target.type !== 1)
|
|
11642
12709
|
return reject();
|
|
11643
12710
|
parent = target;
|
|
@@ -11685,12 +12752,12 @@ function processCompoundFileStream(input, path, replacement) {
|
|
|
11685
12752
|
const reserved = /* @__PURE__ */ new Set([...fatIds, ...difatIds, ...dirSectors, ...miniFatSectors]);
|
|
11686
12753
|
const regularUsed = new Set(reserved);
|
|
11687
12754
|
const rootMini = entries.find((e) => e.type === 5);
|
|
11688
|
-
for (const
|
|
11689
|
-
if (
|
|
12755
|
+
for (const entry2 of entries) {
|
|
12756
|
+
if (entry2.type !== 2 && entry2.type !== 5 || entry2.size === 0)
|
|
11690
12757
|
continue;
|
|
11691
|
-
if (
|
|
12758
|
+
if (entry2.type === 2 && entry2.size < miniCutoff)
|
|
11692
12759
|
continue;
|
|
11693
|
-
for (const id of exactChain(fat,
|
|
12760
|
+
for (const id of exactChain(fat, entry2.start, entry2.size, sectorSize)) {
|
|
11694
12761
|
sector(id);
|
|
11695
12762
|
if (regularUsed.has(id))
|
|
11696
12763
|
return reject();
|
|
@@ -11698,10 +12765,10 @@ function processCompoundFileStream(input, path, replacement) {
|
|
|
11698
12765
|
}
|
|
11699
12766
|
}
|
|
11700
12767
|
const miniUsed = /* @__PURE__ */ new Set();
|
|
11701
|
-
for (const
|
|
11702
|
-
if (
|
|
12768
|
+
for (const entry2 of entries) {
|
|
12769
|
+
if (entry2.type !== 2 || entry2.size === 0 || entry2.size >= miniCutoff)
|
|
11703
12770
|
continue;
|
|
11704
|
-
const ids = exactChain(miniFat,
|
|
12771
|
+
const ids = exactChain(miniFat, entry2.start, entry2.size, miniSize);
|
|
11705
12772
|
for (const id of ids) {
|
|
11706
12773
|
if ((id + 1) * miniSize > rootMini.size || miniUsed.has(id))
|
|
11707
12774
|
return reject();
|
|
@@ -11762,11 +12829,11 @@ function processCompoundFileStream(input, path, replacement) {
|
|
|
11762
12829
|
return reject();
|
|
11763
12830
|
}
|
|
11764
12831
|
}
|
|
11765
|
-
function readCompoundFileStream(input,
|
|
11766
|
-
return processCompoundFileStream(input,
|
|
12832
|
+
function readCompoundFileStream(input, path2) {
|
|
12833
|
+
return processCompoundFileStream(input, path2);
|
|
11767
12834
|
}
|
|
11768
|
-
function replaceCompoundFileStream(input,
|
|
11769
|
-
return processCompoundFileStream(input,
|
|
12835
|
+
function replaceCompoundFileStream(input, path2, replacement) {
|
|
12836
|
+
return processCompoundFileStream(input, path2, replacement) ?? input;
|
|
11770
12837
|
}
|
|
11771
12838
|
|
|
11772
12839
|
// ../../node_modules/.bun/@christophervr+ole2@0.12.0/node_modules/@christophervr/ole2/dist/ole2-stream-resize-v4.js
|
|
@@ -11783,12 +12850,12 @@ function follow(table, start) {
|
|
|
11783
12850
|
}
|
|
11784
12851
|
return ids;
|
|
11785
12852
|
}
|
|
11786
|
-
function findSlot(slots,
|
|
12853
|
+
function findSlot(slots, path2) {
|
|
11787
12854
|
let parent = slots.get(0);
|
|
11788
12855
|
if (!parent || parent.type !== 5)
|
|
11789
12856
|
throw new Error("Invalid root");
|
|
11790
12857
|
const parents = /* @__PURE__ */ new Set();
|
|
11791
|
-
for (let part = 0; part <
|
|
12858
|
+
for (let part = 0; part < path2.length; part++) {
|
|
11792
12859
|
if (parents.has(parent.id))
|
|
11793
12860
|
throw new Error("Cyclic storage hierarchy");
|
|
11794
12861
|
parents.add(parent.id);
|
|
@@ -11803,14 +12870,14 @@ function findSlot(slots, path) {
|
|
|
11803
12870
|
const slot2 = slots.get(id);
|
|
11804
12871
|
if (!slot2)
|
|
11805
12872
|
throw new Error("Missing directory slot");
|
|
11806
|
-
if (slot2.name.toLocaleLowerCase() ===
|
|
12873
|
+
if (slot2.name.toLocaleLowerCase() === path2[part].toLocaleLowerCase())
|
|
11807
12874
|
matches.push(slot2);
|
|
11808
12875
|
stack.push(slot2.left, slot2.right);
|
|
11809
12876
|
}
|
|
11810
12877
|
if (matches.length !== 1)
|
|
11811
12878
|
throw new Error("Missing or ambiguous stream");
|
|
11812
12879
|
parent = matches[0];
|
|
11813
|
-
if (parent.type !== (part ===
|
|
12880
|
+
if (parent.type !== (part === path2.length - 1 ? 2 : 1))
|
|
11814
12881
|
throw new Error("Invalid storage path");
|
|
11815
12882
|
}
|
|
11816
12883
|
return parent;
|
|
@@ -11840,10 +12907,10 @@ function validateHierarchy(slots) {
|
|
|
11840
12907
|
if (owners.size !== slots.size - 1)
|
|
11841
12908
|
throw new Error("Unreachable directory entries");
|
|
11842
12909
|
}
|
|
11843
|
-
function resizeCompoundFileStreamV4(input,
|
|
12910
|
+
function resizeCompoundFileStreamV4(input, path2, replacement) {
|
|
11844
12911
|
const fail = (reason) => ({ ok: false, bytes: input, reason });
|
|
11845
12912
|
try {
|
|
11846
|
-
if (input.length < 512 || !
|
|
12913
|
+
if (input.length < 512 || !path2.length || path2.some((part) => !part))
|
|
11847
12914
|
return fail("invalid-or-missing-stream");
|
|
11848
12915
|
const view = new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
11849
12916
|
const read = (offset) => view.getUint32(offset, true);
|
|
@@ -11856,10 +12923,10 @@ function resizeCompoundFileStreamV4(input, path, replacement) {
|
|
|
11856
12923
|
const cutoff = read(56);
|
|
11857
12924
|
if (cutoff !== 0 && cutoff !== 4096)
|
|
11858
12925
|
return fail("unsupported-layout");
|
|
11859
|
-
const original = readCompoundFileStream(input,
|
|
12926
|
+
const original = readCompoundFileStream(input, path2);
|
|
11860
12927
|
if (!original)
|
|
11861
12928
|
return fail("invalid-or-missing-stream");
|
|
11862
|
-
const name =
|
|
12929
|
+
const name = path2[path2.length - 1].toLocaleLowerCase();
|
|
11863
12930
|
if (name === "worddocument" && original.length >= 12 && (original[10] | original[11] << 8) & 33024)
|
|
11864
12931
|
return fail("unsafe-edit");
|
|
11865
12932
|
if (name === "book" || name === "workbook") {
|
|
@@ -11873,7 +12940,7 @@ function resizeCompoundFileStreamV4(input, path, replacement) {
|
|
|
11873
12940
|
offset += 4 + length;
|
|
11874
12941
|
}
|
|
11875
12942
|
}
|
|
11876
|
-
const validated = replaceCompoundFileStream(input,
|
|
12943
|
+
const validated = replaceCompoundFileStream(input, path2, original);
|
|
11877
12944
|
if (validated === input)
|
|
11878
12945
|
return fail("unsafe-edit");
|
|
11879
12946
|
const sameLength = replacement.length === original.length;
|
|
@@ -11897,8 +12964,8 @@ function resizeCompoundFileStreamV4(input, path, replacement) {
|
|
|
11897
12964
|
if (read(40) !== directoryChain.length)
|
|
11898
12965
|
return fail("unsafe-edit");
|
|
11899
12966
|
for (const [block, sector] of directoryChain.entries()) {
|
|
11900
|
-
for (let
|
|
11901
|
-
const offset = (sector + 1) * SECTOR3 +
|
|
12967
|
+
for (let entry2 = 0; entry2 < DIRECTORY_ENTRIES; entry2++) {
|
|
12968
|
+
const offset = (sector + 1) * SECTOR3 + entry2 * 128, type = view.getUint8(offset + 66);
|
|
11902
12969
|
if (!type)
|
|
11903
12970
|
continue;
|
|
11904
12971
|
const nameLength = view.getUint16(offset + 64, true);
|
|
@@ -11909,16 +12976,16 @@ function resizeCompoundFileStreamV4(input, path, replacement) {
|
|
|
11909
12976
|
name2 += String.fromCharCode(view.getUint16(offset + i2, true));
|
|
11910
12977
|
if (read(offset + 124) !== 0)
|
|
11911
12978
|
return fail("unsafe-edit");
|
|
11912
|
-
const id = block * DIRECTORY_ENTRIES +
|
|
12979
|
+
const id = block * DIRECTORY_ENTRIES + entry2;
|
|
11913
12980
|
slots.set(id, { id, name: name2, type, left: read(offset + 68), right: read(offset + 72), child: read(offset + 76), start: read(offset + 116), size: read(offset + 120), offset });
|
|
11914
12981
|
}
|
|
11915
12982
|
}
|
|
11916
12983
|
if ([...slots.values()].filter((slot2) => slot2.type === 5).length !== 1)
|
|
11917
12984
|
return fail("unsafe-edit");
|
|
11918
|
-
const target = findSlot(slots,
|
|
12985
|
+
const target = findSlot(slots, path2);
|
|
11919
12986
|
validateHierarchy(slots);
|
|
11920
12987
|
if (sameLength) {
|
|
11921
|
-
const bytes = replaceCompoundFileStream(input,
|
|
12988
|
+
const bytes = replaceCompoundFileStream(input, path2, replacement);
|
|
11922
12989
|
return bytes === input ? fail("unsafe-edit") : { ok: true, bytes };
|
|
11923
12990
|
}
|
|
11924
12991
|
const oldChain = follow(fat, target.start);
|
|
@@ -12092,12 +13159,12 @@ function follow2(table, start) {
|
|
|
12092
13159
|
}
|
|
12093
13160
|
return ids;
|
|
12094
13161
|
}
|
|
12095
|
-
function findSlot2(slots,
|
|
13162
|
+
function findSlot2(slots, path2) {
|
|
12096
13163
|
let parent = slots.get(0);
|
|
12097
13164
|
if (!parent || parent.type !== 5)
|
|
12098
13165
|
throw new Error("Invalid root");
|
|
12099
13166
|
const parents = /* @__PURE__ */ new Set();
|
|
12100
|
-
for (let part = 0; part <
|
|
13167
|
+
for (let part = 0; part < path2.length; part++) {
|
|
12101
13168
|
if (parents.has(parent.id))
|
|
12102
13169
|
throw new Error("Cyclic storage hierarchy");
|
|
12103
13170
|
parents.add(parent.id);
|
|
@@ -12112,14 +13179,14 @@ function findSlot2(slots, path) {
|
|
|
12112
13179
|
const slot2 = slots.get(id);
|
|
12113
13180
|
if (!slot2)
|
|
12114
13181
|
throw new Error("Missing directory slot");
|
|
12115
|
-
if (slot2.name.toLocaleLowerCase() ===
|
|
13182
|
+
if (slot2.name.toLocaleLowerCase() === path2[part].toLocaleLowerCase())
|
|
12116
13183
|
matches.push(slot2);
|
|
12117
13184
|
stack.push(slot2.left, slot2.right);
|
|
12118
13185
|
}
|
|
12119
13186
|
if (matches.length !== 1)
|
|
12120
13187
|
throw new Error("Missing or ambiguous stream");
|
|
12121
13188
|
parent = matches[0];
|
|
12122
|
-
if (parent.type !== (part ===
|
|
13189
|
+
if (parent.type !== (part === path2.length - 1 ? 2 : 1))
|
|
12123
13190
|
throw new Error("Invalid storage path");
|
|
12124
13191
|
}
|
|
12125
13192
|
return parent;
|
|
@@ -12149,12 +13216,12 @@ function validateHierarchy2(slots) {
|
|
|
12149
13216
|
if (owners.size !== slots.size - 1)
|
|
12150
13217
|
throw new Error("Unreachable directory entries");
|
|
12151
13218
|
}
|
|
12152
|
-
function resizeCompoundFileStream(input,
|
|
13219
|
+
function resizeCompoundFileStream(input, path2, replacement) {
|
|
12153
13220
|
if (input.length >= 512 && new DataView(input.buffer, input.byteOffset, input.byteLength).getUint16(26, true) === 4)
|
|
12154
|
-
return resizeCompoundFileStreamV4(input,
|
|
13221
|
+
return resizeCompoundFileStreamV4(input, path2, replacement);
|
|
12155
13222
|
const fail = (reason) => ({ ok: false, bytes: input, reason });
|
|
12156
13223
|
try {
|
|
12157
|
-
if (input.length < SECTOR2 || !
|
|
13224
|
+
if (input.length < SECTOR2 || !path2.length || path2.some((part) => !part))
|
|
12158
13225
|
return fail("invalid-or-missing-stream");
|
|
12159
13226
|
const view = new DataView(input.buffer, input.byteOffset, input.byteLength);
|
|
12160
13227
|
const read = (offset) => view.getUint32(offset, true);
|
|
@@ -12165,10 +13232,10 @@ function resizeCompoundFileStream(input, path, replacement) {
|
|
|
12165
13232
|
const cutoff = read(56);
|
|
12166
13233
|
if (cutoff !== 0 && cutoff !== 4096)
|
|
12167
13234
|
return fail("unsupported-layout");
|
|
12168
|
-
const original = readCompoundFileStream(input,
|
|
13235
|
+
const original = readCompoundFileStream(input, path2);
|
|
12169
13236
|
if (!original)
|
|
12170
13237
|
return fail("invalid-or-missing-stream");
|
|
12171
|
-
const name =
|
|
13238
|
+
const name = path2[path2.length - 1].toLocaleLowerCase();
|
|
12172
13239
|
if (name === "worddocument" && original.length >= 12 && (original[10] | original[11] << 8) & 33024)
|
|
12173
13240
|
return fail("unsafe-edit");
|
|
12174
13241
|
if (name === "book" || name === "workbook") {
|
|
@@ -12182,7 +13249,7 @@ function resizeCompoundFileStream(input, path, replacement) {
|
|
|
12182
13249
|
offset += 4 + length;
|
|
12183
13250
|
}
|
|
12184
13251
|
}
|
|
12185
|
-
const validated = replaceCompoundFileStream(input,
|
|
13252
|
+
const validated = replaceCompoundFileStream(input, path2, original);
|
|
12186
13253
|
if (validated === input)
|
|
12187
13254
|
return fail("unsafe-edit");
|
|
12188
13255
|
const sameLength = replacement.length === original.length;
|
|
@@ -12199,8 +13266,8 @@ function resizeCompoundFileStream(input, path, replacement) {
|
|
|
12199
13266
|
return fail("unsafe-edit");
|
|
12200
13267
|
const slots = /* @__PURE__ */ new Map();
|
|
12201
13268
|
for (const [block, sector] of follow2(fat, read(48)).entries()) {
|
|
12202
|
-
for (let
|
|
12203
|
-
const offset = (sector + 1) * SECTOR2 +
|
|
13269
|
+
for (let entry2 = 0; entry2 < 4; entry2++) {
|
|
13270
|
+
const offset = (sector + 1) * SECTOR2 + entry2 * 128, type = view.getUint8(offset + 66);
|
|
12204
13271
|
if (!type)
|
|
12205
13272
|
continue;
|
|
12206
13273
|
const nameLength = view.getUint16(offset + 64, true);
|
|
@@ -12209,16 +13276,16 @@ function resizeCompoundFileStream(input, path, replacement) {
|
|
|
12209
13276
|
let name2 = "";
|
|
12210
13277
|
for (let i2 = 0; i2 < nameLength - 2; i2 += 2)
|
|
12211
13278
|
name2 += String.fromCharCode(view.getUint16(offset + i2, true));
|
|
12212
|
-
const id = block * 4 +
|
|
13279
|
+
const id = block * 4 + entry2;
|
|
12213
13280
|
slots.set(id, { id, name: name2, type, left: read(offset + 68), right: read(offset + 72), child: read(offset + 76), start: read(offset + 116), size: read(offset + 120), offset });
|
|
12214
13281
|
}
|
|
12215
13282
|
}
|
|
12216
13283
|
if ([...slots.values()].filter((slot2) => slot2.type === 5).length !== 1)
|
|
12217
13284
|
return fail("unsafe-edit");
|
|
12218
|
-
const target = findSlot2(slots,
|
|
13285
|
+
const target = findSlot2(slots, path2);
|
|
12219
13286
|
validateHierarchy2(slots);
|
|
12220
13287
|
if (sameLength) {
|
|
12221
|
-
const bytes = replaceCompoundFileStream(input,
|
|
13288
|
+
const bytes = replaceCompoundFileStream(input, path2, replacement);
|
|
12222
13289
|
return bytes === input ? fail("unsafe-edit") : { ok: true, bytes };
|
|
12223
13290
|
}
|
|
12224
13291
|
if (original.length < cutoff || replacement.length < cutoff) {
|
|
@@ -13134,7 +14201,7 @@ async function loadLegacyDoc(input) {
|
|
|
13134
14201
|
original.byteOffset + original.byteLength
|
|
13135
14202
|
)
|
|
13136
14203
|
);
|
|
13137
|
-
streams2 = parsed.entries.map((
|
|
14204
|
+
streams2 = parsed.entries.map((entry2) => entry2.name);
|
|
13138
14205
|
wordDocument = readCompoundFileStream(original, ["WordDocument"]) ?? null;
|
|
13139
14206
|
} catch (error) {
|
|
13140
14207
|
throw new LegacyDocError(
|