ooxml-core 1.0.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-G63S6YZU.mjs → PptxHandler-SJTINPU4.mjs} +3 -3
- package/dist/automation/index.cjs +8916 -5091
- package/dist/automation/index.mjs +8916 -5091
- 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 +5 -5
- package/dist/chart/gradient-definition.d.ts.map +1 -1
- package/dist/chart/index.cjs +3072 -146
- package/dist/chart/index.d.ts +7 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +3052 -147
- 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 +5 -5
- 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/{xlsx/layout → chart/render}/chart-scale.d.ts +5 -1
- 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 +13 -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-BICQYRPW.mjs → chunk-CQQAPUAG.mjs} +27559 -27617
- package/dist/{chunk-RWXFQJVF.mjs → chunk-FI4RSJ24.mjs} +1 -1
- package/dist/{chunk-OJI3N5AY.cjs → chunk-FRUB573B.cjs} +2 -0
- package/dist/{chunk-ROM5MZ7O.mjs → chunk-TEOAOAIF.mjs} +42 -5
- package/dist/{chunk-DDG5HTGX.mjs → chunk-VYTA2OUN.mjs} +2 -2
- package/dist/{chunk-CKJSWE7N.mjs → chunk-XCZ7U3GZ.mjs} +3805 -2182
- 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/crypto/index.cjs +1406 -184
- package/dist/crypto/index.mjs +1406 -184
- package/dist/diagram/dom.d.ts +1 -14
- package/dist/diagram/dom.d.ts.map +1 -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 +22552 -95
- package/dist/diagram/index.d.ts +16 -12
- package/dist/diagram/index.d.ts.map +1 -1
- package/dist/diagram/index.mjs +22468 -96
- 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/diagram/types.d.ts +12 -148
- package/dist/diagram/types.d.ts.map +1 -1
- package/dist/digest/algorithm-names.d.ts +2 -2
- package/dist/digest/algorithm-names.d.ts.map +1 -1
- package/dist/digest/bit-ops.d.ts +30 -0
- package/dist/digest/bit-ops.d.ts.map +1 -0
- package/dist/digest/digest.d.ts +2 -2
- package/dist/digest/digest.d.ts.map +1 -1
- package/dist/digest/index.cjs +1319 -90
- package/dist/digest/index.d.ts +7 -1
- package/dist/digest/index.d.ts.map +1 -1
- package/dist/digest/index.mjs +1313 -91
- package/dist/digest/md2.d.ts +22 -0
- package/dist/digest/md2.d.ts.map +1 -0
- package/dist/digest/md4.d.ts +3 -0
- package/dist/digest/md4.d.ts.map +1 -0
- package/dist/digest/md5.d.ts +3 -0
- package/dist/digest/md5.d.ts.map +1 -0
- package/dist/digest/password-hash.d.ts +7 -0
- package/dist/digest/password-hash.d.ts.map +1 -1
- package/dist/digest/ripemd-functions.d.ts +18 -0
- package/dist/digest/ripemd-functions.d.ts.map +1 -0
- package/dist/digest/ripemd128.d.ts +3 -0
- package/dist/digest/ripemd128.d.ts.map +1 -0
- package/dist/digest/ripemd160.d.ts +3 -0
- package/dist/digest/ripemd160.d.ts.map +1 -0
- package/dist/digest/whirlpool-sbox.d.ts +15 -0
- package/dist/digest/whirlpool-sbox.d.ts.map +1 -0
- package/dist/digest/whirlpool-table.d.ts +12 -0
- package/dist/digest/whirlpool-table.d.ts.map +1 -0
- package/dist/digest/whirlpool.d.ts +3 -0
- package/dist/digest/whirlpool.d.ts.map +1 -0
- package/dist/docx/block-parser.d.ts.map +1 -1
- 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/diagram-theme.d.ts +3 -3
- package/dist/docx/diagram-theme.d.ts.map +1 -1
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +1938 -677
- package/dist/docx/embedded.mjs +1938 -677
- package/dist/docx/field-flags.d.ts +8 -0
- package/dist/docx/field-flags.d.ts.map +1 -0
- package/dist/docx/field-lock.d.ts +6 -0
- package/dist/docx/field-lock.d.ts.map +1 -0
- package/dist/docx/field-runs.d.ts +4 -1
- package/dist/docx/field-runs.d.ts.map +1 -1
- package/dist/docx/index.cjs +6347 -2809
- package/dist/docx/index.d.ts +4 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +6340 -2809
- 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 +2726 -128
- package/dist/docx/layout/index.mjs +2727 -129
- package/dist/docx/layout/input.d.ts +5 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/page-fields.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +3488 -1005
- package/dist/docx/load/index.mjs +3488 -1005
- package/dist/docx/model-run.d.ts +5 -0
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/numbering-model.d.ts +1 -1
- package/dist/docx/numbering-model.d.ts.map +1 -1
- package/dist/docx/numbering-package.d.ts +4 -4
- package/dist/docx/numbering-package.d.ts.map +1 -1
- package/dist/docx/numbering-start-edit.d.ts +8 -0
- package/dist/docx/numbering-start-edit.d.ts.map +1 -0
- package/dist/docx/numbering-start-patch.d.ts +13 -0
- package/dist/docx/numbering-start-patch.d.ts.map +1 -0
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/theme-color.d.ts.map +1 -1
- package/dist/docx/theme-model.d.ts +3 -2
- package/dist/docx/theme-model.d.ts.map +1 -1
- package/dist/docx/theme.d.ts +5 -1
- package/dist/docx/theme.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/field-guard.d.ts +2 -0
- package/dist/docx/ui/field-guard.d.ts.map +1 -1
- package/dist/docx/ui/field-results.d.ts.map +1 -1
- package/dist/docx/ui/index.cjs +3862 -1276
- 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 +3860 -1278
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/review-commands.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/docx/ui/run-extra-mark.d.ts +1 -1
- package/dist/docx/ui/run-extra-mark.d.ts.map +1 -1
- package/dist/docx/ui/simple-field-input.d.ts +3 -0
- package/dist/docx/ui/simple-field-input.d.ts.map +1 -1
- package/dist/docx/ui/track-changes-mode.d.ts.map +1 -1
- package/dist/docx/ui/track-paragraph-boundaries.d.ts +5 -0
- package/dist/docx/ui/track-paragraph-boundaries.d.ts.map +1 -0
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-run.d.ts.map +1 -1
- package/dist/drawingml/dom.d.ts +15 -0
- package/dist/drawingml/dom.d.ts.map +1 -0
- package/dist/drawingml/drawing-color-brightness.d.ts +6 -0
- package/dist/drawingml/drawing-color-brightness.d.ts.map +1 -0
- package/dist/drawingml/drawing-color-css.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/drawing-color.d.ts +5 -5
- package/dist/drawingml/drawing-color.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/drawing-fill.d.ts +3 -3
- package/dist/drawingml/drawing-fill.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/drawing-geometry.d.ts +4 -4
- package/dist/drawingml/drawing-geometry.d.ts.map +1 -0
- package/dist/drawingml/drawing-shadow.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/drawing-text.d.ts +2 -2
- package/dist/drawingml/drawing-text.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/gradient-geometry.d.ts +2 -2
- package/dist/drawingml/gradient-geometry.d.ts.map +1 -0
- package/dist/drawingml/gradient-preset-data.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/gradient-presets.d.ts +3 -3
- package/dist/drawingml/gradient-presets.d.ts.map +1 -0
- package/dist/drawingml/index.cjs +1545 -0
- package/dist/drawingml/index.d.ts +19 -0
- package/dist/drawingml/index.d.ts.map +1 -0
- package/dist/drawingml/index.mjs +1497 -0
- package/dist/{diagram → drawingml}/ordered-color-transforms.d.ts +2 -2
- package/dist/drawingml/ordered-color-transforms.d.ts.map +1 -0
- package/dist/drawingml/rect-path-gradient.d.ts.map +1 -0
- package/dist/drawingml/theme-color.d.ts +19 -0
- package/dist/drawingml/theme-color.d.ts.map +1 -0
- package/dist/drawingml/theme-model.d.ts +40 -0
- package/dist/drawingml/theme-model.d.ts.map +1 -0
- package/dist/drawingml/theme.d.ts +21 -0
- package/dist/drawingml/theme.d.ts.map +1 -0
- package/dist/drawingml/types.d.ts +152 -0
- package/dist/drawingml/types.d.ts.map +1 -0
- package/dist/drawingml/write-color.d.ts +4 -0
- package/dist/drawingml/write-color.d.ts.map +1 -0
- package/dist/{diagram → drawingml}/write-fill.d.ts +2 -2
- package/dist/drawingml/write-fill.d.ts.map +1 -0
- package/dist/drawingml/write-line.d.ts +7 -0
- package/dist/drawingml/write-line.d.ts.map +1 -0
- package/dist/geometry/connector-elbow-geometry.d.ts +14 -0
- package/dist/geometry/connector-elbow-geometry.d.ts.map +1 -1
- package/dist/geometry/index.cjs +43 -0
- package/dist/geometry/index.mjs +42 -1
- 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/i18n/dictionary.d.ts +13 -0
- package/dist/i18n/dictionary.d.ts.map +1 -0
- package/dist/i18n/index.cjs +68 -0
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.mjs +60 -0
- package/dist/i18n/locale.d.ts +17 -0
- package/dist/i18n/locale.d.ts.map +1 -0
- package/dist/i18n/translator.d.ts +18 -0
- package/dist/i18n/translator.d.ts.map +1 -0
- package/dist/index.cjs +34476 -16474
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +34486 -16490
- 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 +11799 -8643
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{index-lk7dyOPS.d.ts → index-EZJZ7USt.d.ts} +916 -975
- package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-C4mfzVoY.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-CDLx4hD5.d.ts → text-operations-DtCxXrMh.d.ts} +56 -5
- package/dist/pptx/chunks/text-operations-DtCxXrMh.d.ts.map +1 -0
- package/dist/pptx/cli/index.cjs +11299 -8143
- 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 +10844 -8788
- 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 +3906 -2057
- package/dist/teams/index.d.ts +1 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +3905 -2057
- 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/visio/ui/index.cjs +14 -3
- package/dist/visio/ui/index.mjs +14 -3
- package/dist/visio/ui/shape-rotation.d.ts +1 -1
- package/dist/visio/ui/shape-rotation.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 +4 -4
- 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/protection.d.ts +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 +7816 -4280
- package/dist/xlsx/index.mjs +7806 -4281
- package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
- package/dist/xlsx/layout/chart-view.d.ts +3 -52
- 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 +5127 -2105
- package/dist/xlsx/load/index.mjs +5127 -2105
- 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/theme.d.ts +2 -4
- package/dist/xlsx/read/theme.d.ts.map +1 -1
- 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 +3116 -1302
- package/dist/xlsx/ui/index.mjs +3116 -1303
- 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/merge.d.ts +2 -1
- package/dist/xlsx/ui/locales/merge.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/localization.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/xlsx/write/theme.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 +16 -1
- package/dist/diagram/drawing-color-brightness.d.ts +0 -6
- package/dist/diagram/drawing-color-brightness.d.ts.map +0 -1
- package/dist/diagram/drawing-color-css.d.ts.map +0 -1
- package/dist/diagram/drawing-color.d.ts.map +0 -1
- package/dist/diagram/drawing-fill.d.ts.map +0 -1
- package/dist/diagram/drawing-geometry.d.ts.map +0 -1
- package/dist/diagram/drawing-shadow.d.ts.map +0 -1
- package/dist/diagram/drawing-text.d.ts.map +0 -1
- package/dist/diagram/gradient-geometry.d.ts.map +0 -1
- package/dist/diagram/gradient-preset-data.d.ts.map +0 -1
- package/dist/diagram/gradient-presets.d.ts.map +0 -1
- package/dist/diagram/ordered-color-transforms.d.ts.map +0 -1
- package/dist/diagram/rect-path-gradient.d.ts.map +0 -1
- package/dist/diagram/write-color.d.ts +0 -4
- package/dist/diagram/write-color.d.ts.map +0 -1
- package/dist/diagram/write-fill.d.ts.map +0 -1
- package/dist/pptx/chunks/index-C4mfzVoY.d.ts.map +0 -1
- package/dist/pptx/chunks/index-lk7dyOPS.d.ts.map +0 -1
- package/dist/pptx/chunks/smart-art-CO2jmJFf.d.ts.map +0 -1
- package/dist/pptx/chunks/text-operations-CDLx4hD5.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-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-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-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/{diagram → drawingml}/drawing-color-css.d.ts +0 -0
- /package/dist/{diagram → drawingml}/drawing-shadow.d.ts +0 -0
- /package/dist/{diagram → drawingml}/gradient-preset-data.d.ts +0 -0
- /package/dist/{diagram → drawingml}/rect-path-gradient.d.ts +0 -0
package/dist/docx/embedded.mjs
CHANGED
|
@@ -7,12 +7,18 @@ var NS = {
|
|
|
7
7
|
w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
|
|
8
8
|
/** DrawingML main. */
|
|
9
9
|
a: "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
10
|
+
/** DrawingML chart. */
|
|
11
|
+
c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
12
|
+
/** Office 2010 chart extensions, including built-in modern chart styles. */
|
|
13
|
+
c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
|
|
10
14
|
/** DrawingML diagram (SmartArt) main. */
|
|
11
15
|
dgm: "http://schemas.openxmlformats.org/drawingml/2006/diagram",
|
|
12
16
|
/** Office 2007+ diagram drawing (`dsp`). */
|
|
13
17
|
dsp: "http://schemas.microsoft.com/office/drawing/2008/diagram",
|
|
14
18
|
/** Relationships (`r:id`, `r:embed`). */
|
|
15
19
|
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
20
|
+
/** Markup compatibility (`mc:AlternateContent`). */
|
|
21
|
+
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
|
16
22
|
/** OPC relationships part. */
|
|
17
23
|
rels: "http://schemas.openxmlformats.org/package/2006/relationships",
|
|
18
24
|
/** OPC content types part. */
|
|
@@ -360,12 +366,12 @@ function runPropertyChanged(run, base, key) {
|
|
|
360
366
|
function parseDirectRunProperties(props) {
|
|
361
367
|
const result = parseRunProperties(props);
|
|
362
368
|
const language = first2(props, "lang");
|
|
363
|
-
for (const [
|
|
369
|
+
for (const [attribute2, key] of [
|
|
364
370
|
["val", "language"],
|
|
365
371
|
["eastAsia", "eastAsiaLanguage"],
|
|
366
372
|
["bidi", "bidiLanguage"]
|
|
367
373
|
]) {
|
|
368
|
-
const value = getW(language,
|
|
374
|
+
const value = getW(language, attribute2);
|
|
369
375
|
if (value !== void 0) result[key] = value;
|
|
370
376
|
}
|
|
371
377
|
const rtl = onOffElement(first2(props, "rtl"));
|
|
@@ -867,9 +873,101 @@ function isValidLanguageTag(value) {
|
|
|
867
873
|
return /^(?:[A-Za-z]{2,8})(?:-[A-Za-z0-9]{1,8})*$/.test(value);
|
|
868
874
|
}
|
|
869
875
|
|
|
870
|
-
//
|
|
871
|
-
|
|
872
|
-
|
|
876
|
+
// color/color-primitives.ts
|
|
877
|
+
function toHex(value) {
|
|
878
|
+
return Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
// drawingml/dom.ts
|
|
882
|
+
function attributeReader(element) {
|
|
883
|
+
return (name) => {
|
|
884
|
+
if (!element) return void 0;
|
|
885
|
+
const direct = element.getAttribute(name);
|
|
886
|
+
if (direct !== null) return direct;
|
|
887
|
+
const attributes = element.attributes;
|
|
888
|
+
for (let index = 0; index < attributes.length; index++) {
|
|
889
|
+
const candidate = attributes.item(index);
|
|
890
|
+
if (candidate && candidate.localName === name) return candidate.value;
|
|
891
|
+
}
|
|
892
|
+
return void 0;
|
|
893
|
+
};
|
|
894
|
+
}
|
|
895
|
+
function stringAttribute(element, name) {
|
|
896
|
+
const value = attributeReader(element)(name)?.trim();
|
|
897
|
+
return value ? value : void 0;
|
|
898
|
+
}
|
|
899
|
+
function integerAttribute(element, name) {
|
|
900
|
+
const parsed = Number.parseInt(attributeReader(element)(name) ?? "", 10);
|
|
901
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
902
|
+
}
|
|
903
|
+
function booleanAttribute(element, name) {
|
|
904
|
+
const value = attributeReader(element)(name)?.trim().toLowerCase();
|
|
905
|
+
if (value === "1" || value === "true") return true;
|
|
906
|
+
if (value === "0" || value === "false") return false;
|
|
907
|
+
return void 0;
|
|
908
|
+
}
|
|
909
|
+
function descendants(root, local) {
|
|
910
|
+
const result = [];
|
|
911
|
+
const visit = (node) => {
|
|
912
|
+
for (const child3 of Array.from(node.childNodes)) {
|
|
913
|
+
if (!isElement(child3)) continue;
|
|
914
|
+
if (child3.localName === local) result.push(child3);
|
|
915
|
+
visit(child3);
|
|
916
|
+
}
|
|
917
|
+
};
|
|
918
|
+
visit(root);
|
|
919
|
+
return result;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
// drawingml/drawing-color.ts
|
|
923
|
+
var COLOR_ELEMENTS = {
|
|
924
|
+
srgbClr: "srgb",
|
|
925
|
+
schemeClr: "scheme",
|
|
926
|
+
sysClr: "system",
|
|
927
|
+
prstClr: "preset",
|
|
928
|
+
scrgbClr: "scrgb",
|
|
929
|
+
hslClr: "hsl"
|
|
930
|
+
};
|
|
931
|
+
function colorValue(kind, element) {
|
|
932
|
+
const attribute2 = (name) => element.getAttribute(name) ?? "";
|
|
933
|
+
if (kind === "scrgb") return `${attribute2("r")},${attribute2("g")},${attribute2("b")}`;
|
|
934
|
+
if (kind === "hsl") return `${attribute2("hue")},${attribute2("sat")},${attribute2("lum")}`;
|
|
935
|
+
return attribute2("val");
|
|
936
|
+
}
|
|
937
|
+
function parseDrawingColorIn(container) {
|
|
938
|
+
if (!container) return void 0;
|
|
939
|
+
for (const element of elements(container)) {
|
|
940
|
+
const kind = COLOR_ELEMENTS[element.localName];
|
|
941
|
+
if (!kind || element.namespaceURI && element.namespaceURI !== NS.a) continue;
|
|
942
|
+
return parseDrawingColor(element);
|
|
943
|
+
}
|
|
944
|
+
return void 0;
|
|
945
|
+
}
|
|
946
|
+
function parseDrawingColor(element) {
|
|
947
|
+
const kind = COLOR_ELEMENTS[element.localName];
|
|
948
|
+
if (!kind) return void 0;
|
|
949
|
+
const color = {
|
|
950
|
+
kind,
|
|
951
|
+
value: colorValue(kind, element),
|
|
952
|
+
transforms: elements(element).map((child3) => ({
|
|
953
|
+
name: child3.localName,
|
|
954
|
+
value: child3.getAttribute("val") ?? ""
|
|
955
|
+
}))
|
|
956
|
+
};
|
|
957
|
+
const fallback = kind === "system" ? element.getAttribute("lastClr") : null;
|
|
958
|
+
if (fallback) color.fallback = fallback;
|
|
959
|
+
return color;
|
|
960
|
+
}
|
|
961
|
+
function parseDrawingColorList(container) {
|
|
962
|
+
if (!container) return [];
|
|
963
|
+
return elements(container).flatMap((element) => {
|
|
964
|
+
const color = parseDrawingColor(element);
|
|
965
|
+
return color ? [color] : [];
|
|
966
|
+
});
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
// drawingml/theme-model.ts
|
|
970
|
+
var THEME_COLOR_SLOTS = [
|
|
873
971
|
"dk1",
|
|
874
972
|
"lt1",
|
|
875
973
|
"dk2",
|
|
@@ -883,46 +981,89 @@ var SCHEME_ORDER = [
|
|
|
883
981
|
"hlink",
|
|
884
982
|
"folHlink"
|
|
885
983
|
];
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
984
|
+
|
|
985
|
+
// drawingml/theme.ts
|
|
986
|
+
new Set(THEME_COLOR_SLOTS);
|
|
987
|
+
function nonEmpty(value) {
|
|
988
|
+
return value ? value : void 0;
|
|
989
|
+
}
|
|
990
|
+
function parseThemeColorScheme(scheme) {
|
|
991
|
+
const result = { colors: {} };
|
|
992
|
+
if (!scheme) return result;
|
|
993
|
+
const name = nonEmpty(scheme.getAttribute("name"));
|
|
994
|
+
if (name) result.name = name;
|
|
995
|
+
for (const slot2 of THEME_COLOR_SLOTS) {
|
|
996
|
+
const color = parseDrawingColorIn(first(scheme, slot2, NS.a));
|
|
997
|
+
if (color) result.colors[slot2] = color;
|
|
892
998
|
}
|
|
893
|
-
return
|
|
999
|
+
return result;
|
|
894
1000
|
}
|
|
895
|
-
function
|
|
896
|
-
const
|
|
897
|
-
if (
|
|
898
|
-
const
|
|
899
|
-
|
|
900
|
-
|
|
1001
|
+
function parseFontCollection(collection) {
|
|
1002
|
+
const result = { scripts: {} };
|
|
1003
|
+
if (!collection) return result;
|
|
1004
|
+
const typeface = (local) => nonEmpty(first(collection, local, NS.a)?.getAttribute("typeface"));
|
|
1005
|
+
const latin = typeface("latin");
|
|
1006
|
+
const eastAsia = typeface("ea");
|
|
1007
|
+
const complexScript = typeface("cs");
|
|
1008
|
+
if (latin) result.latin = latin;
|
|
1009
|
+
if (eastAsia) result.eastAsia = eastAsia;
|
|
1010
|
+
if (complexScript) result.complexScript = complexScript;
|
|
1011
|
+
for (const font of elements(collection)) {
|
|
1012
|
+
if (font.localName !== "font") continue;
|
|
1013
|
+
const script = nonEmpty(font.getAttribute("script"));
|
|
1014
|
+
const face = nonEmpty(font.getAttribute("typeface"));
|
|
1015
|
+
if (script && face && !Object.hasOwn(result.scripts, script)) result.scripts[script] = face;
|
|
1016
|
+
}
|
|
1017
|
+
return result;
|
|
901
1018
|
}
|
|
902
|
-
function
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
1019
|
+
function parseThemeFontScheme(scheme) {
|
|
1020
|
+
const result = {
|
|
1021
|
+
major: parseFontCollection(first(scheme, "majorFont", NS.a)),
|
|
1022
|
+
minor: parseFontCollection(first(scheme, "minorFont", NS.a))
|
|
1023
|
+
};
|
|
1024
|
+
const name = nonEmpty(scheme?.getAttribute("name"));
|
|
1025
|
+
if (name) result.name = name;
|
|
1026
|
+
return result;
|
|
1027
|
+
}
|
|
1028
|
+
function rootOf(source) {
|
|
1029
|
+
return "documentElement" in source ? source.documentElement : source;
|
|
1030
|
+
}
|
|
1031
|
+
function parseTheme(source) {
|
|
1032
|
+
const root = rootOf(source);
|
|
1033
|
+
const holder = first(root, "themeElements", NS.a) ?? root;
|
|
1034
|
+
const theme = {
|
|
1035
|
+
colorScheme: parseThemeColorScheme(first(holder, "clrScheme", NS.a)),
|
|
1036
|
+
fontScheme: parseThemeFontScheme(first(holder, "fontScheme", NS.a))
|
|
1037
|
+
};
|
|
1038
|
+
const name = nonEmpty(root.getAttribute("name"));
|
|
1039
|
+
if (name) theme.name = name;
|
|
1040
|
+
return theme;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
// drawingml/theme-color.ts
|
|
1044
|
+
function themeSlotHex(color) {
|
|
1045
|
+
if (!color) return void 0;
|
|
1046
|
+
const value = color.kind === "srgb" ? color.value : color.kind === "system" ? color.fallback : void 0;
|
|
1047
|
+
return value ? value.toUpperCase() : void 0;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
// docx/theme.ts
|
|
1051
|
+
function fontSetOf(collection) {
|
|
1052
|
+
const { latin, eastAsia, complexScript } = collection;
|
|
907
1053
|
return {
|
|
908
1054
|
...latin ? { latin } : {},
|
|
909
|
-
...
|
|
910
|
-
...
|
|
1055
|
+
...eastAsia ? { eastAsia } : {},
|
|
1056
|
+
...complexScript ? { complexScript } : {}
|
|
911
1057
|
};
|
|
912
1058
|
}
|
|
913
|
-
function
|
|
914
|
-
const
|
|
915
|
-
const root = document.documentElement;
|
|
916
|
-
const clrScheme = Array.from(root.getElementsByTagNameNS(DRAWING_NS, "clrScheme"))[0];
|
|
1059
|
+
function parseTheme2(xml) {
|
|
1060
|
+
const theme = parseTheme(parseXml2(xml));
|
|
917
1061
|
const colors = {};
|
|
918
|
-
for (const
|
|
919
|
-
const
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
}
|
|
923
|
-
const fontScheme = Array.from(root.getElementsByTagNameNS(DRAWING_NS, "fontScheme"))[0];
|
|
924
|
-
const major = drawingChild(fontScheme, "majorFont");
|
|
925
|
-
const minor = drawingChild(fontScheme, "minorFont");
|
|
1062
|
+
for (const slot2 of THEME_COLOR_SLOTS) {
|
|
1063
|
+
const value = themeSlotHex(theme.colorScheme.colors[slot2]);
|
|
1064
|
+
if (value) colors[slot2] = value;
|
|
1065
|
+
}
|
|
1066
|
+
const { major, minor } = theme.fontScheme;
|
|
926
1067
|
return { colors, colorMapping: {}, fonts: { major: fontSetOf(major), minor: fontSetOf(minor) } };
|
|
927
1068
|
}
|
|
928
1069
|
var MAPPING_KEYS = ["bg1", "tx1", "bg2", "tx2"];
|
|
@@ -960,9 +1101,6 @@ function parseColorSchemeMapping(xml) {
|
|
|
960
1101
|
function isThemeColorToken(value) {
|
|
961
1102
|
return isStThemeColor(value);
|
|
962
1103
|
}
|
|
963
|
-
function toHex(value) {
|
|
964
|
-
return Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
|
|
965
|
-
}
|
|
966
1104
|
function fractionToThemeByte(fraction) {
|
|
967
1105
|
return toHex(Math.round(Math.min(1, Math.max(0, fraction)) * 255));
|
|
968
1106
|
}
|
|
@@ -1016,6 +1154,10 @@ function resolvePartPath(basePart, target) {
|
|
|
1016
1154
|
}
|
|
1017
1155
|
return resolved.join("/");
|
|
1018
1156
|
}
|
|
1157
|
+
function relationshipsPartFor(partName) {
|
|
1158
|
+
const slash = partName.lastIndexOf("/");
|
|
1159
|
+
return `${partName.slice(0, slash + 1)}_rels/${partName.slice(slash + 1)}.rels`;
|
|
1160
|
+
}
|
|
1019
1161
|
function nextRelationshipId(used) {
|
|
1020
1162
|
let index = 1;
|
|
1021
1163
|
while (used.has(`rId${index}`)) index++;
|
|
@@ -1146,7 +1288,7 @@ function parseCoreProperties(xml) {
|
|
|
1146
1288
|
}
|
|
1147
1289
|
return Object.keys(result).length ? result : void 0;
|
|
1148
1290
|
}
|
|
1149
|
-
var same = (
|
|
1291
|
+
var same = (a2, b) => PROPERTY_FIELDS.every((field) => (a2?.[field] ?? "") === (b?.[field] ?? ""));
|
|
1150
1292
|
async function applyCoreProperties(zip, next, prior) {
|
|
1151
1293
|
if (same(next, prior)) return;
|
|
1152
1294
|
const existing = zip.file(CORE_PATH);
|
|
@@ -1305,13 +1447,13 @@ function buildCommentsExtendedDocument(comments) {
|
|
|
1305
1447
|
);
|
|
1306
1448
|
const root = doc.documentElement;
|
|
1307
1449
|
comments.forEach((comment, index) => {
|
|
1308
|
-
const
|
|
1309
|
-
|
|
1310
|
-
if (comment.resolved)
|
|
1311
|
-
const parentIndex = comments.findIndex((
|
|
1450
|
+
const entry2 = doc.createElementNS(W15_NS, "w15:commentEx");
|
|
1451
|
+
entry2.setAttributeNS(W15_NS, "w15:paraId", paraIdFor(comment.id, index));
|
|
1452
|
+
if (comment.resolved) entry2.setAttributeNS(W15_NS, "w15:done", "1");
|
|
1453
|
+
const parentIndex = comments.findIndex((c2) => c2.id === comment.parentId);
|
|
1312
1454
|
if (parentIndex >= 0)
|
|
1313
|
-
|
|
1314
|
-
root.appendChild(
|
|
1455
|
+
entry2.setAttributeNS(W15_NS, "w15:paraIdParent", paraIdFor(comment.parentId, parentIndex));
|
|
1456
|
+
root.appendChild(entry2);
|
|
1315
1457
|
});
|
|
1316
1458
|
return doc;
|
|
1317
1459
|
}
|
|
@@ -1441,7 +1583,7 @@ function rangeEdges(runs, ranges) {
|
|
|
1441
1583
|
const opens = /* @__PURE__ */ new Map();
|
|
1442
1584
|
const closes = /* @__PURE__ */ new Map();
|
|
1443
1585
|
const order = (key) => key.startsWith("comment:") ? 0 : 1;
|
|
1444
|
-
for (const key of [...first3.keys()].sort((
|
|
1586
|
+
for (const key of [...first3.keys()].sort((a2, b) => order(a2) - order(b))) {
|
|
1445
1587
|
if (!ranges?.before.has(key)) {
|
|
1446
1588
|
const index = first3.get(key);
|
|
1447
1589
|
(opens.get(index) ?? opens.set(index, []).get(index)).push(edgeFor(key, index));
|
|
@@ -1664,8 +1806,8 @@ function orderChildren(parent, order) {
|
|
|
1664
1806
|
if (rank >= 0) previousRank = rank;
|
|
1665
1807
|
return { element, index, rank: rank >= 0 ? rank : previousRank + 0.5 };
|
|
1666
1808
|
});
|
|
1667
|
-
const sorted = [...ranked].sort((
|
|
1668
|
-
if (sorted.every((
|
|
1809
|
+
const sorted = [...ranked].sort((a2, b) => a2.rank - b.rank || a2.index - b.index);
|
|
1810
|
+
if (sorted.every((entry2, index) => entry2.element === elements2[index])) return;
|
|
1669
1811
|
for (const { element } of sorted) parent.appendChild(element);
|
|
1670
1812
|
}
|
|
1671
1813
|
var SECTPR_ORDER = [
|
|
@@ -2452,7 +2594,7 @@ function borderElement(doc, name, side) {
|
|
|
2452
2594
|
}
|
|
2453
2595
|
return element;
|
|
2454
2596
|
}
|
|
2455
|
-
var sameJson = (
|
|
2597
|
+
var sameJson = (a2, b) => JSON.stringify(a2 ?? null) === JSON.stringify(b ?? null);
|
|
2456
2598
|
function updateShading(doc, props, paragraph, base) {
|
|
2457
2599
|
if (base && paragraph.shadingFill === base.shadingFill) return;
|
|
2458
2600
|
for (const element of children2(props, "shd")) props.removeChild(element);
|
|
@@ -2644,8 +2786,8 @@ function reconcileBookmarks(doc, starts, ends, names, baseNames, nextId) {
|
|
|
2644
2786
|
function setAttribute3(element, local, value) {
|
|
2645
2787
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
2646
2788
|
}
|
|
2647
|
-
function sameNumbering(
|
|
2648
|
-
return
|
|
2789
|
+
function sameNumbering(a2, b) {
|
|
2790
|
+
return a2?.numId === b?.numId && a2?.level === b?.level;
|
|
2649
2791
|
}
|
|
2650
2792
|
function writeNumberingProperties(doc, props, paragraph, base) {
|
|
2651
2793
|
if (base && sameNumbering(paragraph.numbering, base.numbering)) return;
|
|
@@ -2828,11 +2970,11 @@ var allowedRunPropertyAttributes = {
|
|
|
2828
2970
|
shd: ["val", "fill", "color", "themeFill", "themeFillTint", "themeFillShade"]
|
|
2829
2971
|
};
|
|
2830
2972
|
function hasUnexpectedAttributes(element, allowed, allowDateUtc = false) {
|
|
2831
|
-
for (const
|
|
2832
|
-
if (
|
|
2833
|
-
if (allowDateUtc &&
|
|
2973
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
2974
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
2975
|
+
if (allowDateUtc && attribute2.namespaceURI === WORD_DATE_UTC_NS && attribute2.localName === "dateUtc")
|
|
2834
2976
|
continue;
|
|
2835
|
-
if (
|
|
2977
|
+
if (attribute2.namespaceURI !== WORD_NS || !allowed.includes(attribute2.localName)) return true;
|
|
2836
2978
|
}
|
|
2837
2979
|
return false;
|
|
2838
2980
|
}
|
|
@@ -2859,7 +3001,7 @@ function runPropertiesHaveUnknownContent(properties) {
|
|
|
2859
3001
|
if (!isLigatures(property.getAttributeNS(WORD_2010_NS, "val")) || elements(property).length)
|
|
2860
3002
|
return true;
|
|
2861
3003
|
if (Array.from(property.attributes).some(
|
|
2862
|
-
(
|
|
3004
|
+
(attribute2) => attribute2.namespaceURI !== "http://www.w3.org/2000/xmlns/" && (attribute2.namespaceURI !== WORD_2010_NS || attribute2.localName !== "val")
|
|
2863
3005
|
))
|
|
2864
3006
|
return true;
|
|
2865
3007
|
continue;
|
|
@@ -2998,7 +3140,7 @@ var NAMED = {
|
|
|
2998
3140
|
var POINT_TO_PX = 96 / 72;
|
|
2999
3141
|
var WATERMARK_PREFIX = "PowerPlusWaterMarkObject";
|
|
3000
3142
|
var DEFAULT_WATERMARK_COLOR = "#c0c0c0";
|
|
3001
|
-
function
|
|
3143
|
+
function colorOf(value) {
|
|
3002
3144
|
const text = (value ?? "").trim().toLowerCase().split(/\s/)[0] ?? "";
|
|
3003
3145
|
if (NAMED[text]) return NAMED[text];
|
|
3004
3146
|
const hex = /^#?([0-9a-f]{6})$/.exec(text);
|
|
@@ -3006,20 +3148,20 @@ function colorOf2(value) {
|
|
|
3006
3148
|
}
|
|
3007
3149
|
function parseWatermarkShape(shape) {
|
|
3008
3150
|
if (!shape || !(shape.getAttribute("id") ?? "").startsWith(WATERMARK_PREFIX)) return void 0;
|
|
3009
|
-
const
|
|
3010
|
-
if (!
|
|
3151
|
+
const path2 = Array.from(shape.getElementsByTagNameNS(VML_NS, "textpath"))[0];
|
|
3152
|
+
if (!path2) return void 0;
|
|
3011
3153
|
const style = shape.getAttribute("style") ?? "";
|
|
3012
3154
|
const fill = Array.from(shape.getElementsByTagNameNS(VML_NS, "fill"))[0];
|
|
3013
3155
|
const opacity = fill?.getAttribute("opacity");
|
|
3014
3156
|
const family = /font-family:\s*(?:"|"|')?([^;"'&]+)/i.exec(
|
|
3015
|
-
|
|
3157
|
+
path2.getAttribute("style") ?? ""
|
|
3016
3158
|
)?.[1];
|
|
3017
3159
|
const width = /width:\s*([\d.]+)pt/i.exec(style);
|
|
3018
3160
|
const height = /height:\s*([\d.]+)pt/i.exec(style);
|
|
3019
3161
|
const rotation = /rotation:\s*(-?[\d.]+)/i.exec(style);
|
|
3020
3162
|
const spec = {
|
|
3021
|
-
text:
|
|
3022
|
-
color:
|
|
3163
|
+
text: path2.getAttribute("string") ?? "",
|
|
3164
|
+
color: colorOf(shape.getAttribute("fillcolor")),
|
|
3023
3165
|
semitransparent: opacity !== null && opacity !== "" && opacity !== "1",
|
|
3024
3166
|
layout: rotation && Math.abs(Number(rotation[1]) % 360) > 1 ? "diagonal" : "horizontal",
|
|
3025
3167
|
...family ? { fontFamily: family.trim() } : {}
|
|
@@ -3074,11 +3216,11 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
3074
3216
|
f.setAttribute("eqn", eqn);
|
|
3075
3217
|
formulas.appendChild(f);
|
|
3076
3218
|
}
|
|
3077
|
-
const
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3219
|
+
const path2 = v("path");
|
|
3220
|
+
path2.setAttribute("textpathok", "t");
|
|
3221
|
+
path2.setAttributeNS(OFFICE_NS, "o:connecttype", "custom");
|
|
3222
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectlocs", "@9,0;@10,10800;@11,21600;@12,10800");
|
|
3223
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectangles", "270,180,90,0");
|
|
3082
3224
|
const typePath = v("textpath");
|
|
3083
3225
|
typePath.setAttribute("on", "t");
|
|
3084
3226
|
typePath.setAttribute("fitshape", "t");
|
|
@@ -3091,7 +3233,7 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
3091
3233
|
lock.setAttributeNS(VML_NS, "v:ext", "edit");
|
|
3092
3234
|
lock.setAttribute("text", "t");
|
|
3093
3235
|
lock.setAttribute("shapetype", "t");
|
|
3094
|
-
for (const child3 of [formulas,
|
|
3236
|
+
for (const child3 of [formulas, path2, typePath, handles, lock]) type.appendChild(child3);
|
|
3095
3237
|
const size = watermarkSizePt(spec);
|
|
3096
3238
|
const shape = v("shape");
|
|
3097
3239
|
shape.setAttribute("id", `${WATERMARK_PREFIX}${uniqueId}`);
|
|
@@ -3131,7 +3273,7 @@ var add = (parent, ...items) => {
|
|
|
3131
3273
|
return parent;
|
|
3132
3274
|
};
|
|
3133
3275
|
var emu = (px2) => String(Math.max(1, Math.round(px2 * EMU_PER_PIXEL)));
|
|
3134
|
-
var
|
|
3276
|
+
var descendants2 = (root, ns, local) => Array.from(root.getElementsByTagNameNS(ns, local));
|
|
3135
3277
|
function paragraphsFor(doc, lines) {
|
|
3136
3278
|
return (lines.length ? lines : [""]).map((line) => {
|
|
3137
3279
|
const paragraph = makeW(doc, "p");
|
|
@@ -3223,23 +3365,23 @@ function buildTextBoxDrawing(doc, image, docPrId) {
|
|
|
3223
3365
|
}
|
|
3224
3366
|
function isSimpleTextBox(graphicData, anchored) {
|
|
3225
3367
|
if (!graphicData || anchored) return false;
|
|
3226
|
-
const content =
|
|
3368
|
+
const content = descendants2(graphicData, W_NS, "txbxContent")[0];
|
|
3227
3369
|
if (!content) return false;
|
|
3228
3370
|
const plain = (node, allowed) => Array.from(node.childNodes).filter(isElement).every((child3) => child3.namespaceURI === W_NS && allowed.includes(child3.localName));
|
|
3229
|
-
return plain(content, ["p"]) &&
|
|
3230
|
-
(paragraph) => plain(paragraph, ["r"]) &&
|
|
3371
|
+
return plain(content, ["p"]) && descendants2(content, W_NS, "p").every(
|
|
3372
|
+
(paragraph) => plain(paragraph, ["r"]) && descendants2(paragraph, W_NS, "r").every((run) => plain(run, ["t"]))
|
|
3231
3373
|
);
|
|
3232
3374
|
}
|
|
3233
3375
|
function textBoxHasBorder(graphicData) {
|
|
3234
|
-
const spPr = graphicData &&
|
|
3376
|
+
const spPr = graphicData && descendants2(graphicData, WPS_NS, "spPr")[0];
|
|
3235
3377
|
const ln = spPr && Array.from(spPr.getElementsByTagNameNS(A_NS, "ln"))[0];
|
|
3236
3378
|
return Boolean(ln && !ln.getElementsByTagNameNS(A_NS, "noFill").length);
|
|
3237
3379
|
}
|
|
3238
3380
|
function patchTextBox(doc, drawing, image, base) {
|
|
3239
3381
|
if (image.widthPx !== base.widthPx || image.heightPx !== base.heightPx)
|
|
3240
3382
|
for (const node of [
|
|
3241
|
-
...
|
|
3242
|
-
...
|
|
3383
|
+
...descendants2(drawing, WP_NS, "extent"),
|
|
3384
|
+
...descendants2(drawing, A_NS, "ext").filter(
|
|
3243
3385
|
(ext) => ext.parentNode?.localName === "xfrm"
|
|
3244
3386
|
)
|
|
3245
3387
|
]) {
|
|
@@ -3247,14 +3389,14 @@ function patchTextBox(doc, drawing, image, base) {
|
|
|
3247
3389
|
node.setAttribute("cy", emu(image.heightPx));
|
|
3248
3390
|
}
|
|
3249
3391
|
if (JSON.stringify(image.textBoxText) !== JSON.stringify(base.textBoxText)) {
|
|
3250
|
-
const content =
|
|
3392
|
+
const content = descendants2(drawing, W_NS, "txbxContent")[0];
|
|
3251
3393
|
if (content) {
|
|
3252
3394
|
for (const child3 of Array.from(content.childNodes)) content.removeChild(child3);
|
|
3253
3395
|
add(content, ...paragraphsFor(doc, image.textBoxText ?? []));
|
|
3254
3396
|
}
|
|
3255
3397
|
}
|
|
3256
3398
|
if (image.textBoxBorder !== false !== (base.textBoxBorder !== false)) {
|
|
3257
|
-
const spPr =
|
|
3399
|
+
const spPr = descendants2(drawing, WPS_NS, "spPr")[0];
|
|
3258
3400
|
if (spPr) {
|
|
3259
3401
|
for (const old of Array.from(spPr.childNodes).filter(
|
|
3260
3402
|
(node) => isElement(node) && node.localName === "ln"
|
|
@@ -3324,8 +3466,8 @@ var CUSTOM_LAYOUT_ATTRIBUTES = [
|
|
|
3324
3466
|
];
|
|
3325
3467
|
function parseCustomLayoutAttributes(get) {
|
|
3326
3468
|
const custom = {};
|
|
3327
|
-
for (const [key,
|
|
3328
|
-
const raw = get(
|
|
3469
|
+
for (const [key, attribute2, kind] of CUSTOM_LAYOUT_ATTRIBUTES) {
|
|
3470
|
+
const raw = get(attribute2);
|
|
3329
3471
|
const value = kind === "flag" ? optionalBoolean(raw) : optionalScaled(raw, kind === "angle" ? 6e4 : 1e5);
|
|
3330
3472
|
if (value !== void 0) custom[key] = value;
|
|
3331
3473
|
}
|
|
@@ -3339,8 +3481,8 @@ var RELATIONSHIP_ATTRIBUTES = [
|
|
|
3339
3481
|
];
|
|
3340
3482
|
function parseRelationshipIdAttributes(get) {
|
|
3341
3483
|
const result = {};
|
|
3342
|
-
for (const [property,
|
|
3343
|
-
const value = optionalString(get(
|
|
3484
|
+
for (const [property, attribute2] of RELATIONSHIP_ATTRIBUTES) {
|
|
3485
|
+
const value = optionalString(get(attribute2));
|
|
3344
3486
|
if (value) result[property] = value;
|
|
3345
3487
|
}
|
|
3346
3488
|
return result;
|
|
@@ -3402,7 +3544,7 @@ async function resolveDiagramDrawingPart(hostPart, dataRelId, drawingExtensionRe
|
|
|
3402
3544
|
const entries = await host.readRelationshipEntries(diagramRelationshipsPart(dataPath));
|
|
3403
3545
|
if (!entries) return void 0;
|
|
3404
3546
|
const drawing = entries.find(
|
|
3405
|
-
(
|
|
3547
|
+
(entry2) => (!drawingExtensionRelId || entry2.id.trim() === drawingExtensionRelId) && entry2.type.endsWith("/diagramDrawing")
|
|
3406
3548
|
);
|
|
3407
3549
|
const id = drawing?.id.trim() ?? "";
|
|
3408
3550
|
const target = drawing?.target.trim() ?? "";
|
|
@@ -3417,47 +3559,6 @@ var DIAGRAM_RELATIONSHIP_TYPES = {
|
|
|
3417
3559
|
drawing: RELATIONSHIP_TYPES.diagramDrawing
|
|
3418
3560
|
};
|
|
3419
3561
|
|
|
3420
|
-
// diagram/dom.ts
|
|
3421
|
-
function attributeReader(element) {
|
|
3422
|
-
return (name) => {
|
|
3423
|
-
if (!element) return void 0;
|
|
3424
|
-
const direct = element.getAttribute(name);
|
|
3425
|
-
if (direct !== null) return direct;
|
|
3426
|
-
const attributes = element.attributes;
|
|
3427
|
-
for (let index = 0; index < attributes.length; index++) {
|
|
3428
|
-
const candidate = attributes.item(index);
|
|
3429
|
-
if (candidate && candidate.localName === name) return candidate.value;
|
|
3430
|
-
}
|
|
3431
|
-
return void 0;
|
|
3432
|
-
};
|
|
3433
|
-
}
|
|
3434
|
-
function stringAttribute(element, name) {
|
|
3435
|
-
const value = attributeReader(element)(name)?.trim();
|
|
3436
|
-
return value ? value : void 0;
|
|
3437
|
-
}
|
|
3438
|
-
function integerAttribute(element, name) {
|
|
3439
|
-
const parsed = Number.parseInt(attributeReader(element)(name) ?? "", 10);
|
|
3440
|
-
return Number.isFinite(parsed) ? parsed : void 0;
|
|
3441
|
-
}
|
|
3442
|
-
function booleanAttribute(element, name) {
|
|
3443
|
-
const value = attributeReader(element)(name)?.trim().toLowerCase();
|
|
3444
|
-
if (value === "1" || value === "true") return true;
|
|
3445
|
-
if (value === "0" || value === "false") return false;
|
|
3446
|
-
return void 0;
|
|
3447
|
-
}
|
|
3448
|
-
function descendants2(root, local) {
|
|
3449
|
-
const result = [];
|
|
3450
|
-
const visit = (node) => {
|
|
3451
|
-
for (const child3 of Array.from(node.childNodes)) {
|
|
3452
|
-
if (!isElement(child3)) continue;
|
|
3453
|
-
if (child3.localName === local) result.push(child3);
|
|
3454
|
-
visit(child3);
|
|
3455
|
-
}
|
|
3456
|
-
};
|
|
3457
|
-
visit(root);
|
|
3458
|
-
return result;
|
|
3459
|
-
}
|
|
3460
|
-
|
|
3461
3562
|
// diagram/data-model.ts
|
|
3462
3563
|
var TRANSITION_TYPES = /* @__PURE__ */ new Set(["parTrans", "sibTrans"]);
|
|
3463
3564
|
var STRUCTURAL_TYPES = /* @__PURE__ */ new Set(["doc", "pres", "parTrans", "sibTrans"]);
|
|
@@ -3481,7 +3582,7 @@ function connectionLabel(connection, transitionText) {
|
|
|
3481
3582
|
function textBodyParagraphs(body) {
|
|
3482
3583
|
if (!body) return [];
|
|
3483
3584
|
return children(body, "p", NS.a).map(
|
|
3484
|
-
(paragraph) =>
|
|
3585
|
+
(paragraph) => descendants(paragraph, "t").map((run) => run.textContent ?? "").join("")
|
|
3485
3586
|
);
|
|
3486
3587
|
}
|
|
3487
3588
|
function parsePoint(element) {
|
|
@@ -3547,21 +3648,21 @@ function parseDiagramDataModel(source, part) {
|
|
|
3547
3648
|
if (connection.modelId && connectionIds.has(connection.modelId))
|
|
3548
3649
|
report("CONNECTION_ID_DUPLICATE", `Duplicate dgm:cxn modelId: ${connection.modelId}.`);
|
|
3549
3650
|
if (connection.modelId) connectionIds.add(connection.modelId);
|
|
3550
|
-
for (const [
|
|
3651
|
+
for (const [attribute2, id] of [
|
|
3551
3652
|
["srcId", connection.sourceId],
|
|
3552
3653
|
["destId", connection.destId]
|
|
3553
3654
|
])
|
|
3554
3655
|
if (!ids.has(id))
|
|
3555
3656
|
report(
|
|
3556
3657
|
"CONNECTION_ENDPOINT_MISSING",
|
|
3557
|
-
`dgm:cxn ${
|
|
3658
|
+
`dgm:cxn ${attribute2} references missing point: ${id}.`
|
|
3558
3659
|
);
|
|
3559
3660
|
const label = connectionLabel(connection, transitionText);
|
|
3560
3661
|
connections.push(label ? { ...connection, label } : connection);
|
|
3561
3662
|
if ((!connection.type || connection.type === "parOf") && !parentById.has(connection.destId))
|
|
3562
3663
|
parentById.set(connection.destId, connection.sourceId);
|
|
3563
3664
|
}
|
|
3564
|
-
const ext =
|
|
3665
|
+
const ext = descendants(root, "dataModelExt")[0];
|
|
3565
3666
|
const drawingRelId = stringAttribute(ext, "relId");
|
|
3566
3667
|
return {
|
|
3567
3668
|
points,
|
|
@@ -3573,55 +3674,8 @@ function parseDiagramDataModel(source, part) {
|
|
|
3573
3674
|
};
|
|
3574
3675
|
}
|
|
3575
3676
|
|
|
3576
|
-
// diagram/drawing-color.ts
|
|
3577
|
-
var COLOR_ELEMENTS = {
|
|
3578
|
-
srgbClr: "srgb",
|
|
3579
|
-
schemeClr: "scheme",
|
|
3580
|
-
sysClr: "system",
|
|
3581
|
-
prstClr: "preset",
|
|
3582
|
-
scrgbClr: "scrgb",
|
|
3583
|
-
hslClr: "hsl"
|
|
3584
|
-
};
|
|
3585
|
-
function colorValue(kind, element) {
|
|
3586
|
-
const attribute = (name) => element.getAttribute(name) ?? "";
|
|
3587
|
-
if (kind === "scrgb") return `${attribute("r")},${attribute("g")},${attribute("b")}`;
|
|
3588
|
-
if (kind === "hsl") return `${attribute("hue")},${attribute("sat")},${attribute("lum")}`;
|
|
3589
|
-
return attribute("val");
|
|
3590
|
-
}
|
|
3591
|
-
function parseDrawingColorIn(container) {
|
|
3592
|
-
if (!container) return void 0;
|
|
3593
|
-
for (const element of elements(container)) {
|
|
3594
|
-
const kind = COLOR_ELEMENTS[element.localName];
|
|
3595
|
-
if (!kind || element.namespaceURI && element.namespaceURI !== NS.a) continue;
|
|
3596
|
-
return parseDrawingColor(element);
|
|
3597
|
-
}
|
|
3598
|
-
return void 0;
|
|
3599
|
-
}
|
|
3600
|
-
function parseDrawingColor(element) {
|
|
3601
|
-
const kind = COLOR_ELEMENTS[element.localName];
|
|
3602
|
-
if (!kind) return void 0;
|
|
3603
|
-
const color = {
|
|
3604
|
-
kind,
|
|
3605
|
-
value: colorValue(kind, element),
|
|
3606
|
-
transforms: elements(element).map((child3) => ({
|
|
3607
|
-
name: child3.localName,
|
|
3608
|
-
value: child3.getAttribute("val") ?? ""
|
|
3609
|
-
}))
|
|
3610
|
-
};
|
|
3611
|
-
const fallback = kind === "system" ? element.getAttribute("lastClr") : null;
|
|
3612
|
-
if (fallback) color.fallback = fallback;
|
|
3613
|
-
return color;
|
|
3614
|
-
}
|
|
3615
|
-
function parseDrawingColorList(container) {
|
|
3616
|
-
if (!container) return [];
|
|
3617
|
-
return elements(container).flatMap((element) => {
|
|
3618
|
-
const color = parseDrawingColor(element);
|
|
3619
|
-
return color ? [color] : [];
|
|
3620
|
-
});
|
|
3621
|
-
}
|
|
3622
|
-
|
|
3623
3677
|
// diagram/definitions.ts
|
|
3624
|
-
var
|
|
3678
|
+
var rootOf2 = (source) => (typeof source === "string" ? parseXml(source, { label: "DiagramML" }) : source).documentElement;
|
|
3625
3679
|
function parseDefinitionHeader(root) {
|
|
3626
3680
|
const header = {
|
|
3627
3681
|
uniqueId: stringAttribute(root, "uniqueId") ?? "",
|
|
@@ -3642,7 +3696,7 @@ function colorList(container) {
|
|
|
3642
3696
|
return { ...method ? { method } : {}, colors: parseDrawingColorList(container) };
|
|
3643
3697
|
}
|
|
3644
3698
|
function parseDiagramColors(source) {
|
|
3645
|
-
const root =
|
|
3699
|
+
const root = rootOf2(source);
|
|
3646
3700
|
const labels = children(root, "styleLbl", NS.dgm).map((label) => ({
|
|
3647
3701
|
name: stringAttribute(label, "name") ?? "",
|
|
3648
3702
|
fill: colorList(first(label, "fillClrLst", NS.dgm)),
|
|
@@ -3682,7 +3736,7 @@ function parseStyleReferences(style) {
|
|
|
3682
3736
|
}
|
|
3683
3737
|
var hasContent = (element) => Boolean(element && (element.attributes.length > 0 || elements(element).length > 0));
|
|
3684
3738
|
function parseDiagramQuickStyle(source) {
|
|
3685
|
-
const root =
|
|
3739
|
+
const root = rootOf2(source);
|
|
3686
3740
|
const labels = children(root, "styleLbl", NS.dgm).map((label) => ({
|
|
3687
3741
|
name: stringAttribute(label, "name") ?? "",
|
|
3688
3742
|
...parseStyleReferences(first(label, "style", NS.dgm)),
|
|
@@ -3696,7 +3750,7 @@ function parseDiagramQuickStyle(source) {
|
|
|
3696
3750
|
};
|
|
3697
3751
|
}
|
|
3698
3752
|
function parseDiagramLayoutSummary(source) {
|
|
3699
|
-
const root =
|
|
3753
|
+
const root = rootOf2(source);
|
|
3700
3754
|
const header = parseDefinitionHeader(root);
|
|
3701
3755
|
const family = resolveDiagramLayoutCategory(
|
|
3702
3756
|
header.uniqueId,
|
|
@@ -3708,11 +3762,11 @@ function parseDiagramLayoutSummary(source) {
|
|
|
3708
3762
|
...header,
|
|
3709
3763
|
...family ? { family } : {},
|
|
3710
3764
|
...rootAlgorithm ? { rootAlgorithm } : {},
|
|
3711
|
-
layoutNodeCount:
|
|
3765
|
+
layoutNodeCount: descendants(root, "layoutNode").length
|
|
3712
3766
|
};
|
|
3713
3767
|
}
|
|
3714
3768
|
|
|
3715
|
-
//
|
|
3769
|
+
// drawingml/drawing-fill.ts
|
|
3716
3770
|
var FILL_ELEMENTS = /* @__PURE__ */ new Set([
|
|
3717
3771
|
"noFill",
|
|
3718
3772
|
"solidFill",
|
|
@@ -3744,7 +3798,7 @@ function parseDrawingFill(properties) {
|
|
|
3744
3798
|
});
|
|
3745
3799
|
const angle = Number.parseInt(first(fill, "lin", NS.a)?.getAttribute("ang") ?? "", 10);
|
|
3746
3800
|
const scaled = first(fill, "lin", NS.a)?.getAttribute("scaled");
|
|
3747
|
-
const
|
|
3801
|
+
const path2 = first(fill, "path", NS.a)?.getAttribute("path");
|
|
3748
3802
|
const focus = first(first(fill, "path", NS.a), "fillToRect", NS.a);
|
|
3749
3803
|
const tile = first(fill, "tileRect", NS.a);
|
|
3750
3804
|
const tileRect = tile ? {
|
|
@@ -3766,7 +3820,7 @@ function parseDrawingFill(properties) {
|
|
|
3766
3820
|
...Number.isFinite(angle) ? { angle: angle / 6e4 } : {},
|
|
3767
3821
|
...scaled === "1" || scaled === "true" ? { scaled: true } : {},
|
|
3768
3822
|
...scaled === "0" || scaled === "false" ? { scaled: false } : {},
|
|
3769
|
-
...
|
|
3823
|
+
...path2 ? { path: path2 } : {},
|
|
3770
3824
|
...fillToRect && Object.values(fillToRect).every(Number.isFinite) ? { fillToRect } : {},
|
|
3771
3825
|
...tileRect && Object.values(tileRect).every(Number.isFinite) ? { tileRect } : {}
|
|
3772
3826
|
};
|
|
@@ -3804,7 +3858,7 @@ function parseDrawingLine(ln) {
|
|
|
3804
3858
|
return line;
|
|
3805
3859
|
}
|
|
3806
3860
|
|
|
3807
|
-
//
|
|
3861
|
+
// drawingml/drawing-text.ts
|
|
3808
3862
|
function parseSpacing(parent) {
|
|
3809
3863
|
for (const [name, unit, divisor] of [
|
|
3810
3864
|
["spcPts", "points", 100],
|
|
@@ -3870,20 +3924,20 @@ function parseDrawingTextBody(body) {
|
|
|
3870
3924
|
const anchor = properties?.getAttribute("anchor");
|
|
3871
3925
|
if (anchor) result.anchor = anchor;
|
|
3872
3926
|
const insets = {};
|
|
3873
|
-
for (const [key,
|
|
3927
|
+
for (const [key, attribute2] of [
|
|
3874
3928
|
["left", "lIns"],
|
|
3875
3929
|
["top", "tIns"],
|
|
3876
3930
|
["right", "rIns"],
|
|
3877
3931
|
["bottom", "bIns"]
|
|
3878
3932
|
]) {
|
|
3879
|
-
const value = Number.parseInt(properties?.getAttribute(
|
|
3933
|
+
const value = Number.parseInt(properties?.getAttribute(attribute2) ?? "", 10);
|
|
3880
3934
|
if (Number.isFinite(value)) insets[key] = value;
|
|
3881
3935
|
}
|
|
3882
3936
|
if (Object.keys(insets).length > 0) result.insetsEmu = insets;
|
|
3883
3937
|
return result;
|
|
3884
3938
|
}
|
|
3885
3939
|
|
|
3886
|
-
//
|
|
3940
|
+
// drawingml/drawing-geometry.ts
|
|
3887
3941
|
var int = (element, name) => Number.parseInt(element?.getAttribute(name) ?? "", 10);
|
|
3888
3942
|
function parseFrame(container) {
|
|
3889
3943
|
const off = first(container, "off", NS.a);
|
|
@@ -3907,18 +3961,18 @@ function parseTransform(xfrm) {
|
|
|
3907
3961
|
...booleanAttribute(xfrm, "flipV") ? { flipVertical: true } : {}
|
|
3908
3962
|
};
|
|
3909
3963
|
}
|
|
3910
|
-
function parsePathCommands(
|
|
3964
|
+
function parsePathCommands(path2) {
|
|
3911
3965
|
const commands = [];
|
|
3912
3966
|
const point = (element) => {
|
|
3913
3967
|
const x = int(element, "x");
|
|
3914
3968
|
const y = int(element, "y");
|
|
3915
3969
|
return Number.isFinite(x) && Number.isFinite(y) ? { x, y } : void 0;
|
|
3916
3970
|
};
|
|
3917
|
-
for (const element of Array.from(
|
|
3971
|
+
for (const element of Array.from(path2.childNodes)) {
|
|
3918
3972
|
if (element.nodeType !== 1) continue;
|
|
3919
3973
|
const node = element;
|
|
3920
3974
|
const points = children(node, "pt", NS.a).map(point);
|
|
3921
|
-
if (points.some((
|
|
3975
|
+
if (points.some((entry2) => entry2 === void 0)) return void 0;
|
|
3922
3976
|
const [p0, p1, p2] = points;
|
|
3923
3977
|
switch (node.localName) {
|
|
3924
3978
|
case "moveTo":
|
|
@@ -3961,17 +4015,17 @@ function parseDrawingGeometry(spPr) {
|
|
|
3961
4015
|
const custom = first(spPr, "custGeom", NS.a);
|
|
3962
4016
|
if (custom) {
|
|
3963
4017
|
const paths = [];
|
|
3964
|
-
for (const
|
|
3965
|
-
const commands = parsePathCommands(
|
|
4018
|
+
for (const path2 of children(first(custom, "pathLst", NS.a) ?? custom, "path", NS.a)) {
|
|
4019
|
+
const commands = parsePathCommands(path2);
|
|
3966
4020
|
if (!commands) return { geometry: "custom", issue: "CUSTOM_GEOMETRY_GUIDES_UNSUPPORTED" };
|
|
3967
|
-
const width = int(
|
|
3968
|
-
const height = int(
|
|
4021
|
+
const width = int(path2, "w");
|
|
4022
|
+
const height = int(path2, "h");
|
|
3969
4023
|
paths.push({
|
|
3970
4024
|
commands,
|
|
3971
4025
|
...Number.isFinite(width) ? { width } : {},
|
|
3972
4026
|
...Number.isFinite(height) ? { height } : {},
|
|
3973
|
-
...
|
|
3974
|
-
...
|
|
4027
|
+
...path2.getAttribute("fill") ? { fill: path2.getAttribute("fill") } : {},
|
|
4028
|
+
...path2.getAttribute("stroke") === "0" || path2.getAttribute("stroke") === "false" ? { stroke: false } : {}
|
|
3975
4029
|
});
|
|
3976
4030
|
}
|
|
3977
4031
|
return { geometry: "custom", paths };
|
|
@@ -4313,60 +4367,1233 @@ async function resolveDiagramParts(diagram, readText) {
|
|
|
4313
4367
|
diagram.notice = diagramNotice(diagram.rendering);
|
|
4314
4368
|
}
|
|
4315
4369
|
|
|
4316
|
-
//
|
|
4317
|
-
var
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
if (isElement(child3) && child3.namespaceURI === ns && child3.localName === local) return child3;
|
|
4327
|
-
return void 0;
|
|
4370
|
+
// chart/color-style.ts
|
|
4371
|
+
var CHART_COLOR_STYLE_NS = "http://schemas.microsoft.com/office/drawing/2012/chartStyle";
|
|
4372
|
+
function chartColorStyleId(xml) {
|
|
4373
|
+
const root = parseXml(xml).documentElement;
|
|
4374
|
+
if (root.localName !== "colorStyle" || root.namespaceURI !== CHART_COLOR_STYLE_NS)
|
|
4375
|
+
return void 0;
|
|
4376
|
+
const value = root.getAttribute("id");
|
|
4377
|
+
if (!value || !/^\d+$/.test(value)) return void 0;
|
|
4378
|
+
const id = Number(value);
|
|
4379
|
+
return Number.isInteger(id) && id >= 0 ? id : void 0;
|
|
4328
4380
|
}
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
for (const
|
|
4335
|
-
|
|
4336
|
-
if (
|
|
4337
|
-
|
|
4381
|
+
|
|
4382
|
+
// chart/built-in-text-style.ts
|
|
4383
|
+
var C14 = NS.c14;
|
|
4384
|
+
function readBuiltInChartStyle(root) {
|
|
4385
|
+
for (const content of children(root, "AlternateContent", NS.mc)) {
|
|
4386
|
+
for (const choice of children(content, "Choice", NS.mc)) {
|
|
4387
|
+
const requires = choice.getAttribute("Requires")?.trim().split(/\s+/);
|
|
4388
|
+
if (!requires?.length || !requires.every((prefix) => choice.lookupNamespaceURI(prefix) === C14))
|
|
4389
|
+
continue;
|
|
4390
|
+
const modern = first(choice, "style", C14)?.getAttribute("val");
|
|
4391
|
+
if (modern && /^\d+$/.test(modern) && Number(modern) >= 101 && Number(modern) <= 148)
|
|
4392
|
+
return Number(modern);
|
|
4338
4393
|
}
|
|
4339
4394
|
}
|
|
4340
|
-
|
|
4395
|
+
const legacy = first(root, "style", NS.c) ?? first(first(first(root, "AlternateContent", NS.mc), "Fallback", NS.mc), "style", NS.c);
|
|
4396
|
+
const value = legacy?.getAttribute("val");
|
|
4397
|
+
if (!legacy) return 2;
|
|
4398
|
+
return value && /^\d+$/.test(value) && Number.isSafeInteger(Number(value)) ? Number(value) : void 0;
|
|
4341
4399
|
}
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4400
|
+
|
|
4401
|
+
// chart/read-appearance.ts
|
|
4402
|
+
function readChartAppearance(text, properties) {
|
|
4403
|
+
const out = {};
|
|
4404
|
+
const size = Number(text?.getAttribute("sz") ?? NaN);
|
|
4405
|
+
if (Number.isFinite(size) && size > 0) out.fontSize = size / 100;
|
|
4406
|
+
for (const [attribute2, key] of [
|
|
4407
|
+
["b", "bold"],
|
|
4408
|
+
["i", "italic"]
|
|
4409
|
+
]) {
|
|
4410
|
+
const value = text?.getAttribute(attribute2);
|
|
4411
|
+
if (value !== null && value !== void 0) out[key] = value === "1" || value === "true";
|
|
4412
|
+
}
|
|
4413
|
+
const typeface = first(text, "latin", NS.a)?.getAttribute("typeface");
|
|
4414
|
+
const underline = text?.getAttribute("u");
|
|
4415
|
+
if (underline) out.underline = underline !== "none";
|
|
4416
|
+
if (typeface) out.typeface = typeface;
|
|
4417
|
+
const color = parseDrawingColorIn(first(text, "solidFill", NS.a));
|
|
4418
|
+
if (color) out.textColor = color;
|
|
4419
|
+
const fill = parseDrawingFill(properties);
|
|
4420
|
+
const line = parseDrawingLine(first(properties, "ln", NS.a));
|
|
4421
|
+
if (fill) out.fill = fill;
|
|
4422
|
+
if (line) out.line = line;
|
|
4423
|
+
const effects = first(text, "effectLst", NS.a);
|
|
4424
|
+
if (effects) out.textEffectsXml = buildXml(effects);
|
|
4425
|
+
return out;
|
|
4345
4426
|
}
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4427
|
+
|
|
4428
|
+
// chart/formatting-nodes.ts
|
|
4429
|
+
function chartFormattingNodes(root) {
|
|
4430
|
+
const chart = first(root, "chart", NS.c);
|
|
4431
|
+
const plot = first(chart, "plotArea", NS.c);
|
|
4432
|
+
const category = first(plot, "catAx", NS.c) ?? first(plot, "dateAx", NS.c);
|
|
4433
|
+
const values = plot ? children(plot, "valAx", NS.c) : [];
|
|
4434
|
+
return {
|
|
4435
|
+
chartArea: root,
|
|
4436
|
+
plotArea: plot,
|
|
4437
|
+
title: first(chart, "title", NS.c),
|
|
4438
|
+
legend: first(chart, "legend", NS.c),
|
|
4439
|
+
categoryAxis: category ?? values[0],
|
|
4440
|
+
valueAxis: category ? values[0] : values[1],
|
|
4441
|
+
gridlineMajor: first(values[0], "majorGridlines", NS.c),
|
|
4442
|
+
gridlineMinor: first(values[0], "minorGridlines", NS.c)
|
|
4359
4443
|
};
|
|
4360
|
-
return extension && known[extension] || "application/octet-stream";
|
|
4361
4444
|
}
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
const
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4445
|
+
|
|
4446
|
+
// chart/manual-layout.ts
|
|
4447
|
+
function readChartManualLayoutValues(value) {
|
|
4448
|
+
const result = {};
|
|
4449
|
+
const enumeration = (name, values) => {
|
|
4450
|
+
const raw = value(name);
|
|
4451
|
+
return values.includes(raw) ? raw : void 0;
|
|
4452
|
+
};
|
|
4453
|
+
const target = enumeration("layoutTarget", ["inner", "outer"]);
|
|
4454
|
+
if (target) result.layoutTarget = target;
|
|
4455
|
+
for (const [xml, key] of [
|
|
4456
|
+
["xMode", "xMode"],
|
|
4457
|
+
["yMode", "yMode"],
|
|
4458
|
+
["wMode", "widthMode"],
|
|
4459
|
+
["hMode", "heightMode"]
|
|
4460
|
+
]) {
|
|
4461
|
+
const mode = enumeration(xml, ["edge", "factor"]);
|
|
4462
|
+
if (mode) result[key] = mode;
|
|
4463
|
+
}
|
|
4464
|
+
for (const [xml, key] of [
|
|
4465
|
+
["x", "x"],
|
|
4466
|
+
["y", "y"],
|
|
4467
|
+
["w", "width"],
|
|
4468
|
+
["h", "height"]
|
|
4469
|
+
]) {
|
|
4470
|
+
const raw = value(xml);
|
|
4471
|
+
if (typeof raw !== "string" && typeof raw !== "number" || typeof raw === "string" && !raw.trim())
|
|
4472
|
+
continue;
|
|
4473
|
+
const number = Number(raw);
|
|
4474
|
+
if (Number.isFinite(number)) result[key] = number;
|
|
4475
|
+
}
|
|
4476
|
+
return Object.keys(result).length ? result : void 0;
|
|
4477
|
+
}
|
|
4478
|
+
|
|
4479
|
+
// chart/read-formatting.ts
|
|
4480
|
+
var c = (parent, name) => first(parent, name, NS.c);
|
|
4481
|
+
var a = (parent, name) => first(parent, name, NS.a);
|
|
4482
|
+
function entry(node) {
|
|
4483
|
+
const body = c(node, "txPr");
|
|
4484
|
+
const paragraph = a(body, "p");
|
|
4485
|
+
const defaults = a(a(paragraph, "pPr"), "defRPr");
|
|
4486
|
+
const rich = c(c(node, "tx"), "rich");
|
|
4487
|
+
const richParagraph = a(rich, "p");
|
|
4488
|
+
const textBody = parseDrawingTextBody(rich);
|
|
4489
|
+
const manual = c(c(node, "layout"), "manualLayout");
|
|
4490
|
+
const layout2 = manual ? readChartManualLayoutValues((name) => c(manual, name)?.getAttribute("val")) : void 0;
|
|
4491
|
+
const overlay = c(node, "overlay")?.getAttribute("val");
|
|
4492
|
+
const out = {
|
|
4493
|
+
sourceXml: buildXml(node),
|
|
4494
|
+
...layout2 ? { layout: layout2 } : {},
|
|
4495
|
+
...overlay === "0" || overlay === "false" ? { overlay: false } : overlay === "1" || overlay === "true" ? { overlay: true } : {},
|
|
4496
|
+
...readChartAppearance(defaults, c(node, "spPr")),
|
|
4497
|
+
...readChartAppearance(a(a(richParagraph, "pPr"), "defRPr"), void 0),
|
|
4498
|
+
...readChartAppearance(a(a(richParagraph, "r"), "rPr"), void 0),
|
|
4499
|
+
...textBody ? { textBody, textBodyStyle: readChartAppearance(defaults, void 0) } : {}
|
|
4500
|
+
};
|
|
4501
|
+
if (["catAx", "dateAx", "valAx"].includes(node.localName)) {
|
|
4502
|
+
const deleted = c(node, "delete")?.getAttribute("val");
|
|
4503
|
+
if (deleted !== void 0) out.axisVisible = deleted !== "1" && deleted !== "true";
|
|
4504
|
+
out.labelsVisible = out.axisVisible !== false && c(node, "tickLblPos")?.getAttribute("val") !== "none";
|
|
4505
|
+
}
|
|
4506
|
+
return out;
|
|
4507
|
+
}
|
|
4508
|
+
function readChartFormatting(root) {
|
|
4509
|
+
const nodes = chartFormattingNodes(root);
|
|
4510
|
+
const entries = Object.fromEntries(
|
|
4511
|
+
Object.entries(nodes).flatMap(([name, node]) => node ? [[name, entry(node)]] : [])
|
|
4512
|
+
);
|
|
4513
|
+
const builtInStyle = readBuiltInChartStyle(root);
|
|
4514
|
+
const textBody = c(root, "txPr");
|
|
4515
|
+
const textDefaults = textBody ? {
|
|
4516
|
+
sourceXml: buildXml(textBody),
|
|
4517
|
+
...readChartAppearance(a(a(a(textBody, "p"), "pPr"), "defRPr"), void 0)
|
|
4518
|
+
} : void 0;
|
|
4519
|
+
return Object.keys(entries).length ? {
|
|
4520
|
+
entries,
|
|
4521
|
+
sourceXml: buildXml(root),
|
|
4522
|
+
...builtInStyle === void 0 ? {} : { builtInStyle },
|
|
4523
|
+
...textDefaults ? { textDefaults } : {}
|
|
4524
|
+
} : void 0;
|
|
4525
|
+
}
|
|
4526
|
+
|
|
4527
|
+
// chart/data-cache.ts
|
|
4528
|
+
function chartCacheValues(cache) {
|
|
4529
|
+
if (!cache) return [];
|
|
4530
|
+
const numeric = cache.type === "number";
|
|
4531
|
+
const out = [];
|
|
4532
|
+
for (const point of cache.points) {
|
|
4533
|
+
const text = point.value;
|
|
4534
|
+
out[point.index ?? out.length] = numeric && text.trim() !== "" && Number.isFinite(Number(text)) ? Number(text) : text;
|
|
4535
|
+
}
|
|
4536
|
+
const size = Math.max(cache.pointCount ?? 0, out.length);
|
|
4537
|
+
for (let index = 0; index < size; index++) if (out[index] === void 0) out[index] = "";
|
|
4538
|
+
return out;
|
|
4539
|
+
}
|
|
4540
|
+
|
|
4541
|
+
// chart/xml-fragment.ts
|
|
4542
|
+
var CHART_ROOT_BINDINGS = /* @__PURE__ */ new Map([
|
|
4543
|
+
["c", NS.c],
|
|
4544
|
+
["a", NS.a],
|
|
4545
|
+
["r", NS.r]
|
|
4546
|
+
]);
|
|
4547
|
+
var DECLARATION = / xmlns:([A-Za-z_][\w.-]*)="([^"]*)"/g;
|
|
4548
|
+
function stripDeclarations(xml, bindings) {
|
|
4549
|
+
const conflicting = /* @__PURE__ */ new Set();
|
|
4550
|
+
for (const [, prefix, uri] of xml.matchAll(DECLARATION))
|
|
4551
|
+
if (prefix !== void 0 && bindings.has(prefix) && bindings.get(prefix) !== uri)
|
|
4552
|
+
conflicting.add(prefix);
|
|
4553
|
+
return xml.replace(
|
|
4554
|
+
DECLARATION,
|
|
4555
|
+
(match, prefix, uri) => bindings.get(prefix) === uri && !conflicting.has(prefix) ? "" : match
|
|
4556
|
+
);
|
|
4557
|
+
}
|
|
4558
|
+
var innerXml = (element) => stripDeclarations(elements(element).map(buildXml).join(""), CHART_ROOT_BINDINGS);
|
|
4559
|
+
|
|
4560
|
+
// chart/parse-util.ts
|
|
4561
|
+
var cChild = (parent, local) => first(parent, local, NS.c);
|
|
4562
|
+
var attribute = (element, name) => element?.hasAttribute(name) ? element.getAttribute(name) ?? void 0 : void 0;
|
|
4563
|
+
var cVal = (parent, local) => attribute(cChild(parent, local), "val");
|
|
4564
|
+
var path = (element) => `c:${element.parentNode?.localName ?? ""}/c:${element.localName}`;
|
|
4565
|
+
function malformed(context, element, value) {
|
|
4566
|
+
context.issues.push({
|
|
4567
|
+
code: "CHART_VALUE_INVALID",
|
|
4568
|
+
message: `${path(element)} has an unreadable value "${value}".`
|
|
4569
|
+
});
|
|
4570
|
+
}
|
|
4571
|
+
function cBool(context, parent, local) {
|
|
4572
|
+
const element = cChild(parent, local);
|
|
4573
|
+
if (!element) return void 0;
|
|
4574
|
+
const raw = attribute(element, "val");
|
|
4575
|
+
if (raw === void 0) return true;
|
|
4576
|
+
const value = raw.trim().toLowerCase();
|
|
4577
|
+
if (value === "1" || value === "true") return true;
|
|
4578
|
+
if (value === "0" || value === "false") return false;
|
|
4579
|
+
malformed(context, element, raw);
|
|
4580
|
+
return void 0;
|
|
4581
|
+
}
|
|
4582
|
+
function cNumber(context, parent, local) {
|
|
4583
|
+
const element = cChild(parent, local);
|
|
4584
|
+
const raw = attribute(element, "val");
|
|
4585
|
+
if (!element || raw === void 0) return void 0;
|
|
4586
|
+
const value = raw.trim() ? Number(raw) : Number.NaN;
|
|
4587
|
+
if (Number.isFinite(value)) return value;
|
|
4588
|
+
malformed(context, element, raw);
|
|
4589
|
+
return void 0;
|
|
4590
|
+
}
|
|
4591
|
+
function reportUnmodelled(context, element, handled) {
|
|
4592
|
+
for (const child3 of elements(element)) {
|
|
4593
|
+
if (handled.has(child3.localName)) continue;
|
|
4594
|
+
context.issues.push({
|
|
4595
|
+
code: "CHART_ELEMENT_NOT_MODELLED",
|
|
4596
|
+
message: `${path(child3)} is not modelled; it is kept only in the source part.`
|
|
4597
|
+
});
|
|
4598
|
+
}
|
|
4599
|
+
}
|
|
4600
|
+
function extensionList(parent) {
|
|
4601
|
+
const extLst = cChild(parent, "extLst");
|
|
4602
|
+
return extLst ? buildXml(extLst) : void 0;
|
|
4603
|
+
}
|
|
4604
|
+
function readShapeFields(spPr) {
|
|
4605
|
+
const out = {};
|
|
4606
|
+
const fill = parseDrawingFill(spPr);
|
|
4607
|
+
if (fill) out.fill = fill;
|
|
4608
|
+
const line = parseDrawingLine(first(spPr, "ln", NS.a));
|
|
4609
|
+
if (line) out.line = line;
|
|
4610
|
+
const effects = first(spPr, "effectLst", NS.a);
|
|
4611
|
+
if (effects) out.effectsXml = buildXml(effects);
|
|
4612
|
+
return out;
|
|
4613
|
+
}
|
|
4614
|
+
function shapeProperties(parent) {
|
|
4615
|
+
const spPr = cChild(parent, "spPr");
|
|
4616
|
+
if (!spPr) return void 0;
|
|
4617
|
+
const out = readShapeFields(spPr);
|
|
4618
|
+
const source = innerXml(spPr);
|
|
4619
|
+
if (source) out.sourceXml = source;
|
|
4620
|
+
return out;
|
|
4621
|
+
}
|
|
4622
|
+
function chartTextBody(element) {
|
|
4623
|
+
const body = parseDrawingTextBody(element);
|
|
4624
|
+
if (!body || !element) return body;
|
|
4625
|
+
const source = innerXml(element);
|
|
4626
|
+
if (source) body.sourceXml = source;
|
|
4627
|
+
return body;
|
|
4628
|
+
}
|
|
4629
|
+
var textProperties = (parent) => chartTextBody(cChild(parent, "txPr"));
|
|
4630
|
+
function chartLines(parent, local) {
|
|
4631
|
+
const element = cChild(parent, local);
|
|
4632
|
+
if (!element) return void 0;
|
|
4633
|
+
const spPr = shapeProperties(element);
|
|
4634
|
+
return spPr ? { spPr } : {};
|
|
4635
|
+
}
|
|
4636
|
+
function numberFormat(parent) {
|
|
4637
|
+
const element = cChild(parent, "numFmt");
|
|
4638
|
+
const formatCode = attribute(element, "formatCode");
|
|
4639
|
+
if (formatCode === void 0) return void 0;
|
|
4640
|
+
const linked = attribute(element, "sourceLinked");
|
|
4641
|
+
return {
|
|
4642
|
+
formatCode,
|
|
4643
|
+
...linked === "1" || linked === "true" ? { sourceLinked: true } : {},
|
|
4644
|
+
...linked === "0" || linked === "false" ? { sourceLinked: false } : {}
|
|
4645
|
+
};
|
|
4646
|
+
}
|
|
4647
|
+
function readLayoutFields(layout2) {
|
|
4648
|
+
const manual = cChild(layout2, "manualLayout");
|
|
4649
|
+
return (manual && readChartManualLayoutValues((name) => cVal(manual, name))) ?? {};
|
|
4650
|
+
}
|
|
4651
|
+
function manualLayout(parent) {
|
|
4652
|
+
const layout2 = cChild(parent, "layout");
|
|
4653
|
+
if (!layout2) return void 0;
|
|
4654
|
+
const out = readLayoutFields(layout2);
|
|
4655
|
+
const source = innerXml(layout2);
|
|
4656
|
+
if (source) out.sourceXml = source;
|
|
4657
|
+
return out;
|
|
4658
|
+
}
|
|
4659
|
+
function assignDefined(target, values) {
|
|
4660
|
+
for (const [key, value] of Object.entries(values))
|
|
4661
|
+
if (value !== void 0) target[key] = value;
|
|
4662
|
+
return target;
|
|
4663
|
+
}
|
|
4664
|
+
|
|
4665
|
+
// chart/parse-text.ts
|
|
4666
|
+
function parseCache(node) {
|
|
4667
|
+
const cache = {
|
|
4668
|
+
type: node.localName === "numCache" || node.localName === "numLit" ? "number" : "string",
|
|
4669
|
+
points: children(node, "pt", NS.c).map((pt) => {
|
|
4670
|
+
const point = { value: cChild(pt, "v")?.textContent ?? "" };
|
|
4671
|
+
const index = Number(attribute(pt, "idx") ?? Number.NaN);
|
|
4672
|
+
if (Number.isInteger(index) && index >= 0) point.index = index;
|
|
4673
|
+
const formatCode2 = attribute(pt, "formatCode");
|
|
4674
|
+
if (formatCode2 !== void 0) point.formatCode = formatCode2;
|
|
4675
|
+
return point;
|
|
4676
|
+
})
|
|
4677
|
+
};
|
|
4678
|
+
const count = Number(cVal(node, "ptCount") ?? Number.NaN);
|
|
4679
|
+
if (Number.isInteger(count) && count >= 0) cache.pointCount = count;
|
|
4680
|
+
const formatCode = cChild(node, "formatCode")?.textContent;
|
|
4681
|
+
if (formatCode) cache.formatCode = formatCode;
|
|
4682
|
+
return cache;
|
|
4683
|
+
}
|
|
4684
|
+
function parseDataSource(element) {
|
|
4685
|
+
if (!element) return void 0;
|
|
4686
|
+
const source = {};
|
|
4687
|
+
const ref = cChild(element, "numRef") ?? cChild(element, "strRef") ?? cChild(element, "multiLvlStrRef");
|
|
4688
|
+
if (ref) {
|
|
4689
|
+
source.kind = ref.localName;
|
|
4690
|
+
const formula = cChild(ref, "f")?.textContent;
|
|
4691
|
+
if (formula) source.formula = formula;
|
|
4692
|
+
const cache = cChild(ref, "numCache") ?? cChild(ref, "strCache");
|
|
4693
|
+
if (cache) source.cache = parseCache(cache);
|
|
4694
|
+
const levels = cChild(ref, "multiLvlStrCache");
|
|
4695
|
+
if (levels) {
|
|
4696
|
+
source.levels = children(levels, "lvl", NS.c).map(parseCache);
|
|
4697
|
+
const count = Number(cVal(levels, "ptCount") ?? Number.NaN);
|
|
4698
|
+
if (Number.isInteger(count) && count >= 0) source.levelPointCount = count;
|
|
4699
|
+
}
|
|
4700
|
+
return source;
|
|
4701
|
+
}
|
|
4702
|
+
const literal = cChild(element, "numLit") ?? cChild(element, "strLit");
|
|
4703
|
+
if (literal) {
|
|
4704
|
+
source.kind = literal.localName;
|
|
4705
|
+
source.cache = parseCache(literal);
|
|
4706
|
+
}
|
|
4707
|
+
return source;
|
|
4708
|
+
}
|
|
4709
|
+
function parseChartText(context, tx, allowValue) {
|
|
4710
|
+
if (!tx) return void 0;
|
|
4711
|
+
const text = {};
|
|
4712
|
+
const rich = chartTextBody(cChild(tx, "rich"));
|
|
4713
|
+
if (rich) text.rich = rich;
|
|
4714
|
+
if (cChild(tx, "strRef")) {
|
|
4715
|
+
const reference = parseDataSource(tx);
|
|
4716
|
+
if (reference) text.reference = reference;
|
|
4717
|
+
}
|
|
4718
|
+
const value = allowValue ? cChild(tx, "v")?.textContent : void 0;
|
|
4719
|
+
if (value !== void 0 && value !== null) text.value = value;
|
|
4720
|
+
const cached2 = chartCacheValues(text.reference?.cache)[0];
|
|
4721
|
+
const flat = text.value ?? (rich ? rich.text : cached2 === void 0 ? void 0 : String(cached2));
|
|
4722
|
+
if (flat !== void 0) text.text = flat;
|
|
4723
|
+
reportUnmodelled(context, tx, new Set(allowValue ? ["strRef", "v"] : ["rich", "strRef"]));
|
|
4724
|
+
return text;
|
|
4725
|
+
}
|
|
4726
|
+
var TITLE = /* @__PURE__ */ new Set(["tx", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
4727
|
+
function parseTitle(context, element) {
|
|
4728
|
+
const tx = parseChartText(context, cChild(element, "tx"), false);
|
|
4729
|
+
reportUnmodelled(context, element, TITLE);
|
|
4730
|
+
return assignDefined(
|
|
4731
|
+
{},
|
|
4732
|
+
{
|
|
4733
|
+
tx,
|
|
4734
|
+
text: tx?.text,
|
|
4735
|
+
overlay: cBool(context, element, "overlay"),
|
|
4736
|
+
layout: manualLayout(element),
|
|
4737
|
+
spPr: shapeProperties(element),
|
|
4738
|
+
txPr: textProperties(element),
|
|
4739
|
+
extLst: extensionList(element)
|
|
4740
|
+
}
|
|
4741
|
+
);
|
|
4742
|
+
}
|
|
4743
|
+
var LABEL_OPTIONS = [
|
|
4744
|
+
"delete",
|
|
4745
|
+
"showLegendKey",
|
|
4746
|
+
"showVal",
|
|
4747
|
+
"showCatName",
|
|
4748
|
+
"showSerName",
|
|
4749
|
+
"showPercent",
|
|
4750
|
+
"showBubbleSize",
|
|
4751
|
+
"separator",
|
|
4752
|
+
"dLblPos",
|
|
4753
|
+
"numFmt",
|
|
4754
|
+
"spPr",
|
|
4755
|
+
"txPr",
|
|
4756
|
+
"extLst"
|
|
4757
|
+
];
|
|
4758
|
+
function labelOptions(context, element) {
|
|
4759
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
4760
|
+
return assignDefined(
|
|
4761
|
+
{},
|
|
4762
|
+
{
|
|
4763
|
+
deleted: flag2("delete"),
|
|
4764
|
+
showLegendKey: flag2("showLegendKey"),
|
|
4765
|
+
showValue: flag2("showVal"),
|
|
4766
|
+
showCategoryName: flag2("showCatName"),
|
|
4767
|
+
showSeriesName: flag2("showSerName"),
|
|
4768
|
+
showPercent: flag2("showPercent"),
|
|
4769
|
+
showBubbleSize: flag2("showBubbleSize"),
|
|
4770
|
+
separator: cChild(element, "separator")?.textContent ?? void 0,
|
|
4771
|
+
position: cVal(element, "dLblPos"),
|
|
4772
|
+
numberFormat: numberFormat(element),
|
|
4773
|
+
spPr: shapeProperties(element),
|
|
4774
|
+
txPr: textProperties(element),
|
|
4775
|
+
extLst: extensionList(element)
|
|
4776
|
+
}
|
|
4777
|
+
);
|
|
4778
|
+
}
|
|
4779
|
+
var LABEL = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "idx", "layout", "tx"]);
|
|
4780
|
+
var LABELS = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "dLbl", "showLeaderLines", "leaderLines"]);
|
|
4781
|
+
function parseDataLabels(context, element) {
|
|
4782
|
+
if (!element) return void 0;
|
|
4783
|
+
const labels = children(element, "dLbl", NS.c).map((node) => {
|
|
4784
|
+
reportUnmodelled(context, node, LABEL);
|
|
4785
|
+
return assignDefined(labelOptions(context, node), {
|
|
4786
|
+
index: cNumber(context, node, "idx"),
|
|
4787
|
+
tx: parseChartText(context, cChild(node, "tx"), false),
|
|
4788
|
+
layout: manualLayout(node)
|
|
4789
|
+
});
|
|
4790
|
+
});
|
|
4791
|
+
reportUnmodelled(context, element, LABELS);
|
|
4792
|
+
return assignDefined(
|
|
4793
|
+
{ ...labelOptions(context, element), labels },
|
|
4794
|
+
{
|
|
4795
|
+
showLeaderLines: cBool(context, element, "showLeaderLines"),
|
|
4796
|
+
leaderLines: chartLines(element, "leaderLines")
|
|
4797
|
+
}
|
|
4798
|
+
);
|
|
4799
|
+
}
|
|
4800
|
+
|
|
4801
|
+
// chart/parse-chrome.ts
|
|
4802
|
+
var SURFACE = /* @__PURE__ */ new Set(["thickness", "spPr", "pictureOptions", "extLst"]);
|
|
4803
|
+
function parseSurface(context, element) {
|
|
4804
|
+
if (!element) return void 0;
|
|
4805
|
+
reportUnmodelled(context, element, SURFACE);
|
|
4806
|
+
const pictureOptions = cChild(element, "pictureOptions");
|
|
4807
|
+
return assignDefined(
|
|
4808
|
+
{},
|
|
4809
|
+
{
|
|
4810
|
+
thickness: cNumber(context, element, "thickness"),
|
|
4811
|
+
spPr: shapeProperties(element),
|
|
4812
|
+
pictureOptionsXml: pictureOptions ? buildXml(pictureOptions) : void 0,
|
|
4813
|
+
extLst: extensionList(element)
|
|
4814
|
+
}
|
|
4815
|
+
);
|
|
4816
|
+
}
|
|
4817
|
+
var DATA_TABLE = /* @__PURE__ */ new Set([
|
|
4818
|
+
"showHorzBorder",
|
|
4819
|
+
"showVertBorder",
|
|
4820
|
+
"showOutline",
|
|
4821
|
+
"showKeys",
|
|
4822
|
+
"spPr",
|
|
4823
|
+
"txPr",
|
|
4824
|
+
"extLst"
|
|
4825
|
+
]);
|
|
4826
|
+
function parseDataTable(context, element) {
|
|
4827
|
+
if (!element) return void 0;
|
|
4828
|
+
reportUnmodelled(context, element, DATA_TABLE);
|
|
4829
|
+
return assignDefined(
|
|
4830
|
+
{},
|
|
4831
|
+
{
|
|
4832
|
+
showHorizontalBorder: cBool(context, element, "showHorzBorder"),
|
|
4833
|
+
showVerticalBorder: cBool(context, element, "showVertBorder"),
|
|
4834
|
+
showOutline: cBool(context, element, "showOutline"),
|
|
4835
|
+
showKeys: cBool(context, element, "showKeys"),
|
|
4836
|
+
spPr: shapeProperties(element),
|
|
4837
|
+
txPr: textProperties(element),
|
|
4838
|
+
extLst: extensionList(element)
|
|
4839
|
+
}
|
|
4840
|
+
);
|
|
4841
|
+
}
|
|
4842
|
+
var DISPLAY_UNITS = /* @__PURE__ */ new Set(["custUnit", "builtInUnit", "dispUnitsLbl", "extLst"]);
|
|
4843
|
+
var DISPLAY_UNITS_LABEL = /* @__PURE__ */ new Set(["layout", "tx", "spPr", "txPr"]);
|
|
4844
|
+
function parseDisplayUnits(context, element) {
|
|
4845
|
+
if (!element) return void 0;
|
|
4846
|
+
reportUnmodelled(context, element, DISPLAY_UNITS);
|
|
4847
|
+
const labelElement = cChild(element, "dispUnitsLbl");
|
|
4848
|
+
let label;
|
|
4849
|
+
if (labelElement) {
|
|
4850
|
+
reportUnmodelled(context, labelElement, DISPLAY_UNITS_LABEL);
|
|
4851
|
+
label = assignDefined(
|
|
4852
|
+
{},
|
|
4853
|
+
{
|
|
4854
|
+
layout: manualLayout(labelElement),
|
|
4855
|
+
tx: parseChartText(context, cChild(labelElement, "tx"), false),
|
|
4856
|
+
spPr: shapeProperties(labelElement),
|
|
4857
|
+
txPr: textProperties(labelElement)
|
|
4858
|
+
}
|
|
4859
|
+
);
|
|
4860
|
+
}
|
|
4861
|
+
return assignDefined(
|
|
4862
|
+
{},
|
|
4863
|
+
{
|
|
4864
|
+
builtInUnit: cVal(element, "builtInUnit"),
|
|
4865
|
+
customUnit: cNumber(context, element, "custUnit"),
|
|
4866
|
+
label,
|
|
4867
|
+
extLst: extensionList(element)
|
|
4868
|
+
}
|
|
4869
|
+
);
|
|
4870
|
+
}
|
|
4871
|
+
|
|
4872
|
+
// chart/parse-series.ts
|
|
4873
|
+
var MARKER = /* @__PURE__ */ new Set(["symbol", "size", "spPr", "extLst"]);
|
|
4874
|
+
function parseMarker(context, element) {
|
|
4875
|
+
if (!element) return void 0;
|
|
4876
|
+
reportUnmodelled(context, element, MARKER);
|
|
4877
|
+
return assignDefined(
|
|
4878
|
+
{},
|
|
4879
|
+
{
|
|
4880
|
+
symbol: cVal(element, "symbol"),
|
|
4881
|
+
size: cNumber(context, element, "size"),
|
|
4882
|
+
spPr: shapeProperties(element),
|
|
4883
|
+
extLst: extensionList(element)
|
|
4884
|
+
}
|
|
4885
|
+
);
|
|
4886
|
+
}
|
|
4887
|
+
var POINT = /* @__PURE__ */ new Set([
|
|
4888
|
+
"idx",
|
|
4889
|
+
"invertIfNegative",
|
|
4890
|
+
"marker",
|
|
4891
|
+
"bubble3D",
|
|
4892
|
+
"explosion",
|
|
4893
|
+
"spPr",
|
|
4894
|
+
"extLst"
|
|
4895
|
+
]);
|
|
4896
|
+
function parseDataPoint(context, element) {
|
|
4897
|
+
reportUnmodelled(context, element, POINT);
|
|
4898
|
+
const index = cNumber(context, element, "idx");
|
|
4899
|
+
return assignDefined(
|
|
4900
|
+
{},
|
|
4901
|
+
{
|
|
4902
|
+
index: index !== void 0 && Number.isInteger(index) && index >= 0 ? index : void 0,
|
|
4903
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
4904
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
4905
|
+
explosion: cNumber(context, element, "explosion"),
|
|
4906
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
4907
|
+
spPr: shapeProperties(element),
|
|
4908
|
+
extLst: extensionList(element)
|
|
4909
|
+
}
|
|
4910
|
+
);
|
|
4911
|
+
}
|
|
4912
|
+
var SERIES = /* @__PURE__ */ new Set([
|
|
4913
|
+
"idx",
|
|
4914
|
+
"order",
|
|
4915
|
+
"tx",
|
|
4916
|
+
"spPr",
|
|
4917
|
+
"invertIfNegative",
|
|
4918
|
+
"dPt",
|
|
4919
|
+
"dLbls",
|
|
4920
|
+
"cat",
|
|
4921
|
+
"val",
|
|
4922
|
+
"xVal",
|
|
4923
|
+
"yVal",
|
|
4924
|
+
"smooth",
|
|
4925
|
+
"marker",
|
|
4926
|
+
"explosion",
|
|
4927
|
+
"bubbleSize",
|
|
4928
|
+
"bubble3D",
|
|
4929
|
+
"shape",
|
|
4930
|
+
"extLst"
|
|
4931
|
+
]);
|
|
4932
|
+
function parseSeries(context, element) {
|
|
4933
|
+
reportUnmodelled(context, element, SERIES);
|
|
4934
|
+
return assignDefined(
|
|
4935
|
+
{ dataPoints: children(element, "dPt", NS.c).map((point) => parseDataPoint(context, point)) },
|
|
4936
|
+
{
|
|
4937
|
+
index: cNumber(context, element, "idx"),
|
|
4938
|
+
order: cNumber(context, element, "order"),
|
|
4939
|
+
tx: parseChartText(context, cChild(element, "tx"), true),
|
|
4940
|
+
spPr: shapeProperties(element),
|
|
4941
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
4942
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
4943
|
+
categories: parseDataSource(cChild(element, "cat")),
|
|
4944
|
+
values: parseDataSource(cChild(element, "val")),
|
|
4945
|
+
xValues: parseDataSource(cChild(element, "xVal")),
|
|
4946
|
+
yValues: parseDataSource(cChild(element, "yVal")),
|
|
4947
|
+
bubbleSizes: parseDataSource(cChild(element, "bubbleSize")),
|
|
4948
|
+
smooth: cBool(context, element, "smooth"),
|
|
4949
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
4950
|
+
explosion: cNumber(context, element, "explosion"),
|
|
4951
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
4952
|
+
shape: cVal(element, "shape"),
|
|
4953
|
+
extLst: extensionList(element)
|
|
4954
|
+
}
|
|
4955
|
+
);
|
|
4956
|
+
}
|
|
4957
|
+
|
|
4958
|
+
// chart/parse-plot.ts
|
|
4959
|
+
var CHART_GROUP_ELEMENTS = {
|
|
4960
|
+
barChart: { kind: "bar", is3D: false },
|
|
4961
|
+
bar3DChart: { kind: "bar", is3D: true },
|
|
4962
|
+
lineChart: { kind: "line", is3D: false },
|
|
4963
|
+
line3DChart: { kind: "line", is3D: true },
|
|
4964
|
+
areaChart: { kind: "area", is3D: false },
|
|
4965
|
+
area3DChart: { kind: "area", is3D: true },
|
|
4966
|
+
pieChart: { kind: "pie", is3D: false },
|
|
4967
|
+
pie3DChart: { kind: "pie", is3D: true },
|
|
4968
|
+
ofPieChart: { kind: "ofPie", is3D: false },
|
|
4969
|
+
doughnutChart: { kind: "doughnut", is3D: false },
|
|
4970
|
+
scatterChart: { kind: "scatter", is3D: false },
|
|
4971
|
+
radarChart: { kind: "radar", is3D: false },
|
|
4972
|
+
bubbleChart: { kind: "bubble", is3D: false },
|
|
4973
|
+
stockChart: { kind: "stock", is3D: false },
|
|
4974
|
+
surfaceChart: { kind: "surface", is3D: false },
|
|
4975
|
+
surface3DChart: { kind: "surface", is3D: true }
|
|
4976
|
+
};
|
|
4977
|
+
var AXIS_ELEMENTS = {
|
|
4978
|
+
catAx: "cat",
|
|
4979
|
+
valAx: "val",
|
|
4980
|
+
dateAx: "date",
|
|
4981
|
+
serAx: "ser"
|
|
4982
|
+
};
|
|
4983
|
+
var GROUP = /* @__PURE__ */ new Set([
|
|
4984
|
+
"ser",
|
|
4985
|
+
"axId",
|
|
4986
|
+
"varyColors",
|
|
4987
|
+
"dLbls",
|
|
4988
|
+
"barDir",
|
|
4989
|
+
"grouping",
|
|
4990
|
+
"gapWidth",
|
|
4991
|
+
"overlap",
|
|
4992
|
+
"gapDepth",
|
|
4993
|
+
"shape",
|
|
4994
|
+
"marker",
|
|
4995
|
+
"smooth",
|
|
4996
|
+
"dropLines",
|
|
4997
|
+
"hiLowLines",
|
|
4998
|
+
"upDownBars",
|
|
4999
|
+
"serLines",
|
|
5000
|
+
"firstSliceAng",
|
|
5001
|
+
"holeSize",
|
|
5002
|
+
"ofPieType",
|
|
5003
|
+
"scatterStyle",
|
|
5004
|
+
"radarStyle",
|
|
5005
|
+
"bubble3D",
|
|
5006
|
+
"bubbleScale",
|
|
5007
|
+
"showNegBubbles",
|
|
5008
|
+
"sizeRepresents",
|
|
5009
|
+
"wireframe",
|
|
5010
|
+
"extLst"
|
|
5011
|
+
]);
|
|
5012
|
+
function parseGroup(context, element) {
|
|
5013
|
+
const { kind, is3D } = CHART_GROUP_ELEMENTS[element.localName] ?? { kind: "bar", is3D: false };
|
|
5014
|
+
reportUnmodelled(context, element, GROUP);
|
|
5015
|
+
const number = (local) => cNumber(context, element, local);
|
|
5016
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
5017
|
+
const barDir = cVal(element, "barDir");
|
|
5018
|
+
const present = (local) => cChild(element, local) ? true : void 0;
|
|
5019
|
+
const linesShape = (local) => chartLines(element, local)?.spPr;
|
|
5020
|
+
const bars = cChild(element, "upDownBars");
|
|
5021
|
+
return assignDefined(
|
|
5022
|
+
{
|
|
5023
|
+
kind,
|
|
5024
|
+
element: element.localName,
|
|
5025
|
+
is3D,
|
|
5026
|
+
series: children(element, "ser", NS.c).map((ser) => parseSeries(context, ser)),
|
|
5027
|
+
axisIds: children(element, "axId", NS.c).flatMap((axis) => {
|
|
5028
|
+
const raw = attribute(axis, "val")?.trim();
|
|
5029
|
+
const id = raw ? Number(raw) : Number.NaN;
|
|
5030
|
+
return Number.isFinite(id) ? [id] : [];
|
|
5031
|
+
})
|
|
5032
|
+
},
|
|
5033
|
+
{
|
|
5034
|
+
varyColors: flag2("varyColors"),
|
|
5035
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
5036
|
+
barDirection: barDir === "bar" || barDir === "col" ? barDir : void 0,
|
|
5037
|
+
grouping: cVal(element, "grouping"),
|
|
5038
|
+
gapWidth: number("gapWidth"),
|
|
5039
|
+
overlap: number("overlap"),
|
|
5040
|
+
gapDepth: number("gapDepth"),
|
|
5041
|
+
shape: cVal(element, "shape"),
|
|
5042
|
+
marker: flag2("marker"),
|
|
5043
|
+
smooth: flag2("smooth"),
|
|
5044
|
+
dropLines: present("dropLines"),
|
|
5045
|
+
hiLowLines: present("hiLowLines"),
|
|
5046
|
+
upDownBars: present("upDownBars"),
|
|
5047
|
+
seriesLines: present("serLines"),
|
|
5048
|
+
dropLinesSpPr: linesShape("dropLines"),
|
|
5049
|
+
hiLowLinesSpPr: linesShape("hiLowLines"),
|
|
5050
|
+
seriesLinesSpPr: linesShape("serLines"),
|
|
5051
|
+
upDownBarsGapWidth: cNumber(context, bars, "gapWidth"),
|
|
5052
|
+
upBars: chartLines(bars, "upBars"),
|
|
5053
|
+
downBars: chartLines(bars, "downBars"),
|
|
5054
|
+
firstSliceAngle: number("firstSliceAng"),
|
|
5055
|
+
holeSize: number("holeSize"),
|
|
5056
|
+
ofPieType: cVal(element, "ofPieType"),
|
|
5057
|
+
scatterStyle: cVal(element, "scatterStyle"),
|
|
5058
|
+
radarStyle: cVal(element, "radarStyle"),
|
|
5059
|
+
bubble3D: flag2("bubble3D"),
|
|
5060
|
+
bubbleScale: number("bubbleScale"),
|
|
5061
|
+
showNegativeBubbles: flag2("showNegBubbles"),
|
|
5062
|
+
sizeRepresents: cVal(element, "sizeRepresents"),
|
|
5063
|
+
wireframe: flag2("wireframe"),
|
|
5064
|
+
extLst: extensionList(element)
|
|
5065
|
+
}
|
|
5066
|
+
);
|
|
5067
|
+
}
|
|
5068
|
+
var SCALING = /* @__PURE__ */ new Set(["orientation", "logBase", "min", "max", "extLst"]);
|
|
5069
|
+
var AXIS = /* @__PURE__ */ new Set([
|
|
5070
|
+
"axId",
|
|
5071
|
+
"scaling",
|
|
5072
|
+
"delete",
|
|
5073
|
+
"axPos",
|
|
5074
|
+
"majorGridlines",
|
|
5075
|
+
"minorGridlines",
|
|
5076
|
+
"title",
|
|
5077
|
+
"numFmt",
|
|
5078
|
+
"majorTickMark",
|
|
5079
|
+
"minorTickMark",
|
|
5080
|
+
"tickLblPos",
|
|
5081
|
+
"spPr",
|
|
5082
|
+
"txPr",
|
|
5083
|
+
"crossAx",
|
|
5084
|
+
"crosses",
|
|
5085
|
+
"crossesAt",
|
|
5086
|
+
"crossBetween",
|
|
5087
|
+
"majorUnit",
|
|
5088
|
+
"minorUnit",
|
|
5089
|
+
"auto",
|
|
5090
|
+
"lblAlgn",
|
|
5091
|
+
"lblOffset",
|
|
5092
|
+
"tickLblSkip",
|
|
5093
|
+
"tickMarkSkip",
|
|
5094
|
+
"noMultiLvlLbl",
|
|
5095
|
+
"baseTimeUnit",
|
|
5096
|
+
"dispUnits",
|
|
5097
|
+
"extLst"
|
|
5098
|
+
]);
|
|
5099
|
+
function parseAxis(context, element, kind) {
|
|
5100
|
+
reportUnmodelled(context, element, AXIS);
|
|
5101
|
+
const number = (local) => cNumber(context, element, local);
|
|
5102
|
+
const scalingElement = cChild(element, "scaling");
|
|
5103
|
+
if (scalingElement) reportUnmodelled(context, scalingElement, SCALING);
|
|
5104
|
+
const scaling = assignDefined(
|
|
5105
|
+
{},
|
|
5106
|
+
{
|
|
5107
|
+
orientation: cVal(scalingElement, "orientation"),
|
|
5108
|
+
min: cNumber(context, scalingElement, "min"),
|
|
5109
|
+
max: cNumber(context, scalingElement, "max"),
|
|
5110
|
+
logBase: cNumber(context, scalingElement, "logBase")
|
|
5111
|
+
}
|
|
5112
|
+
);
|
|
5113
|
+
const title = cChild(element, "title");
|
|
5114
|
+
return assignDefined(
|
|
5115
|
+
{
|
|
5116
|
+
kind,
|
|
5117
|
+
scaling,
|
|
5118
|
+
majorGridlines: cChild(element, "majorGridlines") !== void 0,
|
|
5119
|
+
minorGridlines: cChild(element, "minorGridlines") !== void 0
|
|
5120
|
+
},
|
|
5121
|
+
{
|
|
5122
|
+
majorGridlinesSpPr: chartLines(element, "majorGridlines")?.spPr,
|
|
5123
|
+
minorGridlinesSpPr: chartLines(element, "minorGridlines")?.spPr,
|
|
5124
|
+
id: number("axId"),
|
|
5125
|
+
crossAxisId: number("crossAx"),
|
|
5126
|
+
position: cVal(element, "axPos"),
|
|
5127
|
+
deleted: cBool(context, element, "delete"),
|
|
5128
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
5129
|
+
numberFormat: numberFormat(element),
|
|
5130
|
+
majorTickMark: cVal(element, "majorTickMark"),
|
|
5131
|
+
minorTickMark: cVal(element, "minorTickMark"),
|
|
5132
|
+
tickLabelPosition: cVal(element, "tickLblPos"),
|
|
5133
|
+
crosses: cVal(element, "crosses"),
|
|
5134
|
+
crossesAt: number("crossesAt"),
|
|
5135
|
+
crossBetween: cVal(element, "crossBetween"),
|
|
5136
|
+
majorUnit: number("majorUnit"),
|
|
5137
|
+
minorUnit: number("minorUnit"),
|
|
5138
|
+
auto: cBool(context, element, "auto"),
|
|
5139
|
+
labelAlign: cVal(element, "lblAlgn"),
|
|
5140
|
+
labelOffset: number("lblOffset"),
|
|
5141
|
+
tickLabelSkip: number("tickLblSkip"),
|
|
5142
|
+
tickMarkSkip: number("tickMarkSkip"),
|
|
5143
|
+
noMultiLevelLabels: cBool(context, element, "noMultiLvlLbl"),
|
|
5144
|
+
baseTimeUnit: cVal(element, "baseTimeUnit"),
|
|
5145
|
+
displayUnits: parseDisplayUnits(context, cChild(element, "dispUnits")),
|
|
5146
|
+
spPr: shapeProperties(element),
|
|
5147
|
+
txPr: textProperties(element),
|
|
5148
|
+
extLst: extensionList(element)
|
|
5149
|
+
}
|
|
5150
|
+
);
|
|
5151
|
+
}
|
|
5152
|
+
var PLOT_AREA = /* @__PURE__ */ new Set(["layout", "dTable", "spPr", "extLst"]);
|
|
5153
|
+
function parsePlotArea(context, element) {
|
|
5154
|
+
const plotArea = { groups: [], axes: [] };
|
|
5155
|
+
if (!element) {
|
|
5156
|
+
context.issues.push({
|
|
5157
|
+
code: "CHART_PLOT_AREA_MISSING",
|
|
5158
|
+
message: "The chart has no c:plotArea."
|
|
5159
|
+
});
|
|
5160
|
+
return plotArea;
|
|
5161
|
+
}
|
|
5162
|
+
const handled = new Set(PLOT_AREA);
|
|
5163
|
+
for (const child3 of elements(element)) {
|
|
5164
|
+
if (CHART_GROUP_ELEMENTS[child3.localName]) {
|
|
5165
|
+
plotArea.groups.push(parseGroup(context, child3));
|
|
5166
|
+
handled.add(child3.localName);
|
|
5167
|
+
}
|
|
5168
|
+
const axis = AXIS_ELEMENTS[child3.localName];
|
|
5169
|
+
if (axis) {
|
|
5170
|
+
plotArea.axes.push(parseAxis(context, child3, axis));
|
|
5171
|
+
handled.add(child3.localName);
|
|
5172
|
+
}
|
|
5173
|
+
}
|
|
5174
|
+
reportUnmodelled(context, element, handled);
|
|
5175
|
+
return assignDefined(plotArea, {
|
|
5176
|
+
layout: manualLayout(element),
|
|
5177
|
+
dataTable: parseDataTable(context, cChild(element, "dTable")),
|
|
5178
|
+
spPr: shapeProperties(element),
|
|
5179
|
+
extLst: extensionList(element)
|
|
5180
|
+
});
|
|
5181
|
+
}
|
|
5182
|
+
|
|
5183
|
+
// chart/parse-space.ts
|
|
5184
|
+
var LEGEND = /* @__PURE__ */ new Set(["legendPos", "legendEntry", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
5185
|
+
function parseLegend(context, element) {
|
|
5186
|
+
reportUnmodelled(context, element, LEGEND);
|
|
5187
|
+
const entries = children(element, "legendEntry", NS.c).map(
|
|
5188
|
+
(entry2) => assignDefined(
|
|
5189
|
+
{},
|
|
5190
|
+
{
|
|
5191
|
+
index: cNumber(context, entry2, "idx"),
|
|
5192
|
+
deleted: cBool(context, entry2, "delete"),
|
|
5193
|
+
txPr: textProperties(entry2)
|
|
5194
|
+
}
|
|
5195
|
+
)
|
|
5196
|
+
);
|
|
5197
|
+
return assignDefined(
|
|
5198
|
+
{ entries },
|
|
5199
|
+
{
|
|
5200
|
+
position: cVal(element, "legendPos"),
|
|
5201
|
+
overlay: cBool(context, element, "overlay"),
|
|
5202
|
+
layout: manualLayout(element),
|
|
5203
|
+
spPr: shapeProperties(element),
|
|
5204
|
+
txPr: textProperties(element),
|
|
5205
|
+
extLst: extensionList(element)
|
|
5206
|
+
}
|
|
5207
|
+
);
|
|
5208
|
+
}
|
|
5209
|
+
var VIEW_3D = /* @__PURE__ */ new Set(["rotX", "rotY", "depthPercent", "hPercent", "rAngAx", "perspective"]);
|
|
5210
|
+
function parseView3D(context, element) {
|
|
5211
|
+
reportUnmodelled(context, element, VIEW_3D);
|
|
5212
|
+
return assignDefined(
|
|
5213
|
+
{},
|
|
5214
|
+
{
|
|
5215
|
+
rotX: cNumber(context, element, "rotX"),
|
|
5216
|
+
rotY: cNumber(context, element, "rotY"),
|
|
5217
|
+
depthPercent: cNumber(context, element, "depthPercent"),
|
|
5218
|
+
heightPercent: cNumber(context, element, "hPercent"),
|
|
5219
|
+
rightAngleAxes: cBool(context, element, "rAngAx"),
|
|
5220
|
+
perspective: cNumber(context, element, "perspective")
|
|
5221
|
+
}
|
|
5222
|
+
);
|
|
5223
|
+
}
|
|
5224
|
+
function chartStyle(context, space) {
|
|
5225
|
+
const direct = cNumber(context, space, "style");
|
|
5226
|
+
if (direct !== void 0) return direct;
|
|
5227
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
5228
|
+
const style = cNumber(context, first(alternate, "Fallback", NS.mc), "style");
|
|
5229
|
+
if (style !== void 0) return style;
|
|
5230
|
+
}
|
|
5231
|
+
return void 0;
|
|
5232
|
+
}
|
|
5233
|
+
function c14Style(space) {
|
|
5234
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
5235
|
+
const raw = attribute(first(first(alternate, "Choice", NS.mc), "style", NS.c14, false), "val");
|
|
5236
|
+
const value = raw?.trim() ? Number(raw) : Number.NaN;
|
|
5237
|
+
if (Number.isFinite(value)) return value;
|
|
5238
|
+
}
|
|
5239
|
+
return void 0;
|
|
5240
|
+
}
|
|
5241
|
+
function namespaceDeclarations(root) {
|
|
5242
|
+
const out = [];
|
|
5243
|
+
for (const item of Array.from(root.attributes)) {
|
|
5244
|
+
if (item.prefix !== "xmlns" || CHART_ROOT_BINDINGS.get(item.localName) === item.value) continue;
|
|
5245
|
+
out.push({ prefix: item.localName, uri: item.value });
|
|
5246
|
+
}
|
|
5247
|
+
return out.length ? out : void 0;
|
|
5248
|
+
}
|
|
5249
|
+
var CHART = /* @__PURE__ */ new Set([
|
|
5250
|
+
"title",
|
|
5251
|
+
"autoTitleDeleted",
|
|
5252
|
+
"view3D",
|
|
5253
|
+
"floor",
|
|
5254
|
+
"sideWall",
|
|
5255
|
+
"backWall",
|
|
5256
|
+
"plotArea",
|
|
5257
|
+
"legend",
|
|
5258
|
+
"plotVisOnly",
|
|
5259
|
+
"dispBlanksAs",
|
|
5260
|
+
"showDLblsOverMax",
|
|
5261
|
+
"extLst"
|
|
5262
|
+
]);
|
|
5263
|
+
var SPACE = /* @__PURE__ */ new Set([
|
|
5264
|
+
"date1904",
|
|
5265
|
+
"lang",
|
|
5266
|
+
"roundedCorners",
|
|
5267
|
+
"AlternateContent",
|
|
5268
|
+
"style",
|
|
5269
|
+
"chart",
|
|
5270
|
+
"spPr",
|
|
5271
|
+
"txPr",
|
|
5272
|
+
"externalData",
|
|
5273
|
+
"printSettings",
|
|
5274
|
+
"userShapes",
|
|
5275
|
+
"extLst"
|
|
5276
|
+
]);
|
|
5277
|
+
function parseChartSpace(source) {
|
|
5278
|
+
const context = { issues: [] };
|
|
5279
|
+
const root = typeof source === "string" ? parseXml(source, { label: "Chart part" }).documentElement : source;
|
|
5280
|
+
if (root.localName !== "chartSpace" || root.namespaceURI && root.namespaceURI !== NS.c) {
|
|
5281
|
+
context.issues.push({
|
|
5282
|
+
code: "CHART_ROOT_UNEXPECTED",
|
|
5283
|
+
message: `The part root is {${root.namespaceURI ?? ""}}${root.localName}, not c:chartSpace (chartex parts are not modelled).`
|
|
5284
|
+
});
|
|
5285
|
+
return { chartSpace: { plotArea: { groups: [], axes: [] } }, issues: context.issues };
|
|
5286
|
+
}
|
|
5287
|
+
reportUnmodelled(context, root, SPACE);
|
|
5288
|
+
const chart = cChild(root, "chart");
|
|
5289
|
+
if (!chart)
|
|
5290
|
+
context.issues.push({ code: "CHART_CHART_MISSING", message: "The part has no c:chart." });
|
|
5291
|
+
else reportUnmodelled(context, chart, CHART);
|
|
5292
|
+
const title = cChild(chart, "title");
|
|
5293
|
+
const legend = cChild(chart, "legend");
|
|
5294
|
+
const view3D = cChild(chart, "view3D");
|
|
5295
|
+
const printSettings = cChild(root, "printSettings");
|
|
5296
|
+
const chartSpace = assignDefined(
|
|
5297
|
+
{ plotArea: parsePlotArea(context, cChild(chart, "plotArea")) },
|
|
5298
|
+
{
|
|
5299
|
+
date1904: cBool(context, root, "date1904"),
|
|
5300
|
+
language: cVal(root, "lang"),
|
|
5301
|
+
roundedCorners: cBool(context, root, "roundedCorners"),
|
|
5302
|
+
style: chartStyle(context, root),
|
|
5303
|
+
c14Style: c14Style(root),
|
|
5304
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
5305
|
+
autoTitleDeleted: cBool(context, chart, "autoTitleDeleted"),
|
|
5306
|
+
view3D: view3D ? parseView3D(context, view3D) : void 0,
|
|
5307
|
+
floor: parseSurface(context, cChild(chart, "floor")),
|
|
5308
|
+
sideWall: parseSurface(context, cChild(chart, "sideWall")),
|
|
5309
|
+
backWall: parseSurface(context, cChild(chart, "backWall")),
|
|
5310
|
+
legend: legend ? parseLegend(context, legend) : void 0,
|
|
5311
|
+
plotVisibleOnly: cBool(context, chart, "plotVisOnly"),
|
|
5312
|
+
displayBlanksAs: cVal(chart, "dispBlanksAs"),
|
|
5313
|
+
showDataLabelsOverMax: cBool(context, chart, "showDLblsOverMax"),
|
|
5314
|
+
spPr: shapeProperties(root),
|
|
5315
|
+
txPr: textProperties(root),
|
|
5316
|
+
externalDataRelId: relAttr(cChild(root, "externalData"), "id") || void 0,
|
|
5317
|
+
externalDataAutoUpdate: cBool(context, cChild(root, "externalData"), "autoUpdate"),
|
|
5318
|
+
printSettings: printSettings ? buildXml(printSettings) : void 0,
|
|
5319
|
+
userShapesRelId: relAttr(cChild(root, "userShapes"), "id") || void 0,
|
|
5320
|
+
chartExtLst: extensionList(chart),
|
|
5321
|
+
extLst: extensionList(root),
|
|
5322
|
+
namespaceDeclarations: namespaceDeclarations(root)
|
|
5323
|
+
}
|
|
5324
|
+
);
|
|
5325
|
+
return { chartSpace, issues: context.issues };
|
|
5326
|
+
}
|
|
5327
|
+
|
|
5328
|
+
// docx/breaks.ts
|
|
5329
|
+
function isCachedPageBreak(element) {
|
|
5330
|
+
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
5331
|
+
(attribute2) => attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
5332
|
+
);
|
|
5333
|
+
}
|
|
5334
|
+
function hasSpecialBreak(element) {
|
|
5335
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5336
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5337
|
+
if (attribute2.namespaceURI !== WORD_NS) return true;
|
|
5338
|
+
if (attribute2.localName === "type") {
|
|
5339
|
+
if (attribute2.value !== "textWrapping") return true;
|
|
5340
|
+
} else if (attribute2.localName === "clear") {
|
|
5341
|
+
if (attribute2.value !== "none") return true;
|
|
5342
|
+
} else return true;
|
|
5343
|
+
}
|
|
5344
|
+
return false;
|
|
5345
|
+
}
|
|
5346
|
+
function classifyBreak(element) {
|
|
5347
|
+
const type = getW(element, "type");
|
|
5348
|
+
return type === "page" || type === "column" ? type : "textWrapping";
|
|
5349
|
+
}
|
|
5350
|
+
function isModeledBreak(element) {
|
|
5351
|
+
const kind = classifyBreak(element);
|
|
5352
|
+
if (kind === "textWrapping") return false;
|
|
5353
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5354
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5355
|
+
if (attribute2.namespaceURI !== WORD_NS || attribute2.localName !== "type") return false;
|
|
5356
|
+
}
|
|
5357
|
+
return true;
|
|
5358
|
+
}
|
|
5359
|
+
|
|
5360
|
+
// docx/parse-warnings.ts
|
|
5361
|
+
function hasAny(document, names) {
|
|
5362
|
+
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
5363
|
+
}
|
|
5364
|
+
function warningsFor(document) {
|
|
5365
|
+
const warnings = [];
|
|
5366
|
+
const features = [
|
|
5367
|
+
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
5368
|
+
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
5369
|
+
[
|
|
5370
|
+
["fldSimple", "instrText", "fldChar"],
|
|
5371
|
+
"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."
|
|
5372
|
+
],
|
|
5373
|
+
[
|
|
5374
|
+
["moveFrom", "moveTo"],
|
|
5375
|
+
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
5376
|
+
],
|
|
5377
|
+
[
|
|
5378
|
+
["rPrChange"],
|
|
5379
|
+
"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."
|
|
5380
|
+
],
|
|
5381
|
+
[
|
|
5382
|
+
["pPrChange"],
|
|
5383
|
+
"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."
|
|
5384
|
+
],
|
|
5385
|
+
[
|
|
5386
|
+
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
5387
|
+
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
5388
|
+
]
|
|
5389
|
+
];
|
|
5390
|
+
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
5391
|
+
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
5392
|
+
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
5393
|
+
))
|
|
5394
|
+
warnings.push(
|
|
5395
|
+
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
5396
|
+
);
|
|
5397
|
+
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
5398
|
+
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
5399
|
+
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
5400
|
+
(cr) => cr.attributes.length > 0
|
|
5401
|
+
);
|
|
5402
|
+
if (specialBreak)
|
|
5403
|
+
warnings.push(
|
|
5404
|
+
"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."
|
|
5405
|
+
);
|
|
5406
|
+
return warnings;
|
|
5407
|
+
}
|
|
5408
|
+
function forEachParagraph2(blocks, visit) {
|
|
5409
|
+
for (const block of blocks) {
|
|
5410
|
+
if (block.type === "paragraph") visit(block);
|
|
5411
|
+
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
5412
|
+
}
|
|
5413
|
+
}
|
|
5414
|
+
function imageAndBookmarkWarnings(blocks) {
|
|
5415
|
+
const warnings = [];
|
|
5416
|
+
let hasPicture = false;
|
|
5417
|
+
let hasAnchored = false;
|
|
5418
|
+
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
5419
|
+
let hasBookmarks = false;
|
|
5420
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
5421
|
+
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
5422
|
+
for (const run of paragraph.runs) {
|
|
5423
|
+
if (!run.image) continue;
|
|
5424
|
+
if (run.image.unsupported) {
|
|
5425
|
+
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
5426
|
+
unsupportedKinds.add(run.image.unsupported);
|
|
5427
|
+
} else hasPicture = true;
|
|
5428
|
+
if (run.image.anchored) hasAnchored = true;
|
|
5429
|
+
}
|
|
5430
|
+
});
|
|
5431
|
+
if (hasPicture)
|
|
5432
|
+
warnings.push(
|
|
5433
|
+
"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."
|
|
5434
|
+
);
|
|
5435
|
+
if (hasAnchored)
|
|
5436
|
+
warnings.push(
|
|
5437
|
+
"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."
|
|
5438
|
+
);
|
|
5439
|
+
if (unsupportedKinds.size)
|
|
5440
|
+
warnings.push(
|
|
5441
|
+
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
5442
|
+
);
|
|
5443
|
+
if (hasBookmarks)
|
|
5444
|
+
warnings.push(
|
|
5445
|
+
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
5446
|
+
);
|
|
5447
|
+
return warnings;
|
|
5448
|
+
}
|
|
5449
|
+
|
|
5450
|
+
// docx/chart.ts
|
|
5451
|
+
var CHART_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
|
|
5452
|
+
var CHART_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";
|
|
5453
|
+
var PACKAGE_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package";
|
|
5454
|
+
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.";
|
|
5455
|
+
function parseChartGraphic(graphicData, docPr, rels, isAnchor) {
|
|
5456
|
+
const element = Array.from(graphicData.childNodes).find(
|
|
5457
|
+
(node) => isElement(node) && node.localName === "chart"
|
|
5458
|
+
);
|
|
5459
|
+
const relId = getR(element, "id") || void 0;
|
|
5460
|
+
const issues = [];
|
|
5461
|
+
let partName;
|
|
5462
|
+
const rel = relId ? rels.get(relId) : void 0;
|
|
5463
|
+
if (!relId)
|
|
5464
|
+
issues.push({
|
|
5465
|
+
code: "CHART_RELATIONSHIP_MISSING",
|
|
5466
|
+
message: "The graphic has no c:chart/@r:id."
|
|
5467
|
+
});
|
|
5468
|
+
else if (!rel || rel.mode === "External")
|
|
5469
|
+
issues.push({
|
|
5470
|
+
code: "CHART_RELATIONSHIP_UNRESOLVED",
|
|
5471
|
+
message: `Chart relationship ${relId} does not point at a part in this package.`
|
|
5472
|
+
});
|
|
5473
|
+
else {
|
|
5474
|
+
if (rel.type !== CHART_RELATIONSHIP_TYPE)
|
|
5475
|
+
issues.push({
|
|
5476
|
+
code: "CHART_RELATIONSHIP_TYPE",
|
|
5477
|
+
message: `Chart relationship ${relId} has type ${rel.type}, expected ${CHART_RELATIONSHIP_TYPE}.`
|
|
5478
|
+
});
|
|
5479
|
+
partName = resolvePartPath("word/document.xml", rel.target);
|
|
5480
|
+
}
|
|
5481
|
+
const name = docPr?.getAttribute("name") || void 0;
|
|
5482
|
+
const id = docPr?.getAttribute("id") || void 0;
|
|
5483
|
+
return {
|
|
5484
|
+
placement: isAnchor ? "anchor" : "inline",
|
|
5485
|
+
...name ? { name } : {},
|
|
5486
|
+
...id ? { id } : {},
|
|
5487
|
+
...relId ? { relId } : {},
|
|
5488
|
+
...partName ? { partName } : {},
|
|
5489
|
+
notice: CHART_NOTICE,
|
|
5490
|
+
issues
|
|
5491
|
+
};
|
|
5492
|
+
}
|
|
5493
|
+
async function resolveChartPart(chart, readText) {
|
|
5494
|
+
if (!chart.partName) return;
|
|
5495
|
+
try {
|
|
5496
|
+
const xml = await readText(chart.partName);
|
|
5497
|
+
if (xml === void 0) {
|
|
5498
|
+
chart.issues.push({
|
|
5499
|
+
code: "CHART_PART_MISSING",
|
|
5500
|
+
message: `The chart part ${chart.partName} is not in the package.`
|
|
5501
|
+
});
|
|
5502
|
+
return;
|
|
5503
|
+
}
|
|
5504
|
+
const root = parseXml(xml, { label: "Chart part" }).documentElement;
|
|
5505
|
+
const { chartSpace, issues } = parseChartSpace(root);
|
|
5506
|
+
chart.chartSpace = chartSpace;
|
|
5507
|
+
chart.issues.push(...issues);
|
|
5508
|
+
const title = chartSpace.autoTitleDeleted ? void 0 : chartSpace.title?.text;
|
|
5509
|
+
if (title) chart.title = title;
|
|
5510
|
+
if (chartSpace.plotArea.groups.length) {
|
|
5511
|
+
const formatting = readChartFormatting(root);
|
|
5512
|
+
if (formatting) chart.formatting = formatting;
|
|
5513
|
+
}
|
|
5514
|
+
const rels = parseRelationships(await readText(relationshipsPartFor(chart.partName)));
|
|
5515
|
+
const dataRelId = chartSpace.externalDataRelId;
|
|
5516
|
+
const dataRel = dataRelId ? rels.get(dataRelId) : void 0;
|
|
5517
|
+
if (dataRel && dataRel.mode !== "External" && dataRel.type === PACKAGE_RELATIONSHIP_TYPE)
|
|
5518
|
+
chart.workbookPartName = resolvePartPath(chart.partName, dataRel.target);
|
|
5519
|
+
const colorsRel = [...rels.values()].find(
|
|
5520
|
+
(rel) => rel.mode !== "External" && rel.type.endsWith("/chartColorStyle")
|
|
5521
|
+
);
|
|
5522
|
+
const colorsXml = colorsRel && await readText(resolvePartPath(chart.partName, colorsRel.target));
|
|
5523
|
+
const palette = colorsXml ? chartColorStyleId(colorsXml) : void 0;
|
|
5524
|
+
if (palette !== void 0) chart.colorPalette = palette;
|
|
5525
|
+
} catch (error) {
|
|
5526
|
+
chart.issues.push({
|
|
5527
|
+
code: "CHART_PART_UNREADABLE",
|
|
5528
|
+
message: `The chart part ${chart.partName} could not be read: ${error instanceof Error ? error.message : String(error)}`
|
|
5529
|
+
});
|
|
5530
|
+
}
|
|
5531
|
+
}
|
|
5532
|
+
function chartsIn(blocks) {
|
|
5533
|
+
const charts = [];
|
|
5534
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
5535
|
+
for (const run of paragraph.runs) if (run.image?.chart) charts.push(run.image.chart);
|
|
5536
|
+
});
|
|
5537
|
+
return charts;
|
|
5538
|
+
}
|
|
5539
|
+
async function resolveDocumentCharts(blocks, readText) {
|
|
5540
|
+
for (const chart of chartsIn(blocks)) await resolveChartPart(chart, readText);
|
|
5541
|
+
}
|
|
5542
|
+
|
|
5543
|
+
// docx/drawing.ts
|
|
5544
|
+
var WP_NS2 = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
|
|
5545
|
+
var A_NS2 = "http://schemas.openxmlformats.org/drawingml/2006/main";
|
|
5546
|
+
var VML_NS2 = "urn:schemas-microsoft-com:vml";
|
|
5547
|
+
var WPS_NS2 = "http://schemas.microsoft.com/office/word/2010/wordprocessingShape";
|
|
5548
|
+
var W_NS2 = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
5549
|
+
var PICTURE_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/picture";
|
|
5550
|
+
function firstNS(parent, ns, local) {
|
|
5551
|
+
if (!parent) return void 0;
|
|
5552
|
+
for (const child3 of Array.from(parent.childNodes))
|
|
5553
|
+
if (isElement(child3) && child3.namespaceURI === ns && child3.localName === local) return child3;
|
|
5554
|
+
return void 0;
|
|
5555
|
+
}
|
|
5556
|
+
function descendantNS(parent, ns, local) {
|
|
5557
|
+
if (!parent) return void 0;
|
|
5558
|
+
const stack = [parent];
|
|
5559
|
+
while (stack.length) {
|
|
5560
|
+
const node = stack.shift();
|
|
5561
|
+
for (const child3 of Array.from(node.childNodes)) {
|
|
5562
|
+
if (!isElement(child3)) continue;
|
|
5563
|
+
if (child3.namespaceURI === ns && child3.localName === local) return child3;
|
|
5564
|
+
stack.push(child3);
|
|
5565
|
+
}
|
|
5566
|
+
}
|
|
5567
|
+
return void 0;
|
|
5568
|
+
}
|
|
5569
|
+
function emuToPx(value) {
|
|
5570
|
+
const n = value ? Number(value) : NaN;
|
|
5571
|
+
return Number.isFinite(n) ? Math.round(n / EMU_PER_PIXEL) : 0;
|
|
5572
|
+
}
|
|
5573
|
+
function guessContentType(partName) {
|
|
5574
|
+
const extension = partName.split(".").pop()?.toLowerCase();
|
|
5575
|
+
const known = {
|
|
5576
|
+
png: "image/png",
|
|
5577
|
+
jpg: "image/jpeg",
|
|
5578
|
+
jpeg: "image/jpeg",
|
|
5579
|
+
gif: "image/gif",
|
|
5580
|
+
bmp: "image/bmp",
|
|
5581
|
+
svg: "image/svg+xml",
|
|
5582
|
+
tif: "image/tiff",
|
|
5583
|
+
tiff: "image/tiff",
|
|
5584
|
+
emf: "image/x-emf",
|
|
5585
|
+
wmf: "image/x-wmf"
|
|
5586
|
+
};
|
|
5587
|
+
return extension && known[extension] || "application/octet-stream";
|
|
5588
|
+
}
|
|
5589
|
+
function resolvePicture(relId, context) {
|
|
5590
|
+
const rel = context.rels.get(relId);
|
|
5591
|
+
if (!rel || rel.mode === "External") return void 0;
|
|
5592
|
+
const partName = resolveInternalTarget(rel.target);
|
|
5593
|
+
if (!context.mediaParts.has(partName)) return void 0;
|
|
5594
|
+
return {
|
|
5595
|
+
relId,
|
|
5596
|
+
partName,
|
|
4370
5597
|
contentType: contentTypeForPart(context.contentTypes, partName) ?? guessContentType(partName)
|
|
4371
5598
|
};
|
|
4372
5599
|
}
|
|
@@ -4428,6 +5655,7 @@ function parseModernDrawing(node, context) {
|
|
|
4428
5655
|
...svg ? { svgPartName: svg.partName } : {}
|
|
4429
5656
|
};
|
|
4430
5657
|
const diagram = uri === DIAGRAM_GRAPHIC_URI && graphicData ? parseDiagramGraphic(graphicData, extent, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
5658
|
+
const chart = uri === CHART_GRAPHIC_URI && graphicData ? parseChartGraphic(graphicData, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
4431
5659
|
const textBox = uri.includes("wordprocessingShape") ? textBoxParagraphs(graphicData) : void 0;
|
|
4432
5660
|
return {
|
|
4433
5661
|
relId: relId ?? "",
|
|
@@ -4438,6 +5666,7 @@ function parseModernDrawing(node, context) {
|
|
|
4438
5666
|
...definedProps({ altText, title, anchored }),
|
|
4439
5667
|
unsupported: textBox ? "Text box" : unsupportedKindLabel(uri),
|
|
4440
5668
|
...diagram ? { diagram } : {},
|
|
5669
|
+
...chart ? { chart } : {},
|
|
4441
5670
|
...diagram && placement ? { placement } : {},
|
|
4442
5671
|
...textBox ? { textBoxText: textBox } : {},
|
|
4443
5672
|
...textBox && isSimpleTextBox(graphicData, Boolean(anchored)) ? { textBoxEditable: true, textBoxBorder: textBoxHasBorder(graphicData) } : {}
|
|
@@ -4517,8 +5746,8 @@ function findDrawingChild(run) {
|
|
|
4517
5746
|
if (isElement(child3) && (named2(child3, "drawing") || named2(child3, "pict"))) return child3;
|
|
4518
5747
|
return void 0;
|
|
4519
5748
|
}
|
|
4520
|
-
function sameUnderlyingImage(
|
|
4521
|
-
return Boolean(
|
|
5749
|
+
function sameUnderlyingImage(a2, b) {
|
|
5750
|
+
return Boolean(a2.partName) && a2.relId === b.relId && a2.partName === b.partName;
|
|
4522
5751
|
}
|
|
4523
5752
|
function walk(root, visit) {
|
|
4524
5753
|
const stack = [root];
|
|
@@ -4685,6 +5914,23 @@ function parseRunPropertiesSnapshot(xml) {
|
|
|
4685
5914
|
return parsePropertiesSnapshot(xml, "rPr");
|
|
4686
5915
|
}
|
|
4687
5916
|
|
|
5917
|
+
// docx/field-flags.ts
|
|
5918
|
+
function parseFieldFlags(element) {
|
|
5919
|
+
const locked = onOffAttribute(element, "fldLock");
|
|
5920
|
+
const dirty = onOffAttribute(element, "dirty");
|
|
5921
|
+
if (locked === void 0 && dirty === void 0) return void 0;
|
|
5922
|
+
return { ...locked !== void 0 && { locked }, ...dirty !== void 0 && { dirty } };
|
|
5923
|
+
}
|
|
5924
|
+
function writeFieldFlags(element, flags) {
|
|
5925
|
+
for (const [name, value] of [
|
|
5926
|
+
["fldLock", flags?.locked],
|
|
5927
|
+
["dirty", flags?.dirty]
|
|
5928
|
+
]) {
|
|
5929
|
+
if (value === void 0) element.removeAttributeNS(WORD_NS, name);
|
|
5930
|
+
else element.setAttributeNS(WORD_NS, `w:${name}`, value ? "true" : "false");
|
|
5931
|
+
}
|
|
5932
|
+
}
|
|
5933
|
+
|
|
4688
5934
|
// docx/write-run.ts
|
|
4689
5935
|
function setAttribute6(element, local, value) {
|
|
4690
5936
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
@@ -4711,17 +5957,17 @@ function setBooleanAttribute(doc, props, local, value) {
|
|
|
4711
5957
|
}
|
|
4712
5958
|
setAttribute6(element, "val", value ? "1" : "0");
|
|
4713
5959
|
}
|
|
4714
|
-
function setLanguageAttribute(doc, props,
|
|
5960
|
+
function setLanguageAttribute(doc, props, attribute2, value) {
|
|
4715
5961
|
let language = first2(props, "lang");
|
|
4716
5962
|
if (value === void 0 || value === "") {
|
|
4717
5963
|
if (!language) return;
|
|
4718
|
-
language.removeAttributeNS(WORD_NS,
|
|
5964
|
+
language.removeAttributeNS(WORD_NS, attribute2);
|
|
4719
5965
|
} else {
|
|
4720
5966
|
if (!language) {
|
|
4721
5967
|
language = makeW(doc, "lang");
|
|
4722
5968
|
props.appendChild(language);
|
|
4723
5969
|
}
|
|
4724
|
-
setAttribute6(language,
|
|
5970
|
+
setAttribute6(language, attribute2, value);
|
|
4725
5971
|
}
|
|
4726
5972
|
if (language && !language.attributes.length && !language.childNodes.length)
|
|
4727
5973
|
props.removeChild(language);
|
|
@@ -4821,8 +6067,8 @@ function setRunProperties(doc, runNode, run, base) {
|
|
|
4821
6067
|
};
|
|
4822
6068
|
for (const script of ["ascii", "hAnsi", "eastAsia", "cs"]) {
|
|
4823
6069
|
const role = run.fontTheme?.[script];
|
|
4824
|
-
const [
|
|
4825
|
-
if (role) setAttribute6(fonts,
|
|
6070
|
+
const [attribute2, suffix] = themeAttribute[script];
|
|
6071
|
+
if (role) setAttribute6(fonts, attribute2, `${role}${suffix}`);
|
|
4826
6072
|
}
|
|
4827
6073
|
props.appendChild(fonts);
|
|
4828
6074
|
}
|
|
@@ -4870,6 +6116,7 @@ function createRun(doc, run, base, old, allocator) {
|
|
|
4870
6116
|
if (run.fieldChar) {
|
|
4871
6117
|
const marker = makeW(doc, "fldChar");
|
|
4872
6118
|
setAttribute6(marker, "fldCharType", run.fieldChar);
|
|
6119
|
+
writeFieldFlags(marker, run.fieldFlags);
|
|
4873
6120
|
node.appendChild(marker);
|
|
4874
6121
|
return node;
|
|
4875
6122
|
}
|
|
@@ -4909,8 +6156,8 @@ function createRun(doc, run, base, old, allocator) {
|
|
|
4909
6156
|
}
|
|
4910
6157
|
|
|
4911
6158
|
// docx/inline-source.ts
|
|
4912
|
-
function samePictureSource(
|
|
4913
|
-
return !!
|
|
6159
|
+
function samePictureSource(a2, b) {
|
|
6160
|
+
return !!a2?.partName && a2.partName === b?.partName && a2.relId === b?.relId;
|
|
4914
6161
|
}
|
|
4915
6162
|
function inlineSourceLookup(runs, base) {
|
|
4916
6163
|
const usedPictures = /* @__PURE__ */ new Set();
|
|
@@ -4950,6 +6197,11 @@ function takeSimpleFieldCommentEdges(doc, runs, start, end, opens, closes) {
|
|
|
4950
6197
|
after: take(closes, end - 1).reverse().flatMap((edge) => rangeEndNodes(doc, edge))
|
|
4951
6198
|
};
|
|
4952
6199
|
}
|
|
6200
|
+
|
|
6201
|
+
// docx/field-lock.ts
|
|
6202
|
+
function sameFieldFlags(a2, b) {
|
|
6203
|
+
return a2?.locked === b?.locked && a2?.dirty === b?.dirty;
|
|
6204
|
+
}
|
|
4953
6205
|
var MATH_NAMESPACES = /* @__PURE__ */ new Set([
|
|
4954
6206
|
"http://schemas.openxmlformats.org/officeDocument/2006/math",
|
|
4955
6207
|
"http://purl.oclc.org/ooxml/officeDocument/math"
|
|
@@ -4975,38 +6227,6 @@ function preserveEquation(run, base, old) {
|
|
|
4975
6227
|
return old.cloneNode(true);
|
|
4976
6228
|
}
|
|
4977
6229
|
|
|
4978
|
-
// docx/breaks.ts
|
|
4979
|
-
function isCachedPageBreak(element) {
|
|
4980
|
-
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
4981
|
-
(attribute) => attribute.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
4982
|
-
);
|
|
4983
|
-
}
|
|
4984
|
-
function hasSpecialBreak(element) {
|
|
4985
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
4986
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
4987
|
-
if (attribute.namespaceURI !== WORD_NS) return true;
|
|
4988
|
-
if (attribute.localName === "type") {
|
|
4989
|
-
if (attribute.value !== "textWrapping") return true;
|
|
4990
|
-
} else if (attribute.localName === "clear") {
|
|
4991
|
-
if (attribute.value !== "none") return true;
|
|
4992
|
-
} else return true;
|
|
4993
|
-
}
|
|
4994
|
-
return false;
|
|
4995
|
-
}
|
|
4996
|
-
function classifyBreak(element) {
|
|
4997
|
-
const type = getW(element, "type");
|
|
4998
|
-
return type === "page" || type === "column" ? type : "textWrapping";
|
|
4999
|
-
}
|
|
5000
|
-
function isModeledBreak(element) {
|
|
5001
|
-
const kind = classifyBreak(element);
|
|
5002
|
-
if (kind === "textWrapping") return false;
|
|
5003
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
5004
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5005
|
-
if (attribute.namespaceURI !== WORD_NS || attribute.localName !== "type") return false;
|
|
5006
|
-
}
|
|
5007
|
-
return true;
|
|
5008
|
-
}
|
|
5009
|
-
|
|
5010
6230
|
// docx/parse-revisions.ts
|
|
5011
6231
|
var REVISION_WRAPPERS = {
|
|
5012
6232
|
ins: "insert",
|
|
@@ -5028,7 +6248,7 @@ function trackMoveRange(item, moves) {
|
|
|
5028
6248
|
const open = moves[range.kind];
|
|
5029
6249
|
if (range.start) open.push({ name: getW(item, "name") ?? id, id });
|
|
5030
6250
|
else {
|
|
5031
|
-
const index = open.findIndex((
|
|
6251
|
+
const index = open.findIndex((entry2) => entry2.id === id);
|
|
5032
6252
|
if (index >= 0) open.splice(index, 1);
|
|
5033
6253
|
}
|
|
5034
6254
|
return true;
|
|
@@ -5201,10 +6421,10 @@ function replaceableInlineChildren(paragraph) {
|
|
|
5201
6421
|
(child3) => isElement(child3) && (isEquationElement(child3) || named2(child3, "r") || named2(child3, "hyperlink") || named2(child3, "fldSimple") || isRevisionWrapperElement(child3) || isCommentAnchorElement(child3))
|
|
5202
6422
|
);
|
|
5203
6423
|
}
|
|
5204
|
-
function sameLink(
|
|
5205
|
-
if (!
|
|
5206
|
-
if (!
|
|
5207
|
-
return
|
|
6424
|
+
function sameLink(a2, b) {
|
|
6425
|
+
if (!a2 && !b) return true;
|
|
6426
|
+
if (!a2 || !b) return false;
|
|
6427
|
+
return a2.href === b.href && a2.anchor === b.anchor && a2.tooltip === b.tooltip;
|
|
5208
6428
|
}
|
|
5209
6429
|
function setW6(element, local, value) {
|
|
5210
6430
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
@@ -5274,6 +6494,7 @@ function buildInlineContent(doc, runs, base, slots, allocator, ranges) {
|
|
|
5274
6494
|
container = makeW(doc, "fldSimple");
|
|
5275
6495
|
setW6(container, "instr", ` ${group.instr} `);
|
|
5276
6496
|
}
|
|
6497
|
+
if (group.kind === "simpleField") writeFieldFlags(container, runAt(start).fieldFlags);
|
|
5277
6498
|
const edges = group.kind === "simpleField" ? takeSimpleFieldCommentEdges(doc, runs, start, index, opens, closes) : { before: [], after: [] };
|
|
5278
6499
|
for (let item = start; item < index; item++)
|
|
5279
6500
|
for (const node of nodesFor(item)) container.appendChild(node);
|
|
@@ -5284,13 +6505,18 @@ function buildInlineContent(doc, runs, base, slots, allocator, ranges) {
|
|
|
5284
6505
|
function containerGroup(run) {
|
|
5285
6506
|
if (run.link) return { kind: "link", link: run.link };
|
|
5286
6507
|
if (run.field?.simple)
|
|
5287
|
-
return {
|
|
6508
|
+
return {
|
|
6509
|
+
kind: "simpleField",
|
|
6510
|
+
instr: run.field.instr,
|
|
6511
|
+
instanceId: run.fieldInstanceId,
|
|
6512
|
+
fieldFlags: run.fieldFlags
|
|
6513
|
+
};
|
|
5288
6514
|
return void 0;
|
|
5289
6515
|
}
|
|
5290
|
-
function sameGroup(
|
|
5291
|
-
if (!
|
|
5292
|
-
if (
|
|
5293
|
-
return
|
|
6516
|
+
function sameGroup(a2, b) {
|
|
6517
|
+
if (!a2 || !b) return a2 === b;
|
|
6518
|
+
if (a2.kind === "link" && b.kind === "link") return sameLink(a2.link, b.link);
|
|
6519
|
+
return a2.kind === "simpleField" && b.kind === "simpleField" && a2.instr === b.instr && a2.instanceId === b.instanceId && sameFieldFlags(a2.fieldFlags, b.fieldFlags);
|
|
5294
6520
|
}
|
|
5295
6521
|
|
|
5296
6522
|
// docx/paragraph-properties.ts
|
|
@@ -5522,8 +6748,8 @@ var IMAGE_RELATIONSHIP_TYPE = RELATIONSHIP_TYPES.image;
|
|
|
5522
6748
|
function scanUsedRelationshipIds(doc) {
|
|
5523
6749
|
const used = /* @__PURE__ */ new Set();
|
|
5524
6750
|
const visit = (node) => {
|
|
5525
|
-
for (const
|
|
5526
|
-
if (
|
|
6751
|
+
for (const attribute2 of Array.from(node.attributes))
|
|
6752
|
+
if (attribute2.namespaceURI === REL_NS) used.add(attribute2.value);
|
|
5527
6753
|
for (const child3 of Array.from(node.childNodes)) if (isElement(child3)) visit(child3);
|
|
5528
6754
|
};
|
|
5529
6755
|
if (doc.documentElement) visit(doc.documentElement);
|
|
@@ -5761,9 +6987,9 @@ function isXsdDateTime(value) {
|
|
|
5761
6987
|
return !zone || Number(zone[1]) <= 14 && Number(zone[2]) <= 59;
|
|
5762
6988
|
}
|
|
5763
6989
|
var Checker = class _Checker {
|
|
5764
|
-
constructor(issues,
|
|
6990
|
+
constructor(issues, path2) {
|
|
5765
6991
|
this.issues = issues;
|
|
5766
|
-
this.path =
|
|
6992
|
+
this.path = path2;
|
|
5767
6993
|
}
|
|
5768
6994
|
issues;
|
|
5769
6995
|
path;
|
|
@@ -5809,78 +7035,78 @@ var Checker = class _Checker {
|
|
|
5809
7035
|
|
|
5810
7036
|
// docx/validate-paragraph.ts
|
|
5811
7037
|
var isFraction = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1;
|
|
5812
|
-
function validateThemeReference(
|
|
7038
|
+
function validateThemeReference(c2, field, value) {
|
|
5813
7039
|
if (value === void 0) return;
|
|
5814
|
-
const at =
|
|
7040
|
+
const at = c2.at(`.${field}`);
|
|
5815
7041
|
at.theme("token", value.token);
|
|
5816
7042
|
at.check("tint", value.tint, isFraction, "must be a fraction between 0 and 1");
|
|
5817
7043
|
at.check("shade", value.shade, isFraction, "must be a fraction between 0 and 1");
|
|
5818
7044
|
}
|
|
5819
|
-
function validateRevision(
|
|
7045
|
+
function validateRevision(c2, field, revision) {
|
|
5820
7046
|
if (revision === void 0) return;
|
|
5821
|
-
|
|
7047
|
+
c2.at(`.${field}`).dateTime("date", revision.date);
|
|
5822
7048
|
}
|
|
5823
|
-
function validateFontSize(
|
|
5824
|
-
|
|
7049
|
+
function validateFontSize(c2, value) {
|
|
7050
|
+
c2.check(
|
|
5825
7051
|
"fontSize",
|
|
5826
7052
|
value,
|
|
5827
7053
|
(v) => typeof v === "number" && Number.isFinite(v) && Math.round(v * 2) >= 0,
|
|
5828
7054
|
"must be a finite, non-negative point size that converts to whole half-points (ST_HpsMeasure)"
|
|
5829
7055
|
);
|
|
5830
7056
|
}
|
|
5831
|
-
function validateRun(
|
|
5832
|
-
|
|
5833
|
-
validateFontSize(
|
|
5834
|
-
|
|
7057
|
+
function validateRun(c2, run) {
|
|
7058
|
+
c2.enum("ligatures", run.ligatures, isLigatures, "ST_Ligatures");
|
|
7059
|
+
validateFontSize(c2, run.fontSize);
|
|
7060
|
+
c2.check(
|
|
5835
7061
|
"textScalePercent",
|
|
5836
7062
|
run.textScalePercent,
|
|
5837
7063
|
(v) => Number.isSafeInteger(v) && v >= 0 && v <= 600,
|
|
5838
7064
|
"must be a whole percentage from 0 through 600 (ST_TextScale)"
|
|
5839
7065
|
);
|
|
5840
|
-
|
|
7066
|
+
c2.check(
|
|
5841
7067
|
"kerningHalfPoints",
|
|
5842
7068
|
run.kerningHalfPoints,
|
|
5843
7069
|
(v) => Number.isSafeInteger(v) && v >= 0,
|
|
5844
7070
|
"must be a nonnegative whole number of half-points (ST_HpsMeasure)"
|
|
5845
7071
|
);
|
|
5846
|
-
|
|
7072
|
+
c2.check(
|
|
5847
7073
|
"positionHalfPoints",
|
|
5848
7074
|
run.positionHalfPoints,
|
|
5849
7075
|
Number.isSafeInteger,
|
|
5850
7076
|
"must be a signed whole number of half-points (ST_SignedHpsMeasure)"
|
|
5851
7077
|
);
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
validateThemeReference(
|
|
5856
|
-
validateThemeReference(
|
|
5857
|
-
|
|
7078
|
+
c2.hex("color", run.color);
|
|
7079
|
+
c2.hex("shadingFill", run.shadingFill);
|
|
7080
|
+
c2.hex("underlineColor", run.underlineColor);
|
|
7081
|
+
validateThemeReference(c2, "colorTheme", run.colorTheme);
|
|
7082
|
+
validateThemeReference(c2, "shadingThemeFill", run.shadingThemeFill);
|
|
7083
|
+
c2.enum("underlineStyle", run.underlineStyle, isStUnderline, "ST_Underline");
|
|
5858
7084
|
if (run.highlight !== void 0 && !isStHighlightColor(run.highlight))
|
|
5859
|
-
|
|
7085
|
+
c2.fail(
|
|
5860
7086
|
"highlight",
|
|
5861
7087
|
run.highlight,
|
|
5862
7088
|
`Unsupported Word highlight token: ${String(run.highlight)}`
|
|
5863
7089
|
);
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
|
|
7090
|
+
c2.enum("break", run.break, isStBrType, "ST_BrType");
|
|
7091
|
+
c2.enum("fieldChar", run.fieldChar, isStFldCharType, "ST_FldCharType");
|
|
7092
|
+
c2.check(
|
|
5867
7093
|
"characterSpacingTwips",
|
|
5868
7094
|
run.characterSpacingTwips,
|
|
5869
7095
|
(v) => typeof v === "number" && Number.isFinite(v),
|
|
5870
7096
|
"must be a finite number of twips (ST_SignedTwipsMeasure)"
|
|
5871
7097
|
);
|
|
5872
|
-
|
|
5873
|
-
|
|
5874
|
-
|
|
5875
|
-
|
|
7098
|
+
c2.language("language", run.language);
|
|
7099
|
+
c2.language("eastAsiaLanguage", run.eastAsiaLanguage);
|
|
7100
|
+
c2.language("bidiLanguage", run.bidiLanguage);
|
|
7101
|
+
c2.check(
|
|
5876
7102
|
"verticalAlign",
|
|
5877
7103
|
run.verticalAlign,
|
|
5878
7104
|
isStVerticalAlignRun,
|
|
5879
7105
|
'must be "baseline", "superscript" or "subscript"'
|
|
5880
7106
|
);
|
|
5881
|
-
validateRevision(
|
|
7107
|
+
validateRevision(c2, "revision", run.revision);
|
|
5882
7108
|
if (run.image) {
|
|
5883
|
-
const image =
|
|
7109
|
+
const image = c2.at(".image");
|
|
5884
7110
|
for (const key of ["widthPx", "heightPx"])
|
|
5885
7111
|
image.check(
|
|
5886
7112
|
key,
|
|
@@ -5890,14 +7116,14 @@ function validateRun(c, run) {
|
|
|
5890
7116
|
);
|
|
5891
7117
|
}
|
|
5892
7118
|
}
|
|
5893
|
-
function validateTabStop(
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
|
|
7119
|
+
function validateTabStop(c2, stop) {
|
|
7120
|
+
c2.signed("posTwips", stop.posTwips, "CT_TabStop/@pos");
|
|
7121
|
+
c2.enum("align", stop.align, isStTabJc, "ST_TabJc");
|
|
7122
|
+
c2.enum("leader", stop.leader, isStTabTlc, "ST_TabTlc");
|
|
5897
7123
|
}
|
|
5898
|
-
function validateParagraph(
|
|
7124
|
+
function validateParagraph(c2, paragraph) {
|
|
5899
7125
|
if (paragraph.dropCap) {
|
|
5900
|
-
const at =
|
|
7126
|
+
const at = c2.at(".dropCap");
|
|
5901
7127
|
at.check(
|
|
5902
7128
|
"style",
|
|
5903
7129
|
paragraph.dropCap.style,
|
|
@@ -5917,14 +7143,14 @@ function validateParagraph(c, paragraph) {
|
|
|
5917
7143
|
"must be a nonnegative whole number of twips"
|
|
5918
7144
|
);
|
|
5919
7145
|
}
|
|
5920
|
-
|
|
7146
|
+
c2.check(
|
|
5921
7147
|
"align",
|
|
5922
7148
|
paragraph.align,
|
|
5923
7149
|
(v) => v === "left" || v === "center" || v === "right" || v === "justify",
|
|
5924
7150
|
'must be "left", "center", "right" or "justify"'
|
|
5925
7151
|
);
|
|
5926
|
-
|
|
5927
|
-
|
|
7152
|
+
c2.enum("justification", paragraph.justification, isStJc, "ST_Jc");
|
|
7153
|
+
c2.check(
|
|
5928
7154
|
"direction",
|
|
5929
7155
|
paragraph.direction,
|
|
5930
7156
|
(v) => v === "ltr" || v === "rtl",
|
|
@@ -5936,7 +7162,7 @@ function validateParagraph(c, paragraph) {
|
|
|
5936
7162
|
"firstLineTwips",
|
|
5937
7163
|
"hangingTwips"
|
|
5938
7164
|
])
|
|
5939
|
-
|
|
7165
|
+
c2.unsigned(key, paragraph[key], "ST_TwipsMeasure");
|
|
5940
7166
|
for (const key of [
|
|
5941
7167
|
"lineSpacingTwips",
|
|
5942
7168
|
"indentLeftTwips",
|
|
@@ -5944,87 +7170,87 @@ function validateParagraph(c, paragraph) {
|
|
|
5944
7170
|
"indentStartTwips",
|
|
5945
7171
|
"indentEndTwips"
|
|
5946
7172
|
])
|
|
5947
|
-
|
|
5948
|
-
|
|
7173
|
+
c2.signed(key, paragraph[key], "ST_SignedTwipsMeasure");
|
|
7174
|
+
c2.enum("lineSpacingRule", paragraph.lineSpacingRule, isStLineSpacingRule, "ST_LineSpacingRule");
|
|
5949
7175
|
if (paragraph.numbering) {
|
|
5950
|
-
const numbering =
|
|
7176
|
+
const numbering = c2.at(".numbering");
|
|
5951
7177
|
numbering.unsigned("numId", paragraph.numbering.numId, "ST_DecimalNumber");
|
|
5952
7178
|
numbering.unsigned("level", paragraph.numbering.level, "ST_DecimalNumber");
|
|
5953
7179
|
}
|
|
5954
|
-
paragraph.tabStops?.forEach((stop, index) => validateTabStop(
|
|
5955
|
-
validateRevision(
|
|
5956
|
-
paragraph.runs.forEach((run, index) => validateRun(
|
|
7180
|
+
paragraph.tabStops?.forEach((stop, index) => validateTabStop(c2.at(`.tabStops[${index}]`), stop));
|
|
7181
|
+
validateRevision(c2, "markRevision", paragraph.markRevision);
|
|
7182
|
+
paragraph.runs.forEach((run, index) => validateRun(c2.at(`.runs[${index}]`), run));
|
|
5957
7183
|
}
|
|
5958
7184
|
|
|
5959
7185
|
// docx/validate-structure.ts
|
|
5960
|
-
function validateBorderSide(
|
|
7186
|
+
function validateBorderSide(c2, side) {
|
|
5961
7187
|
if (!side) return;
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
7188
|
+
c2.enum("style", side.style, isStBorder, "ST_Border");
|
|
7189
|
+
c2.unsigned("sizeEighthPoints", side.sizeEighthPoints, "ST_EighthPointMeasure");
|
|
7190
|
+
c2.unsigned("spacePoints", side.spacePoints, "ST_PointMeasure");
|
|
7191
|
+
c2.hex("color", side.color);
|
|
7192
|
+
c2.theme("themeColor", side.themeColor);
|
|
5967
7193
|
}
|
|
5968
|
-
function validateBorders(
|
|
7194
|
+
function validateBorders(c2, borders) {
|
|
5969
7195
|
if (!borders) return;
|
|
5970
7196
|
for (const side of ["top", "left", "bottom", "right", "insideH", "insideV"])
|
|
5971
|
-
validateBorderSide(
|
|
7197
|
+
validateBorderSide(c2.at(`.${side}`), borders[side]);
|
|
5972
7198
|
}
|
|
5973
|
-
function validateCell(
|
|
5974
|
-
|
|
7199
|
+
function validateCell(c2, cell) {
|
|
7200
|
+
c2.check(
|
|
5975
7201
|
"gridSpan",
|
|
5976
7202
|
cell.gridSpan,
|
|
5977
7203
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v >= 1,
|
|
5978
7204
|
"must be a positive integer (CT_DecimalNumber)"
|
|
5979
7205
|
);
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
validateThemeReference(
|
|
5985
|
-
validateBorders(
|
|
7206
|
+
c2.enum("verticalMerge", cell.verticalMerge, isStMerge, "ST_Merge");
|
|
7207
|
+
c2.unsigned("widthTwips", cell.widthTwips, "ST_TwipsMeasure");
|
|
7208
|
+
c2.enum("verticalAlign", cell.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
7209
|
+
c2.hex("shadingFill", cell.shadingFill);
|
|
7210
|
+
validateThemeReference(c2, "shadingThemeFill", cell.shadingThemeFill);
|
|
7211
|
+
validateBorders(c2.at(".borders"), cell.borders);
|
|
5986
7212
|
if (cell.margins)
|
|
5987
7213
|
for (const side of ["top", "bottom", "left", "right"])
|
|
5988
|
-
|
|
7214
|
+
c2.at(".margins").signed(side, cell.margins[side], "ST_SignedTwipsMeasure");
|
|
5989
7215
|
}
|
|
5990
|
-
function validateTable(
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
7216
|
+
function validateTable(c2, table) {
|
|
7217
|
+
c2.unsigned("widthTwips", table.widthTwips, "ST_TwipsMeasure");
|
|
7218
|
+
c2.signed("indentTwips", table.indentTwips, "ST_SignedTwipsMeasure");
|
|
7219
|
+
c2.check(
|
|
5994
7220
|
"alignment",
|
|
5995
7221
|
table.alignment,
|
|
5996
7222
|
(v) => v === "left" || v === "center" || v === "right",
|
|
5997
7223
|
'must be "left", "center" or "right"'
|
|
5998
7224
|
);
|
|
5999
|
-
|
|
7225
|
+
c2.enum("justification", table.justification, isStJcTable, "ST_JcTable");
|
|
6000
7226
|
table.grid?.forEach(
|
|
6001
|
-
(width, index) =>
|
|
7227
|
+
(width, index) => c2.at(`.grid[${index}]`).unsigned("width", width, "ST_TwipsMeasure")
|
|
6002
7228
|
);
|
|
6003
|
-
validateBorders(
|
|
7229
|
+
validateBorders(c2.at(".borders"), table.borders);
|
|
6004
7230
|
if (table.cellMargins)
|
|
6005
7231
|
for (const side of ["top", "bottom", "left", "right"])
|
|
6006
|
-
|
|
7232
|
+
c2.at(".cellMargins").signed(side, table.cellMargins[side], "ST_SignedTwipsMeasure");
|
|
6007
7233
|
table.rowProperties?.forEach((row, index) => {
|
|
6008
7234
|
if (row)
|
|
6009
|
-
|
|
7235
|
+
c2.at(`.rowProperties[${index}]`).unsigned("heightTwips", row.heightTwips, "ST_TwipsMeasure");
|
|
6010
7236
|
});
|
|
6011
7237
|
table.rows.forEach(
|
|
6012
|
-
(row, r) => row.forEach((cell, k) => validateCell(
|
|
7238
|
+
(row, r) => row.forEach((cell, k) => validateCell(c2.at(`.rows[${r}][${k}]`), cell))
|
|
6013
7239
|
);
|
|
6014
7240
|
}
|
|
6015
|
-
function validateSection(
|
|
6016
|
-
|
|
6017
|
-
|
|
6018
|
-
|
|
7241
|
+
function validateSection(c2, section) {
|
|
7242
|
+
c2.enum("type", section.type, isStSectionMark, "ST_SectionMark");
|
|
7243
|
+
c2.enum("orientation", section.orientation, isStPageOrientation, "ST_PageOrientation");
|
|
7244
|
+
c2.enum("verticalAlign", section.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
6019
7245
|
for (const key of ["pageWidthTwips", "pageHeightTwips"])
|
|
6020
|
-
|
|
7246
|
+
c2.check(
|
|
6021
7247
|
key,
|
|
6022
7248
|
section[key],
|
|
6023
7249
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v > 0,
|
|
6024
7250
|
"must be a positive integer number of twips (CT_PageSz)"
|
|
6025
7251
|
);
|
|
6026
7252
|
for (const key of ["marginTopTwips", "marginBottomTwips"])
|
|
6027
|
-
|
|
7253
|
+
c2.signed(key, section[key], "ST_SignedTwipsMeasure");
|
|
6028
7254
|
for (const key of [
|
|
6029
7255
|
"marginLeftTwips",
|
|
6030
7256
|
"marginRightTwips",
|
|
@@ -6032,8 +7258,8 @@ function validateSection(c, section) {
|
|
|
6032
7258
|
"footerDistanceTwips",
|
|
6033
7259
|
"gutterTwips"
|
|
6034
7260
|
])
|
|
6035
|
-
|
|
6036
|
-
const columns =
|
|
7261
|
+
c2.unsigned(key, section[key], "ST_TwipsMeasure");
|
|
7262
|
+
const columns = c2.at(".columns");
|
|
6037
7263
|
columns.check(
|
|
6038
7264
|
"count",
|
|
6039
7265
|
section.columns?.count,
|
|
@@ -6047,7 +7273,7 @@ function validateSection(c, section) {
|
|
|
6047
7273
|
at.unsigned("spacingTwips", column.spacingTwips, "ST_TwipsMeasure");
|
|
6048
7274
|
});
|
|
6049
7275
|
if (section.lineNumberSettings) {
|
|
6050
|
-
const line =
|
|
7276
|
+
const line = c2.at(".lineNumberSettings");
|
|
6051
7277
|
const settings = section.lineNumberSettings;
|
|
6052
7278
|
line.check(
|
|
6053
7279
|
"countBy",
|
|
@@ -6070,12 +7296,12 @@ function validateSection(c, section) {
|
|
|
6070
7296
|
line.unsigned("distanceTwips", settings.distanceTwips, "ST_TwipsMeasure");
|
|
6071
7297
|
}
|
|
6072
7298
|
if (section.pageNumbering) {
|
|
6073
|
-
const numbering =
|
|
7299
|
+
const numbering = c2.at(".pageNumbering");
|
|
6074
7300
|
numbering.enum("format", section.pageNumbering.format, isStNumberFormat, "ST_NumberFormat");
|
|
6075
7301
|
numbering.signed("start", section.pageNumbering.start, "ST_DecimalNumber");
|
|
6076
7302
|
}
|
|
6077
7303
|
}
|
|
6078
|
-
function validateNumberingCatalog(
|
|
7304
|
+
function validateNumberingCatalog(c2, catalog) {
|
|
6079
7305
|
const levelOf = (at, level) => {
|
|
6080
7306
|
at.enum("numFmt", level.numFmt, isStNumberFormat, "ST_NumberFormat");
|
|
6081
7307
|
at.signed("start", level.start, "ST_DecimalNumber");
|
|
@@ -6106,19 +7332,19 @@ function validateNumberingCatalog(c, catalog) {
|
|
|
6106
7332
|
};
|
|
6107
7333
|
for (const [id, abstract] of Object.entries(catalog.abstractNums))
|
|
6108
7334
|
for (const [key, level] of Object.entries(abstract.levels))
|
|
6109
|
-
levelOf(new Checker(
|
|
7335
|
+
levelOf(new Checker(c2.issues, `${c2.path}.abstractNums[${id}].levels[${key}]`), level);
|
|
6110
7336
|
for (const [id, num] of Object.entries(catalog.nums))
|
|
6111
7337
|
for (const [key, override] of Object.entries(num.levelOverrides ?? {})) {
|
|
6112
|
-
const at = new Checker(
|
|
7338
|
+
const at = new Checker(c2.issues, `${c2.path}.nums[${id}].levelOverrides[${key}]`);
|
|
6113
7339
|
at.signed("startOverride", override.startOverride, "ST_DecimalNumber");
|
|
6114
7340
|
if (override.lvl) levelOf(at.at(".lvl"), override.lvl);
|
|
6115
7341
|
}
|
|
6116
7342
|
}
|
|
6117
7343
|
|
|
6118
7344
|
// docx/validate-model.ts
|
|
6119
|
-
function validateBlocks(
|
|
7345
|
+
function validateBlocks(c2, blocks) {
|
|
6120
7346
|
blocks?.forEach((block, index) => {
|
|
6121
|
-
const at =
|
|
7347
|
+
const at = c2.at(`[${index}]`);
|
|
6122
7348
|
if (block.type === "paragraph") return validateParagraph(at, block);
|
|
6123
7349
|
validateTable(at, block);
|
|
6124
7350
|
block.rows.forEach(
|
|
@@ -6132,8 +7358,8 @@ function validateBlocks(c, blocks) {
|
|
|
6132
7358
|
}
|
|
6133
7359
|
function validateDocumentModel(model) {
|
|
6134
7360
|
const issues = [];
|
|
6135
|
-
const
|
|
6136
|
-
const page =
|
|
7361
|
+
const path2 = (suffix) => new Checker(issues, suffix);
|
|
7362
|
+
const page = path2("page");
|
|
6137
7363
|
for (const key of ["width", "height"])
|
|
6138
7364
|
page.check(
|
|
6139
7365
|
key,
|
|
@@ -6148,9 +7374,9 @@ function validateDocumentModel(model) {
|
|
|
6148
7374
|
(v) => typeof v === "number" && Number.isFinite(v) && (key === "marginTop" || key === "marginBottom" || v >= 0),
|
|
6149
7375
|
"must be a finite pixel size (converted to integer twips; left/right non-negative)"
|
|
6150
7376
|
);
|
|
6151
|
-
validateBlocks(
|
|
7377
|
+
validateBlocks(path2("blocks"), model.blocks);
|
|
6152
7378
|
model.sections?.forEach((section, index) => {
|
|
6153
|
-
const at =
|
|
7379
|
+
const at = path2(`sections[${index}]`);
|
|
6154
7380
|
validateSection(at, section);
|
|
6155
7381
|
for (const kind of ["headers", "footers"])
|
|
6156
7382
|
for (const [slot2, content] of Object.entries(section[kind] ?? {}))
|
|
@@ -6158,60 +7384,271 @@ function validateDocumentModel(model) {
|
|
|
6158
7384
|
});
|
|
6159
7385
|
for (const kind of ["footnotes", "endnotes"])
|
|
6160
7386
|
model[kind]?.forEach(
|
|
6161
|
-
(note, index) => validateBlocks(
|
|
7387
|
+
(note, index) => validateBlocks(path2(`${kind}[${index}].blocks`), note.blocks)
|
|
6162
7388
|
);
|
|
6163
7389
|
model.comments?.forEach(
|
|
6164
|
-
(comment, index) =>
|
|
7390
|
+
(comment, index) => path2(`comments[${index}]`).dateTime("date", comment.date)
|
|
6165
7391
|
);
|
|
6166
|
-
|
|
6167
|
-
|
|
6168
|
-
|
|
7392
|
+
path2("model").hex("pageColor", model.pageColor);
|
|
7393
|
+
path2("model").enum("footnoteNumFmt", model.footnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
7394
|
+
path2("model").enum("endnoteNumFmt", model.endnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
6169
7395
|
if (model.numberingCatalog)
|
|
6170
|
-
validateNumberingCatalog(
|
|
7396
|
+
validateNumberingCatalog(path2("numberingCatalog"), model.numberingCatalog);
|
|
6171
7397
|
return issues;
|
|
6172
7398
|
}
|
|
6173
|
-
function assertValidDocumentModel(model) {
|
|
6174
|
-
const issues = validateDocumentModel(model);
|
|
6175
|
-
if (issues.length) throw new DocxModelValidationError(issues);
|
|
7399
|
+
function assertValidDocumentModel(model) {
|
|
7400
|
+
const issues = validateDocumentModel(model);
|
|
7401
|
+
if (issues.length) throw new DocxModelValidationError(issues);
|
|
7402
|
+
}
|
|
7403
|
+
|
|
7404
|
+
// docx/numbering-parts.ts
|
|
7405
|
+
var CT_NS = "http://schemas.openxmlformats.org/package/2006/content-types";
|
|
7406
|
+
var REL_NS2 = "http://schemas.openxmlformats.org/package/2006/relationships";
|
|
7407
|
+
var NUMBERING_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering";
|
|
7408
|
+
var NUMBERING_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml";
|
|
7409
|
+
async function registerNumberingPart(zip) {
|
|
7410
|
+
const contentTypesPath = "[Content_Types].xml";
|
|
7411
|
+
const contentTypesFile = zip.file(contentTypesPath);
|
|
7412
|
+
const contentTypesXml = contentTypesFile ? await contentTypesFile.async("string") : `<?xml version="1.0"?><Types xmlns="${CT_NS}"/>`;
|
|
7413
|
+
const contentTypesDoc = parseXml2(contentTypesXml);
|
|
7414
|
+
const hasOverride = Array.from(contentTypesDoc.getElementsByTagNameNS(CT_NS, "Override")).some(
|
|
7415
|
+
(element) => element.getAttribute("PartName") === "/word/numbering.xml"
|
|
7416
|
+
);
|
|
7417
|
+
if (!hasOverride) {
|
|
7418
|
+
const override = contentTypesDoc.createElementNS(CT_NS, "Override");
|
|
7419
|
+
override.setAttribute("PartName", "/word/numbering.xml");
|
|
7420
|
+
override.setAttribute("ContentType", NUMBERING_CONTENT_TYPE);
|
|
7421
|
+
contentTypesDoc.documentElement.appendChild(override);
|
|
7422
|
+
zip.file(contentTypesPath, buildXml(contentTypesDoc));
|
|
7423
|
+
}
|
|
7424
|
+
const relsPath = "word/_rels/document.xml.rels";
|
|
7425
|
+
const relsFile = zip.file(relsPath);
|
|
7426
|
+
const relsXml = relsFile ? await relsFile.async("string") : `<?xml version="1.0"?><Relationships xmlns="${REL_NS2}"/>`;
|
|
7427
|
+
const relsDoc = parseXml2(relsXml);
|
|
7428
|
+
const existingIds = new Set(
|
|
7429
|
+
Array.from(relsDoc.getElementsByTagNameNS(REL_NS2, "Relationship")).map(
|
|
7430
|
+
(element) => element.getAttribute("Id") ?? ""
|
|
7431
|
+
)
|
|
7432
|
+
);
|
|
7433
|
+
let serial = 1;
|
|
7434
|
+
while (existingIds.has(`rId${serial}`)) serial++;
|
|
7435
|
+
const relationship = relsDoc.createElementNS(REL_NS2, "Relationship");
|
|
7436
|
+
relationship.setAttribute("Id", `rId${serial}`);
|
|
7437
|
+
relationship.setAttribute("Type", NUMBERING_RELATIONSHIP_TYPE);
|
|
7438
|
+
relationship.setAttribute("Target", "numbering.xml");
|
|
7439
|
+
relsDoc.documentElement.appendChild(relationship);
|
|
7440
|
+
zip.file(relsPath, buildXml(relsDoc));
|
|
7441
|
+
}
|
|
7442
|
+
|
|
7443
|
+
// docx/numbering-parse.ts
|
|
7444
|
+
var integer2 = (value, fallback) => parseInteger(value) ?? fallback;
|
|
7445
|
+
var flag = (element) => onOffElement(element) === true;
|
|
7446
|
+
function byName(root, local) {
|
|
7447
|
+
return Array.from(root.getElementsByTagName("*")).filter(
|
|
7448
|
+
(node) => node.nodeType === 1 && named2(node, local)
|
|
7449
|
+
);
|
|
7450
|
+
}
|
|
7451
|
+
function parseMarkerFormat(rPr) {
|
|
7452
|
+
if (!rPr) return void 0;
|
|
7453
|
+
const format = {};
|
|
7454
|
+
const family = getW(first2(rPr, "rFonts"), "ascii");
|
|
7455
|
+
if (family) format.fontFamily = family;
|
|
7456
|
+
const size = parseInteger(getW(first2(rPr, "sz"), "val"));
|
|
7457
|
+
if (size !== void 0 && size > 0) format.fontSizeHalfPoints = size;
|
|
7458
|
+
if (onOffElement(first2(rPr, "b")) === true) format.bold = true;
|
|
7459
|
+
if (onOffElement(first2(rPr, "i")) === true) format.italic = true;
|
|
7460
|
+
const color = getW(first2(rPr, "color"), "val");
|
|
7461
|
+
if (color && /^[0-9a-f]{6}$/i.test(color)) format.color = `#${color.toLowerCase()}`;
|
|
7462
|
+
return Object.keys(format).length ? format : void 0;
|
|
7463
|
+
}
|
|
7464
|
+
function parseNumberingLevel(lvl) {
|
|
7465
|
+
const level = integer2(getW(lvl, "ilvl"), 0);
|
|
7466
|
+
const start = integer2(getW(first2(lvl, "start"), "val"), 1);
|
|
7467
|
+
const numFmt = enumValue(isStNumberFormat, getW(first2(lvl, "numFmt"), "val"), "w:numFmt") ?? "decimal";
|
|
7468
|
+
const lvlText = getW(first2(lvl, "lvlText"), "val") ?? "";
|
|
7469
|
+
const jc = getW(first2(lvl, "lvlJc"), "val");
|
|
7470
|
+
const ind = first2(first2(lvl, "pPr"), "ind");
|
|
7471
|
+
const suffRaw = getW(first2(lvl, "suff"), "val");
|
|
7472
|
+
const result = { level, start, numFmt, lvlText };
|
|
7473
|
+
if (!first2(lvl, "start")) result.startWasOmitted = true;
|
|
7474
|
+
const paragraphStyleId = getW(first2(lvl, "pStyle"), "val");
|
|
7475
|
+
if (paragraphStyleId) result.paragraphStyleId = paragraphStyleId;
|
|
7476
|
+
if (jc === "left" || jc === "center" || jc === "right") result.lvlJc = jc;
|
|
7477
|
+
const left = getW(ind, "left") ?? getW(ind, "start");
|
|
7478
|
+
if (left !== void 0) result.indentLeftTwips = parseSignedTwips(left) ?? signedTwips(0);
|
|
7479
|
+
const hanging = getW(ind, "hanging");
|
|
7480
|
+
if (hanging !== void 0) result.hangingTwips = parseTwips(hanging) ?? twips(0);
|
|
7481
|
+
const firstLine = getW(ind, "firstLine");
|
|
7482
|
+
if (firstLine !== void 0) result.firstLineTwips = parseTwips(firstLine) ?? twips(0);
|
|
7483
|
+
const tabs = first2(first2(lvl, "pPr"), "tabs");
|
|
7484
|
+
const tab = tabs ? children2(tabs, "tab").find((stop) => getW(stop, "val") !== "clear") : void 0;
|
|
7485
|
+
const tabPos = tab ? parseTwips(getW(tab, "pos")) : void 0;
|
|
7486
|
+
if (tabPos !== void 0) result.tabStopTwips = tabPos;
|
|
7487
|
+
if (flag(first2(lvl, "isLgl"))) result.isLgl = true;
|
|
7488
|
+
const restart = getW(first2(lvl, "lvlRestart"), "val");
|
|
7489
|
+
if (restart !== void 0) result.lvlRestart = integer2(restart, 0);
|
|
7490
|
+
const marker = parseMarkerFormat(first2(lvl, "rPr"));
|
|
7491
|
+
if (marker) result.markerFormat = marker;
|
|
7492
|
+
result.suffix = suffRaw === "space" ? "space" : suffRaw === "nothing" ? "none" : "tab";
|
|
7493
|
+
return result;
|
|
7494
|
+
}
|
|
7495
|
+
function parseAbstractNum(element) {
|
|
7496
|
+
const id = getW(element, "abstractNumId");
|
|
7497
|
+
if (!id) return void 0;
|
|
7498
|
+
const levels = {};
|
|
7499
|
+
for (const lvl of children2(element, "lvl")) {
|
|
7500
|
+
const parsed = parseNumberingLevel(lvl);
|
|
7501
|
+
levels[parsed.level] = parsed;
|
|
7502
|
+
}
|
|
7503
|
+
return { id, levels };
|
|
7504
|
+
}
|
|
7505
|
+
function parseNum(element) {
|
|
7506
|
+
const id = getW(element, "numId");
|
|
7507
|
+
if (!id) return void 0;
|
|
7508
|
+
const abstractNumId = getW(first2(element, "abstractNumId"), "val") ?? "";
|
|
7509
|
+
const levelOverrides = {};
|
|
7510
|
+
for (const override of children2(element, "lvlOverride")) {
|
|
7511
|
+
const level = integer2(getW(override, "ilvl"), 0);
|
|
7512
|
+
const entry2 = {};
|
|
7513
|
+
const startOverride = getW(first2(override, "startOverride"), "val");
|
|
7514
|
+
if (startOverride !== void 0) entry2.startOverride = integer2(startOverride, 1);
|
|
7515
|
+
const lvl = first2(override, "lvl");
|
|
7516
|
+
if (lvl) entry2.lvl = parseNumberingLevel(lvl);
|
|
7517
|
+
if (Object.keys(entry2).length) levelOverrides[level] = entry2;
|
|
7518
|
+
}
|
|
7519
|
+
return {
|
|
7520
|
+
id,
|
|
7521
|
+
abstractNumId,
|
|
7522
|
+
...Object.keys(levelOverrides).length ? { levelOverrides } : {}
|
|
7523
|
+
};
|
|
7524
|
+
}
|
|
7525
|
+
function parseNumberingCatalog(xml) {
|
|
7526
|
+
const document = parseXml2(xml);
|
|
7527
|
+
const root = document.documentElement;
|
|
7528
|
+
const abstractNums = {};
|
|
7529
|
+
const warnings = [];
|
|
7530
|
+
for (const element of byName(root, "abstractNum")) {
|
|
7531
|
+
const parsed = parseAbstractNum(element);
|
|
7532
|
+
if (!parsed) continue;
|
|
7533
|
+
abstractNums[parsed.id] = parsed;
|
|
7534
|
+
const link = getW(first2(element, "numStyleLink"), "val");
|
|
7535
|
+
if (link)
|
|
7536
|
+
warnings.push(
|
|
7537
|
+
`Numbering definition abstractNum ${parsed.id} links to style "${link}"; style-linked numbering levels are not resolved.`
|
|
7538
|
+
);
|
|
7539
|
+
if (byName(element, "lvlPicBulletId").length)
|
|
7540
|
+
warnings.push(
|
|
7541
|
+
`Numbering definition abstractNum ${parsed.id} uses a picture bullet; picture bullets are not rendered.`
|
|
7542
|
+
);
|
|
7543
|
+
}
|
|
7544
|
+
const nums = {};
|
|
7545
|
+
for (const element of byName(root, "num")) {
|
|
7546
|
+
const parsed = parseNum(element);
|
|
7547
|
+
if (parsed) nums[parsed.id] = parsed;
|
|
7548
|
+
}
|
|
7549
|
+
return { abstractNums, nums, warnings: [...new Set(warnings)] };
|
|
7550
|
+
}
|
|
7551
|
+
function resolveNumberingLevel(catalog, numId, level) {
|
|
7552
|
+
const num = catalog.nums[numId];
|
|
7553
|
+
if (!num) return void 0;
|
|
7554
|
+
const override = num.levelOverrides?.[level];
|
|
7555
|
+
const sourceAbstract = catalog.abstractNums[num.abstractNumId]?.levels[level];
|
|
7556
|
+
const abstract = sourceAbstract?.startWasOmitted && sourceAbstract.start === 1 ? { ...sourceAbstract, start: 0 } : sourceAbstract;
|
|
7557
|
+
let base = override?.lvl ?? abstract;
|
|
7558
|
+
if (!base) return void 0;
|
|
7559
|
+
if (override?.lvl) {
|
|
7560
|
+
const { lvlRestart: _ignored, ...properties } = base;
|
|
7561
|
+
base = {
|
|
7562
|
+
...properties,
|
|
7563
|
+
...abstract?.lvlRestart !== void 0 ? { lvlRestart: abstract.lvlRestart } : {}
|
|
7564
|
+
};
|
|
7565
|
+
}
|
|
7566
|
+
let start = override?.startOverride ?? base.start;
|
|
7567
|
+
if (override?.lvl) {
|
|
7568
|
+
if (abstract?.lvlRestart === 0 && override.startOverride === void 0) start = abstract.start;
|
|
7569
|
+
else if (!override.lvl.startWasOmitted || override.lvl.start !== 1) start = override.lvl.start;
|
|
7570
|
+
else start = override.startOverride ?? 0;
|
|
7571
|
+
}
|
|
7572
|
+
return start !== base.start ? { ...base, start } : base;
|
|
7573
|
+
}
|
|
7574
|
+
|
|
7575
|
+
// docx/numbering-start-edit.ts
|
|
7576
|
+
function assertListStartValue(level, start) {
|
|
7577
|
+
if (!Number.isInteger(level) || level < 0 || level > 8)
|
|
7578
|
+
throw new Error("List level must be an integer from 0 through 8.");
|
|
7579
|
+
if (!Number.isInteger(start) || start < 0 || start > 2147483647)
|
|
7580
|
+
throw new Error("List start must be an integer from 0 through 2147483647.");
|
|
6176
7581
|
}
|
|
6177
7582
|
|
|
6178
|
-
// docx/numbering-
|
|
6179
|
-
|
|
6180
|
-
|
|
6181
|
-
|
|
6182
|
-
|
|
6183
|
-
|
|
6184
|
-
|
|
6185
|
-
|
|
6186
|
-
|
|
6187
|
-
|
|
6188
|
-
|
|
6189
|
-
|
|
6190
|
-
)
|
|
6191
|
-
|
|
6192
|
-
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
|
|
7583
|
+
// docx/numbering-start-patch.ts
|
|
7584
|
+
function withoutStarts(num) {
|
|
7585
|
+
const { levelOverrides, ...properties } = num;
|
|
7586
|
+
const kept = {};
|
|
7587
|
+
for (const [level, override] of Object.entries(levelOverrides ?? {})) {
|
|
7588
|
+
const { startOverride: _start, ...rest } = override;
|
|
7589
|
+
if (Object.keys(rest).length) kept[level] = rest;
|
|
7590
|
+
}
|
|
7591
|
+
return { ...properties, ...Object.keys(kept).length ? { levelOverrides: kept } : {} };
|
|
7592
|
+
}
|
|
7593
|
+
function numberingStartChanges(prior, next) {
|
|
7594
|
+
const changes = [];
|
|
7595
|
+
for (const [id, previous] of Object.entries(prior?.nums ?? {})) {
|
|
7596
|
+
const current = next.nums[id];
|
|
7597
|
+
if (!current || JSON.stringify(withoutStarts(current)) !== JSON.stringify(withoutStarts(previous)))
|
|
7598
|
+
throw new Error(
|
|
7599
|
+
`Cannot edit numbering definition num "${id}" except its supported start overrides.`
|
|
7600
|
+
);
|
|
7601
|
+
for (const key of /* @__PURE__ */ new Set([
|
|
7602
|
+
...Object.keys(previous.levelOverrides ?? {}),
|
|
7603
|
+
...Object.keys(current.levelOverrides ?? {})
|
|
7604
|
+
])) {
|
|
7605
|
+
const level = Number(key);
|
|
7606
|
+
const old = previous.levelOverrides?.[level];
|
|
7607
|
+
const value = current.levelOverrides?.[level];
|
|
7608
|
+
if (old?.startOverride === value?.startOverride) continue;
|
|
7609
|
+
if (value?.startOverride === void 0)
|
|
7610
|
+
throw new Error("Removing a list start override is unsupported.");
|
|
7611
|
+
assertListStartValue(level, value.startOverride);
|
|
7612
|
+
if (String(level) !== key || !prior || !resolveNumberingLevel(prior, id, level))
|
|
7613
|
+
throw new Error("List instance or level does not exist.");
|
|
7614
|
+
if (old?.lvl || value.lvl)
|
|
7615
|
+
throw new Error("Changing starts with a full level override is unsupported.");
|
|
7616
|
+
changes.push({ numId: id, level, start: value.startOverride });
|
|
7617
|
+
}
|
|
7618
|
+
}
|
|
7619
|
+
return changes;
|
|
7620
|
+
}
|
|
7621
|
+
function patchNumberingStarts(doc, changes) {
|
|
7622
|
+
const sameNumber = (source, expected) => source !== void 0 && /^[+-]?\d+$/.test(source) && Number(source) === Number(expected);
|
|
7623
|
+
const prepared = changes.map((change) => {
|
|
7624
|
+
const nums = children2(doc.documentElement, "num").filter(
|
|
7625
|
+
(num2) => sameNumber(getW(num2, "numId"), change.numId)
|
|
7626
|
+
);
|
|
7627
|
+
if (nums.length !== 1 || getW(nums[0], "numId") !== change.numId)
|
|
7628
|
+
throw new Error("Cannot patch an ambiguous or missing source list instance.");
|
|
7629
|
+
const num = nums[0];
|
|
7630
|
+
const overrides = children2(num, "lvlOverride").filter(
|
|
7631
|
+
(node) => sameNumber(getW(node, "ilvl"), String(change.level))
|
|
7632
|
+
);
|
|
7633
|
+
if (overrides.length > 1) throw new Error("Cannot patch duplicate source level overrides.");
|
|
7634
|
+
const override = overrides[0];
|
|
7635
|
+
if (override && getW(override, "ilvl") !== String(change.level))
|
|
7636
|
+
throw new Error("Cannot patch a noncanonical source level override.");
|
|
7637
|
+
if (override && (children2(override, "lvl").length || children2(override, "startOverride").length > 1))
|
|
7638
|
+
throw new Error("Cannot patch a full or ambiguous source level override.");
|
|
7639
|
+
return { change, num, override };
|
|
7640
|
+
});
|
|
7641
|
+
for (const { change, num, override: existing } of prepared) {
|
|
7642
|
+
const override = existing ?? makeW(doc, "lvlOverride");
|
|
7643
|
+
if (!existing) {
|
|
7644
|
+
override.setAttributeNS(WORD_NS, "w:ilvl", String(change.level));
|
|
7645
|
+
const after = children2(num, "lvlOverride").at(-1) ?? children2(num, "abstractNumId")[0];
|
|
7646
|
+
num.insertBefore(override, after?.nextSibling ?? null);
|
|
7647
|
+
}
|
|
7648
|
+
const start = children2(override, "startOverride")[0] ?? makeW(doc, "startOverride");
|
|
7649
|
+
start.setAttributeNS(WORD_NS, "w:val", String(change.start));
|
|
7650
|
+
if (!start.parentNode) override.insertBefore(start, override.firstChild);
|
|
6197
7651
|
}
|
|
6198
|
-
const relsPath = "word/_rels/document.xml.rels";
|
|
6199
|
-
const relsFile = zip.file(relsPath);
|
|
6200
|
-
const relsXml = relsFile ? await relsFile.async("string") : `<?xml version="1.0"?><Relationships xmlns="${REL_NS2}"/>`;
|
|
6201
|
-
const relsDoc = parseXml2(relsXml);
|
|
6202
|
-
const existingIds = new Set(
|
|
6203
|
-
Array.from(relsDoc.getElementsByTagNameNS(REL_NS2, "Relationship")).map(
|
|
6204
|
-
(element) => element.getAttribute("Id") ?? ""
|
|
6205
|
-
)
|
|
6206
|
-
);
|
|
6207
|
-
let serial = 1;
|
|
6208
|
-
while (existingIds.has(`rId${serial}`)) serial++;
|
|
6209
|
-
const relationship = relsDoc.createElementNS(REL_NS2, "Relationship");
|
|
6210
|
-
relationship.setAttribute("Id", `rId${serial}`);
|
|
6211
|
-
relationship.setAttribute("Type", NUMBERING_RELATIONSHIP_TYPE);
|
|
6212
|
-
relationship.setAttribute("Target", "numbering.xml");
|
|
6213
|
-
relsDoc.documentElement.appendChild(relationship);
|
|
6214
|
-
zip.file(relsPath, buildXml(relsDoc));
|
|
6215
7652
|
}
|
|
6216
7653
|
|
|
6217
7654
|
// docx/numbering-package.ts
|
|
@@ -6283,7 +7720,7 @@ function buildAbstractNumElement(doc, def) {
|
|
|
6283
7720
|
const element = makeW(doc, "abstractNum");
|
|
6284
7721
|
setAttribute8(element, "abstractNumId", def.id);
|
|
6285
7722
|
element.appendChild(valueElement(doc, "multiLevelType", "hybridMultilevel"));
|
|
6286
|
-
for (const level of Object.values(def.levels).sort((
|
|
7723
|
+
for (const level of Object.values(def.levels).sort((a2, b) => a2.level - b.level))
|
|
6287
7724
|
element.appendChild(buildLevelElement(doc, level));
|
|
6288
7725
|
return element;
|
|
6289
7726
|
}
|
|
@@ -6318,17 +7755,14 @@ async function applyNumberingCatalog(zip, model, binding) {
|
|
|
6318
7755
|
throw new Error(
|
|
6319
7756
|
`Cannot edit numbering definition abstractNum "${id}"; the original numbering.xml is preserved unchanged.`
|
|
6320
7757
|
);
|
|
6321
|
-
|
|
6322
|
-
if (JSON.stringify(next.nums[id]) !== JSON.stringify(prior?.nums[id]))
|
|
6323
|
-
throw new Error(
|
|
6324
|
-
`Cannot edit numbering definition num "${id}"; the original numbering.xml is preserved unchanged.`
|
|
6325
|
-
);
|
|
7758
|
+
const startChanges = numberingStartChanges(prior, next);
|
|
6326
7759
|
const newAbstractIds = Object.keys(next.abstractNums).filter((id) => !prior?.abstractNums[id]);
|
|
6327
7760
|
const newNumIds = Object.keys(next.nums).filter((id) => !prior?.nums[id]);
|
|
6328
|
-
if (!newAbstractIds.length && !newNumIds.length) return;
|
|
7761
|
+
if (!newAbstractIds.length && !newNumIds.length && !startChanges.length) return;
|
|
6329
7762
|
const existingFile = zip.file("word/numbering.xml");
|
|
6330
7763
|
const doc = existingFile ? parseXml2(await existingFile.async("string")) : parseXml2(`<w:numbering xmlns:w="${WORD_NS}"/>`);
|
|
6331
7764
|
const root = doc.documentElement;
|
|
7765
|
+
patchNumberingStarts(doc, startChanges);
|
|
6332
7766
|
const cleanup = children2(root, "numIdMacAtCleanup")[0] ?? null;
|
|
6333
7767
|
const firstNum = children2(root, "num")[0] ?? cleanup;
|
|
6334
7768
|
for (const id of newAbstractIds) {
|
|
@@ -6405,13 +7839,13 @@ async function applyStyleNumbering(zip, model, base) {
|
|
|
6405
7839
|
// docx/part-relationships.ts
|
|
6406
7840
|
var CONTENT_TYPES_PART = "[Content_Types].xml";
|
|
6407
7841
|
var extensionOf = (partName) => partName.split(".").pop()?.toLowerCase() ?? "";
|
|
6408
|
-
function
|
|
7842
|
+
function relationshipsPartFor2(partName) {
|
|
6409
7843
|
const slash = partName.lastIndexOf("/");
|
|
6410
7844
|
return `${partName.slice(0, slash)}/_rels/${partName.slice(slash + 1)}.rels`;
|
|
6411
7845
|
}
|
|
6412
7846
|
async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
6413
7847
|
const declared = parseRelationships(
|
|
6414
|
-
await zip.file(
|
|
7848
|
+
await zip.file(relationshipsPartFor2(partName))?.async("string")
|
|
6415
7849
|
);
|
|
6416
7850
|
const allocator = new RelationshipAllocator(
|
|
6417
7851
|
[...scanUsedRelationshipIds(doc), ...declared.keys()],
|
|
@@ -6422,7 +7856,7 @@ async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
|
6422
7856
|
}
|
|
6423
7857
|
async function writeNewRelationships(zip, partName, created, pendingMedia) {
|
|
6424
7858
|
if (!created.length) return;
|
|
6425
|
-
const relsPath =
|
|
7859
|
+
const relsPath = relationshipsPartFor2(partName);
|
|
6426
7860
|
const relationships = parseRelationships(await zip.file(relsPath)?.async("string"));
|
|
6427
7861
|
let contentTypesXml = await zip.file(CONTENT_TYPES_PART)?.async("string");
|
|
6428
7862
|
for (const relationship of created) {
|
|
@@ -6506,8 +7940,8 @@ async function createHeaderFooterParts(zip, model, base, docPrIds) {
|
|
|
6506
7940
|
(_match, start, end) => `${start}${docPrIds.next()}${end}`
|
|
6507
7941
|
) : xml
|
|
6508
7942
|
);
|
|
6509
|
-
const rels = zip.file(
|
|
6510
|
-
if (rels) zip.file(
|
|
7943
|
+
const rels = zip.file(relationshipsPartFor2(content.sourcePartName));
|
|
7944
|
+
if (rels) zip.file(relationshipsPartFor2(partName), await rels.async("uint8array"));
|
|
6511
7945
|
}
|
|
6512
7946
|
await ensureContentTypeOverride(
|
|
6513
7947
|
zip,
|
|
@@ -7194,23 +8628,31 @@ function createFieldTracker() {
|
|
|
7194
8628
|
const stack = [];
|
|
7195
8629
|
return (element, run) => {
|
|
7196
8630
|
let resultInstr;
|
|
8631
|
+
let resultLocked;
|
|
7197
8632
|
for (const child3 of Array.from(element.childNodes)) {
|
|
7198
8633
|
if (!isElement(child3)) continue;
|
|
7199
8634
|
if (named2(child3, "fldChar")) {
|
|
7200
8635
|
const type = getW(child3, "fldCharType");
|
|
7201
|
-
if (type === "begin")
|
|
7202
|
-
|
|
8636
|
+
if (type === "begin") {
|
|
8637
|
+
const locked = parseFieldFlags(child3)?.locked;
|
|
8638
|
+
stack.push({ instr: "", inResult: false, ...locked !== void 0 && { locked } });
|
|
8639
|
+
} else if (type === "separate") {
|
|
7203
8640
|
const top = stack.at(-1);
|
|
7204
8641
|
if (top) top.inResult = true;
|
|
7205
8642
|
} else if (type === "end") stack.pop();
|
|
7206
8643
|
} else {
|
|
7207
8644
|
const top = stack.at(-1);
|
|
7208
8645
|
if (named2(child3, "instrText") && top && !top.inResult) top.instr += textContent(child3);
|
|
7209
|
-
else if ((named2(child3, "t") || named2(child3, "delText")) && top?.inResult)
|
|
8646
|
+
else if ((named2(child3, "t") || named2(child3, "delText")) && top?.inResult) {
|
|
7210
8647
|
resultInstr = top.instr.trim();
|
|
8648
|
+
resultLocked = top.locked;
|
|
8649
|
+
}
|
|
7211
8650
|
}
|
|
7212
8651
|
}
|
|
7213
|
-
if (resultInstr)
|
|
8652
|
+
if (resultInstr) {
|
|
8653
|
+
run.field = { instr: resultInstr };
|
|
8654
|
+
if (resultLocked !== void 0) run.fieldFlags = { locked: resultLocked };
|
|
8655
|
+
}
|
|
7214
8656
|
return run;
|
|
7215
8657
|
};
|
|
7216
8658
|
}
|
|
@@ -7221,7 +8663,11 @@ function storyFieldResults(container) {
|
|
|
7221
8663
|
if (named2(element, "fldSimple") || named2(element, "txbxContent")) return;
|
|
7222
8664
|
if (named2(element, "r")) {
|
|
7223
8665
|
const run = trackField(element, { text: "" });
|
|
7224
|
-
if (run.field)
|
|
8666
|
+
if (run.field)
|
|
8667
|
+
metadata.set(element, {
|
|
8668
|
+
field: run.field,
|
|
8669
|
+
...run.fieldFlags && { fieldFlags: run.fieldFlags }
|
|
8670
|
+
});
|
|
7225
8671
|
return;
|
|
7226
8672
|
}
|
|
7227
8673
|
for (const child3 of Array.from(element.childNodes)) if (isElement(child3)) visit(child3);
|
|
@@ -7313,7 +8759,11 @@ function parseRun2(node, revision) {
|
|
|
7313
8759
|
if (breakKind) run.break = breakKind;
|
|
7314
8760
|
if (noteReference) run.noteReference = noteReference;
|
|
7315
8761
|
if (noteMark) run.noteMark = noteMark;
|
|
7316
|
-
if (fieldChar)
|
|
8762
|
+
if (fieldChar) {
|
|
8763
|
+
run.fieldChar = fieldChar;
|
|
8764
|
+
const flags = parseFieldFlags(only);
|
|
8765
|
+
if (flags) run.fieldFlags = flags;
|
|
8766
|
+
}
|
|
7317
8767
|
if (fieldCode !== void 0) run.fieldCode = fieldCode;
|
|
7318
8768
|
const runRevision = revision ?? runFormatRevision(props);
|
|
7319
8769
|
if (runRevision) run.revision = runRevision;
|
|
@@ -7332,8 +8782,11 @@ function parseParagraph2(node, id, fields) {
|
|
|
7332
8782
|
(element, revision) => {
|
|
7333
8783
|
const run = parseRun2(element, revision);
|
|
7334
8784
|
if (!fields) return trackField(element, run);
|
|
7335
|
-
const
|
|
7336
|
-
if (
|
|
8785
|
+
const metadata = fields.get(element);
|
|
8786
|
+
if (metadata) {
|
|
8787
|
+
run.field = { ...metadata.field };
|
|
8788
|
+
if (metadata.fieldFlags) run.fieldFlags = { ...metadata.fieldFlags };
|
|
8789
|
+
}
|
|
7337
8790
|
return run;
|
|
7338
8791
|
},
|
|
7339
8792
|
(item) => {
|
|
@@ -7355,20 +8808,23 @@ function parseParagraph2(node, id, fields) {
|
|
|
7355
8808
|
);
|
|
7356
8809
|
if (link) return results.map((run) => ({ ...run, link }));
|
|
7357
8810
|
const field = { instr: instr.trim(), simple: true };
|
|
8811
|
+
const flags = parseFieldFlags(item);
|
|
8812
|
+
const fieldState = flags ? { fieldFlags: flags } : {};
|
|
7358
8813
|
const fieldInstanceId = `${id}:simple-field-${simpleFieldIndex++}`;
|
|
7359
|
-
if (!results.length)
|
|
8814
|
+
if (!results.length)
|
|
8815
|
+
return [{ text: fieldPlaceholderText(instr), field, fieldInstanceId, ...fieldState }];
|
|
7360
8816
|
if (results.every(
|
|
7361
8817
|
(run) => !run.text && !run.equation && !run.image && !run.break && !run.noteReference && !run.noteMark && !run.fieldChar && run.fieldCode === void 0
|
|
7362
8818
|
)) {
|
|
7363
8819
|
return [
|
|
7364
|
-
{ text: "", fieldChar: "begin" },
|
|
8820
|
+
{ text: "", fieldChar: "begin", ...fieldState },
|
|
7365
8821
|
{ text: "", fieldCode: instr },
|
|
7366
8822
|
{ text: "", fieldChar: "separate" },
|
|
7367
8823
|
...results,
|
|
7368
8824
|
{ text: "", fieldChar: "end" }
|
|
7369
8825
|
];
|
|
7370
8826
|
}
|
|
7371
|
-
return results.map((run) => ({ ...run, field, fieldInstanceId }));
|
|
8827
|
+
return results.map((run) => ({ ...run, field, fieldInstanceId, ...fieldState }));
|
|
7372
8828
|
},
|
|
7373
8829
|
(hyperlink) => {
|
|
7374
8830
|
if (!activeContext) return void 0;
|
|
@@ -7558,15 +9014,15 @@ function parseNotesPart(xml, kind, parseBlocks) {
|
|
|
7558
9014
|
}
|
|
7559
9015
|
|
|
7560
9016
|
// docx/document-parts.ts
|
|
7561
|
-
async function partContext(zip,
|
|
9017
|
+
async function partContext(zip, path2, base) {
|
|
7562
9018
|
if (!base) return void 0;
|
|
7563
|
-
const slash =
|
|
7564
|
-
const relsPath = `${
|
|
9019
|
+
const slash = path2.lastIndexOf("/");
|
|
9020
|
+
const relsPath = `${path2.slice(0, slash)}/_rels/${path2.slice(slash + 1)}.rels`;
|
|
7565
9021
|
return { ...base, rels: parseRelationships(await readPart(zip, relsPath)) };
|
|
7566
9022
|
}
|
|
7567
9023
|
var FIELD_MARKUP = /<w:(?:fldSimple|instrText|fldChar)\b/;
|
|
7568
|
-
async function readPart(zip,
|
|
7569
|
-
return zip.file(
|
|
9024
|
+
async function readPart(zip, path2) {
|
|
9025
|
+
return zip.file(path2)?.async("string");
|
|
7570
9026
|
}
|
|
7571
9027
|
function parseSettings(xml) {
|
|
7572
9028
|
if (!xml) return { evenAndOddHeaders: false, autoHyphenation: false };
|
|
@@ -7594,21 +9050,21 @@ async function resolveSlots(zip, relationships, refs, cache, fieldMarkup, drawin
|
|
|
7594
9050
|
for (const ref of refs) {
|
|
7595
9051
|
const relationship = relationships.get(ref.rId);
|
|
7596
9052
|
if (!relationship) continue;
|
|
7597
|
-
const
|
|
7598
|
-
let blocks = cache.get(
|
|
9053
|
+
const path2 = resolvePartPath("word/document.xml", relationship.target);
|
|
9054
|
+
let blocks = cache.get(path2);
|
|
7599
9055
|
if (!blocks) {
|
|
7600
|
-
const xml = await readPart(zip,
|
|
9056
|
+
const xml = await readPart(zip, path2);
|
|
7601
9057
|
if (xml === void 0) continue;
|
|
7602
9058
|
if (FIELD_MARKUP.test(xml)) fieldMarkup.seen = true;
|
|
7603
|
-
const context = await partContext(zip,
|
|
9059
|
+
const context = await partContext(zip, path2, drawings);
|
|
7604
9060
|
const root = parseXml2(xml).documentElement;
|
|
7605
9061
|
blocks = withParseWarnings(
|
|
7606
9062
|
sink2,
|
|
7607
|
-
() => parseBlocksFromContainer(root, `${
|
|
9063
|
+
() => parseBlocksFromContainer(root, `${path2.replace(/[^a-z0-9]+/gi, "")}-`, context)
|
|
7608
9064
|
);
|
|
7609
|
-
cache.set(
|
|
9065
|
+
cache.set(path2, blocks);
|
|
7610
9066
|
}
|
|
7611
|
-
slots[ref.slot] = { blocks, partName:
|
|
9067
|
+
slots[ref.slot] = { blocks, partName: path2 };
|
|
7612
9068
|
}
|
|
7613
9069
|
return Object.keys(slots).length ? slots : void 0;
|
|
7614
9070
|
}
|
|
@@ -7644,8 +9100,8 @@ async function parseDocumentParts(zip, body, blocks, drawings) {
|
|
|
7644
9100
|
}
|
|
7645
9101
|
const footnotesXml = await readPart(zip, "word/footnotes.xml");
|
|
7646
9102
|
const endnotesXml = await readPart(zip, "word/endnotes.xml");
|
|
7647
|
-
const notesParser = async (
|
|
7648
|
-
const context = await partContext(zip,
|
|
9103
|
+
const notesParser = async (path2) => {
|
|
9104
|
+
const context = await partContext(zip, path2, drawings);
|
|
7649
9105
|
return (container, prefix) => withParseWarnings(warnings, () => parseBlocksFromContainer(container, prefix, context));
|
|
7650
9106
|
};
|
|
7651
9107
|
const footnotes = footnotesXml ? parseNotesPart(footnotesXml, "footnote", await notesParser("word/footnotes.xml")) : void 0;
|
|
@@ -7670,115 +9126,6 @@ async function parseDocumentParts(zip, body, blocks, drawings) {
|
|
|
7670
9126
|
};
|
|
7671
9127
|
}
|
|
7672
9128
|
|
|
7673
|
-
// docx/numbering-parse.ts
|
|
7674
|
-
var integer2 = (value, fallback) => parseInteger(value) ?? fallback;
|
|
7675
|
-
var flag = (element) => onOffElement(element) === true;
|
|
7676
|
-
function byName(root, local) {
|
|
7677
|
-
return Array.from(root.getElementsByTagName("*")).filter(
|
|
7678
|
-
(node) => node.nodeType === 1 && named2(node, local)
|
|
7679
|
-
);
|
|
7680
|
-
}
|
|
7681
|
-
function parseMarkerFormat(rPr) {
|
|
7682
|
-
if (!rPr) return void 0;
|
|
7683
|
-
const format = {};
|
|
7684
|
-
const family = getW(first2(rPr, "rFonts"), "ascii");
|
|
7685
|
-
if (family) format.fontFamily = family;
|
|
7686
|
-
const size = parseInteger(getW(first2(rPr, "sz"), "val"));
|
|
7687
|
-
if (size !== void 0 && size > 0) format.fontSizeHalfPoints = size;
|
|
7688
|
-
if (onOffElement(first2(rPr, "b")) === true) format.bold = true;
|
|
7689
|
-
if (onOffElement(first2(rPr, "i")) === true) format.italic = true;
|
|
7690
|
-
const color = getW(first2(rPr, "color"), "val");
|
|
7691
|
-
if (color && /^[0-9a-f]{6}$/i.test(color)) format.color = `#${color.toLowerCase()}`;
|
|
7692
|
-
return Object.keys(format).length ? format : void 0;
|
|
7693
|
-
}
|
|
7694
|
-
function parseNumberingLevel(lvl) {
|
|
7695
|
-
const level = integer2(getW(lvl, "ilvl"), 0);
|
|
7696
|
-
const start = integer2(getW(first2(lvl, "start"), "val"), 1);
|
|
7697
|
-
const numFmt = enumValue(isStNumberFormat, getW(first2(lvl, "numFmt"), "val"), "w:numFmt") ?? "decimal";
|
|
7698
|
-
const lvlText = getW(first2(lvl, "lvlText"), "val") ?? "";
|
|
7699
|
-
const jc = getW(first2(lvl, "lvlJc"), "val");
|
|
7700
|
-
const ind = first2(first2(lvl, "pPr"), "ind");
|
|
7701
|
-
const suffRaw = getW(first2(lvl, "suff"), "val");
|
|
7702
|
-
const result = { level, start, numFmt, lvlText };
|
|
7703
|
-
if (!first2(lvl, "start")) result.startWasOmitted = true;
|
|
7704
|
-
const paragraphStyleId = getW(first2(lvl, "pStyle"), "val");
|
|
7705
|
-
if (paragraphStyleId) result.paragraphStyleId = paragraphStyleId;
|
|
7706
|
-
if (jc === "left" || jc === "center" || jc === "right") result.lvlJc = jc;
|
|
7707
|
-
const left = getW(ind, "left") ?? getW(ind, "start");
|
|
7708
|
-
if (left !== void 0) result.indentLeftTwips = parseSignedTwips(left) ?? signedTwips(0);
|
|
7709
|
-
const hanging = getW(ind, "hanging");
|
|
7710
|
-
if (hanging !== void 0) result.hangingTwips = parseTwips(hanging) ?? twips(0);
|
|
7711
|
-
const firstLine = getW(ind, "firstLine");
|
|
7712
|
-
if (firstLine !== void 0) result.firstLineTwips = parseTwips(firstLine) ?? twips(0);
|
|
7713
|
-
const tabs = first2(first2(lvl, "pPr"), "tabs");
|
|
7714
|
-
const tab = tabs ? children2(tabs, "tab").find((stop) => getW(stop, "val") !== "clear") : void 0;
|
|
7715
|
-
const tabPos = tab ? parseTwips(getW(tab, "pos")) : void 0;
|
|
7716
|
-
if (tabPos !== void 0) result.tabStopTwips = tabPos;
|
|
7717
|
-
if (flag(first2(lvl, "isLgl"))) result.isLgl = true;
|
|
7718
|
-
const restart = getW(first2(lvl, "lvlRestart"), "val");
|
|
7719
|
-
if (restart !== void 0) result.lvlRestart = integer2(restart, 0);
|
|
7720
|
-
const marker = parseMarkerFormat(first2(lvl, "rPr"));
|
|
7721
|
-
if (marker) result.markerFormat = marker;
|
|
7722
|
-
result.suffix = suffRaw === "space" ? "space" : suffRaw === "nothing" ? "none" : "tab";
|
|
7723
|
-
return result;
|
|
7724
|
-
}
|
|
7725
|
-
function parseAbstractNum(element) {
|
|
7726
|
-
const id = getW(element, "abstractNumId");
|
|
7727
|
-
if (!id) return void 0;
|
|
7728
|
-
const levels = {};
|
|
7729
|
-
for (const lvl of children2(element, "lvl")) {
|
|
7730
|
-
const parsed = parseNumberingLevel(lvl);
|
|
7731
|
-
levels[parsed.level] = parsed;
|
|
7732
|
-
}
|
|
7733
|
-
return { id, levels };
|
|
7734
|
-
}
|
|
7735
|
-
function parseNum(element) {
|
|
7736
|
-
const id = getW(element, "numId");
|
|
7737
|
-
if (!id) return void 0;
|
|
7738
|
-
const abstractNumId = getW(first2(element, "abstractNumId"), "val") ?? "";
|
|
7739
|
-
const levelOverrides = {};
|
|
7740
|
-
for (const override of children2(element, "lvlOverride")) {
|
|
7741
|
-
const level = integer2(getW(override, "ilvl"), 0);
|
|
7742
|
-
const entry = {};
|
|
7743
|
-
const startOverride = getW(first2(override, "startOverride"), "val");
|
|
7744
|
-
if (startOverride !== void 0) entry.startOverride = integer2(startOverride, 1);
|
|
7745
|
-
const lvl = first2(override, "lvl");
|
|
7746
|
-
if (lvl) entry.lvl = parseNumberingLevel(lvl);
|
|
7747
|
-
if (Object.keys(entry).length) levelOverrides[level] = entry;
|
|
7748
|
-
}
|
|
7749
|
-
return {
|
|
7750
|
-
id,
|
|
7751
|
-
abstractNumId,
|
|
7752
|
-
...Object.keys(levelOverrides).length ? { levelOverrides } : {}
|
|
7753
|
-
};
|
|
7754
|
-
}
|
|
7755
|
-
function parseNumberingCatalog(xml) {
|
|
7756
|
-
const document = parseXml2(xml);
|
|
7757
|
-
const root = document.documentElement;
|
|
7758
|
-
const abstractNums = {};
|
|
7759
|
-
const warnings = [];
|
|
7760
|
-
for (const element of byName(root, "abstractNum")) {
|
|
7761
|
-
const parsed = parseAbstractNum(element);
|
|
7762
|
-
if (!parsed) continue;
|
|
7763
|
-
abstractNums[parsed.id] = parsed;
|
|
7764
|
-
const link = getW(first2(element, "numStyleLink"), "val");
|
|
7765
|
-
if (link)
|
|
7766
|
-
warnings.push(
|
|
7767
|
-
`Numbering definition abstractNum ${parsed.id} links to style "${link}"; style-linked numbering levels are not resolved.`
|
|
7768
|
-
);
|
|
7769
|
-
if (byName(element, "lvlPicBulletId").length)
|
|
7770
|
-
warnings.push(
|
|
7771
|
-
`Numbering definition abstractNum ${parsed.id} uses a picture bullet; picture bullets are not rendered.`
|
|
7772
|
-
);
|
|
7773
|
-
}
|
|
7774
|
-
const nums = {};
|
|
7775
|
-
for (const element of byName(root, "num")) {
|
|
7776
|
-
const parsed = parseNum(element);
|
|
7777
|
-
if (parsed) nums[parsed.id] = parsed;
|
|
7778
|
-
}
|
|
7779
|
-
return { abstractNums, nums, warnings: [...new Set(warnings)] };
|
|
7780
|
-
}
|
|
7781
|
-
|
|
7782
9129
|
// docx/comments.ts
|
|
7783
9130
|
var W14_NS2 = "http://schemas.microsoft.com/office/word/2010/wordml";
|
|
7784
9131
|
var W15_NS2 = "http://schemas.microsoft.com/office/word/2012/wordml";
|
|
@@ -7806,15 +9153,15 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
7806
9153
|
});
|
|
7807
9154
|
if (extendedXml) {
|
|
7808
9155
|
const extended = parseXml2(extendedXml);
|
|
7809
|
-
for (const
|
|
9156
|
+
for (const entry2 of Array.from(
|
|
7810
9157
|
extended.getElementsByTagNameNS(W15_NS2, "commentEx")
|
|
7811
9158
|
)) {
|
|
7812
|
-
const paraId =
|
|
7813
|
-
const comment = paraId && comments.find((
|
|
9159
|
+
const paraId = entry2.getAttributeNS(W15_NS2, "paraId");
|
|
9160
|
+
const comment = paraId && comments.find((c2) => c2.id === paraIdToCommentId.get(paraId));
|
|
7814
9161
|
if (!comment) continue;
|
|
7815
|
-
const done =
|
|
9162
|
+
const done = entry2.getAttributeNS(W15_NS2, "done");
|
|
7816
9163
|
comment.resolved = done === "1" || done === "true";
|
|
7817
|
-
const parentParaId =
|
|
9164
|
+
const parentParaId = entry2.getAttributeNS(W15_NS2, "paraIdParent");
|
|
7818
9165
|
const parentId = parentParaId && paraIdToCommentId.get(parentParaId);
|
|
7819
9166
|
if (parentId) comment.parentId = parentId;
|
|
7820
9167
|
}
|
|
@@ -7822,96 +9169,6 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
7822
9169
|
return comments;
|
|
7823
9170
|
}
|
|
7824
9171
|
|
|
7825
|
-
// docx/parse-warnings.ts
|
|
7826
|
-
function hasAny(document, names) {
|
|
7827
|
-
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
7828
|
-
}
|
|
7829
|
-
function warningsFor(document) {
|
|
7830
|
-
const warnings = [];
|
|
7831
|
-
const features = [
|
|
7832
|
-
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
7833
|
-
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
7834
|
-
[
|
|
7835
|
-
["fldSimple", "instrText", "fldChar"],
|
|
7836
|
-
"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."
|
|
7837
|
-
],
|
|
7838
|
-
[
|
|
7839
|
-
["moveFrom", "moveTo"],
|
|
7840
|
-
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
7841
|
-
],
|
|
7842
|
-
[
|
|
7843
|
-
["rPrChange"],
|
|
7844
|
-
"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."
|
|
7845
|
-
],
|
|
7846
|
-
[
|
|
7847
|
-
["pPrChange"],
|
|
7848
|
-
"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."
|
|
7849
|
-
],
|
|
7850
|
-
[
|
|
7851
|
-
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
7852
|
-
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
7853
|
-
]
|
|
7854
|
-
];
|
|
7855
|
-
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
7856
|
-
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
7857
|
-
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
7858
|
-
))
|
|
7859
|
-
warnings.push(
|
|
7860
|
-
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
7861
|
-
);
|
|
7862
|
-
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
7863
|
-
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
7864
|
-
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
7865
|
-
(cr) => cr.attributes.length > 0
|
|
7866
|
-
);
|
|
7867
|
-
if (specialBreak)
|
|
7868
|
-
warnings.push(
|
|
7869
|
-
"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."
|
|
7870
|
-
);
|
|
7871
|
-
return warnings;
|
|
7872
|
-
}
|
|
7873
|
-
function forEachParagraph2(blocks, visit) {
|
|
7874
|
-
for (const block of blocks) {
|
|
7875
|
-
if (block.type === "paragraph") visit(block);
|
|
7876
|
-
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
7877
|
-
}
|
|
7878
|
-
}
|
|
7879
|
-
function imageAndBookmarkWarnings(blocks) {
|
|
7880
|
-
const warnings = [];
|
|
7881
|
-
let hasPicture = false;
|
|
7882
|
-
let hasAnchored = false;
|
|
7883
|
-
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
7884
|
-
let hasBookmarks = false;
|
|
7885
|
-
forEachParagraph2(blocks, (paragraph) => {
|
|
7886
|
-
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
7887
|
-
for (const run of paragraph.runs) {
|
|
7888
|
-
if (!run.image) continue;
|
|
7889
|
-
if (run.image.unsupported) {
|
|
7890
|
-
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
7891
|
-
unsupportedKinds.add(run.image.unsupported);
|
|
7892
|
-
} else hasPicture = true;
|
|
7893
|
-
if (run.image.anchored) hasAnchored = true;
|
|
7894
|
-
}
|
|
7895
|
-
});
|
|
7896
|
-
if (hasPicture)
|
|
7897
|
-
warnings.push(
|
|
7898
|
-
"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."
|
|
7899
|
-
);
|
|
7900
|
-
if (hasAnchored)
|
|
7901
|
-
warnings.push(
|
|
7902
|
-
"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."
|
|
7903
|
-
);
|
|
7904
|
-
if (unsupportedKinds.size)
|
|
7905
|
-
warnings.push(
|
|
7906
|
-
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
7907
|
-
);
|
|
7908
|
-
if (hasBookmarks)
|
|
7909
|
-
warnings.push(
|
|
7910
|
-
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
7911
|
-
);
|
|
7912
|
-
return warnings;
|
|
7913
|
-
}
|
|
7914
|
-
|
|
7915
9172
|
// docx/diagram-document.ts
|
|
7916
9173
|
function diagramsIn(blocks) {
|
|
7917
9174
|
const diagrams = [];
|
|
@@ -7949,7 +9206,7 @@ async function readPackage(input) {
|
|
|
7949
9206
|
const entries = Object.values(zip.files);
|
|
7950
9207
|
if (entries.length > 5e3) throw new Error("DOCX package exceeds the 5,000 part limit");
|
|
7951
9208
|
const totalSize = entries.reduce(
|
|
7952
|
-
(sum,
|
|
9209
|
+
(sum, entry2) => sum + Number(entry2._data?.uncompressedSize ?? 0),
|
|
7953
9210
|
0
|
|
7954
9211
|
);
|
|
7955
9212
|
if (totalSize > 200 * 1024 * 1024)
|
|
@@ -8013,7 +9270,7 @@ async function readPackage(input) {
|
|
|
8013
9270
|
const themeFile = zip.file("word/theme/theme1.xml");
|
|
8014
9271
|
const settingsFile = zip.file("word/settings.xml");
|
|
8015
9272
|
if (themeFile) {
|
|
8016
|
-
model.theme =
|
|
9273
|
+
model.theme = parseTheme2(await themeFile.async("string"));
|
|
8017
9274
|
if (settingsFile) {
|
|
8018
9275
|
const settingsXml = await settingsFile.async("string");
|
|
8019
9276
|
model.theme.colorMapping = withParseWarnings(
|
|
@@ -8100,6 +9357,10 @@ async function readPackage(input) {
|
|
|
8100
9357
|
pictureBlocks,
|
|
8101
9358
|
async (partName) => zip.file(partName)?.async("string")
|
|
8102
9359
|
);
|
|
9360
|
+
await resolveDocumentCharts(
|
|
9361
|
+
pictureBlocks,
|
|
9362
|
+
async (partName) => zip.file(partName)?.async("string")
|
|
9363
|
+
);
|
|
8103
9364
|
model.warnings.push(...imageAndBookmarkWarnings(blocks), ...diagramWarnings(pictureBlocks));
|
|
8104
9365
|
for (const warning of schemaWarnings)
|
|
8105
9366
|
if (!model.warnings.includes(warning)) model.warnings.push(warning);
|