ooxml-core 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -18
- package/dist/{PptxHandler-75LOVF7I.mjs → PptxHandler-SJTINPU4.mjs} +3 -3
- package/dist/automation/index.cjs +6550 -4115
- package/dist/automation/index.mjs +6550 -4115
- package/dist/chart/color-palettes.d.ts +2 -2
- package/dist/chart/color-palettes.d.ts.map +1 -1
- package/dist/chart/data-cache.d.ts +6 -0
- package/dist/chart/data-cache.d.ts.map +1 -0
- package/dist/chart/gradient-coincident-stops.d.ts +17 -0
- package/dist/chart/gradient-coincident-stops.d.ts.map +1 -0
- package/dist/chart/gradient-definition.d.ts +3 -3
- package/dist/chart/gradient-definition.d.ts.map +1 -1
- package/dist/chart/index.cjs +3065 -139
- package/dist/chart/index.d.ts +7 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +3045 -140
- package/dist/chart/model-chrome.d.ts +39 -0
- package/dist/chart/model-chrome.d.ts.map +1 -0
- package/dist/chart/model-series.d.ts +189 -0
- package/dist/chart/model-series.d.ts.map +1 -0
- package/dist/chart/model.d.ts +202 -0
- package/dist/chart/model.d.ts.map +1 -0
- package/dist/chart/parse-chrome.d.ts +16 -0
- package/dist/chart/parse-chrome.d.ts.map +1 -0
- package/dist/chart/parse-plot.d.ts +11 -0
- package/dist/chart/parse-plot.d.ts.map +1 -0
- package/dist/chart/parse-series.d.ts +8 -0
- package/dist/chart/parse-series.d.ts.map +1 -0
- package/dist/chart/parse-space.d.ts +8 -0
- package/dist/chart/parse-space.d.ts.map +1 -0
- package/dist/chart/parse-text.d.ts +12 -0
- package/dist/chart/parse-text.d.ts.map +1 -0
- package/dist/chart/parse-util.d.ts +42 -0
- package/dist/chart/parse-util.d.ts.map +1 -0
- package/dist/{xlsx/layout → chart/render}/chart-appearance.d.ts +4 -4
- package/dist/chart/render/chart-appearance.d.ts.map +1 -0
- package/dist/chart/render/chart-colors.d.ts +9 -0
- package/dist/chart/render/chart-colors.d.ts.map +1 -0
- package/dist/chart/render/chart-scale.d.ts.map +1 -0
- package/dist/chart/render/chart-spacing.d.ts +6 -0
- package/dist/chart/render/chart-spacing.d.ts.map +1 -0
- package/dist/{xlsx/layout → chart/render}/chart-svg-appearance.d.ts +1 -1
- package/dist/chart/render/chart-svg-appearance.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-legend.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-radial.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-text-metrics.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-title-text.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-util.d.ts.map +1 -0
- package/dist/chart/render/chart-svg.d.ts.map +1 -0
- package/dist/chart/render/chart-title-text.d.ts +14 -0
- package/dist/chart/render/chart-title-text.d.ts.map +1 -0
- package/dist/chart/render/chart-value-axis.d.ts +6 -0
- package/dist/chart/render/chart-value-axis.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +71 -0
- package/dist/chart/render/chart-view.d.ts.map +1 -0
- package/dist/chart/render/index.d.ts +9 -0
- package/dist/chart/render/index.d.ts.map +1 -0
- package/dist/chart/render/render-space.d.ts +34 -0
- package/dist/chart/render/render-space.d.ts.map +1 -0
- package/dist/chart/render/summary-from-space.d.ts +15 -0
- package/dist/chart/render/summary-from-space.d.ts.map +1 -0
- package/dist/chart/render/summary.d.ts +51 -0
- package/dist/chart/render/summary.d.ts.map +1 -0
- package/dist/chart/render/theme-palette.d.ts +8 -0
- package/dist/chart/render/theme-palette.d.ts.map +1 -0
- package/dist/chart/style-definition.d.ts +7 -7
- package/dist/chart/style-definition.d.ts.map +1 -1
- package/dist/chart/write-axes.d.ts +5 -0
- package/dist/chart/write-axes.d.ts.map +1 -0
- package/dist/chart/write-chrome.d.ts +9 -0
- package/dist/chart/write-chrome.d.ts.map +1 -0
- package/dist/chart/write-plot.d.ts +7 -0
- package/dist/chart/write-plot.d.ts.map +1 -0
- package/dist/chart/write-series.d.ts +7 -0
- package/dist/chart/write-series.d.ts.map +1 -0
- package/dist/chart/write-shape.d.ts +21 -0
- package/dist/chart/write-shape.d.ts.map +1 -0
- package/dist/chart/write-space.d.ts +15 -0
- package/dist/chart/write-space.d.ts.map +1 -0
- package/dist/chart/write-text-body.d.ts +6 -0
- package/dist/chart/write-text-body.d.ts.map +1 -0
- package/dist/chart/write-text.d.ts +15 -0
- package/dist/chart/write-text.d.ts.map +1 -0
- package/dist/chart/write-util.d.ts +24 -0
- package/dist/chart/write-util.d.ts.map +1 -0
- package/dist/chart/xml-fragment.d.ts +13 -0
- package/dist/chart/xml-fragment.d.ts.map +1 -0
- package/dist/{chunk-HUBK4EOT.mjs → chunk-3IT6ZD7K.mjs} +2 -0
- package/dist/{chunk-TS3E27NK.mjs → chunk-3UMDVJRN.mjs} +12 -1
- package/dist/{chunk-P22OKTRK.mjs → chunk-54S5A5PZ.mjs} +208 -159
- package/dist/{chunk-75LA7H3F.mjs → chunk-CQQAPUAG.mjs} +27440 -27402
- package/dist/{chunk-Q27H4HFS.mjs → chunk-FI4RSJ24.mjs} +1 -1
- package/dist/{chunk-OJI3N5AY.cjs → chunk-FRUB573B.cjs} +2 -0
- package/dist/{chunk-OMGH6IKY.mjs → chunk-TEOAOAIF.mjs} +42 -5
- package/dist/{chunk-RFX7AJDZ.mjs → chunk-VYTA2OUN.mjs} +2 -2
- package/dist/{chunk-LA7D6ZYQ.mjs → chunk-XCZ7U3GZ.mjs} +3569 -2075
- package/dist/{chunk-2C72N64G.cjs → chunk-XROY25LN.cjs} +12 -0
- package/dist/collab/index.cjs +1 -0
- package/dist/collab/index.mjs +1 -0
- package/dist/collab/transport-provider.d.ts.map +1 -1
- package/dist/color/hex-rgb.d.ts +5 -0
- package/dist/color/hex-rgb.d.ts.map +1 -0
- package/dist/color/index.cjs +12 -0
- package/dist/color/index.d.ts +1 -0
- package/dist/color/index.d.ts.map +1 -1
- package/dist/color/index.mjs +11 -1
- package/dist/diagram/engine/alg-composite.d.ts +18 -0
- package/dist/diagram/engine/alg-composite.d.ts.map +1 -0
- package/dist/diagram/engine/alg-connector.d.ts +17 -0
- package/dist/diagram/engine/alg-connector.d.ts.map +1 -0
- package/dist/diagram/engine/alg-cycle.d.ts +28 -0
- package/dist/diagram/engine/alg-cycle.d.ts.map +1 -0
- package/dist/diagram/engine/alg-hier.d.ts +33 -0
- package/dist/diagram/engine/alg-hier.d.ts.map +1 -0
- package/dist/diagram/engine/alg-linear.d.ts +24 -0
- package/dist/diagram/engine/alg-linear.d.ts.map +1 -0
- package/dist/diagram/engine/alg-pyra.d.ts +117 -0
- package/dist/diagram/engine/alg-pyra.d.ts.map +1 -0
- package/dist/diagram/engine/alg-snake.d.ts +21 -0
- package/dist/diagram/engine/alg-snake.d.ts.map +1 -0
- package/dist/diagram/engine/axis.d.ts +24 -0
- package/dist/diagram/engine/axis.d.ts.map +1 -0
- package/dist/diagram/engine/conditions.d.ts +12 -0
- package/dist/diagram/engine/conditions.d.ts.map +1 -0
- package/dist/diagram/engine/connector-shape.d.ts +25 -0
- package/dist/diagram/engine/connector-shape.d.ts.map +1 -0
- package/dist/diagram/engine/connector-size.d.ts +30 -0
- package/dist/diagram/engine/connector-size.d.ts.map +1 -0
- package/dist/diagram/engine/constraint-eval.d.ts +37 -0
- package/dist/diagram/engine/constraint-eval.d.ts.map +1 -0
- package/dist/diagram/engine/constraint-fill-idiom.d.ts +61 -0
- package/dist/diagram/engine/constraint-fill-idiom.d.ts.map +1 -0
- package/dist/diagram/engine/constraint-units.d.ts +35 -0
- package/dist/diagram/engine/constraint-units.d.ts.map +1 -0
- package/dist/diagram/engine/data-points.d.ts +48 -0
- package/dist/diagram/engine/data-points.d.ts.map +1 -0
- package/dist/diagram/engine/engine-context.d.ts +21 -0
- package/dist/diagram/engine/engine-context.d.ts.map +1 -0
- package/dist/diagram/engine/engine-first-allowlist.d.ts +31 -0
- package/dist/diagram/engine/engine-first-allowlist.d.ts.map +1 -0
- package/dist/diagram/engine/engine-fonts.d.ts +26 -0
- package/dist/diagram/engine/engine-fonts.d.ts.map +1 -0
- package/dist/diagram/engine/engine-node.d.ts +72 -0
- package/dist/diagram/engine/engine-node.d.ts.map +1 -0
- package/dist/diagram/engine/engine-to-result.d.ts +43 -0
- package/dist/diagram/engine/engine-to-result.d.ts.map +1 -0
- package/dist/diagram/engine/engine.d.ts +18 -0
- package/dist/diagram/engine/engine.d.ts.map +1 -0
- package/dist/diagram/engine/font-groups.d.ts +33 -0
- package/dist/diagram/engine/font-groups.d.ts.map +1 -0
- package/dist/diagram/engine/font-length.d.ts +26 -0
- package/dist/diagram/engine/font-length.d.ts.map +1 -0
- package/dist/diagram/engine/font-search.d.ts +38 -0
- package/dist/diagram/engine/font-search.d.ts.map +1 -0
- package/dist/diagram/engine/hier-assistants.d.ts +47 -0
- package/dist/diagram/engine/hier-assistants.d.ts.map +1 -0
- package/dist/diagram/engine/hier-hang.d.ts +28 -0
- package/dist/diagram/engine/hier-hang.d.ts.map +1 -0
- package/dist/diagram/engine/hier-measure.d.ts +33 -0
- package/dist/diagram/engine/hier-measure.d.ts.map +1 -0
- package/dist/diagram/engine/hier-node-size.d.ts +23 -0
- package/dist/diagram/engine/hier-node-size.d.ts.map +1 -0
- package/dist/diagram/engine/hier-shape.d.ts +31 -0
- package/dist/diagram/engine/hier-shape.d.ts.map +1 -0
- package/dist/diagram/engine/index.d.ts +6 -0
- package/dist/diagram/engine/index.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-parse.d.ts +13 -0
- package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-types.d.ts +118 -0
- package/dist/diagram/engine/layout-def-types.d.ts.map +1 -0
- package/dist/diagram/engine/layout-driver.d.ts +41 -0
- package/dist/diagram/engine/layout-driver.d.ts.map +1 -0
- package/dist/diagram/engine/layout-font.d.ts +27 -0
- package/dist/diagram/engine/layout-font.d.ts.map +1 -0
- package/dist/diagram/engine/move-with-merge.d.ts +49 -0
- package/dist/diagram/engine/move-with-merge.d.ts.map +1 -0
- package/dist/diagram/engine/node-text.d.ts +20 -0
- package/dist/diagram/engine/node-text.d.ts.map +1 -0
- package/dist/diagram/engine/ordered-xml.d.ts +30 -0
- package/dist/diagram/engine/ordered-xml.d.ts.map +1 -0
- package/dist/diagram/engine/preferred-size.d.ts +28 -0
- package/dist/diagram/engine/preferred-size.d.ts.map +1 -0
- package/dist/diagram/engine/pres-tree.d.ts +58 -0
- package/dist/diagram/engine/pres-tree.d.ts.map +1 -0
- package/dist/diagram/engine/registry.d.ts +7 -0
- package/dist/diagram/engine/registry.d.ts.map +1 -0
- package/dist/diagram/engine/render-filter.d.ts +43 -0
- package/dist/diagram/engine/render-filter.d.ts.map +1 -0
- package/dist/diagram/engine/shape-adjust.d.ts +16 -0
- package/dist/diagram/engine/shape-adjust.d.ts.map +1 -0
- package/dist/diagram/engine/shape-transform.d.ts +14 -0
- package/dist/diagram/engine/shape-transform.d.ts.map +1 -0
- package/dist/diagram/engine/snake-rule-fit.d.ts +34 -0
- package/dist/diagram/engine/snake-rule-fit.d.ts.map +1 -0
- package/dist/diagram/engine/style-label.d.ts +24 -0
- package/dist/diagram/engine/style-label.d.ts.map +1 -0
- package/dist/diagram/engine/text-fit.d.ts +61 -0
- package/dist/diagram/engine/text-fit.d.ts.map +1 -0
- package/dist/diagram/engine/text-grow.d.ts +33 -0
- package/dist/diagram/engine/text-grow.d.ts.map +1 -0
- package/dist/diagram/engine/text-measure.d.ts +77 -0
- package/dist/diagram/engine/text-measure.d.ts.map +1 -0
- package/dist/diagram/hierarchy/index.d.ts +5 -0
- package/dist/diagram/hierarchy/index.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-pitch.d.ts +65 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-pitch.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-swap-orientation.d.ts +68 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-axis-swap-orientation.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-branch-mode.d.ts +54 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-branch-mode.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-cascade.d.ts +58 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-cascade.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-centered-fan-axis.d.ts +63 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-centered-fan-axis.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-child-order.d.ts +41 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-child-order.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-composite-child.d.ts +129 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-composite-child.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-constraint-lookup.d.ts +76 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-constraint-lookup.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-corner-plan.d.ts +49 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-corner-plan.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-dispatch-lindir.d.ts +58 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-dispatch-lindir.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan-aware-width.d.ts +48 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan-aware-width.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan.d.ts +97 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fan.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang-geometry.d.ts +42 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang-geometry.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang.d.ts +74 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fit-item-box.d.ts +111 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fit-item-box.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fold-depth.d.ts +44 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-fold-depth.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-gap.d.ts +60 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-gap.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-templates.d.ts +106 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-generation-templates.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-depth.d.ts +133 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-depth.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-dispatch.d.ts +28 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hang-dispatch.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-arrange.d.ts +28 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-arrange.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-box.d.ts +86 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-box.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-fold.d.ts +36 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging-fold.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging.d.ts +118 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-hanging.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-item-template.d.ts +64 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-item-template.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orgchart-tree.d.ts +53 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orgchart-tree.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-resolve.d.ts +36 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-resolve.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-types.d.ts +81 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation-types.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation.d.ts +78 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-orientation.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-pitch.d.ts +140 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-pitch.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-shared.d.ts +131 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-shared.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-options.d.ts +91 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-options.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-rows.d.ts +21 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard-rows.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard.d.ts +36 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-standard.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-placer.d.ts +20 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-placer.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-transpose.d.ts +50 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-tailed-transpose.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transpose.d.ts +23 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transpose.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transposed-orientation.d.ts +22 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-transposed-orientation.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-wrapped-groups.d.ts +93 -0
- package/dist/diagram/hierarchy/smartart-hierarchy-wrapped-groups.d.ts.map +1 -0
- package/dist/diagram/hierarchy/smartart-layout-interpreter-hierarchy.d.ts +49 -0
- package/dist/diagram/hierarchy/smartart-layout-interpreter-hierarchy.d.ts.map +1 -0
- package/dist/diagram/index.cjs +22537 -80
- package/dist/diagram/index.d.ts +4 -0
- package/dist/diagram/index.d.ts.map +1 -1
- package/dist/diagram/index.mjs +22453 -81
- package/dist/diagram/layout/index.d.ts +38 -0
- package/dist/diagram/layout/index.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-choose-xml.d.ts +32 -0
- package/dist/diagram/layout/smartart-choose-xml.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-branch-index.d.ts +49 -0
- package/dist/diagram/layout/smartart-constraint-branch-index.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-declared-by.d.ts +64 -0
- package/dist/diagram/layout/smartart-constraint-declared-by.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-ratio-fallback.d.ts +18 -0
- package/dist/diagram/layout/smartart-constraint-ratio-fallback.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-resolve.d.ts +24 -0
- package/dist/diagram/layout/smartart-constraint-resolve.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-rules.d.ts +26 -0
- package/dist/diagram/layout/smartart-constraint-rules.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-sibling-roles.d.ts +100 -0
- package/dist/diagram/layout/smartart-constraint-sibling-roles.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-solver.d.ts +133 -0
- package/dist/diagram/layout/smartart-constraint-solver.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-constraint-values.d.ts +5 -0
- package/dist/diagram/layout/smartart-constraint-values.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-font-table.d.ts +14 -0
- package/dist/diagram/layout/smartart-font-table.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-interpreter-fold-text.d.ts +75 -0
- package/dist/diagram/layout/smartart-interpreter-fold-text.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-control-flow.d.ts +25 -0
- package/dist/diagram/layout/smartart-layout-control-flow.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arranged-selection.d.ts +56 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arranged-selection.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arrangement-kind.d.ts +37 -0
- package/dist/diagram/layout/smartart-layout-interpreter-arrangement-kind.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-aux.d.ts +66 -0
- package/dist/diagram/layout/smartart-layout-interpreter-aux.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-count.d.ts +128 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-count.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-depth.d.ts +73 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-depth.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-hop.d.ts +48 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-hop.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-range.d.ts +19 -0
- package/dist/diagram/layout/smartart-layout-interpreter-axis-range.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-algorithm.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-algorithm.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-branch.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-branch.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-composite.d.ts +42 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-composite.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-depth.d.ts +102 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-depth.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-resolve.d.ts +32 -0
- package/dist/diagram/layout/smartart-layout-interpreter-choose-resolve.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-alternative.d.ts +33 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-alternative.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-anchor.d.ts +95 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-anchor.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-aspect.d.ts +84 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-aspect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-candidates.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-candidates.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-children.d.ts +86 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-children.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose-groups.d.ts +44 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose-groups.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose.d.ts +109 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-choose.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-detect.d.ts +182 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-detect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-fontfit.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-fontfit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-foreach.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-foreach.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-group-slots.d.ts +92 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-group-slots.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-iteration.d.ts +45 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-iteration.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-nested-cycle.d.ts +57 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-nested-cycle.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order-fallback.d.ts +24 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order-fallback.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order.d.ts +41 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-order.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-pairs.d.ts +34 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-pairs.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-render.d.ts +29 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-render.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-ring.d.ts +40 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-ring.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slot-dim.d.ts +22 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slot-dim.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slots.d.ts +69 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite-slots.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite.d.ts +56 -0
- package/dist/diagram/layout/smartart-layout-interpreter-composite.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-conn-path.d.ts +42 -0
- package/dist/diagram/layout/smartart-layout-interpreter-conn-path.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-connector-order.d.ts +23 -0
- package/dist/diagram/layout/smartart-layout-interpreter-connector-order.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-constraints.d.ts +28 -0
- package/dist/diagram/layout/smartart-layout-interpreter-constraints.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-custom.d.ts +31 -0
- package/dist/diagram/layout/smartart-layout-interpreter-custom.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-boxes.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-boxes.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-connectors.d.ts +21 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-connectors.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-constraints.d.ts +116 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-constraints.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-extension.d.ts +110 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-extension.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-fontfit.d.ts +50 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-fontfit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-detect.d.ts +66 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-detect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio-usersize.d.ts +81 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio-usersize.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio.d.ts +109 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-aspect.d.ts +121 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-aspect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-node.d.ts +57 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-node.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-bulge.d.ts +34 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-bulge.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-item.d.ts +39 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-item.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-nested-hub.d.ts +22 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-nested-hub.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-offset.d.ts +43 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-offset.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring.d.ts +76 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-sibtrans.d.ts +40 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle-sibtrans.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle.d.ts +69 -0
- package/dist/diagram/layout/smartart-layout-interpreter-cycle.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-dispatch.d.ts +18 -0
- package/dist/diagram/layout/smartart-layout-interpreter-dispatch.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow-direction.d.ts +29 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow-direction.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow.d.ts +49 -0
- package/dist/diagram/layout/smartart-layout-interpreter-flow.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-descendant.d.ts +60 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-descendant.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-fontfit.d.ts +45 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-fontfit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub-detect.d.ts +26 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub-detect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub.d.ts +62 -0
- package/dist/diagram/layout/smartart-layout-interpreter-hub.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-compound.d.ts +36 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-compound.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-orientation.d.ts +80 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-orientation.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-shared.d.ts +102 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-shared.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-columns.d.ts +23 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-columns.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-fields.d.ts +77 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-fields.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-rect.d.ts +20 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-rect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack.d.ts +53 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-transition.d.ts +50 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-role-transition.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-recursive.d.ts +87 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-recursive.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-unwrap.d.ts +57 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles-unwrap.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles.d.ts +109 -0
- package/dist/diagram/layout/smartart-layout-interpreter-item-roles.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-content-size.d.ts +42 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-content-size.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-item-aspect.d.ts +94 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-item-aspect.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-main-axis.d.ts +17 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-main-axis.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-shared.d.ts +21 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-shared.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-table.d.ts +76 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear-table.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear.d.ts +20 -0
- package/dist/diagram/layout/smartart-layout-interpreter-linear.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-model.d.ts +77 -0
- package/dist/diagram/layout/smartart-layout-interpreter-model.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-named-rules.d.ts +93 -0
- package/dist/diagram/layout/smartart-layout-interpreter-named-rules.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-position-family.d.ts +58 -0
- package/dist/diagram/layout/smartart-layout-interpreter-position-family.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-preset-node.d.ts +61 -0
- package/dist/diagram/layout/smartart-layout-interpreter-preset-node.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-presof-choose.d.ts +29 -0
- package/dist/diagram/layout/smartart-layout-interpreter-presof-choose.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid-bands.d.ts +41 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid-bands.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid.d.ts +100 -0
- package/dist/diagram/layout/smartart-layout-interpreter-pyramid.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-render.d.ts +86 -0
- package/dist/diagram/layout/smartart-layout-interpreter-render.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-snake.d.ts +18 -0
- package/dist/diagram/layout/smartart-layout-interpreter-snake.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-tree-location.d.ts +28 -0
- package/dist/diagram/layout/smartart-layout-interpreter-tree-location.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-numeric.d.ts +15 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-numeric.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-var.d.ts +12 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when-var.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when.d.ts +69 -0
- package/dist/diagram/layout/smartart-layout-interpreter-when.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-interpreter.d.ts +80 -0
- package/dist/diagram/layout/smartart-layout-interpreter.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-role.d.ts +80 -0
- package/dist/diagram/layout/smartart-layout-item-font-role.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-size.d.ts +129 -0
- package/dist/diagram/layout/smartart-layout-item-font-size.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier-fit.d.ts +70 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier-fit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier.d.ts +139 -0
- package/dist/diagram/layout/smartart-layout-item-font-tier.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-item-tx-anchor.d.ts +105 -0
- package/dist/diagram/layout/smartart-layout-item-tx-anchor.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-shape-polygon.d.ts +17 -0
- package/dist/diagram/layout/smartart-layout-shape-polygon.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-shape-preset.d.ts +127 -0
- package/dist/diagram/layout/smartart-layout-shape-preset.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-snake-grid.d.ts +43 -0
- package/dist/diagram/layout/smartart-layout-snake-grid.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-style-helpers.d.ts +84 -0
- package/dist/diagram/layout/smartart-layout-style-helpers.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-layout-types.d.ts +253 -0
- package/dist/diagram/layout/smartart-layout-types.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-line-pitch.d.ts +29 -0
- package/dist/diagram/layout/smartart-line-pitch.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-node-role-colors.d.ts +30 -0
- package/dist/diagram/layout/smartart-node-role-colors.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-node-tree-axis.d.ts +91 -0
- package/dist/diagram/layout/smartart-node-tree-axis.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-text-wrap-fit.d.ts +84 -0
- package/dist/diagram/layout/smartart-text-wrap-fit.d.ts.map +1 -0
- package/dist/diagram/layout/smartart-tree.d.ts +33 -0
- package/dist/diagram/layout/smartart-tree.d.ts.map +1 -0
- package/dist/diagram/model/constraint-rules.d.ts +31 -0
- package/dist/diagram/model/constraint-rules.d.ts.map +1 -0
- package/dist/diagram/model/data.d.ts +109 -0
- package/dist/diagram/model/data.d.ts.map +1 -0
- package/dist/diagram/model/index.d.ts +7 -0
- package/dist/diagram/model/index.d.ts.map +1 -0
- package/dist/diagram/model/layout-definition.d.ts +276 -0
- package/dist/diagram/model/layout-definition.d.ts.map +1 -0
- package/dist/diagram/model/layout-primitives.d.ts +82 -0
- package/dist/diagram/model/layout-primitives.d.ts.map +1 -0
- package/dist/diagram/model/node.d.ts +194 -0
- package/dist/diagram/model/node.d.ts.map +1 -0
- package/dist/diagram/model/style-definition.d.ts +131 -0
- package/dist/diagram/model/style-definition.d.ts.map +1 -0
- package/dist/docx/chart-paint.d.ts +14 -0
- package/dist/docx/chart-paint.d.ts.map +1 -0
- package/dist/docx/chart.d.ts +43 -0
- package/dist/docx/chart.d.ts.map +1 -0
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +1393 -326
- package/dist/docx/embedded.mjs +1393 -326
- package/dist/docx/index.cjs +4042 -683
- package/dist/docx/index.d.ts +2 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +4038 -684
- package/dist/docx/inline-model.d.ts +3 -0
- package/dist/docx/inline-model.d.ts.map +1 -1
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/index.cjs +2672 -88
- package/dist/docx/layout/index.mjs +2673 -89
- package/dist/docx/layout/input.d.ts +5 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +1616 -549
- package/dist/docx/load/index.mjs +1616 -549
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/ui/chart-spec.d.ts +10 -0
- package/dist/docx/ui/chart-spec.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +2600 -186
- package/dist/docx/ui/index.d.ts +1 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +2599 -188
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/drawingml/write-line.d.ts +7 -0
- package/dist/drawingml/write-line.d.ts.map +1 -0
- package/dist/geometry/ooxml-arc.d.ts +31 -0
- package/dist/geometry/ooxml-arc.d.ts.map +1 -0
- package/dist/geometry/preset-shape-evaluator.d.ts +73 -0
- package/dist/geometry/preset-shape-evaluator.d.ts.map +1 -0
- package/dist/index.cjs +34835 -18367
- package/dist/index.mjs +34831 -18367
- package/dist/opc/embedded-packages.d.ts +11 -0
- package/dist/opc/embedded-packages.d.ts.map +1 -0
- package/dist/opc/index.cjs +365 -70
- package/dist/opc/index.d.ts +1 -0
- package/dist/opc/index.d.ts.map +1 -1
- package/dist/opc/index.mjs +353 -71
- package/dist/opc/properties/app.d.ts +9 -3
- package/dist/opc/properties/app.d.ts.map +1 -1
- package/dist/opc/properties/core.d.ts +5 -1
- package/dist/opc/properties/core.d.ts.map +1 -1
- package/dist/opc/properties/custom.d.ts +19 -0
- package/dist/opc/properties/custom.d.ts.map +1 -1
- package/dist/opc/properties/index.d.ts +6 -3
- package/dist/opc/properties/index.d.ts.map +1 -1
- package/dist/opc/properties/patch.d.ts +38 -0
- package/dist/opc/properties/patch.d.ts.map +1 -0
- package/dist/opc/properties/title-groups.d.ts +30 -0
- package/dist/opc/properties/title-groups.d.ts.map +1 -0
- package/dist/opc/properties/types.d.ts +15 -0
- package/dist/opc/properties/types.d.ts.map +1 -1
- package/dist/pptx/automation/index.cjs +9023 -7151
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{index-BYkdcS8J.d.ts → index-EZJZ7USt.d.ts} +907 -962
- package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-BHqL5KXH.d.ts → index-JNv7AJx5.d.ts} +163 -210
- package/dist/pptx/chunks/index-JNv7AJx5.d.ts.map +1 -0
- package/dist/pptx/chunks/{smart-art-CO2jmJFf.d.ts → smart-art-Q2kZQtHh.d.ts} +436 -374
- package/dist/pptx/chunks/smart-art-Q2kZQtHh.d.ts.map +1 -0
- package/dist/pptx/chunks/{text-operations-DEJ7alZR.d.ts → text-operations-DtCxXrMh.d.ts} +55 -4
- package/dist/pptx/chunks/text-operations-DtCxXrMh.d.ts.map +1 -0
- package/dist/pptx/cli/index.cjs +8702 -6830
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +7124 -7136
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/table-cell-edit.cjs +7 -3
- package/dist/pptx/editor/render/table-cell-edit.d.ts +16 -1
- package/dist/pptx/editor/render/table-cell-edit.d.ts.map +1 -1
- package/dist/pptx/editor/render/table-cell-edit.mjs +1 -1
- package/dist/pptx/editor/render/table-cell-merge.cjs +3 -3
- package/dist/pptx/editor/render/table-cell-merge.mjs +1 -1
- package/dist/pptx/editor/render/table-data-grid-ops.cjs +7 -7
- package/dist/pptx/editor/render/table-data-grid-ops.mjs +2 -2
- package/dist/pptx/editor/render/table-layout.cjs +6 -6
- package/dist/pptx/editor/render/table-layout.d.ts.map +1 -1
- package/dist/pptx/editor/render/table-layout.mjs +1 -1
- package/dist/pptx/editor/render/table-merge.cjs +5 -5
- package/dist/pptx/editor/render/table-merge.mjs +1 -1
- package/dist/pptx/index.cjs +9345 -7304
- package/dist/pptx/index.d.ts +5 -5
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/smartart-layouts/index.cjs +135 -106
- package/dist/pptx/smartart-layouts/index.d.ts +1 -1
- package/dist/pptx/smartart-layouts/index.mjs +1 -1
- package/dist/teams/content.d.ts.map +1 -1
- package/dist/teams/index.cjs +3778 -1999
- package/dist/teams/index.d.ts +1 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +3777 -1999
- package/dist/teams/server-file-storage.d.ts +11 -0
- package/dist/teams/server-file-storage.d.ts.map +1 -0
- package/dist/teams/store.d.ts +2 -0
- package/dist/teams/store.d.ts.map +1 -1
- package/dist/teams/stored-file.d.ts.map +1 -1
- package/dist/{xlsx/layout/font-family.d.ts → text/css-font-family.d.ts} +1 -1
- package/dist/text/css-font-family.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-aptos-display.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-aptos-display.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-aptos.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-aptos.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-arial.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-arial.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-calibri-light.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-calibri-light.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-calibri.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-calibri.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-segoe-ui.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-segoe-ui.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths-times-new-roman.generated.d.ts +10 -0
- package/dist/text/font-metrics/font-advance-widths-times-new-roman.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-advance-widths.generated.d.ts +48 -0
- package/dist/text/font-metrics/font-advance-widths.generated.d.ts.map +1 -0
- package/dist/text/font-metrics/font-kerning.d.ts +19 -0
- package/dist/text/font-metrics/font-kerning.d.ts.map +1 -0
- package/dist/visio/index.cjs +645 -119
- package/dist/visio/index.mjs +645 -119
- package/dist/visio/theme-color.d.ts +13 -3
- package/dist/visio/theme-color.d.ts.map +1 -1
- package/dist/visio/theme-resolve.d.ts +2 -1
- package/dist/visio/theme-resolve.d.ts.map +1 -1
- package/dist/visio/theme.d.ts +5 -2
- package/dist/visio/theme.d.ts.map +1 -1
- package/dist/xlsx/collab/adapter.d.ts +18 -0
- package/dist/xlsx/collab/adapter.d.ts.map +1 -0
- package/dist/xlsx/collab/apply.d.ts +8 -0
- package/dist/xlsx/collab/apply.d.ts.map +1 -0
- package/dist/xlsx/collab/bind.d.ts +34 -0
- package/dist/xlsx/collab/bind.d.ts.map +1 -0
- package/dist/xlsx/collab/codec.d.ts +35 -0
- package/dist/xlsx/collab/codec.d.ts.map +1 -0
- package/dist/xlsx/collab/dirty.d.ts +23 -0
- package/dist/xlsx/collab/dirty.d.ts.map +1 -0
- package/dist/xlsx/collab/index.cjs +1245 -0
- package/dist/xlsx/collab/index.d.ts +10 -0
- package/dist/xlsx/collab/index.d.ts.map +1 -0
- package/dist/xlsx/collab/index.mjs +1207 -0
- package/dist/xlsx/collab/lines.d.ts +22 -0
- package/dist/xlsx/collab/lines.d.ts.map +1 -0
- package/dist/xlsx/collab/names.d.ts +16 -0
- package/dist/xlsx/collab/names.d.ts.map +1 -0
- package/dist/xlsx/collab/presence.d.ts +31 -0
- package/dist/xlsx/collab/presence.d.ts.map +1 -0
- package/dist/xlsx/collab/schema.d.ts +30 -0
- package/dist/xlsx/collab/schema.d.ts.map +1 -0
- package/dist/xlsx/collab/sheets.d.ts +34 -0
- package/dist/xlsx/collab/sheets.d.ts.map +1 -0
- package/dist/xlsx/collab/styles.d.ts +26 -0
- package/dist/xlsx/collab/styles.d.ts.map +1 -0
- package/dist/xlsx/collab/write.d.ts +14 -0
- package/dist/xlsx/collab/write.d.ts.map +1 -0
- package/dist/xlsx/edit/chart-colors.d.ts +2 -2
- package/dist/xlsx/edit/chart-colors.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-element-fill.d.ts +3 -3
- package/dist/xlsx/edit/chart-element-fill.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-series-fill.d.ts +2 -2
- package/dist/xlsx/edit/chart-series-fill.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-series-gradient.d.ts +3 -3
- package/dist/xlsx/edit/chart-series-gradient.d.ts.map +1 -1
- package/dist/xlsx/edit/chart-series-target.d.ts +15 -0
- package/dist/xlsx/edit/chart-series-target.d.ts.map +1 -0
- package/dist/xlsx/edit/chart-series-transparency.d.ts +2 -2
- package/dist/xlsx/edit/chart-series-transparency.d.ts.map +1 -1
- package/dist/xlsx/edit/external.d.ts +28 -0
- package/dist/xlsx/edit/external.d.ts.map +1 -0
- package/dist/xlsx/edit/index.d.ts +1 -0
- package/dist/xlsx/edit/index.d.ts.map +1 -1
- package/dist/xlsx/edit/session-calc.d.ts +7 -0
- package/dist/xlsx/edit/session-calc.d.ts.map +1 -1
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/types.d.ts +14 -1
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/lexemes.d.ts +6 -0
- package/dist/xlsx/formula/lexemes.d.ts.map +1 -1
- package/dist/xlsx/formula/tokenizer.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +4599 -2399
- package/dist/xlsx/index.mjs +4589 -2400
- package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
- package/dist/xlsx/layout/chart-view.d.ts +3 -54
- package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
- package/dist/xlsx/layout/colors.d.ts +1 -4
- package/dist/xlsx/layout/colors.d.ts.map +1 -1
- package/dist/xlsx/layout/index.d.ts +7 -4
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/remote-selections.d.ts +40 -0
- package/dist/xlsx/layout/remote-selections.d.ts.map +1 -0
- package/dist/xlsx/layout/sparkline-data.d.ts +19 -0
- package/dist/xlsx/layout/sparkline-data.d.ts.map +1 -0
- package/dist/xlsx/layout/sparkline-view.d.ts +52 -0
- package/dist/xlsx/layout/sparkline-view.d.ts.map +1 -0
- package/dist/xlsx/layout/tint.d.ts +3 -12
- package/dist/xlsx/layout/tint.d.ts.map +1 -1
- package/dist/xlsx/layout/types.d.ts +3 -0
- package/dist/xlsx/layout/types.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +3036 -1286
- package/dist/xlsx/load/index.mjs +3036 -1286
- package/dist/xlsx/model-sparklines.d.ts +52 -0
- package/dist/xlsx/model-sparklines.d.ts.map +1 -0
- package/dist/xlsx/model.d.ts +10 -47
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/read/chart.d.ts +1 -4
- package/dist/xlsx/read/chart.d.ts.map +1 -1
- package/dist/xlsx/read/index.d.ts +1 -0
- package/dist/xlsx/read/index.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-data-source.d.ts +10 -0
- package/dist/xlsx/read/sheet-data-source.d.ts.map +1 -0
- package/dist/xlsx/read/sparklines.d.ts +12 -0
- package/dist/xlsx/read/sparklines.d.ts.map +1 -0
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -1
- package/dist/xlsx/ui/context.d.ts +15 -1
- package/dist/xlsx/ui/context.d.ts.map +1 -1
- package/dist/xlsx/ui/grid/cell-items.d.ts.map +1 -1
- package/dist/xlsx/ui/grid/cell-paint.d.ts +1 -1
- package/dist/xlsx/ui/grid/cell-paint.d.ts.map +1 -1
- package/dist/xlsx/ui/grid/view-cache.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +1127 -559
- package/dist/xlsx/ui/index.mjs +1127 -560
- package/dist/xlsx/ui/locales/de/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/de/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/en/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/es/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/fr/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/collab.d.ts +2 -0
- package/dist/xlsx/ui/locales/zh-CN/collab.d.ts.map +1 -0
- package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -1
- package/dist/xlsx/ui/ribbon/icon-paths.d.ts.map +1 -1
- package/dist/xlsx/write/chart-colors.d.ts +3 -0
- package/dist/xlsx/write/chart-colors.d.ts.map +1 -1
- package/dist/xlsx/write/chart-space.d.ts +5 -0
- package/dist/xlsx/write/chart-space.d.ts.map +1 -0
- package/dist/xlsx/write/chart-title.d.ts +4 -1
- package/dist/xlsx/write/chart-title.d.ts.map +1 -1
- package/dist/xlsx/write/chart.d.ts +4 -1
- package/dist/xlsx/write/chart.d.ts.map +1 -1
- package/dist/xml/index.cjs +162 -0
- package/dist/xml/index.d.ts +1 -0
- package/dist/xml/index.d.ts.map +1 -1
- package/dist/xml/index.mjs +161 -1
- package/dist/xml/lite.d.ts +30 -0
- package/dist/xml/lite.d.ts.map +1 -0
- package/package.json +6 -1
- package/dist/pptx/chunks/index-BHqL5KXH.d.ts.map +0 -1
- package/dist/pptx/chunks/index-BYkdcS8J.d.ts.map +0 -1
- package/dist/pptx/chunks/smart-art-CO2jmJFf.d.ts.map +0 -1
- package/dist/pptx/chunks/text-operations-DEJ7alZR.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-appearance.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-colors.d.ts +0 -9
- package/dist/xlsx/layout/chart-colors.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-scale.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-spacing.d.ts +0 -6
- package/dist/xlsx/layout/chart-spacing.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-appearance.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-bars.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-cartesian.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-legend.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-radial.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-text-metrics.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-title-text.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg-util.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-svg.d.ts.map +0 -1
- package/dist/xlsx/layout/chart-title-text.d.ts +0 -14
- package/dist/xlsx/layout/chart-title-text.d.ts.map +0 -1
- package/dist/xlsx/layout/font-family.d.ts.map +0 -1
- /package/dist/{xlsx/layout → chart/render}/chart-scale.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-bars.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-cartesian.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-legend.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-radial.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-text-metrics.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-title-text.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg-util.d.ts +0 -0
- /package/dist/{xlsx/layout → chart/render}/chart-svg.d.ts +0 -0
package/dist/docx/embedded.cjs
CHANGED
|
@@ -13,12 +13,18 @@ var NS = {
|
|
|
13
13
|
w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
|
|
14
14
|
/** DrawingML main. */
|
|
15
15
|
a: "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
16
|
+
/** DrawingML chart. */
|
|
17
|
+
c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
18
|
+
/** Office 2010 chart extensions, including built-in modern chart styles. */
|
|
19
|
+
c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
|
|
16
20
|
/** DrawingML diagram (SmartArt) main. */
|
|
17
21
|
dgm: "http://schemas.openxmlformats.org/drawingml/2006/diagram",
|
|
18
22
|
/** Office 2007+ diagram drawing (`dsp`). */
|
|
19
23
|
dsp: "http://schemas.microsoft.com/office/drawing/2008/diagram",
|
|
20
24
|
/** Relationships (`r:id`, `r:embed`). */
|
|
21
25
|
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
26
|
+
/** Markup compatibility (`mc:AlternateContent`). */
|
|
27
|
+
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
|
22
28
|
/** OPC relationships part. */
|
|
23
29
|
rels: "http://schemas.openxmlformats.org/package/2006/relationships",
|
|
24
30
|
/** OPC content types part. */
|
|
@@ -366,12 +372,12 @@ function runPropertyChanged(run, base, key) {
|
|
|
366
372
|
function parseDirectRunProperties(props) {
|
|
367
373
|
const result = parseRunProperties(props);
|
|
368
374
|
const language = first2(props, "lang");
|
|
369
|
-
for (const [
|
|
375
|
+
for (const [attribute2, key] of [
|
|
370
376
|
["val", "language"],
|
|
371
377
|
["eastAsia", "eastAsiaLanguage"],
|
|
372
378
|
["bidi", "bidiLanguage"]
|
|
373
379
|
]) {
|
|
374
|
-
const value = getW(language,
|
|
380
|
+
const value = getW(language, attribute2);
|
|
375
381
|
if (value !== void 0) result[key] = value;
|
|
376
382
|
}
|
|
377
383
|
const rtl = onOffElement(first2(props, "rtl"));
|
|
@@ -929,10 +935,10 @@ var COLOR_ELEMENTS = {
|
|
|
929
935
|
hslClr: "hsl"
|
|
930
936
|
};
|
|
931
937
|
function colorValue(kind, element) {
|
|
932
|
-
const
|
|
933
|
-
if (kind === "scrgb") return `${
|
|
934
|
-
if (kind === "hsl") return `${
|
|
935
|
-
return
|
|
938
|
+
const attribute2 = (name) => element.getAttribute(name) ?? "";
|
|
939
|
+
if (kind === "scrgb") return `${attribute2("r")},${attribute2("g")},${attribute2("b")}`;
|
|
940
|
+
if (kind === "hsl") return `${attribute2("hue")},${attribute2("sat")},${attribute2("lum")}`;
|
|
941
|
+
return attribute2("val");
|
|
936
942
|
}
|
|
937
943
|
function parseDrawingColorIn(container) {
|
|
938
944
|
if (!container) return void 0;
|
|
@@ -1154,6 +1160,10 @@ function resolvePartPath(basePart, target) {
|
|
|
1154
1160
|
}
|
|
1155
1161
|
return resolved.join("/");
|
|
1156
1162
|
}
|
|
1163
|
+
function relationshipsPartFor(partName) {
|
|
1164
|
+
const slash = partName.lastIndexOf("/");
|
|
1165
|
+
return `${partName.slice(0, slash + 1)}_rels/${partName.slice(slash + 1)}.rels`;
|
|
1166
|
+
}
|
|
1157
1167
|
function nextRelationshipId(used) {
|
|
1158
1168
|
let index = 1;
|
|
1159
1169
|
while (used.has(`rId${index}`)) index++;
|
|
@@ -1284,7 +1294,7 @@ function parseCoreProperties(xml) {
|
|
|
1284
1294
|
}
|
|
1285
1295
|
return Object.keys(result).length ? result : void 0;
|
|
1286
1296
|
}
|
|
1287
|
-
var same = (
|
|
1297
|
+
var same = (a2, b) => PROPERTY_FIELDS.every((field) => (a2?.[field] ?? "") === (b?.[field] ?? ""));
|
|
1288
1298
|
async function applyCoreProperties(zip, next, prior) {
|
|
1289
1299
|
if (same(next, prior)) return;
|
|
1290
1300
|
const existing = zip.file(CORE_PATH);
|
|
@@ -1443,13 +1453,13 @@ function buildCommentsExtendedDocument(comments) {
|
|
|
1443
1453
|
);
|
|
1444
1454
|
const root = doc.documentElement;
|
|
1445
1455
|
comments.forEach((comment, index) => {
|
|
1446
|
-
const
|
|
1447
|
-
|
|
1448
|
-
if (comment.resolved)
|
|
1449
|
-
const parentIndex = comments.findIndex((
|
|
1456
|
+
const entry2 = doc.createElementNS(W15_NS, "w15:commentEx");
|
|
1457
|
+
entry2.setAttributeNS(W15_NS, "w15:paraId", paraIdFor(comment.id, index));
|
|
1458
|
+
if (comment.resolved) entry2.setAttributeNS(W15_NS, "w15:done", "1");
|
|
1459
|
+
const parentIndex = comments.findIndex((c2) => c2.id === comment.parentId);
|
|
1450
1460
|
if (parentIndex >= 0)
|
|
1451
|
-
|
|
1452
|
-
root.appendChild(
|
|
1461
|
+
entry2.setAttributeNS(W15_NS, "w15:paraIdParent", paraIdFor(comment.parentId, parentIndex));
|
|
1462
|
+
root.appendChild(entry2);
|
|
1453
1463
|
});
|
|
1454
1464
|
return doc;
|
|
1455
1465
|
}
|
|
@@ -1579,7 +1589,7 @@ function rangeEdges(runs, ranges) {
|
|
|
1579
1589
|
const opens = /* @__PURE__ */ new Map();
|
|
1580
1590
|
const closes = /* @__PURE__ */ new Map();
|
|
1581
1591
|
const order = (key) => key.startsWith("comment:") ? 0 : 1;
|
|
1582
|
-
for (const key of [...first3.keys()].sort((
|
|
1592
|
+
for (const key of [...first3.keys()].sort((a2, b) => order(a2) - order(b))) {
|
|
1583
1593
|
if (!ranges?.before.has(key)) {
|
|
1584
1594
|
const index = first3.get(key);
|
|
1585
1595
|
(opens.get(index) ?? opens.set(index, []).get(index)).push(edgeFor(key, index));
|
|
@@ -1802,8 +1812,8 @@ function orderChildren(parent, order) {
|
|
|
1802
1812
|
if (rank >= 0) previousRank = rank;
|
|
1803
1813
|
return { element, index, rank: rank >= 0 ? rank : previousRank + 0.5 };
|
|
1804
1814
|
});
|
|
1805
|
-
const sorted = [...ranked].sort((
|
|
1806
|
-
if (sorted.every((
|
|
1815
|
+
const sorted = [...ranked].sort((a2, b) => a2.rank - b.rank || a2.index - b.index);
|
|
1816
|
+
if (sorted.every((entry2, index) => entry2.element === elements2[index])) return;
|
|
1807
1817
|
for (const { element } of sorted) parent.appendChild(element);
|
|
1808
1818
|
}
|
|
1809
1819
|
var SECTPR_ORDER = [
|
|
@@ -2590,7 +2600,7 @@ function borderElement(doc, name, side) {
|
|
|
2590
2600
|
}
|
|
2591
2601
|
return element;
|
|
2592
2602
|
}
|
|
2593
|
-
var sameJson = (
|
|
2603
|
+
var sameJson = (a2, b) => JSON.stringify(a2 ?? null) === JSON.stringify(b ?? null);
|
|
2594
2604
|
function updateShading(doc, props, paragraph, base) {
|
|
2595
2605
|
if (base && paragraph.shadingFill === base.shadingFill) return;
|
|
2596
2606
|
for (const element of children2(props, "shd")) props.removeChild(element);
|
|
@@ -2782,8 +2792,8 @@ function reconcileBookmarks(doc, starts, ends, names, baseNames, nextId) {
|
|
|
2782
2792
|
function setAttribute3(element, local, value) {
|
|
2783
2793
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
2784
2794
|
}
|
|
2785
|
-
function sameNumbering(
|
|
2786
|
-
return
|
|
2795
|
+
function sameNumbering(a2, b) {
|
|
2796
|
+
return a2?.numId === b?.numId && a2?.level === b?.level;
|
|
2787
2797
|
}
|
|
2788
2798
|
function writeNumberingProperties(doc, props, paragraph, base) {
|
|
2789
2799
|
if (base && sameNumbering(paragraph.numbering, base.numbering)) return;
|
|
@@ -2966,11 +2976,11 @@ var allowedRunPropertyAttributes = {
|
|
|
2966
2976
|
shd: ["val", "fill", "color", "themeFill", "themeFillTint", "themeFillShade"]
|
|
2967
2977
|
};
|
|
2968
2978
|
function hasUnexpectedAttributes(element, allowed, allowDateUtc = false) {
|
|
2969
|
-
for (const
|
|
2970
|
-
if (
|
|
2971
|
-
if (allowDateUtc &&
|
|
2979
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
2980
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
2981
|
+
if (allowDateUtc && attribute2.namespaceURI === WORD_DATE_UTC_NS && attribute2.localName === "dateUtc")
|
|
2972
2982
|
continue;
|
|
2973
|
-
if (
|
|
2983
|
+
if (attribute2.namespaceURI !== WORD_NS || !allowed.includes(attribute2.localName)) return true;
|
|
2974
2984
|
}
|
|
2975
2985
|
return false;
|
|
2976
2986
|
}
|
|
@@ -2997,7 +3007,7 @@ function runPropertiesHaveUnknownContent(properties) {
|
|
|
2997
3007
|
if (!isLigatures(property.getAttributeNS(WORD_2010_NS, "val")) || elements(property).length)
|
|
2998
3008
|
return true;
|
|
2999
3009
|
if (Array.from(property.attributes).some(
|
|
3000
|
-
(
|
|
3010
|
+
(attribute2) => attribute2.namespaceURI !== "http://www.w3.org/2000/xmlns/" && (attribute2.namespaceURI !== WORD_2010_NS || attribute2.localName !== "val")
|
|
3001
3011
|
))
|
|
3002
3012
|
return true;
|
|
3003
3013
|
continue;
|
|
@@ -3144,19 +3154,19 @@ function colorOf(value) {
|
|
|
3144
3154
|
}
|
|
3145
3155
|
function parseWatermarkShape(shape) {
|
|
3146
3156
|
if (!shape || !(shape.getAttribute("id") ?? "").startsWith(WATERMARK_PREFIX)) return void 0;
|
|
3147
|
-
const
|
|
3148
|
-
if (!
|
|
3157
|
+
const path2 = Array.from(shape.getElementsByTagNameNS(VML_NS, "textpath"))[0];
|
|
3158
|
+
if (!path2) return void 0;
|
|
3149
3159
|
const style = shape.getAttribute("style") ?? "";
|
|
3150
3160
|
const fill = Array.from(shape.getElementsByTagNameNS(VML_NS, "fill"))[0];
|
|
3151
3161
|
const opacity = fill?.getAttribute("opacity");
|
|
3152
3162
|
const family = /font-family:\s*(?:"|"|')?([^;"'&]+)/i.exec(
|
|
3153
|
-
|
|
3163
|
+
path2.getAttribute("style") ?? ""
|
|
3154
3164
|
)?.[1];
|
|
3155
3165
|
const width = /width:\s*([\d.]+)pt/i.exec(style);
|
|
3156
3166
|
const height = /height:\s*([\d.]+)pt/i.exec(style);
|
|
3157
3167
|
const rotation = /rotation:\s*(-?[\d.]+)/i.exec(style);
|
|
3158
3168
|
const spec = {
|
|
3159
|
-
text:
|
|
3169
|
+
text: path2.getAttribute("string") ?? "",
|
|
3160
3170
|
color: colorOf(shape.getAttribute("fillcolor")),
|
|
3161
3171
|
semitransparent: opacity !== null && opacity !== "" && opacity !== "1",
|
|
3162
3172
|
layout: rotation && Math.abs(Number(rotation[1]) % 360) > 1 ? "diagonal" : "horizontal",
|
|
@@ -3212,11 +3222,11 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
3212
3222
|
f.setAttribute("eqn", eqn);
|
|
3213
3223
|
formulas.appendChild(f);
|
|
3214
3224
|
}
|
|
3215
|
-
const
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3225
|
+
const path2 = v("path");
|
|
3226
|
+
path2.setAttribute("textpathok", "t");
|
|
3227
|
+
path2.setAttributeNS(OFFICE_NS, "o:connecttype", "custom");
|
|
3228
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectlocs", "@9,0;@10,10800;@11,21600;@12,10800");
|
|
3229
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectangles", "270,180,90,0");
|
|
3220
3230
|
const typePath = v("textpath");
|
|
3221
3231
|
typePath.setAttribute("on", "t");
|
|
3222
3232
|
typePath.setAttribute("fitshape", "t");
|
|
@@ -3229,7 +3239,7 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
3229
3239
|
lock.setAttributeNS(VML_NS, "v:ext", "edit");
|
|
3230
3240
|
lock.setAttribute("text", "t");
|
|
3231
3241
|
lock.setAttribute("shapetype", "t");
|
|
3232
|
-
for (const child3 of [formulas,
|
|
3242
|
+
for (const child3 of [formulas, path2, typePath, handles, lock]) type.appendChild(child3);
|
|
3233
3243
|
const size = watermarkSizePt(spec);
|
|
3234
3244
|
const shape = v("shape");
|
|
3235
3245
|
shape.setAttribute("id", `${WATERMARK_PREFIX}${uniqueId}`);
|
|
@@ -3462,8 +3472,8 @@ var CUSTOM_LAYOUT_ATTRIBUTES = [
|
|
|
3462
3472
|
];
|
|
3463
3473
|
function parseCustomLayoutAttributes(get) {
|
|
3464
3474
|
const custom = {};
|
|
3465
|
-
for (const [key,
|
|
3466
|
-
const raw = get(
|
|
3475
|
+
for (const [key, attribute2, kind] of CUSTOM_LAYOUT_ATTRIBUTES) {
|
|
3476
|
+
const raw = get(attribute2);
|
|
3467
3477
|
const value = kind === "flag" ? optionalBoolean(raw) : optionalScaled(raw, kind === "angle" ? 6e4 : 1e5);
|
|
3468
3478
|
if (value !== void 0) custom[key] = value;
|
|
3469
3479
|
}
|
|
@@ -3477,8 +3487,8 @@ var RELATIONSHIP_ATTRIBUTES = [
|
|
|
3477
3487
|
];
|
|
3478
3488
|
function parseRelationshipIdAttributes(get) {
|
|
3479
3489
|
const result = {};
|
|
3480
|
-
for (const [property,
|
|
3481
|
-
const value = optionalString(get(
|
|
3490
|
+
for (const [property, attribute2] of RELATIONSHIP_ATTRIBUTES) {
|
|
3491
|
+
const value = optionalString(get(attribute2));
|
|
3482
3492
|
if (value) result[property] = value;
|
|
3483
3493
|
}
|
|
3484
3494
|
return result;
|
|
@@ -3540,7 +3550,7 @@ async function resolveDiagramDrawingPart(hostPart, dataRelId, drawingExtensionRe
|
|
|
3540
3550
|
const entries = await host.readRelationshipEntries(diagramRelationshipsPart(dataPath));
|
|
3541
3551
|
if (!entries) return void 0;
|
|
3542
3552
|
const drawing = entries.find(
|
|
3543
|
-
(
|
|
3553
|
+
(entry2) => (!drawingExtensionRelId || entry2.id.trim() === drawingExtensionRelId) && entry2.type.endsWith("/diagramDrawing")
|
|
3544
3554
|
);
|
|
3545
3555
|
const id = drawing?.id.trim() ?? "";
|
|
3546
3556
|
const target = drawing?.target.trim() ?? "";
|
|
@@ -3644,14 +3654,14 @@ function parseDiagramDataModel(source, part) {
|
|
|
3644
3654
|
if (connection.modelId && connectionIds.has(connection.modelId))
|
|
3645
3655
|
report("CONNECTION_ID_DUPLICATE", `Duplicate dgm:cxn modelId: ${connection.modelId}.`);
|
|
3646
3656
|
if (connection.modelId) connectionIds.add(connection.modelId);
|
|
3647
|
-
for (const [
|
|
3657
|
+
for (const [attribute2, id] of [
|
|
3648
3658
|
["srcId", connection.sourceId],
|
|
3649
3659
|
["destId", connection.destId]
|
|
3650
3660
|
])
|
|
3651
3661
|
if (!ids.has(id))
|
|
3652
3662
|
report(
|
|
3653
3663
|
"CONNECTION_ENDPOINT_MISSING",
|
|
3654
|
-
`dgm:cxn ${
|
|
3664
|
+
`dgm:cxn ${attribute2} references missing point: ${id}.`
|
|
3655
3665
|
);
|
|
3656
3666
|
const label = connectionLabel(connection, transitionText);
|
|
3657
3667
|
connections.push(label ? { ...connection, label } : connection);
|
|
@@ -3794,7 +3804,7 @@ function parseDrawingFill(properties) {
|
|
|
3794
3804
|
});
|
|
3795
3805
|
const angle = Number.parseInt(first(fill, "lin", NS.a)?.getAttribute("ang") ?? "", 10);
|
|
3796
3806
|
const scaled = first(fill, "lin", NS.a)?.getAttribute("scaled");
|
|
3797
|
-
const
|
|
3807
|
+
const path2 = first(fill, "path", NS.a)?.getAttribute("path");
|
|
3798
3808
|
const focus = first(first(fill, "path", NS.a), "fillToRect", NS.a);
|
|
3799
3809
|
const tile = first(fill, "tileRect", NS.a);
|
|
3800
3810
|
const tileRect = tile ? {
|
|
@@ -3816,7 +3826,7 @@ function parseDrawingFill(properties) {
|
|
|
3816
3826
|
...Number.isFinite(angle) ? { angle: angle / 6e4 } : {},
|
|
3817
3827
|
...scaled === "1" || scaled === "true" ? { scaled: true } : {},
|
|
3818
3828
|
...scaled === "0" || scaled === "false" ? { scaled: false } : {},
|
|
3819
|
-
...
|
|
3829
|
+
...path2 ? { path: path2 } : {},
|
|
3820
3830
|
...fillToRect && Object.values(fillToRect).every(Number.isFinite) ? { fillToRect } : {},
|
|
3821
3831
|
...tileRect && Object.values(tileRect).every(Number.isFinite) ? { tileRect } : {}
|
|
3822
3832
|
};
|
|
@@ -3920,13 +3930,13 @@ function parseDrawingTextBody(body) {
|
|
|
3920
3930
|
const anchor = properties?.getAttribute("anchor");
|
|
3921
3931
|
if (anchor) result.anchor = anchor;
|
|
3922
3932
|
const insets = {};
|
|
3923
|
-
for (const [key,
|
|
3933
|
+
for (const [key, attribute2] of [
|
|
3924
3934
|
["left", "lIns"],
|
|
3925
3935
|
["top", "tIns"],
|
|
3926
3936
|
["right", "rIns"],
|
|
3927
3937
|
["bottom", "bIns"]
|
|
3928
3938
|
]) {
|
|
3929
|
-
const value = Number.parseInt(properties?.getAttribute(
|
|
3939
|
+
const value = Number.parseInt(properties?.getAttribute(attribute2) ?? "", 10);
|
|
3930
3940
|
if (Number.isFinite(value)) insets[key] = value;
|
|
3931
3941
|
}
|
|
3932
3942
|
if (Object.keys(insets).length > 0) result.insetsEmu = insets;
|
|
@@ -3957,18 +3967,18 @@ function parseTransform(xfrm) {
|
|
|
3957
3967
|
...booleanAttribute(xfrm, "flipV") ? { flipVertical: true } : {}
|
|
3958
3968
|
};
|
|
3959
3969
|
}
|
|
3960
|
-
function parsePathCommands(
|
|
3970
|
+
function parsePathCommands(path2) {
|
|
3961
3971
|
const commands = [];
|
|
3962
3972
|
const point = (element) => {
|
|
3963
3973
|
const x = int(element, "x");
|
|
3964
3974
|
const y = int(element, "y");
|
|
3965
3975
|
return Number.isFinite(x) && Number.isFinite(y) ? { x, y } : void 0;
|
|
3966
3976
|
};
|
|
3967
|
-
for (const element of Array.from(
|
|
3977
|
+
for (const element of Array.from(path2.childNodes)) {
|
|
3968
3978
|
if (element.nodeType !== 1) continue;
|
|
3969
3979
|
const node = element;
|
|
3970
3980
|
const points = children(node, "pt", NS.a).map(point);
|
|
3971
|
-
if (points.some((
|
|
3981
|
+
if (points.some((entry2) => entry2 === void 0)) return void 0;
|
|
3972
3982
|
const [p0, p1, p2] = points;
|
|
3973
3983
|
switch (node.localName) {
|
|
3974
3984
|
case "moveTo":
|
|
@@ -4011,17 +4021,17 @@ function parseDrawingGeometry(spPr) {
|
|
|
4011
4021
|
const custom = first(spPr, "custGeom", NS.a);
|
|
4012
4022
|
if (custom) {
|
|
4013
4023
|
const paths = [];
|
|
4014
|
-
for (const
|
|
4015
|
-
const commands = parsePathCommands(
|
|
4024
|
+
for (const path2 of children(first(custom, "pathLst", NS.a) ?? custom, "path", NS.a)) {
|
|
4025
|
+
const commands = parsePathCommands(path2);
|
|
4016
4026
|
if (!commands) return { geometry: "custom", issue: "CUSTOM_GEOMETRY_GUIDES_UNSUPPORTED" };
|
|
4017
|
-
const width = int(
|
|
4018
|
-
const height = int(
|
|
4027
|
+
const width = int(path2, "w");
|
|
4028
|
+
const height = int(path2, "h");
|
|
4019
4029
|
paths.push({
|
|
4020
4030
|
commands,
|
|
4021
4031
|
...Number.isFinite(width) ? { width } : {},
|
|
4022
4032
|
...Number.isFinite(height) ? { height } : {},
|
|
4023
|
-
...
|
|
4024
|
-
...
|
|
4033
|
+
...path2.getAttribute("fill") ? { fill: path2.getAttribute("fill") } : {},
|
|
4034
|
+
...path2.getAttribute("stroke") === "0" || path2.getAttribute("stroke") === "false" ? { stroke: false } : {}
|
|
4025
4035
|
});
|
|
4026
4036
|
}
|
|
4027
4037
|
return { geometry: "custom", paths };
|
|
@@ -4363,6 +4373,1179 @@ async function resolveDiagramParts(diagram, readText) {
|
|
|
4363
4373
|
diagram.notice = diagramNotice(diagram.rendering);
|
|
4364
4374
|
}
|
|
4365
4375
|
|
|
4376
|
+
// chart/color-style.ts
|
|
4377
|
+
var CHART_COLOR_STYLE_NS = "http://schemas.microsoft.com/office/drawing/2012/chartStyle";
|
|
4378
|
+
function chartColorStyleId(xml) {
|
|
4379
|
+
const root = parseXml(xml).documentElement;
|
|
4380
|
+
if (root.localName !== "colorStyle" || root.namespaceURI !== CHART_COLOR_STYLE_NS)
|
|
4381
|
+
return void 0;
|
|
4382
|
+
const value = root.getAttribute("id");
|
|
4383
|
+
if (!value || !/^\d+$/.test(value)) return void 0;
|
|
4384
|
+
const id = Number(value);
|
|
4385
|
+
return Number.isInteger(id) && id >= 0 ? id : void 0;
|
|
4386
|
+
}
|
|
4387
|
+
|
|
4388
|
+
// chart/built-in-text-style.ts
|
|
4389
|
+
var C14 = NS.c14;
|
|
4390
|
+
function readBuiltInChartStyle(root) {
|
|
4391
|
+
for (const content of children(root, "AlternateContent", NS.mc)) {
|
|
4392
|
+
for (const choice of children(content, "Choice", NS.mc)) {
|
|
4393
|
+
const requires = choice.getAttribute("Requires")?.trim().split(/\s+/);
|
|
4394
|
+
if (!requires?.length || !requires.every((prefix) => choice.lookupNamespaceURI(prefix) === C14))
|
|
4395
|
+
continue;
|
|
4396
|
+
const modern = first(choice, "style", C14)?.getAttribute("val");
|
|
4397
|
+
if (modern && /^\d+$/.test(modern) && Number(modern) >= 101 && Number(modern) <= 148)
|
|
4398
|
+
return Number(modern);
|
|
4399
|
+
}
|
|
4400
|
+
}
|
|
4401
|
+
const legacy = first(root, "style", NS.c) ?? first(first(first(root, "AlternateContent", NS.mc), "Fallback", NS.mc), "style", NS.c);
|
|
4402
|
+
const value = legacy?.getAttribute("val");
|
|
4403
|
+
if (!legacy) return 2;
|
|
4404
|
+
return value && /^\d+$/.test(value) && Number.isSafeInteger(Number(value)) ? Number(value) : void 0;
|
|
4405
|
+
}
|
|
4406
|
+
|
|
4407
|
+
// chart/read-appearance.ts
|
|
4408
|
+
function readChartAppearance(text, properties) {
|
|
4409
|
+
const out = {};
|
|
4410
|
+
const size = Number(text?.getAttribute("sz") ?? NaN);
|
|
4411
|
+
if (Number.isFinite(size) && size > 0) out.fontSize = size / 100;
|
|
4412
|
+
for (const [attribute2, key] of [
|
|
4413
|
+
["b", "bold"],
|
|
4414
|
+
["i", "italic"]
|
|
4415
|
+
]) {
|
|
4416
|
+
const value = text?.getAttribute(attribute2);
|
|
4417
|
+
if (value !== null && value !== void 0) out[key] = value === "1" || value === "true";
|
|
4418
|
+
}
|
|
4419
|
+
const typeface = first(text, "latin", NS.a)?.getAttribute("typeface");
|
|
4420
|
+
const underline = text?.getAttribute("u");
|
|
4421
|
+
if (underline) out.underline = underline !== "none";
|
|
4422
|
+
if (typeface) out.typeface = typeface;
|
|
4423
|
+
const color = parseDrawingColorIn(first(text, "solidFill", NS.a));
|
|
4424
|
+
if (color) out.textColor = color;
|
|
4425
|
+
const fill = parseDrawingFill(properties);
|
|
4426
|
+
const line = parseDrawingLine(first(properties, "ln", NS.a));
|
|
4427
|
+
if (fill) out.fill = fill;
|
|
4428
|
+
if (line) out.line = line;
|
|
4429
|
+
const effects = first(text, "effectLst", NS.a);
|
|
4430
|
+
if (effects) out.textEffectsXml = buildXml(effects);
|
|
4431
|
+
return out;
|
|
4432
|
+
}
|
|
4433
|
+
|
|
4434
|
+
// chart/formatting-nodes.ts
|
|
4435
|
+
function chartFormattingNodes(root) {
|
|
4436
|
+
const chart = first(root, "chart", NS.c);
|
|
4437
|
+
const plot = first(chart, "plotArea", NS.c);
|
|
4438
|
+
const category = first(plot, "catAx", NS.c) ?? first(plot, "dateAx", NS.c);
|
|
4439
|
+
const values = plot ? children(plot, "valAx", NS.c) : [];
|
|
4440
|
+
return {
|
|
4441
|
+
chartArea: root,
|
|
4442
|
+
plotArea: plot,
|
|
4443
|
+
title: first(chart, "title", NS.c),
|
|
4444
|
+
legend: first(chart, "legend", NS.c),
|
|
4445
|
+
categoryAxis: category ?? values[0],
|
|
4446
|
+
valueAxis: category ? values[0] : values[1],
|
|
4447
|
+
gridlineMajor: first(values[0], "majorGridlines", NS.c),
|
|
4448
|
+
gridlineMinor: first(values[0], "minorGridlines", NS.c)
|
|
4449
|
+
};
|
|
4450
|
+
}
|
|
4451
|
+
|
|
4452
|
+
// chart/manual-layout.ts
|
|
4453
|
+
function readChartManualLayoutValues(value) {
|
|
4454
|
+
const result = {};
|
|
4455
|
+
const enumeration = (name, values) => {
|
|
4456
|
+
const raw = value(name);
|
|
4457
|
+
return values.includes(raw) ? raw : void 0;
|
|
4458
|
+
};
|
|
4459
|
+
const target = enumeration("layoutTarget", ["inner", "outer"]);
|
|
4460
|
+
if (target) result.layoutTarget = target;
|
|
4461
|
+
for (const [xml, key] of [
|
|
4462
|
+
["xMode", "xMode"],
|
|
4463
|
+
["yMode", "yMode"],
|
|
4464
|
+
["wMode", "widthMode"],
|
|
4465
|
+
["hMode", "heightMode"]
|
|
4466
|
+
]) {
|
|
4467
|
+
const mode = enumeration(xml, ["edge", "factor"]);
|
|
4468
|
+
if (mode) result[key] = mode;
|
|
4469
|
+
}
|
|
4470
|
+
for (const [xml, key] of [
|
|
4471
|
+
["x", "x"],
|
|
4472
|
+
["y", "y"],
|
|
4473
|
+
["w", "width"],
|
|
4474
|
+
["h", "height"]
|
|
4475
|
+
]) {
|
|
4476
|
+
const raw = value(xml);
|
|
4477
|
+
if (typeof raw !== "string" && typeof raw !== "number" || typeof raw === "string" && !raw.trim())
|
|
4478
|
+
continue;
|
|
4479
|
+
const number = Number(raw);
|
|
4480
|
+
if (Number.isFinite(number)) result[key] = number;
|
|
4481
|
+
}
|
|
4482
|
+
return Object.keys(result).length ? result : void 0;
|
|
4483
|
+
}
|
|
4484
|
+
|
|
4485
|
+
// chart/read-formatting.ts
|
|
4486
|
+
var c = (parent, name) => first(parent, name, NS.c);
|
|
4487
|
+
var a = (parent, name) => first(parent, name, NS.a);
|
|
4488
|
+
function entry(node) {
|
|
4489
|
+
const body = c(node, "txPr");
|
|
4490
|
+
const paragraph = a(body, "p");
|
|
4491
|
+
const defaults = a(a(paragraph, "pPr"), "defRPr");
|
|
4492
|
+
const rich = c(c(node, "tx"), "rich");
|
|
4493
|
+
const richParagraph = a(rich, "p");
|
|
4494
|
+
const textBody = parseDrawingTextBody(rich);
|
|
4495
|
+
const manual = c(c(node, "layout"), "manualLayout");
|
|
4496
|
+
const layout2 = manual ? readChartManualLayoutValues((name) => c(manual, name)?.getAttribute("val")) : void 0;
|
|
4497
|
+
const overlay = c(node, "overlay")?.getAttribute("val");
|
|
4498
|
+
const out = {
|
|
4499
|
+
sourceXml: buildXml(node),
|
|
4500
|
+
...layout2 ? { layout: layout2 } : {},
|
|
4501
|
+
...overlay === "0" || overlay === "false" ? { overlay: false } : overlay === "1" || overlay === "true" ? { overlay: true } : {},
|
|
4502
|
+
...readChartAppearance(defaults, c(node, "spPr")),
|
|
4503
|
+
...readChartAppearance(a(a(richParagraph, "pPr"), "defRPr"), void 0),
|
|
4504
|
+
...readChartAppearance(a(a(richParagraph, "r"), "rPr"), void 0),
|
|
4505
|
+
...textBody ? { textBody, textBodyStyle: readChartAppearance(defaults, void 0) } : {}
|
|
4506
|
+
};
|
|
4507
|
+
if (["catAx", "dateAx", "valAx"].includes(node.localName)) {
|
|
4508
|
+
const deleted = c(node, "delete")?.getAttribute("val");
|
|
4509
|
+
if (deleted !== void 0) out.axisVisible = deleted !== "1" && deleted !== "true";
|
|
4510
|
+
out.labelsVisible = out.axisVisible !== false && c(node, "tickLblPos")?.getAttribute("val") !== "none";
|
|
4511
|
+
}
|
|
4512
|
+
return out;
|
|
4513
|
+
}
|
|
4514
|
+
function readChartFormatting(root) {
|
|
4515
|
+
const nodes = chartFormattingNodes(root);
|
|
4516
|
+
const entries = Object.fromEntries(
|
|
4517
|
+
Object.entries(nodes).flatMap(([name, node]) => node ? [[name, entry(node)]] : [])
|
|
4518
|
+
);
|
|
4519
|
+
const builtInStyle = readBuiltInChartStyle(root);
|
|
4520
|
+
const textBody = c(root, "txPr");
|
|
4521
|
+
const textDefaults = textBody ? {
|
|
4522
|
+
sourceXml: buildXml(textBody),
|
|
4523
|
+
...readChartAppearance(a(a(a(textBody, "p"), "pPr"), "defRPr"), void 0)
|
|
4524
|
+
} : void 0;
|
|
4525
|
+
return Object.keys(entries).length ? {
|
|
4526
|
+
entries,
|
|
4527
|
+
sourceXml: buildXml(root),
|
|
4528
|
+
...builtInStyle === void 0 ? {} : { builtInStyle },
|
|
4529
|
+
...textDefaults ? { textDefaults } : {}
|
|
4530
|
+
} : void 0;
|
|
4531
|
+
}
|
|
4532
|
+
|
|
4533
|
+
// chart/data-cache.ts
|
|
4534
|
+
function chartCacheValues(cache) {
|
|
4535
|
+
if (!cache) return [];
|
|
4536
|
+
const numeric = cache.type === "number";
|
|
4537
|
+
const out = [];
|
|
4538
|
+
for (const point of cache.points) {
|
|
4539
|
+
const text = point.value;
|
|
4540
|
+
out[point.index ?? out.length] = numeric && text.trim() !== "" && Number.isFinite(Number(text)) ? Number(text) : text;
|
|
4541
|
+
}
|
|
4542
|
+
const size = Math.max(cache.pointCount ?? 0, out.length);
|
|
4543
|
+
for (let index = 0; index < size; index++) if (out[index] === void 0) out[index] = "";
|
|
4544
|
+
return out;
|
|
4545
|
+
}
|
|
4546
|
+
|
|
4547
|
+
// chart/xml-fragment.ts
|
|
4548
|
+
var CHART_ROOT_BINDINGS = /* @__PURE__ */ new Map([
|
|
4549
|
+
["c", NS.c],
|
|
4550
|
+
["a", NS.a],
|
|
4551
|
+
["r", NS.r]
|
|
4552
|
+
]);
|
|
4553
|
+
var DECLARATION = / xmlns:([A-Za-z_][\w.-]*)="([^"]*)"/g;
|
|
4554
|
+
function stripDeclarations(xml, bindings) {
|
|
4555
|
+
const conflicting = /* @__PURE__ */ new Set();
|
|
4556
|
+
for (const [, prefix, uri] of xml.matchAll(DECLARATION))
|
|
4557
|
+
if (prefix !== void 0 && bindings.has(prefix) && bindings.get(prefix) !== uri)
|
|
4558
|
+
conflicting.add(prefix);
|
|
4559
|
+
return xml.replace(
|
|
4560
|
+
DECLARATION,
|
|
4561
|
+
(match, prefix, uri) => bindings.get(prefix) === uri && !conflicting.has(prefix) ? "" : match
|
|
4562
|
+
);
|
|
4563
|
+
}
|
|
4564
|
+
var innerXml = (element) => stripDeclarations(elements(element).map(buildXml).join(""), CHART_ROOT_BINDINGS);
|
|
4565
|
+
|
|
4566
|
+
// chart/parse-util.ts
|
|
4567
|
+
var cChild = (parent, local) => first(parent, local, NS.c);
|
|
4568
|
+
var attribute = (element, name) => element?.hasAttribute(name) ? element.getAttribute(name) ?? void 0 : void 0;
|
|
4569
|
+
var cVal = (parent, local) => attribute(cChild(parent, local), "val");
|
|
4570
|
+
var path = (element) => `c:${element.parentNode?.localName ?? ""}/c:${element.localName}`;
|
|
4571
|
+
function malformed(context, element, value) {
|
|
4572
|
+
context.issues.push({
|
|
4573
|
+
code: "CHART_VALUE_INVALID",
|
|
4574
|
+
message: `${path(element)} has an unreadable value "${value}".`
|
|
4575
|
+
});
|
|
4576
|
+
}
|
|
4577
|
+
function cBool(context, parent, local) {
|
|
4578
|
+
const element = cChild(parent, local);
|
|
4579
|
+
if (!element) return void 0;
|
|
4580
|
+
const raw = attribute(element, "val");
|
|
4581
|
+
if (raw === void 0) return true;
|
|
4582
|
+
const value = raw.trim().toLowerCase();
|
|
4583
|
+
if (value === "1" || value === "true") return true;
|
|
4584
|
+
if (value === "0" || value === "false") return false;
|
|
4585
|
+
malformed(context, element, raw);
|
|
4586
|
+
return void 0;
|
|
4587
|
+
}
|
|
4588
|
+
function cNumber(context, parent, local) {
|
|
4589
|
+
const element = cChild(parent, local);
|
|
4590
|
+
const raw = attribute(element, "val");
|
|
4591
|
+
if (!element || raw === void 0) return void 0;
|
|
4592
|
+
const value = raw.trim() ? Number(raw) : Number.NaN;
|
|
4593
|
+
if (Number.isFinite(value)) return value;
|
|
4594
|
+
malformed(context, element, raw);
|
|
4595
|
+
return void 0;
|
|
4596
|
+
}
|
|
4597
|
+
function reportUnmodelled(context, element, handled) {
|
|
4598
|
+
for (const child3 of elements(element)) {
|
|
4599
|
+
if (handled.has(child3.localName)) continue;
|
|
4600
|
+
context.issues.push({
|
|
4601
|
+
code: "CHART_ELEMENT_NOT_MODELLED",
|
|
4602
|
+
message: `${path(child3)} is not modelled; it is kept only in the source part.`
|
|
4603
|
+
});
|
|
4604
|
+
}
|
|
4605
|
+
}
|
|
4606
|
+
function extensionList(parent) {
|
|
4607
|
+
const extLst = cChild(parent, "extLst");
|
|
4608
|
+
return extLst ? buildXml(extLst) : void 0;
|
|
4609
|
+
}
|
|
4610
|
+
function readShapeFields(spPr) {
|
|
4611
|
+
const out = {};
|
|
4612
|
+
const fill = parseDrawingFill(spPr);
|
|
4613
|
+
if (fill) out.fill = fill;
|
|
4614
|
+
const line = parseDrawingLine(first(spPr, "ln", NS.a));
|
|
4615
|
+
if (line) out.line = line;
|
|
4616
|
+
const effects = first(spPr, "effectLst", NS.a);
|
|
4617
|
+
if (effects) out.effectsXml = buildXml(effects);
|
|
4618
|
+
return out;
|
|
4619
|
+
}
|
|
4620
|
+
function shapeProperties(parent) {
|
|
4621
|
+
const spPr = cChild(parent, "spPr");
|
|
4622
|
+
if (!spPr) return void 0;
|
|
4623
|
+
const out = readShapeFields(spPr);
|
|
4624
|
+
const source = innerXml(spPr);
|
|
4625
|
+
if (source) out.sourceXml = source;
|
|
4626
|
+
return out;
|
|
4627
|
+
}
|
|
4628
|
+
function chartTextBody(element) {
|
|
4629
|
+
const body = parseDrawingTextBody(element);
|
|
4630
|
+
if (!body || !element) return body;
|
|
4631
|
+
const source = innerXml(element);
|
|
4632
|
+
if (source) body.sourceXml = source;
|
|
4633
|
+
return body;
|
|
4634
|
+
}
|
|
4635
|
+
var textProperties = (parent) => chartTextBody(cChild(parent, "txPr"));
|
|
4636
|
+
function chartLines(parent, local) {
|
|
4637
|
+
const element = cChild(parent, local);
|
|
4638
|
+
if (!element) return void 0;
|
|
4639
|
+
const spPr = shapeProperties(element);
|
|
4640
|
+
return spPr ? { spPr } : {};
|
|
4641
|
+
}
|
|
4642
|
+
function numberFormat(parent) {
|
|
4643
|
+
const element = cChild(parent, "numFmt");
|
|
4644
|
+
const formatCode = attribute(element, "formatCode");
|
|
4645
|
+
if (formatCode === void 0) return void 0;
|
|
4646
|
+
const linked = attribute(element, "sourceLinked");
|
|
4647
|
+
return {
|
|
4648
|
+
formatCode,
|
|
4649
|
+
...linked === "1" || linked === "true" ? { sourceLinked: true } : {},
|
|
4650
|
+
...linked === "0" || linked === "false" ? { sourceLinked: false } : {}
|
|
4651
|
+
};
|
|
4652
|
+
}
|
|
4653
|
+
function readLayoutFields(layout2) {
|
|
4654
|
+
const manual = cChild(layout2, "manualLayout");
|
|
4655
|
+
return (manual && readChartManualLayoutValues((name) => cVal(manual, name))) ?? {};
|
|
4656
|
+
}
|
|
4657
|
+
function manualLayout(parent) {
|
|
4658
|
+
const layout2 = cChild(parent, "layout");
|
|
4659
|
+
if (!layout2) return void 0;
|
|
4660
|
+
const out = readLayoutFields(layout2);
|
|
4661
|
+
const source = innerXml(layout2);
|
|
4662
|
+
if (source) out.sourceXml = source;
|
|
4663
|
+
return out;
|
|
4664
|
+
}
|
|
4665
|
+
function assignDefined(target, values) {
|
|
4666
|
+
for (const [key, value] of Object.entries(values))
|
|
4667
|
+
if (value !== void 0) target[key] = value;
|
|
4668
|
+
return target;
|
|
4669
|
+
}
|
|
4670
|
+
|
|
4671
|
+
// chart/parse-text.ts
|
|
4672
|
+
function parseCache(node) {
|
|
4673
|
+
const cache = {
|
|
4674
|
+
type: node.localName === "numCache" || node.localName === "numLit" ? "number" : "string",
|
|
4675
|
+
points: children(node, "pt", NS.c).map((pt) => {
|
|
4676
|
+
const point = { value: cChild(pt, "v")?.textContent ?? "" };
|
|
4677
|
+
const index = Number(attribute(pt, "idx") ?? Number.NaN);
|
|
4678
|
+
if (Number.isInteger(index) && index >= 0) point.index = index;
|
|
4679
|
+
const formatCode2 = attribute(pt, "formatCode");
|
|
4680
|
+
if (formatCode2 !== void 0) point.formatCode = formatCode2;
|
|
4681
|
+
return point;
|
|
4682
|
+
})
|
|
4683
|
+
};
|
|
4684
|
+
const count = Number(cVal(node, "ptCount") ?? Number.NaN);
|
|
4685
|
+
if (Number.isInteger(count) && count >= 0) cache.pointCount = count;
|
|
4686
|
+
const formatCode = cChild(node, "formatCode")?.textContent;
|
|
4687
|
+
if (formatCode) cache.formatCode = formatCode;
|
|
4688
|
+
return cache;
|
|
4689
|
+
}
|
|
4690
|
+
function parseDataSource(element) {
|
|
4691
|
+
if (!element) return void 0;
|
|
4692
|
+
const source = {};
|
|
4693
|
+
const ref = cChild(element, "numRef") ?? cChild(element, "strRef") ?? cChild(element, "multiLvlStrRef");
|
|
4694
|
+
if (ref) {
|
|
4695
|
+
source.kind = ref.localName;
|
|
4696
|
+
const formula = cChild(ref, "f")?.textContent;
|
|
4697
|
+
if (formula) source.formula = formula;
|
|
4698
|
+
const cache = cChild(ref, "numCache") ?? cChild(ref, "strCache");
|
|
4699
|
+
if (cache) source.cache = parseCache(cache);
|
|
4700
|
+
const levels = cChild(ref, "multiLvlStrCache");
|
|
4701
|
+
if (levels) {
|
|
4702
|
+
source.levels = children(levels, "lvl", NS.c).map(parseCache);
|
|
4703
|
+
const count = Number(cVal(levels, "ptCount") ?? Number.NaN);
|
|
4704
|
+
if (Number.isInteger(count) && count >= 0) source.levelPointCount = count;
|
|
4705
|
+
}
|
|
4706
|
+
return source;
|
|
4707
|
+
}
|
|
4708
|
+
const literal = cChild(element, "numLit") ?? cChild(element, "strLit");
|
|
4709
|
+
if (literal) {
|
|
4710
|
+
source.kind = literal.localName;
|
|
4711
|
+
source.cache = parseCache(literal);
|
|
4712
|
+
}
|
|
4713
|
+
return source;
|
|
4714
|
+
}
|
|
4715
|
+
function parseChartText(context, tx, allowValue) {
|
|
4716
|
+
if (!tx) return void 0;
|
|
4717
|
+
const text = {};
|
|
4718
|
+
const rich = chartTextBody(cChild(tx, "rich"));
|
|
4719
|
+
if (rich) text.rich = rich;
|
|
4720
|
+
if (cChild(tx, "strRef")) {
|
|
4721
|
+
const reference = parseDataSource(tx);
|
|
4722
|
+
if (reference) text.reference = reference;
|
|
4723
|
+
}
|
|
4724
|
+
const value = allowValue ? cChild(tx, "v")?.textContent : void 0;
|
|
4725
|
+
if (value !== void 0 && value !== null) text.value = value;
|
|
4726
|
+
const cached2 = chartCacheValues(text.reference?.cache)[0];
|
|
4727
|
+
const flat = text.value ?? (rich ? rich.text : cached2 === void 0 ? void 0 : String(cached2));
|
|
4728
|
+
if (flat !== void 0) text.text = flat;
|
|
4729
|
+
reportUnmodelled(context, tx, new Set(allowValue ? ["strRef", "v"] : ["rich", "strRef"]));
|
|
4730
|
+
return text;
|
|
4731
|
+
}
|
|
4732
|
+
var TITLE = /* @__PURE__ */ new Set(["tx", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
4733
|
+
function parseTitle(context, element) {
|
|
4734
|
+
const tx = parseChartText(context, cChild(element, "tx"), false);
|
|
4735
|
+
reportUnmodelled(context, element, TITLE);
|
|
4736
|
+
return assignDefined(
|
|
4737
|
+
{},
|
|
4738
|
+
{
|
|
4739
|
+
tx,
|
|
4740
|
+
text: tx?.text,
|
|
4741
|
+
overlay: cBool(context, element, "overlay"),
|
|
4742
|
+
layout: manualLayout(element),
|
|
4743
|
+
spPr: shapeProperties(element),
|
|
4744
|
+
txPr: textProperties(element),
|
|
4745
|
+
extLst: extensionList(element)
|
|
4746
|
+
}
|
|
4747
|
+
);
|
|
4748
|
+
}
|
|
4749
|
+
var LABEL_OPTIONS = [
|
|
4750
|
+
"delete",
|
|
4751
|
+
"showLegendKey",
|
|
4752
|
+
"showVal",
|
|
4753
|
+
"showCatName",
|
|
4754
|
+
"showSerName",
|
|
4755
|
+
"showPercent",
|
|
4756
|
+
"showBubbleSize",
|
|
4757
|
+
"separator",
|
|
4758
|
+
"dLblPos",
|
|
4759
|
+
"numFmt",
|
|
4760
|
+
"spPr",
|
|
4761
|
+
"txPr",
|
|
4762
|
+
"extLst"
|
|
4763
|
+
];
|
|
4764
|
+
function labelOptions(context, element) {
|
|
4765
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
4766
|
+
return assignDefined(
|
|
4767
|
+
{},
|
|
4768
|
+
{
|
|
4769
|
+
deleted: flag2("delete"),
|
|
4770
|
+
showLegendKey: flag2("showLegendKey"),
|
|
4771
|
+
showValue: flag2("showVal"),
|
|
4772
|
+
showCategoryName: flag2("showCatName"),
|
|
4773
|
+
showSeriesName: flag2("showSerName"),
|
|
4774
|
+
showPercent: flag2("showPercent"),
|
|
4775
|
+
showBubbleSize: flag2("showBubbleSize"),
|
|
4776
|
+
separator: cChild(element, "separator")?.textContent ?? void 0,
|
|
4777
|
+
position: cVal(element, "dLblPos"),
|
|
4778
|
+
numberFormat: numberFormat(element),
|
|
4779
|
+
spPr: shapeProperties(element),
|
|
4780
|
+
txPr: textProperties(element),
|
|
4781
|
+
extLst: extensionList(element)
|
|
4782
|
+
}
|
|
4783
|
+
);
|
|
4784
|
+
}
|
|
4785
|
+
var LABEL = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "idx", "layout", "tx"]);
|
|
4786
|
+
var LABELS = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "dLbl", "showLeaderLines", "leaderLines"]);
|
|
4787
|
+
function parseDataLabels(context, element) {
|
|
4788
|
+
if (!element) return void 0;
|
|
4789
|
+
const labels = children(element, "dLbl", NS.c).map((node) => {
|
|
4790
|
+
reportUnmodelled(context, node, LABEL);
|
|
4791
|
+
return assignDefined(labelOptions(context, node), {
|
|
4792
|
+
index: cNumber(context, node, "idx"),
|
|
4793
|
+
tx: parseChartText(context, cChild(node, "tx"), false),
|
|
4794
|
+
layout: manualLayout(node)
|
|
4795
|
+
});
|
|
4796
|
+
});
|
|
4797
|
+
reportUnmodelled(context, element, LABELS);
|
|
4798
|
+
return assignDefined(
|
|
4799
|
+
{ ...labelOptions(context, element), labels },
|
|
4800
|
+
{
|
|
4801
|
+
showLeaderLines: cBool(context, element, "showLeaderLines"),
|
|
4802
|
+
leaderLines: chartLines(element, "leaderLines")
|
|
4803
|
+
}
|
|
4804
|
+
);
|
|
4805
|
+
}
|
|
4806
|
+
|
|
4807
|
+
// chart/parse-chrome.ts
|
|
4808
|
+
var SURFACE = /* @__PURE__ */ new Set(["thickness", "spPr", "pictureOptions", "extLst"]);
|
|
4809
|
+
function parseSurface(context, element) {
|
|
4810
|
+
if (!element) return void 0;
|
|
4811
|
+
reportUnmodelled(context, element, SURFACE);
|
|
4812
|
+
const pictureOptions = cChild(element, "pictureOptions");
|
|
4813
|
+
return assignDefined(
|
|
4814
|
+
{},
|
|
4815
|
+
{
|
|
4816
|
+
thickness: cNumber(context, element, "thickness"),
|
|
4817
|
+
spPr: shapeProperties(element),
|
|
4818
|
+
pictureOptionsXml: pictureOptions ? buildXml(pictureOptions) : void 0,
|
|
4819
|
+
extLst: extensionList(element)
|
|
4820
|
+
}
|
|
4821
|
+
);
|
|
4822
|
+
}
|
|
4823
|
+
var DATA_TABLE = /* @__PURE__ */ new Set([
|
|
4824
|
+
"showHorzBorder",
|
|
4825
|
+
"showVertBorder",
|
|
4826
|
+
"showOutline",
|
|
4827
|
+
"showKeys",
|
|
4828
|
+
"spPr",
|
|
4829
|
+
"txPr",
|
|
4830
|
+
"extLst"
|
|
4831
|
+
]);
|
|
4832
|
+
function parseDataTable(context, element) {
|
|
4833
|
+
if (!element) return void 0;
|
|
4834
|
+
reportUnmodelled(context, element, DATA_TABLE);
|
|
4835
|
+
return assignDefined(
|
|
4836
|
+
{},
|
|
4837
|
+
{
|
|
4838
|
+
showHorizontalBorder: cBool(context, element, "showHorzBorder"),
|
|
4839
|
+
showVerticalBorder: cBool(context, element, "showVertBorder"),
|
|
4840
|
+
showOutline: cBool(context, element, "showOutline"),
|
|
4841
|
+
showKeys: cBool(context, element, "showKeys"),
|
|
4842
|
+
spPr: shapeProperties(element),
|
|
4843
|
+
txPr: textProperties(element),
|
|
4844
|
+
extLst: extensionList(element)
|
|
4845
|
+
}
|
|
4846
|
+
);
|
|
4847
|
+
}
|
|
4848
|
+
var DISPLAY_UNITS = /* @__PURE__ */ new Set(["custUnit", "builtInUnit", "dispUnitsLbl", "extLst"]);
|
|
4849
|
+
var DISPLAY_UNITS_LABEL = /* @__PURE__ */ new Set(["layout", "tx", "spPr", "txPr"]);
|
|
4850
|
+
function parseDisplayUnits(context, element) {
|
|
4851
|
+
if (!element) return void 0;
|
|
4852
|
+
reportUnmodelled(context, element, DISPLAY_UNITS);
|
|
4853
|
+
const labelElement = cChild(element, "dispUnitsLbl");
|
|
4854
|
+
let label;
|
|
4855
|
+
if (labelElement) {
|
|
4856
|
+
reportUnmodelled(context, labelElement, DISPLAY_UNITS_LABEL);
|
|
4857
|
+
label = assignDefined(
|
|
4858
|
+
{},
|
|
4859
|
+
{
|
|
4860
|
+
layout: manualLayout(labelElement),
|
|
4861
|
+
tx: parseChartText(context, cChild(labelElement, "tx"), false),
|
|
4862
|
+
spPr: shapeProperties(labelElement),
|
|
4863
|
+
txPr: textProperties(labelElement)
|
|
4864
|
+
}
|
|
4865
|
+
);
|
|
4866
|
+
}
|
|
4867
|
+
return assignDefined(
|
|
4868
|
+
{},
|
|
4869
|
+
{
|
|
4870
|
+
builtInUnit: cVal(element, "builtInUnit"),
|
|
4871
|
+
customUnit: cNumber(context, element, "custUnit"),
|
|
4872
|
+
label,
|
|
4873
|
+
extLst: extensionList(element)
|
|
4874
|
+
}
|
|
4875
|
+
);
|
|
4876
|
+
}
|
|
4877
|
+
|
|
4878
|
+
// chart/parse-series.ts
|
|
4879
|
+
var MARKER = /* @__PURE__ */ new Set(["symbol", "size", "spPr", "extLst"]);
|
|
4880
|
+
function parseMarker(context, element) {
|
|
4881
|
+
if (!element) return void 0;
|
|
4882
|
+
reportUnmodelled(context, element, MARKER);
|
|
4883
|
+
return assignDefined(
|
|
4884
|
+
{},
|
|
4885
|
+
{
|
|
4886
|
+
symbol: cVal(element, "symbol"),
|
|
4887
|
+
size: cNumber(context, element, "size"),
|
|
4888
|
+
spPr: shapeProperties(element),
|
|
4889
|
+
extLst: extensionList(element)
|
|
4890
|
+
}
|
|
4891
|
+
);
|
|
4892
|
+
}
|
|
4893
|
+
var POINT = /* @__PURE__ */ new Set([
|
|
4894
|
+
"idx",
|
|
4895
|
+
"invertIfNegative",
|
|
4896
|
+
"marker",
|
|
4897
|
+
"bubble3D",
|
|
4898
|
+
"explosion",
|
|
4899
|
+
"spPr",
|
|
4900
|
+
"extLst"
|
|
4901
|
+
]);
|
|
4902
|
+
function parseDataPoint(context, element) {
|
|
4903
|
+
reportUnmodelled(context, element, POINT);
|
|
4904
|
+
const index = cNumber(context, element, "idx");
|
|
4905
|
+
return assignDefined(
|
|
4906
|
+
{},
|
|
4907
|
+
{
|
|
4908
|
+
index: index !== void 0 && Number.isInteger(index) && index >= 0 ? index : void 0,
|
|
4909
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
4910
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
4911
|
+
explosion: cNumber(context, element, "explosion"),
|
|
4912
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
4913
|
+
spPr: shapeProperties(element),
|
|
4914
|
+
extLst: extensionList(element)
|
|
4915
|
+
}
|
|
4916
|
+
);
|
|
4917
|
+
}
|
|
4918
|
+
var SERIES = /* @__PURE__ */ new Set([
|
|
4919
|
+
"idx",
|
|
4920
|
+
"order",
|
|
4921
|
+
"tx",
|
|
4922
|
+
"spPr",
|
|
4923
|
+
"invertIfNegative",
|
|
4924
|
+
"dPt",
|
|
4925
|
+
"dLbls",
|
|
4926
|
+
"cat",
|
|
4927
|
+
"val",
|
|
4928
|
+
"xVal",
|
|
4929
|
+
"yVal",
|
|
4930
|
+
"smooth",
|
|
4931
|
+
"marker",
|
|
4932
|
+
"explosion",
|
|
4933
|
+
"bubbleSize",
|
|
4934
|
+
"bubble3D",
|
|
4935
|
+
"shape",
|
|
4936
|
+
"extLst"
|
|
4937
|
+
]);
|
|
4938
|
+
function parseSeries(context, element) {
|
|
4939
|
+
reportUnmodelled(context, element, SERIES);
|
|
4940
|
+
return assignDefined(
|
|
4941
|
+
{ dataPoints: children(element, "dPt", NS.c).map((point) => parseDataPoint(context, point)) },
|
|
4942
|
+
{
|
|
4943
|
+
index: cNumber(context, element, "idx"),
|
|
4944
|
+
order: cNumber(context, element, "order"),
|
|
4945
|
+
tx: parseChartText(context, cChild(element, "tx"), true),
|
|
4946
|
+
spPr: shapeProperties(element),
|
|
4947
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
4948
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
4949
|
+
categories: parseDataSource(cChild(element, "cat")),
|
|
4950
|
+
values: parseDataSource(cChild(element, "val")),
|
|
4951
|
+
xValues: parseDataSource(cChild(element, "xVal")),
|
|
4952
|
+
yValues: parseDataSource(cChild(element, "yVal")),
|
|
4953
|
+
bubbleSizes: parseDataSource(cChild(element, "bubbleSize")),
|
|
4954
|
+
smooth: cBool(context, element, "smooth"),
|
|
4955
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
4956
|
+
explosion: cNumber(context, element, "explosion"),
|
|
4957
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
4958
|
+
shape: cVal(element, "shape"),
|
|
4959
|
+
extLst: extensionList(element)
|
|
4960
|
+
}
|
|
4961
|
+
);
|
|
4962
|
+
}
|
|
4963
|
+
|
|
4964
|
+
// chart/parse-plot.ts
|
|
4965
|
+
var CHART_GROUP_ELEMENTS = {
|
|
4966
|
+
barChart: { kind: "bar", is3D: false },
|
|
4967
|
+
bar3DChart: { kind: "bar", is3D: true },
|
|
4968
|
+
lineChart: { kind: "line", is3D: false },
|
|
4969
|
+
line3DChart: { kind: "line", is3D: true },
|
|
4970
|
+
areaChart: { kind: "area", is3D: false },
|
|
4971
|
+
area3DChart: { kind: "area", is3D: true },
|
|
4972
|
+
pieChart: { kind: "pie", is3D: false },
|
|
4973
|
+
pie3DChart: { kind: "pie", is3D: true },
|
|
4974
|
+
ofPieChart: { kind: "ofPie", is3D: false },
|
|
4975
|
+
doughnutChart: { kind: "doughnut", is3D: false },
|
|
4976
|
+
scatterChart: { kind: "scatter", is3D: false },
|
|
4977
|
+
radarChart: { kind: "radar", is3D: false },
|
|
4978
|
+
bubbleChart: { kind: "bubble", is3D: false },
|
|
4979
|
+
stockChart: { kind: "stock", is3D: false },
|
|
4980
|
+
surfaceChart: { kind: "surface", is3D: false },
|
|
4981
|
+
surface3DChart: { kind: "surface", is3D: true }
|
|
4982
|
+
};
|
|
4983
|
+
var AXIS_ELEMENTS = {
|
|
4984
|
+
catAx: "cat",
|
|
4985
|
+
valAx: "val",
|
|
4986
|
+
dateAx: "date",
|
|
4987
|
+
serAx: "ser"
|
|
4988
|
+
};
|
|
4989
|
+
var GROUP = /* @__PURE__ */ new Set([
|
|
4990
|
+
"ser",
|
|
4991
|
+
"axId",
|
|
4992
|
+
"varyColors",
|
|
4993
|
+
"dLbls",
|
|
4994
|
+
"barDir",
|
|
4995
|
+
"grouping",
|
|
4996
|
+
"gapWidth",
|
|
4997
|
+
"overlap",
|
|
4998
|
+
"gapDepth",
|
|
4999
|
+
"shape",
|
|
5000
|
+
"marker",
|
|
5001
|
+
"smooth",
|
|
5002
|
+
"dropLines",
|
|
5003
|
+
"hiLowLines",
|
|
5004
|
+
"upDownBars",
|
|
5005
|
+
"serLines",
|
|
5006
|
+
"firstSliceAng",
|
|
5007
|
+
"holeSize",
|
|
5008
|
+
"ofPieType",
|
|
5009
|
+
"scatterStyle",
|
|
5010
|
+
"radarStyle",
|
|
5011
|
+
"bubble3D",
|
|
5012
|
+
"bubbleScale",
|
|
5013
|
+
"showNegBubbles",
|
|
5014
|
+
"sizeRepresents",
|
|
5015
|
+
"wireframe",
|
|
5016
|
+
"extLst"
|
|
5017
|
+
]);
|
|
5018
|
+
function parseGroup(context, element) {
|
|
5019
|
+
const { kind, is3D } = CHART_GROUP_ELEMENTS[element.localName] ?? { kind: "bar", is3D: false };
|
|
5020
|
+
reportUnmodelled(context, element, GROUP);
|
|
5021
|
+
const number = (local) => cNumber(context, element, local);
|
|
5022
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
5023
|
+
const barDir = cVal(element, "barDir");
|
|
5024
|
+
const present = (local) => cChild(element, local) ? true : void 0;
|
|
5025
|
+
const linesShape = (local) => chartLines(element, local)?.spPr;
|
|
5026
|
+
const bars = cChild(element, "upDownBars");
|
|
5027
|
+
return assignDefined(
|
|
5028
|
+
{
|
|
5029
|
+
kind,
|
|
5030
|
+
element: element.localName,
|
|
5031
|
+
is3D,
|
|
5032
|
+
series: children(element, "ser", NS.c).map((ser) => parseSeries(context, ser)),
|
|
5033
|
+
axisIds: children(element, "axId", NS.c).flatMap((axis) => {
|
|
5034
|
+
const raw = attribute(axis, "val")?.trim();
|
|
5035
|
+
const id = raw ? Number(raw) : Number.NaN;
|
|
5036
|
+
return Number.isFinite(id) ? [id] : [];
|
|
5037
|
+
})
|
|
5038
|
+
},
|
|
5039
|
+
{
|
|
5040
|
+
varyColors: flag2("varyColors"),
|
|
5041
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
5042
|
+
barDirection: barDir === "bar" || barDir === "col" ? barDir : void 0,
|
|
5043
|
+
grouping: cVal(element, "grouping"),
|
|
5044
|
+
gapWidth: number("gapWidth"),
|
|
5045
|
+
overlap: number("overlap"),
|
|
5046
|
+
gapDepth: number("gapDepth"),
|
|
5047
|
+
shape: cVal(element, "shape"),
|
|
5048
|
+
marker: flag2("marker"),
|
|
5049
|
+
smooth: flag2("smooth"),
|
|
5050
|
+
dropLines: present("dropLines"),
|
|
5051
|
+
hiLowLines: present("hiLowLines"),
|
|
5052
|
+
upDownBars: present("upDownBars"),
|
|
5053
|
+
seriesLines: present("serLines"),
|
|
5054
|
+
dropLinesSpPr: linesShape("dropLines"),
|
|
5055
|
+
hiLowLinesSpPr: linesShape("hiLowLines"),
|
|
5056
|
+
seriesLinesSpPr: linesShape("serLines"),
|
|
5057
|
+
upDownBarsGapWidth: cNumber(context, bars, "gapWidth"),
|
|
5058
|
+
upBars: chartLines(bars, "upBars"),
|
|
5059
|
+
downBars: chartLines(bars, "downBars"),
|
|
5060
|
+
firstSliceAngle: number("firstSliceAng"),
|
|
5061
|
+
holeSize: number("holeSize"),
|
|
5062
|
+
ofPieType: cVal(element, "ofPieType"),
|
|
5063
|
+
scatterStyle: cVal(element, "scatterStyle"),
|
|
5064
|
+
radarStyle: cVal(element, "radarStyle"),
|
|
5065
|
+
bubble3D: flag2("bubble3D"),
|
|
5066
|
+
bubbleScale: number("bubbleScale"),
|
|
5067
|
+
showNegativeBubbles: flag2("showNegBubbles"),
|
|
5068
|
+
sizeRepresents: cVal(element, "sizeRepresents"),
|
|
5069
|
+
wireframe: flag2("wireframe"),
|
|
5070
|
+
extLst: extensionList(element)
|
|
5071
|
+
}
|
|
5072
|
+
);
|
|
5073
|
+
}
|
|
5074
|
+
var SCALING = /* @__PURE__ */ new Set(["orientation", "logBase", "min", "max", "extLst"]);
|
|
5075
|
+
var AXIS = /* @__PURE__ */ new Set([
|
|
5076
|
+
"axId",
|
|
5077
|
+
"scaling",
|
|
5078
|
+
"delete",
|
|
5079
|
+
"axPos",
|
|
5080
|
+
"majorGridlines",
|
|
5081
|
+
"minorGridlines",
|
|
5082
|
+
"title",
|
|
5083
|
+
"numFmt",
|
|
5084
|
+
"majorTickMark",
|
|
5085
|
+
"minorTickMark",
|
|
5086
|
+
"tickLblPos",
|
|
5087
|
+
"spPr",
|
|
5088
|
+
"txPr",
|
|
5089
|
+
"crossAx",
|
|
5090
|
+
"crosses",
|
|
5091
|
+
"crossesAt",
|
|
5092
|
+
"crossBetween",
|
|
5093
|
+
"majorUnit",
|
|
5094
|
+
"minorUnit",
|
|
5095
|
+
"auto",
|
|
5096
|
+
"lblAlgn",
|
|
5097
|
+
"lblOffset",
|
|
5098
|
+
"tickLblSkip",
|
|
5099
|
+
"tickMarkSkip",
|
|
5100
|
+
"noMultiLvlLbl",
|
|
5101
|
+
"baseTimeUnit",
|
|
5102
|
+
"dispUnits",
|
|
5103
|
+
"extLst"
|
|
5104
|
+
]);
|
|
5105
|
+
function parseAxis(context, element, kind) {
|
|
5106
|
+
reportUnmodelled(context, element, AXIS);
|
|
5107
|
+
const number = (local) => cNumber(context, element, local);
|
|
5108
|
+
const scalingElement = cChild(element, "scaling");
|
|
5109
|
+
if (scalingElement) reportUnmodelled(context, scalingElement, SCALING);
|
|
5110
|
+
const scaling = assignDefined(
|
|
5111
|
+
{},
|
|
5112
|
+
{
|
|
5113
|
+
orientation: cVal(scalingElement, "orientation"),
|
|
5114
|
+
min: cNumber(context, scalingElement, "min"),
|
|
5115
|
+
max: cNumber(context, scalingElement, "max"),
|
|
5116
|
+
logBase: cNumber(context, scalingElement, "logBase")
|
|
5117
|
+
}
|
|
5118
|
+
);
|
|
5119
|
+
const title = cChild(element, "title");
|
|
5120
|
+
return assignDefined(
|
|
5121
|
+
{
|
|
5122
|
+
kind,
|
|
5123
|
+
scaling,
|
|
5124
|
+
majorGridlines: cChild(element, "majorGridlines") !== void 0,
|
|
5125
|
+
minorGridlines: cChild(element, "minorGridlines") !== void 0
|
|
5126
|
+
},
|
|
5127
|
+
{
|
|
5128
|
+
majorGridlinesSpPr: chartLines(element, "majorGridlines")?.spPr,
|
|
5129
|
+
minorGridlinesSpPr: chartLines(element, "minorGridlines")?.spPr,
|
|
5130
|
+
id: number("axId"),
|
|
5131
|
+
crossAxisId: number("crossAx"),
|
|
5132
|
+
position: cVal(element, "axPos"),
|
|
5133
|
+
deleted: cBool(context, element, "delete"),
|
|
5134
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
5135
|
+
numberFormat: numberFormat(element),
|
|
5136
|
+
majorTickMark: cVal(element, "majorTickMark"),
|
|
5137
|
+
minorTickMark: cVal(element, "minorTickMark"),
|
|
5138
|
+
tickLabelPosition: cVal(element, "tickLblPos"),
|
|
5139
|
+
crosses: cVal(element, "crosses"),
|
|
5140
|
+
crossesAt: number("crossesAt"),
|
|
5141
|
+
crossBetween: cVal(element, "crossBetween"),
|
|
5142
|
+
majorUnit: number("majorUnit"),
|
|
5143
|
+
minorUnit: number("minorUnit"),
|
|
5144
|
+
auto: cBool(context, element, "auto"),
|
|
5145
|
+
labelAlign: cVal(element, "lblAlgn"),
|
|
5146
|
+
labelOffset: number("lblOffset"),
|
|
5147
|
+
tickLabelSkip: number("tickLblSkip"),
|
|
5148
|
+
tickMarkSkip: number("tickMarkSkip"),
|
|
5149
|
+
noMultiLevelLabels: cBool(context, element, "noMultiLvlLbl"),
|
|
5150
|
+
baseTimeUnit: cVal(element, "baseTimeUnit"),
|
|
5151
|
+
displayUnits: parseDisplayUnits(context, cChild(element, "dispUnits")),
|
|
5152
|
+
spPr: shapeProperties(element),
|
|
5153
|
+
txPr: textProperties(element),
|
|
5154
|
+
extLst: extensionList(element)
|
|
5155
|
+
}
|
|
5156
|
+
);
|
|
5157
|
+
}
|
|
5158
|
+
var PLOT_AREA = /* @__PURE__ */ new Set(["layout", "dTable", "spPr", "extLst"]);
|
|
5159
|
+
function parsePlotArea(context, element) {
|
|
5160
|
+
const plotArea = { groups: [], axes: [] };
|
|
5161
|
+
if (!element) {
|
|
5162
|
+
context.issues.push({
|
|
5163
|
+
code: "CHART_PLOT_AREA_MISSING",
|
|
5164
|
+
message: "The chart has no c:plotArea."
|
|
5165
|
+
});
|
|
5166
|
+
return plotArea;
|
|
5167
|
+
}
|
|
5168
|
+
const handled = new Set(PLOT_AREA);
|
|
5169
|
+
for (const child3 of elements(element)) {
|
|
5170
|
+
if (CHART_GROUP_ELEMENTS[child3.localName]) {
|
|
5171
|
+
plotArea.groups.push(parseGroup(context, child3));
|
|
5172
|
+
handled.add(child3.localName);
|
|
5173
|
+
}
|
|
5174
|
+
const axis = AXIS_ELEMENTS[child3.localName];
|
|
5175
|
+
if (axis) {
|
|
5176
|
+
plotArea.axes.push(parseAxis(context, child3, axis));
|
|
5177
|
+
handled.add(child3.localName);
|
|
5178
|
+
}
|
|
5179
|
+
}
|
|
5180
|
+
reportUnmodelled(context, element, handled);
|
|
5181
|
+
return assignDefined(plotArea, {
|
|
5182
|
+
layout: manualLayout(element),
|
|
5183
|
+
dataTable: parseDataTable(context, cChild(element, "dTable")),
|
|
5184
|
+
spPr: shapeProperties(element),
|
|
5185
|
+
extLst: extensionList(element)
|
|
5186
|
+
});
|
|
5187
|
+
}
|
|
5188
|
+
|
|
5189
|
+
// chart/parse-space.ts
|
|
5190
|
+
var LEGEND = /* @__PURE__ */ new Set(["legendPos", "legendEntry", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
5191
|
+
function parseLegend(context, element) {
|
|
5192
|
+
reportUnmodelled(context, element, LEGEND);
|
|
5193
|
+
const entries = children(element, "legendEntry", NS.c).map(
|
|
5194
|
+
(entry2) => assignDefined(
|
|
5195
|
+
{},
|
|
5196
|
+
{
|
|
5197
|
+
index: cNumber(context, entry2, "idx"),
|
|
5198
|
+
deleted: cBool(context, entry2, "delete"),
|
|
5199
|
+
txPr: textProperties(entry2)
|
|
5200
|
+
}
|
|
5201
|
+
)
|
|
5202
|
+
);
|
|
5203
|
+
return assignDefined(
|
|
5204
|
+
{ entries },
|
|
5205
|
+
{
|
|
5206
|
+
position: cVal(element, "legendPos"),
|
|
5207
|
+
overlay: cBool(context, element, "overlay"),
|
|
5208
|
+
layout: manualLayout(element),
|
|
5209
|
+
spPr: shapeProperties(element),
|
|
5210
|
+
txPr: textProperties(element),
|
|
5211
|
+
extLst: extensionList(element)
|
|
5212
|
+
}
|
|
5213
|
+
);
|
|
5214
|
+
}
|
|
5215
|
+
var VIEW_3D = /* @__PURE__ */ new Set(["rotX", "rotY", "depthPercent", "hPercent", "rAngAx", "perspective"]);
|
|
5216
|
+
function parseView3D(context, element) {
|
|
5217
|
+
reportUnmodelled(context, element, VIEW_3D);
|
|
5218
|
+
return assignDefined(
|
|
5219
|
+
{},
|
|
5220
|
+
{
|
|
5221
|
+
rotX: cNumber(context, element, "rotX"),
|
|
5222
|
+
rotY: cNumber(context, element, "rotY"),
|
|
5223
|
+
depthPercent: cNumber(context, element, "depthPercent"),
|
|
5224
|
+
heightPercent: cNumber(context, element, "hPercent"),
|
|
5225
|
+
rightAngleAxes: cBool(context, element, "rAngAx"),
|
|
5226
|
+
perspective: cNumber(context, element, "perspective")
|
|
5227
|
+
}
|
|
5228
|
+
);
|
|
5229
|
+
}
|
|
5230
|
+
function chartStyle(context, space) {
|
|
5231
|
+
const direct = cNumber(context, space, "style");
|
|
5232
|
+
if (direct !== void 0) return direct;
|
|
5233
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
5234
|
+
const style = cNumber(context, first(alternate, "Fallback", NS.mc), "style");
|
|
5235
|
+
if (style !== void 0) return style;
|
|
5236
|
+
}
|
|
5237
|
+
return void 0;
|
|
5238
|
+
}
|
|
5239
|
+
function c14Style(space) {
|
|
5240
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
5241
|
+
const raw = attribute(first(first(alternate, "Choice", NS.mc), "style", NS.c14, false), "val");
|
|
5242
|
+
const value = raw?.trim() ? Number(raw) : Number.NaN;
|
|
5243
|
+
if (Number.isFinite(value)) return value;
|
|
5244
|
+
}
|
|
5245
|
+
return void 0;
|
|
5246
|
+
}
|
|
5247
|
+
function namespaceDeclarations(root) {
|
|
5248
|
+
const out = [];
|
|
5249
|
+
for (const item of Array.from(root.attributes)) {
|
|
5250
|
+
if (item.prefix !== "xmlns" || CHART_ROOT_BINDINGS.get(item.localName) === item.value) continue;
|
|
5251
|
+
out.push({ prefix: item.localName, uri: item.value });
|
|
5252
|
+
}
|
|
5253
|
+
return out.length ? out : void 0;
|
|
5254
|
+
}
|
|
5255
|
+
var CHART = /* @__PURE__ */ new Set([
|
|
5256
|
+
"title",
|
|
5257
|
+
"autoTitleDeleted",
|
|
5258
|
+
"view3D",
|
|
5259
|
+
"floor",
|
|
5260
|
+
"sideWall",
|
|
5261
|
+
"backWall",
|
|
5262
|
+
"plotArea",
|
|
5263
|
+
"legend",
|
|
5264
|
+
"plotVisOnly",
|
|
5265
|
+
"dispBlanksAs",
|
|
5266
|
+
"showDLblsOverMax",
|
|
5267
|
+
"extLst"
|
|
5268
|
+
]);
|
|
5269
|
+
var SPACE = /* @__PURE__ */ new Set([
|
|
5270
|
+
"date1904",
|
|
5271
|
+
"lang",
|
|
5272
|
+
"roundedCorners",
|
|
5273
|
+
"AlternateContent",
|
|
5274
|
+
"style",
|
|
5275
|
+
"chart",
|
|
5276
|
+
"spPr",
|
|
5277
|
+
"txPr",
|
|
5278
|
+
"externalData",
|
|
5279
|
+
"printSettings",
|
|
5280
|
+
"userShapes",
|
|
5281
|
+
"extLst"
|
|
5282
|
+
]);
|
|
5283
|
+
function parseChartSpace(source) {
|
|
5284
|
+
const context = { issues: [] };
|
|
5285
|
+
const root = typeof source === "string" ? parseXml(source, { label: "Chart part" }).documentElement : source;
|
|
5286
|
+
if (root.localName !== "chartSpace" || root.namespaceURI && root.namespaceURI !== NS.c) {
|
|
5287
|
+
context.issues.push({
|
|
5288
|
+
code: "CHART_ROOT_UNEXPECTED",
|
|
5289
|
+
message: `The part root is {${root.namespaceURI ?? ""}}${root.localName}, not c:chartSpace (chartex parts are not modelled).`
|
|
5290
|
+
});
|
|
5291
|
+
return { chartSpace: { plotArea: { groups: [], axes: [] } }, issues: context.issues };
|
|
5292
|
+
}
|
|
5293
|
+
reportUnmodelled(context, root, SPACE);
|
|
5294
|
+
const chart = cChild(root, "chart");
|
|
5295
|
+
if (!chart)
|
|
5296
|
+
context.issues.push({ code: "CHART_CHART_MISSING", message: "The part has no c:chart." });
|
|
5297
|
+
else reportUnmodelled(context, chart, CHART);
|
|
5298
|
+
const title = cChild(chart, "title");
|
|
5299
|
+
const legend = cChild(chart, "legend");
|
|
5300
|
+
const view3D = cChild(chart, "view3D");
|
|
5301
|
+
const printSettings = cChild(root, "printSettings");
|
|
5302
|
+
const chartSpace = assignDefined(
|
|
5303
|
+
{ plotArea: parsePlotArea(context, cChild(chart, "plotArea")) },
|
|
5304
|
+
{
|
|
5305
|
+
date1904: cBool(context, root, "date1904"),
|
|
5306
|
+
language: cVal(root, "lang"),
|
|
5307
|
+
roundedCorners: cBool(context, root, "roundedCorners"),
|
|
5308
|
+
style: chartStyle(context, root),
|
|
5309
|
+
c14Style: c14Style(root),
|
|
5310
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
5311
|
+
autoTitleDeleted: cBool(context, chart, "autoTitleDeleted"),
|
|
5312
|
+
view3D: view3D ? parseView3D(context, view3D) : void 0,
|
|
5313
|
+
floor: parseSurface(context, cChild(chart, "floor")),
|
|
5314
|
+
sideWall: parseSurface(context, cChild(chart, "sideWall")),
|
|
5315
|
+
backWall: parseSurface(context, cChild(chart, "backWall")),
|
|
5316
|
+
legend: legend ? parseLegend(context, legend) : void 0,
|
|
5317
|
+
plotVisibleOnly: cBool(context, chart, "plotVisOnly"),
|
|
5318
|
+
displayBlanksAs: cVal(chart, "dispBlanksAs"),
|
|
5319
|
+
showDataLabelsOverMax: cBool(context, chart, "showDLblsOverMax"),
|
|
5320
|
+
spPr: shapeProperties(root),
|
|
5321
|
+
txPr: textProperties(root),
|
|
5322
|
+
externalDataRelId: relAttr(cChild(root, "externalData"), "id") || void 0,
|
|
5323
|
+
externalDataAutoUpdate: cBool(context, cChild(root, "externalData"), "autoUpdate"),
|
|
5324
|
+
printSettings: printSettings ? buildXml(printSettings) : void 0,
|
|
5325
|
+
userShapesRelId: relAttr(cChild(root, "userShapes"), "id") || void 0,
|
|
5326
|
+
chartExtLst: extensionList(chart),
|
|
5327
|
+
extLst: extensionList(root),
|
|
5328
|
+
namespaceDeclarations: namespaceDeclarations(root)
|
|
5329
|
+
}
|
|
5330
|
+
);
|
|
5331
|
+
return { chartSpace, issues: context.issues };
|
|
5332
|
+
}
|
|
5333
|
+
|
|
5334
|
+
// docx/breaks.ts
|
|
5335
|
+
function isCachedPageBreak(element) {
|
|
5336
|
+
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
5337
|
+
(attribute2) => attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
5338
|
+
);
|
|
5339
|
+
}
|
|
5340
|
+
function hasSpecialBreak(element) {
|
|
5341
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5342
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5343
|
+
if (attribute2.namespaceURI !== WORD_NS) return true;
|
|
5344
|
+
if (attribute2.localName === "type") {
|
|
5345
|
+
if (attribute2.value !== "textWrapping") return true;
|
|
5346
|
+
} else if (attribute2.localName === "clear") {
|
|
5347
|
+
if (attribute2.value !== "none") return true;
|
|
5348
|
+
} else return true;
|
|
5349
|
+
}
|
|
5350
|
+
return false;
|
|
5351
|
+
}
|
|
5352
|
+
function classifyBreak(element) {
|
|
5353
|
+
const type = getW(element, "type");
|
|
5354
|
+
return type === "page" || type === "column" ? type : "textWrapping";
|
|
5355
|
+
}
|
|
5356
|
+
function isModeledBreak(element) {
|
|
5357
|
+
const kind = classifyBreak(element);
|
|
5358
|
+
if (kind === "textWrapping") return false;
|
|
5359
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5360
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5361
|
+
if (attribute2.namespaceURI !== WORD_NS || attribute2.localName !== "type") return false;
|
|
5362
|
+
}
|
|
5363
|
+
return true;
|
|
5364
|
+
}
|
|
5365
|
+
|
|
5366
|
+
// docx/parse-warnings.ts
|
|
5367
|
+
function hasAny(document, names) {
|
|
5368
|
+
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
5369
|
+
}
|
|
5370
|
+
function warningsFor(document) {
|
|
5371
|
+
const warnings = [];
|
|
5372
|
+
const features = [
|
|
5373
|
+
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
5374
|
+
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
5375
|
+
[
|
|
5376
|
+
["fldSimple", "instrText", "fldChar"],
|
|
5377
|
+
"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."
|
|
5378
|
+
],
|
|
5379
|
+
[
|
|
5380
|
+
["moveFrom", "moveTo"],
|
|
5381
|
+
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
5382
|
+
],
|
|
5383
|
+
[
|
|
5384
|
+
["rPrChange"],
|
|
5385
|
+
"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."
|
|
5386
|
+
],
|
|
5387
|
+
[
|
|
5388
|
+
["pPrChange"],
|
|
5389
|
+
"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."
|
|
5390
|
+
],
|
|
5391
|
+
[
|
|
5392
|
+
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
5393
|
+
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
5394
|
+
]
|
|
5395
|
+
];
|
|
5396
|
+
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
5397
|
+
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
5398
|
+
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
5399
|
+
))
|
|
5400
|
+
warnings.push(
|
|
5401
|
+
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
5402
|
+
);
|
|
5403
|
+
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
5404
|
+
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
5405
|
+
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
5406
|
+
(cr) => cr.attributes.length > 0
|
|
5407
|
+
);
|
|
5408
|
+
if (specialBreak)
|
|
5409
|
+
warnings.push(
|
|
5410
|
+
"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."
|
|
5411
|
+
);
|
|
5412
|
+
return warnings;
|
|
5413
|
+
}
|
|
5414
|
+
function forEachParagraph2(blocks, visit) {
|
|
5415
|
+
for (const block of blocks) {
|
|
5416
|
+
if (block.type === "paragraph") visit(block);
|
|
5417
|
+
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
5418
|
+
}
|
|
5419
|
+
}
|
|
5420
|
+
function imageAndBookmarkWarnings(blocks) {
|
|
5421
|
+
const warnings = [];
|
|
5422
|
+
let hasPicture = false;
|
|
5423
|
+
let hasAnchored = false;
|
|
5424
|
+
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
5425
|
+
let hasBookmarks = false;
|
|
5426
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
5427
|
+
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
5428
|
+
for (const run of paragraph.runs) {
|
|
5429
|
+
if (!run.image) continue;
|
|
5430
|
+
if (run.image.unsupported) {
|
|
5431
|
+
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
5432
|
+
unsupportedKinds.add(run.image.unsupported);
|
|
5433
|
+
} else hasPicture = true;
|
|
5434
|
+
if (run.image.anchored) hasAnchored = true;
|
|
5435
|
+
}
|
|
5436
|
+
});
|
|
5437
|
+
if (hasPicture)
|
|
5438
|
+
warnings.push(
|
|
5439
|
+
"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."
|
|
5440
|
+
);
|
|
5441
|
+
if (hasAnchored)
|
|
5442
|
+
warnings.push(
|
|
5443
|
+
"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."
|
|
5444
|
+
);
|
|
5445
|
+
if (unsupportedKinds.size)
|
|
5446
|
+
warnings.push(
|
|
5447
|
+
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
5448
|
+
);
|
|
5449
|
+
if (hasBookmarks)
|
|
5450
|
+
warnings.push(
|
|
5451
|
+
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
5452
|
+
);
|
|
5453
|
+
return warnings;
|
|
5454
|
+
}
|
|
5455
|
+
|
|
5456
|
+
// docx/chart.ts
|
|
5457
|
+
var CHART_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
|
|
5458
|
+
var CHART_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";
|
|
5459
|
+
var PACKAGE_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package";
|
|
5460
|
+
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.";
|
|
5461
|
+
function parseChartGraphic(graphicData, docPr, rels, isAnchor) {
|
|
5462
|
+
const element = Array.from(graphicData.childNodes).find(
|
|
5463
|
+
(node) => isElement(node) && node.localName === "chart"
|
|
5464
|
+
);
|
|
5465
|
+
const relId = getR(element, "id") || void 0;
|
|
5466
|
+
const issues = [];
|
|
5467
|
+
let partName;
|
|
5468
|
+
const rel = relId ? rels.get(relId) : void 0;
|
|
5469
|
+
if (!relId)
|
|
5470
|
+
issues.push({
|
|
5471
|
+
code: "CHART_RELATIONSHIP_MISSING",
|
|
5472
|
+
message: "The graphic has no c:chart/@r:id."
|
|
5473
|
+
});
|
|
5474
|
+
else if (!rel || rel.mode === "External")
|
|
5475
|
+
issues.push({
|
|
5476
|
+
code: "CHART_RELATIONSHIP_UNRESOLVED",
|
|
5477
|
+
message: `Chart relationship ${relId} does not point at a part in this package.`
|
|
5478
|
+
});
|
|
5479
|
+
else {
|
|
5480
|
+
if (rel.type !== CHART_RELATIONSHIP_TYPE)
|
|
5481
|
+
issues.push({
|
|
5482
|
+
code: "CHART_RELATIONSHIP_TYPE",
|
|
5483
|
+
message: `Chart relationship ${relId} has type ${rel.type}, expected ${CHART_RELATIONSHIP_TYPE}.`
|
|
5484
|
+
});
|
|
5485
|
+
partName = resolvePartPath("word/document.xml", rel.target);
|
|
5486
|
+
}
|
|
5487
|
+
const name = docPr?.getAttribute("name") || void 0;
|
|
5488
|
+
const id = docPr?.getAttribute("id") || void 0;
|
|
5489
|
+
return {
|
|
5490
|
+
placement: isAnchor ? "anchor" : "inline",
|
|
5491
|
+
...name ? { name } : {},
|
|
5492
|
+
...id ? { id } : {},
|
|
5493
|
+
...relId ? { relId } : {},
|
|
5494
|
+
...partName ? { partName } : {},
|
|
5495
|
+
notice: CHART_NOTICE,
|
|
5496
|
+
issues
|
|
5497
|
+
};
|
|
5498
|
+
}
|
|
5499
|
+
async function resolveChartPart(chart, readText) {
|
|
5500
|
+
if (!chart.partName) return;
|
|
5501
|
+
try {
|
|
5502
|
+
const xml = await readText(chart.partName);
|
|
5503
|
+
if (xml === void 0) {
|
|
5504
|
+
chart.issues.push({
|
|
5505
|
+
code: "CHART_PART_MISSING",
|
|
5506
|
+
message: `The chart part ${chart.partName} is not in the package.`
|
|
5507
|
+
});
|
|
5508
|
+
return;
|
|
5509
|
+
}
|
|
5510
|
+
const root = parseXml(xml, { label: "Chart part" }).documentElement;
|
|
5511
|
+
const { chartSpace, issues } = parseChartSpace(root);
|
|
5512
|
+
chart.chartSpace = chartSpace;
|
|
5513
|
+
chart.issues.push(...issues);
|
|
5514
|
+
const title = chartSpace.autoTitleDeleted ? void 0 : chartSpace.title?.text;
|
|
5515
|
+
if (title) chart.title = title;
|
|
5516
|
+
if (chartSpace.plotArea.groups.length) {
|
|
5517
|
+
const formatting = readChartFormatting(root);
|
|
5518
|
+
if (formatting) chart.formatting = formatting;
|
|
5519
|
+
}
|
|
5520
|
+
const rels = parseRelationships(await readText(relationshipsPartFor(chart.partName)));
|
|
5521
|
+
const dataRelId = chartSpace.externalDataRelId;
|
|
5522
|
+
const dataRel = dataRelId ? rels.get(dataRelId) : void 0;
|
|
5523
|
+
if (dataRel && dataRel.mode !== "External" && dataRel.type === PACKAGE_RELATIONSHIP_TYPE)
|
|
5524
|
+
chart.workbookPartName = resolvePartPath(chart.partName, dataRel.target);
|
|
5525
|
+
const colorsRel = [...rels.values()].find(
|
|
5526
|
+
(rel) => rel.mode !== "External" && rel.type.endsWith("/chartColorStyle")
|
|
5527
|
+
);
|
|
5528
|
+
const colorsXml = colorsRel && await readText(resolvePartPath(chart.partName, colorsRel.target));
|
|
5529
|
+
const palette = colorsXml ? chartColorStyleId(colorsXml) : void 0;
|
|
5530
|
+
if (palette !== void 0) chart.colorPalette = palette;
|
|
5531
|
+
} catch (error) {
|
|
5532
|
+
chart.issues.push({
|
|
5533
|
+
code: "CHART_PART_UNREADABLE",
|
|
5534
|
+
message: `The chart part ${chart.partName} could not be read: ${error instanceof Error ? error.message : String(error)}`
|
|
5535
|
+
});
|
|
5536
|
+
}
|
|
5537
|
+
}
|
|
5538
|
+
function chartsIn(blocks) {
|
|
5539
|
+
const charts = [];
|
|
5540
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
5541
|
+
for (const run of paragraph.runs) if (run.image?.chart) charts.push(run.image.chart);
|
|
5542
|
+
});
|
|
5543
|
+
return charts;
|
|
5544
|
+
}
|
|
5545
|
+
async function resolveDocumentCharts(blocks, readText) {
|
|
5546
|
+
for (const chart of chartsIn(blocks)) await resolveChartPart(chart, readText);
|
|
5547
|
+
}
|
|
5548
|
+
|
|
4366
5549
|
// docx/drawing.ts
|
|
4367
5550
|
var WP_NS2 = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
|
|
4368
5551
|
var A_NS2 = "http://schemas.openxmlformats.org/drawingml/2006/main";
|
|
@@ -4478,6 +5661,7 @@ function parseModernDrawing(node, context) {
|
|
|
4478
5661
|
...svg ? { svgPartName: svg.partName } : {}
|
|
4479
5662
|
};
|
|
4480
5663
|
const diagram = uri === DIAGRAM_GRAPHIC_URI && graphicData ? parseDiagramGraphic(graphicData, extent, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
5664
|
+
const chart = uri === CHART_GRAPHIC_URI && graphicData ? parseChartGraphic(graphicData, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
4481
5665
|
const textBox = uri.includes("wordprocessingShape") ? textBoxParagraphs(graphicData) : void 0;
|
|
4482
5666
|
return {
|
|
4483
5667
|
relId: relId ?? "",
|
|
@@ -4488,6 +5672,7 @@ function parseModernDrawing(node, context) {
|
|
|
4488
5672
|
...definedProps({ altText, title, anchored }),
|
|
4489
5673
|
unsupported: textBox ? "Text box" : unsupportedKindLabel(uri),
|
|
4490
5674
|
...diagram ? { diagram } : {},
|
|
5675
|
+
...chart ? { chart } : {},
|
|
4491
5676
|
...diagram && placement ? { placement } : {},
|
|
4492
5677
|
...textBox ? { textBoxText: textBox } : {},
|
|
4493
5678
|
...textBox && isSimpleTextBox(graphicData, Boolean(anchored)) ? { textBoxEditable: true, textBoxBorder: textBoxHasBorder(graphicData) } : {}
|
|
@@ -4567,8 +5752,8 @@ function findDrawingChild(run) {
|
|
|
4567
5752
|
if (isElement(child3) && (named2(child3, "drawing") || named2(child3, "pict"))) return child3;
|
|
4568
5753
|
return void 0;
|
|
4569
5754
|
}
|
|
4570
|
-
function sameUnderlyingImage(
|
|
4571
|
-
return Boolean(
|
|
5755
|
+
function sameUnderlyingImage(a2, b) {
|
|
5756
|
+
return Boolean(a2.partName) && a2.relId === b.relId && a2.partName === b.partName;
|
|
4572
5757
|
}
|
|
4573
5758
|
function walk(root, visit) {
|
|
4574
5759
|
const stack = [root];
|
|
@@ -4778,17 +5963,17 @@ function setBooleanAttribute(doc, props, local, value) {
|
|
|
4778
5963
|
}
|
|
4779
5964
|
setAttribute6(element, "val", value ? "1" : "0");
|
|
4780
5965
|
}
|
|
4781
|
-
function setLanguageAttribute(doc, props,
|
|
5966
|
+
function setLanguageAttribute(doc, props, attribute2, value) {
|
|
4782
5967
|
let language = first2(props, "lang");
|
|
4783
5968
|
if (value === void 0 || value === "") {
|
|
4784
5969
|
if (!language) return;
|
|
4785
|
-
language.removeAttributeNS(WORD_NS,
|
|
5970
|
+
language.removeAttributeNS(WORD_NS, attribute2);
|
|
4786
5971
|
} else {
|
|
4787
5972
|
if (!language) {
|
|
4788
5973
|
language = makeW(doc, "lang");
|
|
4789
5974
|
props.appendChild(language);
|
|
4790
5975
|
}
|
|
4791
|
-
setAttribute6(language,
|
|
5976
|
+
setAttribute6(language, attribute2, value);
|
|
4792
5977
|
}
|
|
4793
5978
|
if (language && !language.attributes.length && !language.childNodes.length)
|
|
4794
5979
|
props.removeChild(language);
|
|
@@ -4888,8 +6073,8 @@ function setRunProperties(doc, runNode, run, base) {
|
|
|
4888
6073
|
};
|
|
4889
6074
|
for (const script of ["ascii", "hAnsi", "eastAsia", "cs"]) {
|
|
4890
6075
|
const role = run.fontTheme?.[script];
|
|
4891
|
-
const [
|
|
4892
|
-
if (role) setAttribute6(fonts,
|
|
6076
|
+
const [attribute2, suffix] = themeAttribute[script];
|
|
6077
|
+
if (role) setAttribute6(fonts, attribute2, `${role}${suffix}`);
|
|
4893
6078
|
}
|
|
4894
6079
|
props.appendChild(fonts);
|
|
4895
6080
|
}
|
|
@@ -4977,8 +6162,8 @@ function createRun(doc, run, base, old, allocator) {
|
|
|
4977
6162
|
}
|
|
4978
6163
|
|
|
4979
6164
|
// docx/inline-source.ts
|
|
4980
|
-
function samePictureSource(
|
|
4981
|
-
return !!
|
|
6165
|
+
function samePictureSource(a2, b) {
|
|
6166
|
+
return !!a2?.partName && a2.partName === b?.partName && a2.relId === b?.relId;
|
|
4982
6167
|
}
|
|
4983
6168
|
function inlineSourceLookup(runs, base) {
|
|
4984
6169
|
const usedPictures = /* @__PURE__ */ new Set();
|
|
@@ -5020,8 +6205,8 @@ function takeSimpleFieldCommentEdges(doc, runs, start, end, opens, closes) {
|
|
|
5020
6205
|
}
|
|
5021
6206
|
|
|
5022
6207
|
// docx/field-lock.ts
|
|
5023
|
-
function sameFieldFlags(
|
|
5024
|
-
return
|
|
6208
|
+
function sameFieldFlags(a2, b) {
|
|
6209
|
+
return a2?.locked === b?.locked && a2?.dirty === b?.dirty;
|
|
5025
6210
|
}
|
|
5026
6211
|
var MATH_NAMESPACES = /* @__PURE__ */ new Set([
|
|
5027
6212
|
"http://schemas.openxmlformats.org/officeDocument/2006/math",
|
|
@@ -5048,38 +6233,6 @@ function preserveEquation(run, base, old) {
|
|
|
5048
6233
|
return old.cloneNode(true);
|
|
5049
6234
|
}
|
|
5050
6235
|
|
|
5051
|
-
// docx/breaks.ts
|
|
5052
|
-
function isCachedPageBreak(element) {
|
|
5053
|
-
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
5054
|
-
(attribute) => attribute.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
5055
|
-
);
|
|
5056
|
-
}
|
|
5057
|
-
function hasSpecialBreak(element) {
|
|
5058
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
5059
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5060
|
-
if (attribute.namespaceURI !== WORD_NS) return true;
|
|
5061
|
-
if (attribute.localName === "type") {
|
|
5062
|
-
if (attribute.value !== "textWrapping") return true;
|
|
5063
|
-
} else if (attribute.localName === "clear") {
|
|
5064
|
-
if (attribute.value !== "none") return true;
|
|
5065
|
-
} else return true;
|
|
5066
|
-
}
|
|
5067
|
-
return false;
|
|
5068
|
-
}
|
|
5069
|
-
function classifyBreak(element) {
|
|
5070
|
-
const type = getW(element, "type");
|
|
5071
|
-
return type === "page" || type === "column" ? type : "textWrapping";
|
|
5072
|
-
}
|
|
5073
|
-
function isModeledBreak(element) {
|
|
5074
|
-
const kind = classifyBreak(element);
|
|
5075
|
-
if (kind === "textWrapping") return false;
|
|
5076
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
5077
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5078
|
-
if (attribute.namespaceURI !== WORD_NS || attribute.localName !== "type") return false;
|
|
5079
|
-
}
|
|
5080
|
-
return true;
|
|
5081
|
-
}
|
|
5082
|
-
|
|
5083
6236
|
// docx/parse-revisions.ts
|
|
5084
6237
|
var REVISION_WRAPPERS = {
|
|
5085
6238
|
ins: "insert",
|
|
@@ -5101,7 +6254,7 @@ function trackMoveRange(item, moves) {
|
|
|
5101
6254
|
const open = moves[range.kind];
|
|
5102
6255
|
if (range.start) open.push({ name: getW(item, "name") ?? id, id });
|
|
5103
6256
|
else {
|
|
5104
|
-
const index = open.findIndex((
|
|
6257
|
+
const index = open.findIndex((entry2) => entry2.id === id);
|
|
5105
6258
|
if (index >= 0) open.splice(index, 1);
|
|
5106
6259
|
}
|
|
5107
6260
|
return true;
|
|
@@ -5274,10 +6427,10 @@ function replaceableInlineChildren(paragraph) {
|
|
|
5274
6427
|
(child3) => isElement(child3) && (isEquationElement(child3) || named2(child3, "r") || named2(child3, "hyperlink") || named2(child3, "fldSimple") || isRevisionWrapperElement(child3) || isCommentAnchorElement(child3))
|
|
5275
6428
|
);
|
|
5276
6429
|
}
|
|
5277
|
-
function sameLink(
|
|
5278
|
-
if (!
|
|
5279
|
-
if (!
|
|
5280
|
-
return
|
|
6430
|
+
function sameLink(a2, b) {
|
|
6431
|
+
if (!a2 && !b) return true;
|
|
6432
|
+
if (!a2 || !b) return false;
|
|
6433
|
+
return a2.href === b.href && a2.anchor === b.anchor && a2.tooltip === b.tooltip;
|
|
5281
6434
|
}
|
|
5282
6435
|
function setW6(element, local, value) {
|
|
5283
6436
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
@@ -5366,10 +6519,10 @@ function containerGroup(run) {
|
|
|
5366
6519
|
};
|
|
5367
6520
|
return void 0;
|
|
5368
6521
|
}
|
|
5369
|
-
function sameGroup(
|
|
5370
|
-
if (!
|
|
5371
|
-
if (
|
|
5372
|
-
return
|
|
6522
|
+
function sameGroup(a2, b) {
|
|
6523
|
+
if (!a2 || !b) return a2 === b;
|
|
6524
|
+
if (a2.kind === "link" && b.kind === "link") return sameLink(a2.link, b.link);
|
|
6525
|
+
return a2.kind === "simpleField" && b.kind === "simpleField" && a2.instr === b.instr && a2.instanceId === b.instanceId && sameFieldFlags(a2.fieldFlags, b.fieldFlags);
|
|
5373
6526
|
}
|
|
5374
6527
|
|
|
5375
6528
|
// docx/paragraph-properties.ts
|
|
@@ -5601,8 +6754,8 @@ var IMAGE_RELATIONSHIP_TYPE = RELATIONSHIP_TYPES.image;
|
|
|
5601
6754
|
function scanUsedRelationshipIds(doc) {
|
|
5602
6755
|
const used = /* @__PURE__ */ new Set();
|
|
5603
6756
|
const visit = (node) => {
|
|
5604
|
-
for (const
|
|
5605
|
-
if (
|
|
6757
|
+
for (const attribute2 of Array.from(node.attributes))
|
|
6758
|
+
if (attribute2.namespaceURI === REL_NS) used.add(attribute2.value);
|
|
5606
6759
|
for (const child3 of Array.from(node.childNodes)) if (isElement(child3)) visit(child3);
|
|
5607
6760
|
};
|
|
5608
6761
|
if (doc.documentElement) visit(doc.documentElement);
|
|
@@ -5840,9 +6993,9 @@ function isXsdDateTime(value) {
|
|
|
5840
6993
|
return !zone || Number(zone[1]) <= 14 && Number(zone[2]) <= 59;
|
|
5841
6994
|
}
|
|
5842
6995
|
var Checker = class _Checker {
|
|
5843
|
-
constructor(issues,
|
|
6996
|
+
constructor(issues, path2) {
|
|
5844
6997
|
this.issues = issues;
|
|
5845
|
-
this.path =
|
|
6998
|
+
this.path = path2;
|
|
5846
6999
|
}
|
|
5847
7000
|
issues;
|
|
5848
7001
|
path;
|
|
@@ -5888,78 +7041,78 @@ var Checker = class _Checker {
|
|
|
5888
7041
|
|
|
5889
7042
|
// docx/validate-paragraph.ts
|
|
5890
7043
|
var isFraction = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1;
|
|
5891
|
-
function validateThemeReference(
|
|
7044
|
+
function validateThemeReference(c2, field, value) {
|
|
5892
7045
|
if (value === void 0) return;
|
|
5893
|
-
const at =
|
|
7046
|
+
const at = c2.at(`.${field}`);
|
|
5894
7047
|
at.theme("token", value.token);
|
|
5895
7048
|
at.check("tint", value.tint, isFraction, "must be a fraction between 0 and 1");
|
|
5896
7049
|
at.check("shade", value.shade, isFraction, "must be a fraction between 0 and 1");
|
|
5897
7050
|
}
|
|
5898
|
-
function validateRevision(
|
|
7051
|
+
function validateRevision(c2, field, revision) {
|
|
5899
7052
|
if (revision === void 0) return;
|
|
5900
|
-
|
|
7053
|
+
c2.at(`.${field}`).dateTime("date", revision.date);
|
|
5901
7054
|
}
|
|
5902
|
-
function validateFontSize(
|
|
5903
|
-
|
|
7055
|
+
function validateFontSize(c2, value) {
|
|
7056
|
+
c2.check(
|
|
5904
7057
|
"fontSize",
|
|
5905
7058
|
value,
|
|
5906
7059
|
(v) => typeof v === "number" && Number.isFinite(v) && Math.round(v * 2) >= 0,
|
|
5907
7060
|
"must be a finite, non-negative point size that converts to whole half-points (ST_HpsMeasure)"
|
|
5908
7061
|
);
|
|
5909
7062
|
}
|
|
5910
|
-
function validateRun(
|
|
5911
|
-
|
|
5912
|
-
validateFontSize(
|
|
5913
|
-
|
|
7063
|
+
function validateRun(c2, run) {
|
|
7064
|
+
c2.enum("ligatures", run.ligatures, isLigatures, "ST_Ligatures");
|
|
7065
|
+
validateFontSize(c2, run.fontSize);
|
|
7066
|
+
c2.check(
|
|
5914
7067
|
"textScalePercent",
|
|
5915
7068
|
run.textScalePercent,
|
|
5916
7069
|
(v) => Number.isSafeInteger(v) && v >= 0 && v <= 600,
|
|
5917
7070
|
"must be a whole percentage from 0 through 600 (ST_TextScale)"
|
|
5918
7071
|
);
|
|
5919
|
-
|
|
7072
|
+
c2.check(
|
|
5920
7073
|
"kerningHalfPoints",
|
|
5921
7074
|
run.kerningHalfPoints,
|
|
5922
7075
|
(v) => Number.isSafeInteger(v) && v >= 0,
|
|
5923
7076
|
"must be a nonnegative whole number of half-points (ST_HpsMeasure)"
|
|
5924
7077
|
);
|
|
5925
|
-
|
|
7078
|
+
c2.check(
|
|
5926
7079
|
"positionHalfPoints",
|
|
5927
7080
|
run.positionHalfPoints,
|
|
5928
7081
|
Number.isSafeInteger,
|
|
5929
7082
|
"must be a signed whole number of half-points (ST_SignedHpsMeasure)"
|
|
5930
7083
|
);
|
|
5931
|
-
|
|
5932
|
-
|
|
5933
|
-
|
|
5934
|
-
validateThemeReference(
|
|
5935
|
-
validateThemeReference(
|
|
5936
|
-
|
|
7084
|
+
c2.hex("color", run.color);
|
|
7085
|
+
c2.hex("shadingFill", run.shadingFill);
|
|
7086
|
+
c2.hex("underlineColor", run.underlineColor);
|
|
7087
|
+
validateThemeReference(c2, "colorTheme", run.colorTheme);
|
|
7088
|
+
validateThemeReference(c2, "shadingThemeFill", run.shadingThemeFill);
|
|
7089
|
+
c2.enum("underlineStyle", run.underlineStyle, isStUnderline, "ST_Underline");
|
|
5937
7090
|
if (run.highlight !== void 0 && !isStHighlightColor(run.highlight))
|
|
5938
|
-
|
|
7091
|
+
c2.fail(
|
|
5939
7092
|
"highlight",
|
|
5940
7093
|
run.highlight,
|
|
5941
7094
|
`Unsupported Word highlight token: ${String(run.highlight)}`
|
|
5942
7095
|
);
|
|
5943
|
-
|
|
5944
|
-
|
|
5945
|
-
|
|
7096
|
+
c2.enum("break", run.break, isStBrType, "ST_BrType");
|
|
7097
|
+
c2.enum("fieldChar", run.fieldChar, isStFldCharType, "ST_FldCharType");
|
|
7098
|
+
c2.check(
|
|
5946
7099
|
"characterSpacingTwips",
|
|
5947
7100
|
run.characterSpacingTwips,
|
|
5948
7101
|
(v) => typeof v === "number" && Number.isFinite(v),
|
|
5949
7102
|
"must be a finite number of twips (ST_SignedTwipsMeasure)"
|
|
5950
7103
|
);
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
7104
|
+
c2.language("language", run.language);
|
|
7105
|
+
c2.language("eastAsiaLanguage", run.eastAsiaLanguage);
|
|
7106
|
+
c2.language("bidiLanguage", run.bidiLanguage);
|
|
7107
|
+
c2.check(
|
|
5955
7108
|
"verticalAlign",
|
|
5956
7109
|
run.verticalAlign,
|
|
5957
7110
|
isStVerticalAlignRun,
|
|
5958
7111
|
'must be "baseline", "superscript" or "subscript"'
|
|
5959
7112
|
);
|
|
5960
|
-
validateRevision(
|
|
7113
|
+
validateRevision(c2, "revision", run.revision);
|
|
5961
7114
|
if (run.image) {
|
|
5962
|
-
const image =
|
|
7115
|
+
const image = c2.at(".image");
|
|
5963
7116
|
for (const key of ["widthPx", "heightPx"])
|
|
5964
7117
|
image.check(
|
|
5965
7118
|
key,
|
|
@@ -5969,14 +7122,14 @@ function validateRun(c, run) {
|
|
|
5969
7122
|
);
|
|
5970
7123
|
}
|
|
5971
7124
|
}
|
|
5972
|
-
function validateTabStop(
|
|
5973
|
-
|
|
5974
|
-
|
|
5975
|
-
|
|
7125
|
+
function validateTabStop(c2, stop) {
|
|
7126
|
+
c2.signed("posTwips", stop.posTwips, "CT_TabStop/@pos");
|
|
7127
|
+
c2.enum("align", stop.align, isStTabJc, "ST_TabJc");
|
|
7128
|
+
c2.enum("leader", stop.leader, isStTabTlc, "ST_TabTlc");
|
|
5976
7129
|
}
|
|
5977
|
-
function validateParagraph(
|
|
7130
|
+
function validateParagraph(c2, paragraph) {
|
|
5978
7131
|
if (paragraph.dropCap) {
|
|
5979
|
-
const at =
|
|
7132
|
+
const at = c2.at(".dropCap");
|
|
5980
7133
|
at.check(
|
|
5981
7134
|
"style",
|
|
5982
7135
|
paragraph.dropCap.style,
|
|
@@ -5996,14 +7149,14 @@ function validateParagraph(c, paragraph) {
|
|
|
5996
7149
|
"must be a nonnegative whole number of twips"
|
|
5997
7150
|
);
|
|
5998
7151
|
}
|
|
5999
|
-
|
|
7152
|
+
c2.check(
|
|
6000
7153
|
"align",
|
|
6001
7154
|
paragraph.align,
|
|
6002
7155
|
(v) => v === "left" || v === "center" || v === "right" || v === "justify",
|
|
6003
7156
|
'must be "left", "center", "right" or "justify"'
|
|
6004
7157
|
);
|
|
6005
|
-
|
|
6006
|
-
|
|
7158
|
+
c2.enum("justification", paragraph.justification, isStJc, "ST_Jc");
|
|
7159
|
+
c2.check(
|
|
6007
7160
|
"direction",
|
|
6008
7161
|
paragraph.direction,
|
|
6009
7162
|
(v) => v === "ltr" || v === "rtl",
|
|
@@ -6015,7 +7168,7 @@ function validateParagraph(c, paragraph) {
|
|
|
6015
7168
|
"firstLineTwips",
|
|
6016
7169
|
"hangingTwips"
|
|
6017
7170
|
])
|
|
6018
|
-
|
|
7171
|
+
c2.unsigned(key, paragraph[key], "ST_TwipsMeasure");
|
|
6019
7172
|
for (const key of [
|
|
6020
7173
|
"lineSpacingTwips",
|
|
6021
7174
|
"indentLeftTwips",
|
|
@@ -6023,87 +7176,87 @@ function validateParagraph(c, paragraph) {
|
|
|
6023
7176
|
"indentStartTwips",
|
|
6024
7177
|
"indentEndTwips"
|
|
6025
7178
|
])
|
|
6026
|
-
|
|
6027
|
-
|
|
7179
|
+
c2.signed(key, paragraph[key], "ST_SignedTwipsMeasure");
|
|
7180
|
+
c2.enum("lineSpacingRule", paragraph.lineSpacingRule, isStLineSpacingRule, "ST_LineSpacingRule");
|
|
6028
7181
|
if (paragraph.numbering) {
|
|
6029
|
-
const numbering =
|
|
7182
|
+
const numbering = c2.at(".numbering");
|
|
6030
7183
|
numbering.unsigned("numId", paragraph.numbering.numId, "ST_DecimalNumber");
|
|
6031
7184
|
numbering.unsigned("level", paragraph.numbering.level, "ST_DecimalNumber");
|
|
6032
7185
|
}
|
|
6033
|
-
paragraph.tabStops?.forEach((stop, index) => validateTabStop(
|
|
6034
|
-
validateRevision(
|
|
6035
|
-
paragraph.runs.forEach((run, index) => validateRun(
|
|
7186
|
+
paragraph.tabStops?.forEach((stop, index) => validateTabStop(c2.at(`.tabStops[${index}]`), stop));
|
|
7187
|
+
validateRevision(c2, "markRevision", paragraph.markRevision);
|
|
7188
|
+
paragraph.runs.forEach((run, index) => validateRun(c2.at(`.runs[${index}]`), run));
|
|
6036
7189
|
}
|
|
6037
7190
|
|
|
6038
7191
|
// docx/validate-structure.ts
|
|
6039
|
-
function validateBorderSide(
|
|
7192
|
+
function validateBorderSide(c2, side) {
|
|
6040
7193
|
if (!side) return;
|
|
6041
|
-
|
|
6042
|
-
|
|
6043
|
-
|
|
6044
|
-
|
|
6045
|
-
|
|
7194
|
+
c2.enum("style", side.style, isStBorder, "ST_Border");
|
|
7195
|
+
c2.unsigned("sizeEighthPoints", side.sizeEighthPoints, "ST_EighthPointMeasure");
|
|
7196
|
+
c2.unsigned("spacePoints", side.spacePoints, "ST_PointMeasure");
|
|
7197
|
+
c2.hex("color", side.color);
|
|
7198
|
+
c2.theme("themeColor", side.themeColor);
|
|
6046
7199
|
}
|
|
6047
|
-
function validateBorders(
|
|
7200
|
+
function validateBorders(c2, borders) {
|
|
6048
7201
|
if (!borders) return;
|
|
6049
7202
|
for (const side of ["top", "left", "bottom", "right", "insideH", "insideV"])
|
|
6050
|
-
validateBorderSide(
|
|
7203
|
+
validateBorderSide(c2.at(`.${side}`), borders[side]);
|
|
6051
7204
|
}
|
|
6052
|
-
function validateCell(
|
|
6053
|
-
|
|
7205
|
+
function validateCell(c2, cell) {
|
|
7206
|
+
c2.check(
|
|
6054
7207
|
"gridSpan",
|
|
6055
7208
|
cell.gridSpan,
|
|
6056
7209
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v >= 1,
|
|
6057
7210
|
"must be a positive integer (CT_DecimalNumber)"
|
|
6058
7211
|
);
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
validateThemeReference(
|
|
6064
|
-
validateBorders(
|
|
7212
|
+
c2.enum("verticalMerge", cell.verticalMerge, isStMerge, "ST_Merge");
|
|
7213
|
+
c2.unsigned("widthTwips", cell.widthTwips, "ST_TwipsMeasure");
|
|
7214
|
+
c2.enum("verticalAlign", cell.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
7215
|
+
c2.hex("shadingFill", cell.shadingFill);
|
|
7216
|
+
validateThemeReference(c2, "shadingThemeFill", cell.shadingThemeFill);
|
|
7217
|
+
validateBorders(c2.at(".borders"), cell.borders);
|
|
6065
7218
|
if (cell.margins)
|
|
6066
7219
|
for (const side of ["top", "bottom", "left", "right"])
|
|
6067
|
-
|
|
7220
|
+
c2.at(".margins").signed(side, cell.margins[side], "ST_SignedTwipsMeasure");
|
|
6068
7221
|
}
|
|
6069
|
-
function validateTable(
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
7222
|
+
function validateTable(c2, table) {
|
|
7223
|
+
c2.unsigned("widthTwips", table.widthTwips, "ST_TwipsMeasure");
|
|
7224
|
+
c2.signed("indentTwips", table.indentTwips, "ST_SignedTwipsMeasure");
|
|
7225
|
+
c2.check(
|
|
6073
7226
|
"alignment",
|
|
6074
7227
|
table.alignment,
|
|
6075
7228
|
(v) => v === "left" || v === "center" || v === "right",
|
|
6076
7229
|
'must be "left", "center" or "right"'
|
|
6077
7230
|
);
|
|
6078
|
-
|
|
7231
|
+
c2.enum("justification", table.justification, isStJcTable, "ST_JcTable");
|
|
6079
7232
|
table.grid?.forEach(
|
|
6080
|
-
(width, index) =>
|
|
7233
|
+
(width, index) => c2.at(`.grid[${index}]`).unsigned("width", width, "ST_TwipsMeasure")
|
|
6081
7234
|
);
|
|
6082
|
-
validateBorders(
|
|
7235
|
+
validateBorders(c2.at(".borders"), table.borders);
|
|
6083
7236
|
if (table.cellMargins)
|
|
6084
7237
|
for (const side of ["top", "bottom", "left", "right"])
|
|
6085
|
-
|
|
7238
|
+
c2.at(".cellMargins").signed(side, table.cellMargins[side], "ST_SignedTwipsMeasure");
|
|
6086
7239
|
table.rowProperties?.forEach((row, index) => {
|
|
6087
7240
|
if (row)
|
|
6088
|
-
|
|
7241
|
+
c2.at(`.rowProperties[${index}]`).unsigned("heightTwips", row.heightTwips, "ST_TwipsMeasure");
|
|
6089
7242
|
});
|
|
6090
7243
|
table.rows.forEach(
|
|
6091
|
-
(row, r) => row.forEach((cell, k) => validateCell(
|
|
7244
|
+
(row, r) => row.forEach((cell, k) => validateCell(c2.at(`.rows[${r}][${k}]`), cell))
|
|
6092
7245
|
);
|
|
6093
7246
|
}
|
|
6094
|
-
function validateSection(
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
7247
|
+
function validateSection(c2, section) {
|
|
7248
|
+
c2.enum("type", section.type, isStSectionMark, "ST_SectionMark");
|
|
7249
|
+
c2.enum("orientation", section.orientation, isStPageOrientation, "ST_PageOrientation");
|
|
7250
|
+
c2.enum("verticalAlign", section.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
6098
7251
|
for (const key of ["pageWidthTwips", "pageHeightTwips"])
|
|
6099
|
-
|
|
7252
|
+
c2.check(
|
|
6100
7253
|
key,
|
|
6101
7254
|
section[key],
|
|
6102
7255
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v > 0,
|
|
6103
7256
|
"must be a positive integer number of twips (CT_PageSz)"
|
|
6104
7257
|
);
|
|
6105
7258
|
for (const key of ["marginTopTwips", "marginBottomTwips"])
|
|
6106
|
-
|
|
7259
|
+
c2.signed(key, section[key], "ST_SignedTwipsMeasure");
|
|
6107
7260
|
for (const key of [
|
|
6108
7261
|
"marginLeftTwips",
|
|
6109
7262
|
"marginRightTwips",
|
|
@@ -6111,8 +7264,8 @@ function validateSection(c, section) {
|
|
|
6111
7264
|
"footerDistanceTwips",
|
|
6112
7265
|
"gutterTwips"
|
|
6113
7266
|
])
|
|
6114
|
-
|
|
6115
|
-
const columns =
|
|
7267
|
+
c2.unsigned(key, section[key], "ST_TwipsMeasure");
|
|
7268
|
+
const columns = c2.at(".columns");
|
|
6116
7269
|
columns.check(
|
|
6117
7270
|
"count",
|
|
6118
7271
|
section.columns?.count,
|
|
@@ -6126,7 +7279,7 @@ function validateSection(c, section) {
|
|
|
6126
7279
|
at.unsigned("spacingTwips", column.spacingTwips, "ST_TwipsMeasure");
|
|
6127
7280
|
});
|
|
6128
7281
|
if (section.lineNumberSettings) {
|
|
6129
|
-
const line =
|
|
7282
|
+
const line = c2.at(".lineNumberSettings");
|
|
6130
7283
|
const settings = section.lineNumberSettings;
|
|
6131
7284
|
line.check(
|
|
6132
7285
|
"countBy",
|
|
@@ -6149,12 +7302,12 @@ function validateSection(c, section) {
|
|
|
6149
7302
|
line.unsigned("distanceTwips", settings.distanceTwips, "ST_TwipsMeasure");
|
|
6150
7303
|
}
|
|
6151
7304
|
if (section.pageNumbering) {
|
|
6152
|
-
const numbering =
|
|
7305
|
+
const numbering = c2.at(".pageNumbering");
|
|
6153
7306
|
numbering.enum("format", section.pageNumbering.format, isStNumberFormat, "ST_NumberFormat");
|
|
6154
7307
|
numbering.signed("start", section.pageNumbering.start, "ST_DecimalNumber");
|
|
6155
7308
|
}
|
|
6156
7309
|
}
|
|
6157
|
-
function validateNumberingCatalog(
|
|
7310
|
+
function validateNumberingCatalog(c2, catalog) {
|
|
6158
7311
|
const levelOf = (at, level) => {
|
|
6159
7312
|
at.enum("numFmt", level.numFmt, isStNumberFormat, "ST_NumberFormat");
|
|
6160
7313
|
at.signed("start", level.start, "ST_DecimalNumber");
|
|
@@ -6185,19 +7338,19 @@ function validateNumberingCatalog(c, catalog) {
|
|
|
6185
7338
|
};
|
|
6186
7339
|
for (const [id, abstract] of Object.entries(catalog.abstractNums))
|
|
6187
7340
|
for (const [key, level] of Object.entries(abstract.levels))
|
|
6188
|
-
levelOf(new Checker(
|
|
7341
|
+
levelOf(new Checker(c2.issues, `${c2.path}.abstractNums[${id}].levels[${key}]`), level);
|
|
6189
7342
|
for (const [id, num] of Object.entries(catalog.nums))
|
|
6190
7343
|
for (const [key, override] of Object.entries(num.levelOverrides ?? {})) {
|
|
6191
|
-
const at = new Checker(
|
|
7344
|
+
const at = new Checker(c2.issues, `${c2.path}.nums[${id}].levelOverrides[${key}]`);
|
|
6192
7345
|
at.signed("startOverride", override.startOverride, "ST_DecimalNumber");
|
|
6193
7346
|
if (override.lvl) levelOf(at.at(".lvl"), override.lvl);
|
|
6194
7347
|
}
|
|
6195
7348
|
}
|
|
6196
7349
|
|
|
6197
7350
|
// docx/validate-model.ts
|
|
6198
|
-
function validateBlocks(
|
|
7351
|
+
function validateBlocks(c2, blocks) {
|
|
6199
7352
|
blocks?.forEach((block, index) => {
|
|
6200
|
-
const at =
|
|
7353
|
+
const at = c2.at(`[${index}]`);
|
|
6201
7354
|
if (block.type === "paragraph") return validateParagraph(at, block);
|
|
6202
7355
|
validateTable(at, block);
|
|
6203
7356
|
block.rows.forEach(
|
|
@@ -6211,8 +7364,8 @@ function validateBlocks(c, blocks) {
|
|
|
6211
7364
|
}
|
|
6212
7365
|
function validateDocumentModel(model) {
|
|
6213
7366
|
const issues = [];
|
|
6214
|
-
const
|
|
6215
|
-
const page =
|
|
7367
|
+
const path2 = (suffix) => new Checker(issues, suffix);
|
|
7368
|
+
const page = path2("page");
|
|
6216
7369
|
for (const key of ["width", "height"])
|
|
6217
7370
|
page.check(
|
|
6218
7371
|
key,
|
|
@@ -6227,9 +7380,9 @@ function validateDocumentModel(model) {
|
|
|
6227
7380
|
(v) => typeof v === "number" && Number.isFinite(v) && (key === "marginTop" || key === "marginBottom" || v >= 0),
|
|
6228
7381
|
"must be a finite pixel size (converted to integer twips; left/right non-negative)"
|
|
6229
7382
|
);
|
|
6230
|
-
validateBlocks(
|
|
7383
|
+
validateBlocks(path2("blocks"), model.blocks);
|
|
6231
7384
|
model.sections?.forEach((section, index) => {
|
|
6232
|
-
const at =
|
|
7385
|
+
const at = path2(`sections[${index}]`);
|
|
6233
7386
|
validateSection(at, section);
|
|
6234
7387
|
for (const kind of ["headers", "footers"])
|
|
6235
7388
|
for (const [slot2, content] of Object.entries(section[kind] ?? {}))
|
|
@@ -6237,16 +7390,16 @@ function validateDocumentModel(model) {
|
|
|
6237
7390
|
});
|
|
6238
7391
|
for (const kind of ["footnotes", "endnotes"])
|
|
6239
7392
|
model[kind]?.forEach(
|
|
6240
|
-
(note, index) => validateBlocks(
|
|
7393
|
+
(note, index) => validateBlocks(path2(`${kind}[${index}].blocks`), note.blocks)
|
|
6241
7394
|
);
|
|
6242
7395
|
model.comments?.forEach(
|
|
6243
|
-
(comment, index) =>
|
|
7396
|
+
(comment, index) => path2(`comments[${index}]`).dateTime("date", comment.date)
|
|
6244
7397
|
);
|
|
6245
|
-
|
|
6246
|
-
|
|
6247
|
-
|
|
7398
|
+
path2("model").hex("pageColor", model.pageColor);
|
|
7399
|
+
path2("model").enum("footnoteNumFmt", model.footnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
7400
|
+
path2("model").enum("endnoteNumFmt", model.endnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
6248
7401
|
if (model.numberingCatalog)
|
|
6249
|
-
validateNumberingCatalog(
|
|
7402
|
+
validateNumberingCatalog(path2("numberingCatalog"), model.numberingCatalog);
|
|
6250
7403
|
return issues;
|
|
6251
7404
|
}
|
|
6252
7405
|
function assertValidDocumentModel(model) {
|
|
@@ -6362,12 +7515,12 @@ function parseNum(element) {
|
|
|
6362
7515
|
const levelOverrides = {};
|
|
6363
7516
|
for (const override of children2(element, "lvlOverride")) {
|
|
6364
7517
|
const level = integer2(getW(override, "ilvl"), 0);
|
|
6365
|
-
const
|
|
7518
|
+
const entry2 = {};
|
|
6366
7519
|
const startOverride = getW(first2(override, "startOverride"), "val");
|
|
6367
|
-
if (startOverride !== void 0)
|
|
7520
|
+
if (startOverride !== void 0) entry2.startOverride = integer2(startOverride, 1);
|
|
6368
7521
|
const lvl = first2(override, "lvl");
|
|
6369
|
-
if (lvl)
|
|
6370
|
-
if (Object.keys(
|
|
7522
|
+
if (lvl) entry2.lvl = parseNumberingLevel(lvl);
|
|
7523
|
+
if (Object.keys(entry2).length) levelOverrides[level] = entry2;
|
|
6371
7524
|
}
|
|
6372
7525
|
return {
|
|
6373
7526
|
id,
|
|
@@ -6573,7 +7726,7 @@ function buildAbstractNumElement(doc, def) {
|
|
|
6573
7726
|
const element = makeW(doc, "abstractNum");
|
|
6574
7727
|
setAttribute8(element, "abstractNumId", def.id);
|
|
6575
7728
|
element.appendChild(valueElement(doc, "multiLevelType", "hybridMultilevel"));
|
|
6576
|
-
for (const level of Object.values(def.levels).sort((
|
|
7729
|
+
for (const level of Object.values(def.levels).sort((a2, b) => a2.level - b.level))
|
|
6577
7730
|
element.appendChild(buildLevelElement(doc, level));
|
|
6578
7731
|
return element;
|
|
6579
7732
|
}
|
|
@@ -6692,13 +7845,13 @@ async function applyStyleNumbering(zip, model, base) {
|
|
|
6692
7845
|
// docx/part-relationships.ts
|
|
6693
7846
|
var CONTENT_TYPES_PART = "[Content_Types].xml";
|
|
6694
7847
|
var extensionOf = (partName) => partName.split(".").pop()?.toLowerCase() ?? "";
|
|
6695
|
-
function
|
|
7848
|
+
function relationshipsPartFor2(partName) {
|
|
6696
7849
|
const slash = partName.lastIndexOf("/");
|
|
6697
7850
|
return `${partName.slice(0, slash)}/_rels/${partName.slice(slash + 1)}.rels`;
|
|
6698
7851
|
}
|
|
6699
7852
|
async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
6700
7853
|
const declared = parseRelationships(
|
|
6701
|
-
await zip.file(
|
|
7854
|
+
await zip.file(relationshipsPartFor2(partName))?.async("string")
|
|
6702
7855
|
);
|
|
6703
7856
|
const allocator = new RelationshipAllocator(
|
|
6704
7857
|
[...scanUsedRelationshipIds(doc), ...declared.keys()],
|
|
@@ -6709,7 +7862,7 @@ async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
|
6709
7862
|
}
|
|
6710
7863
|
async function writeNewRelationships(zip, partName, created, pendingMedia) {
|
|
6711
7864
|
if (!created.length) return;
|
|
6712
|
-
const relsPath =
|
|
7865
|
+
const relsPath = relationshipsPartFor2(partName);
|
|
6713
7866
|
const relationships = parseRelationships(await zip.file(relsPath)?.async("string"));
|
|
6714
7867
|
let contentTypesXml = await zip.file(CONTENT_TYPES_PART)?.async("string");
|
|
6715
7868
|
for (const relationship of created) {
|
|
@@ -6793,8 +7946,8 @@ async function createHeaderFooterParts(zip, model, base, docPrIds) {
|
|
|
6793
7946
|
(_match, start, end) => `${start}${docPrIds.next()}${end}`
|
|
6794
7947
|
) : xml
|
|
6795
7948
|
);
|
|
6796
|
-
const rels = zip.file(
|
|
6797
|
-
if (rels) zip.file(
|
|
7949
|
+
const rels = zip.file(relationshipsPartFor2(content.sourcePartName));
|
|
7950
|
+
if (rels) zip.file(relationshipsPartFor2(partName), await rels.async("uint8array"));
|
|
6798
7951
|
}
|
|
6799
7952
|
await ensureContentTypeOverride(
|
|
6800
7953
|
zip,
|
|
@@ -7867,15 +9020,15 @@ function parseNotesPart(xml, kind, parseBlocks) {
|
|
|
7867
9020
|
}
|
|
7868
9021
|
|
|
7869
9022
|
// docx/document-parts.ts
|
|
7870
|
-
async function partContext(zip,
|
|
9023
|
+
async function partContext(zip, path2, base) {
|
|
7871
9024
|
if (!base) return void 0;
|
|
7872
|
-
const slash =
|
|
7873
|
-
const relsPath = `${
|
|
9025
|
+
const slash = path2.lastIndexOf("/");
|
|
9026
|
+
const relsPath = `${path2.slice(0, slash)}/_rels/${path2.slice(slash + 1)}.rels`;
|
|
7874
9027
|
return { ...base, rels: parseRelationships(await readPart(zip, relsPath)) };
|
|
7875
9028
|
}
|
|
7876
9029
|
var FIELD_MARKUP = /<w:(?:fldSimple|instrText|fldChar)\b/;
|
|
7877
|
-
async function readPart(zip,
|
|
7878
|
-
return zip.file(
|
|
9030
|
+
async function readPart(zip, path2) {
|
|
9031
|
+
return zip.file(path2)?.async("string");
|
|
7879
9032
|
}
|
|
7880
9033
|
function parseSettings(xml) {
|
|
7881
9034
|
if (!xml) return { evenAndOddHeaders: false, autoHyphenation: false };
|
|
@@ -7903,21 +9056,21 @@ async function resolveSlots(zip, relationships, refs, cache, fieldMarkup, drawin
|
|
|
7903
9056
|
for (const ref of refs) {
|
|
7904
9057
|
const relationship = relationships.get(ref.rId);
|
|
7905
9058
|
if (!relationship) continue;
|
|
7906
|
-
const
|
|
7907
|
-
let blocks = cache.get(
|
|
9059
|
+
const path2 = resolvePartPath("word/document.xml", relationship.target);
|
|
9060
|
+
let blocks = cache.get(path2);
|
|
7908
9061
|
if (!blocks) {
|
|
7909
|
-
const xml = await readPart(zip,
|
|
9062
|
+
const xml = await readPart(zip, path2);
|
|
7910
9063
|
if (xml === void 0) continue;
|
|
7911
9064
|
if (FIELD_MARKUP.test(xml)) fieldMarkup.seen = true;
|
|
7912
|
-
const context = await partContext(zip,
|
|
9065
|
+
const context = await partContext(zip, path2, drawings);
|
|
7913
9066
|
const root = parseXml2(xml).documentElement;
|
|
7914
9067
|
blocks = withParseWarnings(
|
|
7915
9068
|
sink2,
|
|
7916
|
-
() => parseBlocksFromContainer(root, `${
|
|
9069
|
+
() => parseBlocksFromContainer(root, `${path2.replace(/[^a-z0-9]+/gi, "")}-`, context)
|
|
7917
9070
|
);
|
|
7918
|
-
cache.set(
|
|
9071
|
+
cache.set(path2, blocks);
|
|
7919
9072
|
}
|
|
7920
|
-
slots[ref.slot] = { blocks, partName:
|
|
9073
|
+
slots[ref.slot] = { blocks, partName: path2 };
|
|
7921
9074
|
}
|
|
7922
9075
|
return Object.keys(slots).length ? slots : void 0;
|
|
7923
9076
|
}
|
|
@@ -7953,8 +9106,8 @@ async function parseDocumentParts(zip, body, blocks, drawings) {
|
|
|
7953
9106
|
}
|
|
7954
9107
|
const footnotesXml = await readPart(zip, "word/footnotes.xml");
|
|
7955
9108
|
const endnotesXml = await readPart(zip, "word/endnotes.xml");
|
|
7956
|
-
const notesParser = async (
|
|
7957
|
-
const context = await partContext(zip,
|
|
9109
|
+
const notesParser = async (path2) => {
|
|
9110
|
+
const context = await partContext(zip, path2, drawings);
|
|
7958
9111
|
return (container, prefix) => withParseWarnings(warnings, () => parseBlocksFromContainer(container, prefix, context));
|
|
7959
9112
|
};
|
|
7960
9113
|
const footnotes = footnotesXml ? parseNotesPart(footnotesXml, "footnote", await notesParser("word/footnotes.xml")) : void 0;
|
|
@@ -8006,15 +9159,15 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
8006
9159
|
});
|
|
8007
9160
|
if (extendedXml) {
|
|
8008
9161
|
const extended = parseXml2(extendedXml);
|
|
8009
|
-
for (const
|
|
9162
|
+
for (const entry2 of Array.from(
|
|
8010
9163
|
extended.getElementsByTagNameNS(W15_NS2, "commentEx")
|
|
8011
9164
|
)) {
|
|
8012
|
-
const paraId =
|
|
8013
|
-
const comment = paraId && comments.find((
|
|
9165
|
+
const paraId = entry2.getAttributeNS(W15_NS2, "paraId");
|
|
9166
|
+
const comment = paraId && comments.find((c2) => c2.id === paraIdToCommentId.get(paraId));
|
|
8014
9167
|
if (!comment) continue;
|
|
8015
|
-
const done =
|
|
9168
|
+
const done = entry2.getAttributeNS(W15_NS2, "done");
|
|
8016
9169
|
comment.resolved = done === "1" || done === "true";
|
|
8017
|
-
const parentParaId =
|
|
9170
|
+
const parentParaId = entry2.getAttributeNS(W15_NS2, "paraIdParent");
|
|
8018
9171
|
const parentId = parentParaId && paraIdToCommentId.get(parentParaId);
|
|
8019
9172
|
if (parentId) comment.parentId = parentId;
|
|
8020
9173
|
}
|
|
@@ -8022,96 +9175,6 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
8022
9175
|
return comments;
|
|
8023
9176
|
}
|
|
8024
9177
|
|
|
8025
|
-
// docx/parse-warnings.ts
|
|
8026
|
-
function hasAny(document, names) {
|
|
8027
|
-
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
8028
|
-
}
|
|
8029
|
-
function warningsFor(document) {
|
|
8030
|
-
const warnings = [];
|
|
8031
|
-
const features = [
|
|
8032
|
-
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
8033
|
-
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
8034
|
-
[
|
|
8035
|
-
["fldSimple", "instrText", "fldChar"],
|
|
8036
|
-
"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."
|
|
8037
|
-
],
|
|
8038
|
-
[
|
|
8039
|
-
["moveFrom", "moveTo"],
|
|
8040
|
-
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
8041
|
-
],
|
|
8042
|
-
[
|
|
8043
|
-
["rPrChange"],
|
|
8044
|
-
"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."
|
|
8045
|
-
],
|
|
8046
|
-
[
|
|
8047
|
-
["pPrChange"],
|
|
8048
|
-
"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."
|
|
8049
|
-
],
|
|
8050
|
-
[
|
|
8051
|
-
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
8052
|
-
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
8053
|
-
]
|
|
8054
|
-
];
|
|
8055
|
-
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
8056
|
-
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
8057
|
-
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
8058
|
-
))
|
|
8059
|
-
warnings.push(
|
|
8060
|
-
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
8061
|
-
);
|
|
8062
|
-
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
8063
|
-
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
8064
|
-
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
8065
|
-
(cr) => cr.attributes.length > 0
|
|
8066
|
-
);
|
|
8067
|
-
if (specialBreak)
|
|
8068
|
-
warnings.push(
|
|
8069
|
-
"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."
|
|
8070
|
-
);
|
|
8071
|
-
return warnings;
|
|
8072
|
-
}
|
|
8073
|
-
function forEachParagraph2(blocks, visit) {
|
|
8074
|
-
for (const block of blocks) {
|
|
8075
|
-
if (block.type === "paragraph") visit(block);
|
|
8076
|
-
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
8077
|
-
}
|
|
8078
|
-
}
|
|
8079
|
-
function imageAndBookmarkWarnings(blocks) {
|
|
8080
|
-
const warnings = [];
|
|
8081
|
-
let hasPicture = false;
|
|
8082
|
-
let hasAnchored = false;
|
|
8083
|
-
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
8084
|
-
let hasBookmarks = false;
|
|
8085
|
-
forEachParagraph2(blocks, (paragraph) => {
|
|
8086
|
-
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
8087
|
-
for (const run of paragraph.runs) {
|
|
8088
|
-
if (!run.image) continue;
|
|
8089
|
-
if (run.image.unsupported) {
|
|
8090
|
-
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
8091
|
-
unsupportedKinds.add(run.image.unsupported);
|
|
8092
|
-
} else hasPicture = true;
|
|
8093
|
-
if (run.image.anchored) hasAnchored = true;
|
|
8094
|
-
}
|
|
8095
|
-
});
|
|
8096
|
-
if (hasPicture)
|
|
8097
|
-
warnings.push(
|
|
8098
|
-
"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."
|
|
8099
|
-
);
|
|
8100
|
-
if (hasAnchored)
|
|
8101
|
-
warnings.push(
|
|
8102
|
-
"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."
|
|
8103
|
-
);
|
|
8104
|
-
if (unsupportedKinds.size)
|
|
8105
|
-
warnings.push(
|
|
8106
|
-
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
8107
|
-
);
|
|
8108
|
-
if (hasBookmarks)
|
|
8109
|
-
warnings.push(
|
|
8110
|
-
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
8111
|
-
);
|
|
8112
|
-
return warnings;
|
|
8113
|
-
}
|
|
8114
|
-
|
|
8115
9178
|
// docx/diagram-document.ts
|
|
8116
9179
|
function diagramsIn(blocks) {
|
|
8117
9180
|
const diagrams = [];
|
|
@@ -8149,7 +9212,7 @@ async function readPackage(input) {
|
|
|
8149
9212
|
const entries = Object.values(zip.files);
|
|
8150
9213
|
if (entries.length > 5e3) throw new Error("DOCX package exceeds the 5,000 part limit");
|
|
8151
9214
|
const totalSize = entries.reduce(
|
|
8152
|
-
(sum,
|
|
9215
|
+
(sum, entry2) => sum + Number(entry2._data?.uncompressedSize ?? 0),
|
|
8153
9216
|
0
|
|
8154
9217
|
);
|
|
8155
9218
|
if (totalSize > 200 * 1024 * 1024)
|
|
@@ -8300,6 +9363,10 @@ async function readPackage(input) {
|
|
|
8300
9363
|
pictureBlocks,
|
|
8301
9364
|
async (partName) => zip.file(partName)?.async("string")
|
|
8302
9365
|
);
|
|
9366
|
+
await resolveDocumentCharts(
|
|
9367
|
+
pictureBlocks,
|
|
9368
|
+
async (partName) => zip.file(partName)?.async("string")
|
|
9369
|
+
);
|
|
8303
9370
|
model.warnings.push(...imageAndBookmarkWarnings(blocks), ...diagramWarnings(pictureBlocks));
|
|
8304
9371
|
for (const warning of schemaWarnings)
|
|
8305
9372
|
if (!model.warnings.includes(warning)) model.warnings.push(warning);
|