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.cjs
CHANGED
|
@@ -13,12 +13,18 @@ var NS = {
|
|
|
13
13
|
w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
|
|
14
14
|
/** DrawingML main. */
|
|
15
15
|
a: "http://schemas.openxmlformats.org/drawingml/2006/main",
|
|
16
|
+
/** DrawingML chart. */
|
|
17
|
+
c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
|
|
18
|
+
/** Office 2010 chart extensions, including built-in modern chart styles. */
|
|
19
|
+
c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
|
|
16
20
|
/** DrawingML diagram (SmartArt) main. */
|
|
17
21
|
dgm: "http://schemas.openxmlformats.org/drawingml/2006/diagram",
|
|
18
22
|
/** Office 2007+ diagram drawing (`dsp`). */
|
|
19
23
|
dsp: "http://schemas.microsoft.com/office/drawing/2008/diagram",
|
|
20
24
|
/** Relationships (`r:id`, `r:embed`). */
|
|
21
25
|
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
|
26
|
+
/** Markup compatibility (`mc:AlternateContent`). */
|
|
27
|
+
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
|
22
28
|
/** OPC relationships part. */
|
|
23
29
|
rels: "http://schemas.openxmlformats.org/package/2006/relationships",
|
|
24
30
|
/** OPC content types part. */
|
|
@@ -366,12 +372,12 @@ function runPropertyChanged(run, base, key) {
|
|
|
366
372
|
function parseDirectRunProperties(props) {
|
|
367
373
|
const result = parseRunProperties(props);
|
|
368
374
|
const language = first2(props, "lang");
|
|
369
|
-
for (const [
|
|
375
|
+
for (const [attribute2, key] of [
|
|
370
376
|
["val", "language"],
|
|
371
377
|
["eastAsia", "eastAsiaLanguage"],
|
|
372
378
|
["bidi", "bidiLanguage"]
|
|
373
379
|
]) {
|
|
374
|
-
const value = getW(language,
|
|
380
|
+
const value = getW(language, attribute2);
|
|
375
381
|
if (value !== void 0) result[key] = value;
|
|
376
382
|
}
|
|
377
383
|
const rtl = onOffElement(first2(props, "rtl"));
|
|
@@ -873,9 +879,101 @@ function isValidLanguageTag(value) {
|
|
|
873
879
|
return /^(?:[A-Za-z]{2,8})(?:-[A-Za-z0-9]{1,8})*$/.test(value);
|
|
874
880
|
}
|
|
875
881
|
|
|
876
|
-
//
|
|
877
|
-
|
|
878
|
-
|
|
882
|
+
// color/color-primitives.ts
|
|
883
|
+
function toHex(value) {
|
|
884
|
+
return Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
// drawingml/dom.ts
|
|
888
|
+
function attributeReader(element) {
|
|
889
|
+
return (name) => {
|
|
890
|
+
if (!element) return void 0;
|
|
891
|
+
const direct = element.getAttribute(name);
|
|
892
|
+
if (direct !== null) return direct;
|
|
893
|
+
const attributes = element.attributes;
|
|
894
|
+
for (let index = 0; index < attributes.length; index++) {
|
|
895
|
+
const candidate = attributes.item(index);
|
|
896
|
+
if (candidate && candidate.localName === name) return candidate.value;
|
|
897
|
+
}
|
|
898
|
+
return void 0;
|
|
899
|
+
};
|
|
900
|
+
}
|
|
901
|
+
function stringAttribute(element, name) {
|
|
902
|
+
const value = attributeReader(element)(name)?.trim();
|
|
903
|
+
return value ? value : void 0;
|
|
904
|
+
}
|
|
905
|
+
function integerAttribute(element, name) {
|
|
906
|
+
const parsed = Number.parseInt(attributeReader(element)(name) ?? "", 10);
|
|
907
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
908
|
+
}
|
|
909
|
+
function booleanAttribute(element, name) {
|
|
910
|
+
const value = attributeReader(element)(name)?.trim().toLowerCase();
|
|
911
|
+
if (value === "1" || value === "true") return true;
|
|
912
|
+
if (value === "0" || value === "false") return false;
|
|
913
|
+
return void 0;
|
|
914
|
+
}
|
|
915
|
+
function descendants(root, local) {
|
|
916
|
+
const result = [];
|
|
917
|
+
const visit = (node) => {
|
|
918
|
+
for (const child3 of Array.from(node.childNodes)) {
|
|
919
|
+
if (!isElement(child3)) continue;
|
|
920
|
+
if (child3.localName === local) result.push(child3);
|
|
921
|
+
visit(child3);
|
|
922
|
+
}
|
|
923
|
+
};
|
|
924
|
+
visit(root);
|
|
925
|
+
return result;
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
// drawingml/drawing-color.ts
|
|
929
|
+
var COLOR_ELEMENTS = {
|
|
930
|
+
srgbClr: "srgb",
|
|
931
|
+
schemeClr: "scheme",
|
|
932
|
+
sysClr: "system",
|
|
933
|
+
prstClr: "preset",
|
|
934
|
+
scrgbClr: "scrgb",
|
|
935
|
+
hslClr: "hsl"
|
|
936
|
+
};
|
|
937
|
+
function colorValue(kind, element) {
|
|
938
|
+
const attribute2 = (name) => element.getAttribute(name) ?? "";
|
|
939
|
+
if (kind === "scrgb") return `${attribute2("r")},${attribute2("g")},${attribute2("b")}`;
|
|
940
|
+
if (kind === "hsl") return `${attribute2("hue")},${attribute2("sat")},${attribute2("lum")}`;
|
|
941
|
+
return attribute2("val");
|
|
942
|
+
}
|
|
943
|
+
function parseDrawingColorIn(container) {
|
|
944
|
+
if (!container) return void 0;
|
|
945
|
+
for (const element of elements(container)) {
|
|
946
|
+
const kind = COLOR_ELEMENTS[element.localName];
|
|
947
|
+
if (!kind || element.namespaceURI && element.namespaceURI !== NS.a) continue;
|
|
948
|
+
return parseDrawingColor(element);
|
|
949
|
+
}
|
|
950
|
+
return void 0;
|
|
951
|
+
}
|
|
952
|
+
function parseDrawingColor(element) {
|
|
953
|
+
const kind = COLOR_ELEMENTS[element.localName];
|
|
954
|
+
if (!kind) return void 0;
|
|
955
|
+
const color = {
|
|
956
|
+
kind,
|
|
957
|
+
value: colorValue(kind, element),
|
|
958
|
+
transforms: elements(element).map((child3) => ({
|
|
959
|
+
name: child3.localName,
|
|
960
|
+
value: child3.getAttribute("val") ?? ""
|
|
961
|
+
}))
|
|
962
|
+
};
|
|
963
|
+
const fallback = kind === "system" ? element.getAttribute("lastClr") : null;
|
|
964
|
+
if (fallback) color.fallback = fallback;
|
|
965
|
+
return color;
|
|
966
|
+
}
|
|
967
|
+
function parseDrawingColorList(container) {
|
|
968
|
+
if (!container) return [];
|
|
969
|
+
return elements(container).flatMap((element) => {
|
|
970
|
+
const color = parseDrawingColor(element);
|
|
971
|
+
return color ? [color] : [];
|
|
972
|
+
});
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
// drawingml/theme-model.ts
|
|
976
|
+
var THEME_COLOR_SLOTS = [
|
|
879
977
|
"dk1",
|
|
880
978
|
"lt1",
|
|
881
979
|
"dk2",
|
|
@@ -889,46 +987,89 @@ var SCHEME_ORDER = [
|
|
|
889
987
|
"hlink",
|
|
890
988
|
"folHlink"
|
|
891
989
|
];
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
990
|
+
|
|
991
|
+
// drawingml/theme.ts
|
|
992
|
+
new Set(THEME_COLOR_SLOTS);
|
|
993
|
+
function nonEmpty(value) {
|
|
994
|
+
return value ? value : void 0;
|
|
995
|
+
}
|
|
996
|
+
function parseThemeColorScheme(scheme) {
|
|
997
|
+
const result = { colors: {} };
|
|
998
|
+
if (!scheme) return result;
|
|
999
|
+
const name = nonEmpty(scheme.getAttribute("name"));
|
|
1000
|
+
if (name) result.name = name;
|
|
1001
|
+
for (const slot2 of THEME_COLOR_SLOTS) {
|
|
1002
|
+
const color = parseDrawingColorIn(first(scheme, slot2, NS.a));
|
|
1003
|
+
if (color) result.colors[slot2] = color;
|
|
898
1004
|
}
|
|
899
|
-
return
|
|
1005
|
+
return result;
|
|
900
1006
|
}
|
|
901
|
-
function
|
|
902
|
-
const
|
|
903
|
-
if (
|
|
904
|
-
const
|
|
905
|
-
|
|
906
|
-
|
|
1007
|
+
function parseFontCollection(collection) {
|
|
1008
|
+
const result = { scripts: {} };
|
|
1009
|
+
if (!collection) return result;
|
|
1010
|
+
const typeface = (local) => nonEmpty(first(collection, local, NS.a)?.getAttribute("typeface"));
|
|
1011
|
+
const latin = typeface("latin");
|
|
1012
|
+
const eastAsia = typeface("ea");
|
|
1013
|
+
const complexScript = typeface("cs");
|
|
1014
|
+
if (latin) result.latin = latin;
|
|
1015
|
+
if (eastAsia) result.eastAsia = eastAsia;
|
|
1016
|
+
if (complexScript) result.complexScript = complexScript;
|
|
1017
|
+
for (const font of elements(collection)) {
|
|
1018
|
+
if (font.localName !== "font") continue;
|
|
1019
|
+
const script = nonEmpty(font.getAttribute("script"));
|
|
1020
|
+
const face = nonEmpty(font.getAttribute("typeface"));
|
|
1021
|
+
if (script && face && !Object.hasOwn(result.scripts, script)) result.scripts[script] = face;
|
|
1022
|
+
}
|
|
1023
|
+
return result;
|
|
907
1024
|
}
|
|
908
|
-
function
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
1025
|
+
function parseThemeFontScheme(scheme) {
|
|
1026
|
+
const result = {
|
|
1027
|
+
major: parseFontCollection(first(scheme, "majorFont", NS.a)),
|
|
1028
|
+
minor: parseFontCollection(first(scheme, "minorFont", NS.a))
|
|
1029
|
+
};
|
|
1030
|
+
const name = nonEmpty(scheme?.getAttribute("name"));
|
|
1031
|
+
if (name) result.name = name;
|
|
1032
|
+
return result;
|
|
1033
|
+
}
|
|
1034
|
+
function rootOf(source) {
|
|
1035
|
+
return "documentElement" in source ? source.documentElement : source;
|
|
1036
|
+
}
|
|
1037
|
+
function parseTheme(source) {
|
|
1038
|
+
const root = rootOf(source);
|
|
1039
|
+
const holder = first(root, "themeElements", NS.a) ?? root;
|
|
1040
|
+
const theme = {
|
|
1041
|
+
colorScheme: parseThemeColorScheme(first(holder, "clrScheme", NS.a)),
|
|
1042
|
+
fontScheme: parseThemeFontScheme(first(holder, "fontScheme", NS.a))
|
|
1043
|
+
};
|
|
1044
|
+
const name = nonEmpty(root.getAttribute("name"));
|
|
1045
|
+
if (name) theme.name = name;
|
|
1046
|
+
return theme;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
// drawingml/theme-color.ts
|
|
1050
|
+
function themeSlotHex(color) {
|
|
1051
|
+
if (!color) return void 0;
|
|
1052
|
+
const value = color.kind === "srgb" ? color.value : color.kind === "system" ? color.fallback : void 0;
|
|
1053
|
+
return value ? value.toUpperCase() : void 0;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
// docx/theme.ts
|
|
1057
|
+
function fontSetOf(collection) {
|
|
1058
|
+
const { latin, eastAsia, complexScript } = collection;
|
|
913
1059
|
return {
|
|
914
1060
|
...latin ? { latin } : {},
|
|
915
|
-
...
|
|
916
|
-
...
|
|
1061
|
+
...eastAsia ? { eastAsia } : {},
|
|
1062
|
+
...complexScript ? { complexScript } : {}
|
|
917
1063
|
};
|
|
918
1064
|
}
|
|
919
|
-
function
|
|
920
|
-
const
|
|
921
|
-
const root = document.documentElement;
|
|
922
|
-
const clrScheme = Array.from(root.getElementsByTagNameNS(DRAWING_NS, "clrScheme"))[0];
|
|
1065
|
+
function parseTheme2(xml) {
|
|
1066
|
+
const theme = parseTheme(parseXml2(xml));
|
|
923
1067
|
const colors = {};
|
|
924
|
-
for (const
|
|
925
|
-
const
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
}
|
|
929
|
-
const fontScheme = Array.from(root.getElementsByTagNameNS(DRAWING_NS, "fontScheme"))[0];
|
|
930
|
-
const major = drawingChild(fontScheme, "majorFont");
|
|
931
|
-
const minor = drawingChild(fontScheme, "minorFont");
|
|
1068
|
+
for (const slot2 of THEME_COLOR_SLOTS) {
|
|
1069
|
+
const value = themeSlotHex(theme.colorScheme.colors[slot2]);
|
|
1070
|
+
if (value) colors[slot2] = value;
|
|
1071
|
+
}
|
|
1072
|
+
const { major, minor } = theme.fontScheme;
|
|
932
1073
|
return { colors, colorMapping: {}, fonts: { major: fontSetOf(major), minor: fontSetOf(minor) } };
|
|
933
1074
|
}
|
|
934
1075
|
var MAPPING_KEYS = ["bg1", "tx1", "bg2", "tx2"];
|
|
@@ -966,9 +1107,6 @@ function parseColorSchemeMapping(xml) {
|
|
|
966
1107
|
function isThemeColorToken(value) {
|
|
967
1108
|
return isStThemeColor(value);
|
|
968
1109
|
}
|
|
969
|
-
function toHex(value) {
|
|
970
|
-
return Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
|
|
971
|
-
}
|
|
972
1110
|
function fractionToThemeByte(fraction) {
|
|
973
1111
|
return toHex(Math.round(Math.min(1, Math.max(0, fraction)) * 255));
|
|
974
1112
|
}
|
|
@@ -1022,6 +1160,10 @@ function resolvePartPath(basePart, target) {
|
|
|
1022
1160
|
}
|
|
1023
1161
|
return resolved.join("/");
|
|
1024
1162
|
}
|
|
1163
|
+
function relationshipsPartFor(partName) {
|
|
1164
|
+
const slash = partName.lastIndexOf("/");
|
|
1165
|
+
return `${partName.slice(0, slash + 1)}_rels/${partName.slice(slash + 1)}.rels`;
|
|
1166
|
+
}
|
|
1025
1167
|
function nextRelationshipId(used) {
|
|
1026
1168
|
let index = 1;
|
|
1027
1169
|
while (used.has(`rId${index}`)) index++;
|
|
@@ -1152,7 +1294,7 @@ function parseCoreProperties(xml) {
|
|
|
1152
1294
|
}
|
|
1153
1295
|
return Object.keys(result).length ? result : void 0;
|
|
1154
1296
|
}
|
|
1155
|
-
var same = (
|
|
1297
|
+
var same = (a2, b) => PROPERTY_FIELDS.every((field) => (a2?.[field] ?? "") === (b?.[field] ?? ""));
|
|
1156
1298
|
async function applyCoreProperties(zip, next, prior) {
|
|
1157
1299
|
if (same(next, prior)) return;
|
|
1158
1300
|
const existing = zip.file(CORE_PATH);
|
|
@@ -1311,13 +1453,13 @@ function buildCommentsExtendedDocument(comments) {
|
|
|
1311
1453
|
);
|
|
1312
1454
|
const root = doc.documentElement;
|
|
1313
1455
|
comments.forEach((comment, index) => {
|
|
1314
|
-
const
|
|
1315
|
-
|
|
1316
|
-
if (comment.resolved)
|
|
1317
|
-
const parentIndex = comments.findIndex((
|
|
1456
|
+
const entry2 = doc.createElementNS(W15_NS, "w15:commentEx");
|
|
1457
|
+
entry2.setAttributeNS(W15_NS, "w15:paraId", paraIdFor(comment.id, index));
|
|
1458
|
+
if (comment.resolved) entry2.setAttributeNS(W15_NS, "w15:done", "1");
|
|
1459
|
+
const parentIndex = comments.findIndex((c2) => c2.id === comment.parentId);
|
|
1318
1460
|
if (parentIndex >= 0)
|
|
1319
|
-
|
|
1320
|
-
root.appendChild(
|
|
1461
|
+
entry2.setAttributeNS(W15_NS, "w15:paraIdParent", paraIdFor(comment.parentId, parentIndex));
|
|
1462
|
+
root.appendChild(entry2);
|
|
1321
1463
|
});
|
|
1322
1464
|
return doc;
|
|
1323
1465
|
}
|
|
@@ -1447,7 +1589,7 @@ function rangeEdges(runs, ranges) {
|
|
|
1447
1589
|
const opens = /* @__PURE__ */ new Map();
|
|
1448
1590
|
const closes = /* @__PURE__ */ new Map();
|
|
1449
1591
|
const order = (key) => key.startsWith("comment:") ? 0 : 1;
|
|
1450
|
-
for (const key of [...first3.keys()].sort((
|
|
1592
|
+
for (const key of [...first3.keys()].sort((a2, b) => order(a2) - order(b))) {
|
|
1451
1593
|
if (!ranges?.before.has(key)) {
|
|
1452
1594
|
const index = first3.get(key);
|
|
1453
1595
|
(opens.get(index) ?? opens.set(index, []).get(index)).push(edgeFor(key, index));
|
|
@@ -1670,8 +1812,8 @@ function orderChildren(parent, order) {
|
|
|
1670
1812
|
if (rank >= 0) previousRank = rank;
|
|
1671
1813
|
return { element, index, rank: rank >= 0 ? rank : previousRank + 0.5 };
|
|
1672
1814
|
});
|
|
1673
|
-
const sorted = [...ranked].sort((
|
|
1674
|
-
if (sorted.every((
|
|
1815
|
+
const sorted = [...ranked].sort((a2, b) => a2.rank - b.rank || a2.index - b.index);
|
|
1816
|
+
if (sorted.every((entry2, index) => entry2.element === elements2[index])) return;
|
|
1675
1817
|
for (const { element } of sorted) parent.appendChild(element);
|
|
1676
1818
|
}
|
|
1677
1819
|
var SECTPR_ORDER = [
|
|
@@ -2458,7 +2600,7 @@ function borderElement(doc, name, side) {
|
|
|
2458
2600
|
}
|
|
2459
2601
|
return element;
|
|
2460
2602
|
}
|
|
2461
|
-
var sameJson = (
|
|
2603
|
+
var sameJson = (a2, b) => JSON.stringify(a2 ?? null) === JSON.stringify(b ?? null);
|
|
2462
2604
|
function updateShading(doc, props, paragraph, base) {
|
|
2463
2605
|
if (base && paragraph.shadingFill === base.shadingFill) return;
|
|
2464
2606
|
for (const element of children2(props, "shd")) props.removeChild(element);
|
|
@@ -2650,8 +2792,8 @@ function reconcileBookmarks(doc, starts, ends, names, baseNames, nextId) {
|
|
|
2650
2792
|
function setAttribute3(element, local, value) {
|
|
2651
2793
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
2652
2794
|
}
|
|
2653
|
-
function sameNumbering(
|
|
2654
|
-
return
|
|
2795
|
+
function sameNumbering(a2, b) {
|
|
2796
|
+
return a2?.numId === b?.numId && a2?.level === b?.level;
|
|
2655
2797
|
}
|
|
2656
2798
|
function writeNumberingProperties(doc, props, paragraph, base) {
|
|
2657
2799
|
if (base && sameNumbering(paragraph.numbering, base.numbering)) return;
|
|
@@ -2834,11 +2976,11 @@ var allowedRunPropertyAttributes = {
|
|
|
2834
2976
|
shd: ["val", "fill", "color", "themeFill", "themeFillTint", "themeFillShade"]
|
|
2835
2977
|
};
|
|
2836
2978
|
function hasUnexpectedAttributes(element, allowed, allowDateUtc = false) {
|
|
2837
|
-
for (const
|
|
2838
|
-
if (
|
|
2839
|
-
if (allowDateUtc &&
|
|
2979
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
2980
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
2981
|
+
if (allowDateUtc && attribute2.namespaceURI === WORD_DATE_UTC_NS && attribute2.localName === "dateUtc")
|
|
2840
2982
|
continue;
|
|
2841
|
-
if (
|
|
2983
|
+
if (attribute2.namespaceURI !== WORD_NS || !allowed.includes(attribute2.localName)) return true;
|
|
2842
2984
|
}
|
|
2843
2985
|
return false;
|
|
2844
2986
|
}
|
|
@@ -2865,7 +3007,7 @@ function runPropertiesHaveUnknownContent(properties) {
|
|
|
2865
3007
|
if (!isLigatures(property.getAttributeNS(WORD_2010_NS, "val")) || elements(property).length)
|
|
2866
3008
|
return true;
|
|
2867
3009
|
if (Array.from(property.attributes).some(
|
|
2868
|
-
(
|
|
3010
|
+
(attribute2) => attribute2.namespaceURI !== "http://www.w3.org/2000/xmlns/" && (attribute2.namespaceURI !== WORD_2010_NS || attribute2.localName !== "val")
|
|
2869
3011
|
))
|
|
2870
3012
|
return true;
|
|
2871
3013
|
continue;
|
|
@@ -3004,7 +3146,7 @@ var NAMED = {
|
|
|
3004
3146
|
var POINT_TO_PX = 96 / 72;
|
|
3005
3147
|
var WATERMARK_PREFIX = "PowerPlusWaterMarkObject";
|
|
3006
3148
|
var DEFAULT_WATERMARK_COLOR = "#c0c0c0";
|
|
3007
|
-
function
|
|
3149
|
+
function colorOf(value) {
|
|
3008
3150
|
const text = (value ?? "").trim().toLowerCase().split(/\s/)[0] ?? "";
|
|
3009
3151
|
if (NAMED[text]) return NAMED[text];
|
|
3010
3152
|
const hex = /^#?([0-9a-f]{6})$/.exec(text);
|
|
@@ -3012,20 +3154,20 @@ function colorOf2(value) {
|
|
|
3012
3154
|
}
|
|
3013
3155
|
function parseWatermarkShape(shape) {
|
|
3014
3156
|
if (!shape || !(shape.getAttribute("id") ?? "").startsWith(WATERMARK_PREFIX)) return void 0;
|
|
3015
|
-
const
|
|
3016
|
-
if (!
|
|
3157
|
+
const path2 = Array.from(shape.getElementsByTagNameNS(VML_NS, "textpath"))[0];
|
|
3158
|
+
if (!path2) return void 0;
|
|
3017
3159
|
const style = shape.getAttribute("style") ?? "";
|
|
3018
3160
|
const fill = Array.from(shape.getElementsByTagNameNS(VML_NS, "fill"))[0];
|
|
3019
3161
|
const opacity = fill?.getAttribute("opacity");
|
|
3020
3162
|
const family = /font-family:\s*(?:"|"|')?([^;"'&]+)/i.exec(
|
|
3021
|
-
|
|
3163
|
+
path2.getAttribute("style") ?? ""
|
|
3022
3164
|
)?.[1];
|
|
3023
3165
|
const width = /width:\s*([\d.]+)pt/i.exec(style);
|
|
3024
3166
|
const height = /height:\s*([\d.]+)pt/i.exec(style);
|
|
3025
3167
|
const rotation = /rotation:\s*(-?[\d.]+)/i.exec(style);
|
|
3026
3168
|
const spec = {
|
|
3027
|
-
text:
|
|
3028
|
-
color:
|
|
3169
|
+
text: path2.getAttribute("string") ?? "",
|
|
3170
|
+
color: colorOf(shape.getAttribute("fillcolor")),
|
|
3029
3171
|
semitransparent: opacity !== null && opacity !== "" && opacity !== "1",
|
|
3030
3172
|
layout: rotation && Math.abs(Number(rotation[1]) % 360) > 1 ? "diagonal" : "horizontal",
|
|
3031
3173
|
...family ? { fontFamily: family.trim() } : {}
|
|
@@ -3080,11 +3222,11 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
3080
3222
|
f.setAttribute("eqn", eqn);
|
|
3081
3223
|
formulas.appendChild(f);
|
|
3082
3224
|
}
|
|
3083
|
-
const
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3225
|
+
const path2 = v("path");
|
|
3226
|
+
path2.setAttribute("textpathok", "t");
|
|
3227
|
+
path2.setAttributeNS(OFFICE_NS, "o:connecttype", "custom");
|
|
3228
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectlocs", "@9,0;@10,10800;@11,21600;@12,10800");
|
|
3229
|
+
path2.setAttributeNS(OFFICE_NS, "o:connectangles", "270,180,90,0");
|
|
3088
3230
|
const typePath = v("textpath");
|
|
3089
3231
|
typePath.setAttribute("on", "t");
|
|
3090
3232
|
typePath.setAttribute("fitshape", "t");
|
|
@@ -3097,7 +3239,7 @@ function buildWatermarkRun(doc, spec, uniqueId) {
|
|
|
3097
3239
|
lock.setAttributeNS(VML_NS, "v:ext", "edit");
|
|
3098
3240
|
lock.setAttribute("text", "t");
|
|
3099
3241
|
lock.setAttribute("shapetype", "t");
|
|
3100
|
-
for (const child3 of [formulas,
|
|
3242
|
+
for (const child3 of [formulas, path2, typePath, handles, lock]) type.appendChild(child3);
|
|
3101
3243
|
const size = watermarkSizePt(spec);
|
|
3102
3244
|
const shape = v("shape");
|
|
3103
3245
|
shape.setAttribute("id", `${WATERMARK_PREFIX}${uniqueId}`);
|
|
@@ -3137,7 +3279,7 @@ var add = (parent, ...items) => {
|
|
|
3137
3279
|
return parent;
|
|
3138
3280
|
};
|
|
3139
3281
|
var emu = (px2) => String(Math.max(1, Math.round(px2 * EMU_PER_PIXEL)));
|
|
3140
|
-
var
|
|
3282
|
+
var descendants2 = (root, ns, local) => Array.from(root.getElementsByTagNameNS(ns, local));
|
|
3141
3283
|
function paragraphsFor(doc, lines) {
|
|
3142
3284
|
return (lines.length ? lines : [""]).map((line) => {
|
|
3143
3285
|
const paragraph = makeW(doc, "p");
|
|
@@ -3229,23 +3371,23 @@ function buildTextBoxDrawing(doc, image, docPrId) {
|
|
|
3229
3371
|
}
|
|
3230
3372
|
function isSimpleTextBox(graphicData, anchored) {
|
|
3231
3373
|
if (!graphicData || anchored) return false;
|
|
3232
|
-
const content =
|
|
3374
|
+
const content = descendants2(graphicData, W_NS, "txbxContent")[0];
|
|
3233
3375
|
if (!content) return false;
|
|
3234
3376
|
const plain = (node, allowed) => Array.from(node.childNodes).filter(isElement).every((child3) => child3.namespaceURI === W_NS && allowed.includes(child3.localName));
|
|
3235
|
-
return plain(content, ["p"]) &&
|
|
3236
|
-
(paragraph) => plain(paragraph, ["r"]) &&
|
|
3377
|
+
return plain(content, ["p"]) && descendants2(content, W_NS, "p").every(
|
|
3378
|
+
(paragraph) => plain(paragraph, ["r"]) && descendants2(paragraph, W_NS, "r").every((run) => plain(run, ["t"]))
|
|
3237
3379
|
);
|
|
3238
3380
|
}
|
|
3239
3381
|
function textBoxHasBorder(graphicData) {
|
|
3240
|
-
const spPr = graphicData &&
|
|
3382
|
+
const spPr = graphicData && descendants2(graphicData, WPS_NS, "spPr")[0];
|
|
3241
3383
|
const ln = spPr && Array.from(spPr.getElementsByTagNameNS(A_NS, "ln"))[0];
|
|
3242
3384
|
return Boolean(ln && !ln.getElementsByTagNameNS(A_NS, "noFill").length);
|
|
3243
3385
|
}
|
|
3244
3386
|
function patchTextBox(doc, drawing, image, base) {
|
|
3245
3387
|
if (image.widthPx !== base.widthPx || image.heightPx !== base.heightPx)
|
|
3246
3388
|
for (const node of [
|
|
3247
|
-
...
|
|
3248
|
-
...
|
|
3389
|
+
...descendants2(drawing, WP_NS, "extent"),
|
|
3390
|
+
...descendants2(drawing, A_NS, "ext").filter(
|
|
3249
3391
|
(ext) => ext.parentNode?.localName === "xfrm"
|
|
3250
3392
|
)
|
|
3251
3393
|
]) {
|
|
@@ -3253,14 +3395,14 @@ function patchTextBox(doc, drawing, image, base) {
|
|
|
3253
3395
|
node.setAttribute("cy", emu(image.heightPx));
|
|
3254
3396
|
}
|
|
3255
3397
|
if (JSON.stringify(image.textBoxText) !== JSON.stringify(base.textBoxText)) {
|
|
3256
|
-
const content =
|
|
3398
|
+
const content = descendants2(drawing, W_NS, "txbxContent")[0];
|
|
3257
3399
|
if (content) {
|
|
3258
3400
|
for (const child3 of Array.from(content.childNodes)) content.removeChild(child3);
|
|
3259
3401
|
add(content, ...paragraphsFor(doc, image.textBoxText ?? []));
|
|
3260
3402
|
}
|
|
3261
3403
|
}
|
|
3262
3404
|
if (image.textBoxBorder !== false !== (base.textBoxBorder !== false)) {
|
|
3263
|
-
const spPr =
|
|
3405
|
+
const spPr = descendants2(drawing, WPS_NS, "spPr")[0];
|
|
3264
3406
|
if (spPr) {
|
|
3265
3407
|
for (const old of Array.from(spPr.childNodes).filter(
|
|
3266
3408
|
(node) => isElement(node) && node.localName === "ln"
|
|
@@ -3330,8 +3472,8 @@ var CUSTOM_LAYOUT_ATTRIBUTES = [
|
|
|
3330
3472
|
];
|
|
3331
3473
|
function parseCustomLayoutAttributes(get) {
|
|
3332
3474
|
const custom = {};
|
|
3333
|
-
for (const [key,
|
|
3334
|
-
const raw = get(
|
|
3475
|
+
for (const [key, attribute2, kind] of CUSTOM_LAYOUT_ATTRIBUTES) {
|
|
3476
|
+
const raw = get(attribute2);
|
|
3335
3477
|
const value = kind === "flag" ? optionalBoolean(raw) : optionalScaled(raw, kind === "angle" ? 6e4 : 1e5);
|
|
3336
3478
|
if (value !== void 0) custom[key] = value;
|
|
3337
3479
|
}
|
|
@@ -3345,8 +3487,8 @@ var RELATIONSHIP_ATTRIBUTES = [
|
|
|
3345
3487
|
];
|
|
3346
3488
|
function parseRelationshipIdAttributes(get) {
|
|
3347
3489
|
const result = {};
|
|
3348
|
-
for (const [property,
|
|
3349
|
-
const value = optionalString(get(
|
|
3490
|
+
for (const [property, attribute2] of RELATIONSHIP_ATTRIBUTES) {
|
|
3491
|
+
const value = optionalString(get(attribute2));
|
|
3350
3492
|
if (value) result[property] = value;
|
|
3351
3493
|
}
|
|
3352
3494
|
return result;
|
|
@@ -3408,7 +3550,7 @@ async function resolveDiagramDrawingPart(hostPart, dataRelId, drawingExtensionRe
|
|
|
3408
3550
|
const entries = await host.readRelationshipEntries(diagramRelationshipsPart(dataPath));
|
|
3409
3551
|
if (!entries) return void 0;
|
|
3410
3552
|
const drawing = entries.find(
|
|
3411
|
-
(
|
|
3553
|
+
(entry2) => (!drawingExtensionRelId || entry2.id.trim() === drawingExtensionRelId) && entry2.type.endsWith("/diagramDrawing")
|
|
3412
3554
|
);
|
|
3413
3555
|
const id = drawing?.id.trim() ?? "";
|
|
3414
3556
|
const target = drawing?.target.trim() ?? "";
|
|
@@ -3423,47 +3565,6 @@ var DIAGRAM_RELATIONSHIP_TYPES = {
|
|
|
3423
3565
|
drawing: RELATIONSHIP_TYPES.diagramDrawing
|
|
3424
3566
|
};
|
|
3425
3567
|
|
|
3426
|
-
// diagram/dom.ts
|
|
3427
|
-
function attributeReader(element) {
|
|
3428
|
-
return (name) => {
|
|
3429
|
-
if (!element) return void 0;
|
|
3430
|
-
const direct = element.getAttribute(name);
|
|
3431
|
-
if (direct !== null) return direct;
|
|
3432
|
-
const attributes = element.attributes;
|
|
3433
|
-
for (let index = 0; index < attributes.length; index++) {
|
|
3434
|
-
const candidate = attributes.item(index);
|
|
3435
|
-
if (candidate && candidate.localName === name) return candidate.value;
|
|
3436
|
-
}
|
|
3437
|
-
return void 0;
|
|
3438
|
-
};
|
|
3439
|
-
}
|
|
3440
|
-
function stringAttribute(element, name) {
|
|
3441
|
-
const value = attributeReader(element)(name)?.trim();
|
|
3442
|
-
return value ? value : void 0;
|
|
3443
|
-
}
|
|
3444
|
-
function integerAttribute(element, name) {
|
|
3445
|
-
const parsed = Number.parseInt(attributeReader(element)(name) ?? "", 10);
|
|
3446
|
-
return Number.isFinite(parsed) ? parsed : void 0;
|
|
3447
|
-
}
|
|
3448
|
-
function booleanAttribute(element, name) {
|
|
3449
|
-
const value = attributeReader(element)(name)?.trim().toLowerCase();
|
|
3450
|
-
if (value === "1" || value === "true") return true;
|
|
3451
|
-
if (value === "0" || value === "false") return false;
|
|
3452
|
-
return void 0;
|
|
3453
|
-
}
|
|
3454
|
-
function descendants2(root, local) {
|
|
3455
|
-
const result = [];
|
|
3456
|
-
const visit = (node) => {
|
|
3457
|
-
for (const child3 of Array.from(node.childNodes)) {
|
|
3458
|
-
if (!isElement(child3)) continue;
|
|
3459
|
-
if (child3.localName === local) result.push(child3);
|
|
3460
|
-
visit(child3);
|
|
3461
|
-
}
|
|
3462
|
-
};
|
|
3463
|
-
visit(root);
|
|
3464
|
-
return result;
|
|
3465
|
-
}
|
|
3466
|
-
|
|
3467
3568
|
// diagram/data-model.ts
|
|
3468
3569
|
var TRANSITION_TYPES = /* @__PURE__ */ new Set(["parTrans", "sibTrans"]);
|
|
3469
3570
|
var STRUCTURAL_TYPES = /* @__PURE__ */ new Set(["doc", "pres", "parTrans", "sibTrans"]);
|
|
@@ -3487,7 +3588,7 @@ function connectionLabel(connection, transitionText) {
|
|
|
3487
3588
|
function textBodyParagraphs(body) {
|
|
3488
3589
|
if (!body) return [];
|
|
3489
3590
|
return children(body, "p", NS.a).map(
|
|
3490
|
-
(paragraph) =>
|
|
3591
|
+
(paragraph) => descendants(paragraph, "t").map((run) => run.textContent ?? "").join("")
|
|
3491
3592
|
);
|
|
3492
3593
|
}
|
|
3493
3594
|
function parsePoint(element) {
|
|
@@ -3553,21 +3654,21 @@ function parseDiagramDataModel(source, part) {
|
|
|
3553
3654
|
if (connection.modelId && connectionIds.has(connection.modelId))
|
|
3554
3655
|
report("CONNECTION_ID_DUPLICATE", `Duplicate dgm:cxn modelId: ${connection.modelId}.`);
|
|
3555
3656
|
if (connection.modelId) connectionIds.add(connection.modelId);
|
|
3556
|
-
for (const [
|
|
3657
|
+
for (const [attribute2, id] of [
|
|
3557
3658
|
["srcId", connection.sourceId],
|
|
3558
3659
|
["destId", connection.destId]
|
|
3559
3660
|
])
|
|
3560
3661
|
if (!ids.has(id))
|
|
3561
3662
|
report(
|
|
3562
3663
|
"CONNECTION_ENDPOINT_MISSING",
|
|
3563
|
-
`dgm:cxn ${
|
|
3664
|
+
`dgm:cxn ${attribute2} references missing point: ${id}.`
|
|
3564
3665
|
);
|
|
3565
3666
|
const label = connectionLabel(connection, transitionText);
|
|
3566
3667
|
connections.push(label ? { ...connection, label } : connection);
|
|
3567
3668
|
if ((!connection.type || connection.type === "parOf") && !parentById.has(connection.destId))
|
|
3568
3669
|
parentById.set(connection.destId, connection.sourceId);
|
|
3569
3670
|
}
|
|
3570
|
-
const ext =
|
|
3671
|
+
const ext = descendants(root, "dataModelExt")[0];
|
|
3571
3672
|
const drawingRelId = stringAttribute(ext, "relId");
|
|
3572
3673
|
return {
|
|
3573
3674
|
points,
|
|
@@ -3579,55 +3680,8 @@ function parseDiagramDataModel(source, part) {
|
|
|
3579
3680
|
};
|
|
3580
3681
|
}
|
|
3581
3682
|
|
|
3582
|
-
// diagram/drawing-color.ts
|
|
3583
|
-
var COLOR_ELEMENTS = {
|
|
3584
|
-
srgbClr: "srgb",
|
|
3585
|
-
schemeClr: "scheme",
|
|
3586
|
-
sysClr: "system",
|
|
3587
|
-
prstClr: "preset",
|
|
3588
|
-
scrgbClr: "scrgb",
|
|
3589
|
-
hslClr: "hsl"
|
|
3590
|
-
};
|
|
3591
|
-
function colorValue(kind, element) {
|
|
3592
|
-
const attribute = (name) => element.getAttribute(name) ?? "";
|
|
3593
|
-
if (kind === "scrgb") return `${attribute("r")},${attribute("g")},${attribute("b")}`;
|
|
3594
|
-
if (kind === "hsl") return `${attribute("hue")},${attribute("sat")},${attribute("lum")}`;
|
|
3595
|
-
return attribute("val");
|
|
3596
|
-
}
|
|
3597
|
-
function parseDrawingColorIn(container) {
|
|
3598
|
-
if (!container) return void 0;
|
|
3599
|
-
for (const element of elements(container)) {
|
|
3600
|
-
const kind = COLOR_ELEMENTS[element.localName];
|
|
3601
|
-
if (!kind || element.namespaceURI && element.namespaceURI !== NS.a) continue;
|
|
3602
|
-
return parseDrawingColor(element);
|
|
3603
|
-
}
|
|
3604
|
-
return void 0;
|
|
3605
|
-
}
|
|
3606
|
-
function parseDrawingColor(element) {
|
|
3607
|
-
const kind = COLOR_ELEMENTS[element.localName];
|
|
3608
|
-
if (!kind) return void 0;
|
|
3609
|
-
const color = {
|
|
3610
|
-
kind,
|
|
3611
|
-
value: colorValue(kind, element),
|
|
3612
|
-
transforms: elements(element).map((child3) => ({
|
|
3613
|
-
name: child3.localName,
|
|
3614
|
-
value: child3.getAttribute("val") ?? ""
|
|
3615
|
-
}))
|
|
3616
|
-
};
|
|
3617
|
-
const fallback = kind === "system" ? element.getAttribute("lastClr") : null;
|
|
3618
|
-
if (fallback) color.fallback = fallback;
|
|
3619
|
-
return color;
|
|
3620
|
-
}
|
|
3621
|
-
function parseDrawingColorList(container) {
|
|
3622
|
-
if (!container) return [];
|
|
3623
|
-
return elements(container).flatMap((element) => {
|
|
3624
|
-
const color = parseDrawingColor(element);
|
|
3625
|
-
return color ? [color] : [];
|
|
3626
|
-
});
|
|
3627
|
-
}
|
|
3628
|
-
|
|
3629
3683
|
// diagram/definitions.ts
|
|
3630
|
-
var
|
|
3684
|
+
var rootOf2 = (source) => (typeof source === "string" ? parseXml(source, { label: "DiagramML" }) : source).documentElement;
|
|
3631
3685
|
function parseDefinitionHeader(root) {
|
|
3632
3686
|
const header = {
|
|
3633
3687
|
uniqueId: stringAttribute(root, "uniqueId") ?? "",
|
|
@@ -3648,7 +3702,7 @@ function colorList(container) {
|
|
|
3648
3702
|
return { ...method ? { method } : {}, colors: parseDrawingColorList(container) };
|
|
3649
3703
|
}
|
|
3650
3704
|
function parseDiagramColors(source) {
|
|
3651
|
-
const root =
|
|
3705
|
+
const root = rootOf2(source);
|
|
3652
3706
|
const labels = children(root, "styleLbl", NS.dgm).map((label) => ({
|
|
3653
3707
|
name: stringAttribute(label, "name") ?? "",
|
|
3654
3708
|
fill: colorList(first(label, "fillClrLst", NS.dgm)),
|
|
@@ -3688,7 +3742,7 @@ function parseStyleReferences(style) {
|
|
|
3688
3742
|
}
|
|
3689
3743
|
var hasContent = (element) => Boolean(element && (element.attributes.length > 0 || elements(element).length > 0));
|
|
3690
3744
|
function parseDiagramQuickStyle(source) {
|
|
3691
|
-
const root =
|
|
3745
|
+
const root = rootOf2(source);
|
|
3692
3746
|
const labels = children(root, "styleLbl", NS.dgm).map((label) => ({
|
|
3693
3747
|
name: stringAttribute(label, "name") ?? "",
|
|
3694
3748
|
...parseStyleReferences(first(label, "style", NS.dgm)),
|
|
@@ -3702,7 +3756,7 @@ function parseDiagramQuickStyle(source) {
|
|
|
3702
3756
|
};
|
|
3703
3757
|
}
|
|
3704
3758
|
function parseDiagramLayoutSummary(source) {
|
|
3705
|
-
const root =
|
|
3759
|
+
const root = rootOf2(source);
|
|
3706
3760
|
const header = parseDefinitionHeader(root);
|
|
3707
3761
|
const family = resolveDiagramLayoutCategory(
|
|
3708
3762
|
header.uniqueId,
|
|
@@ -3714,11 +3768,11 @@ function parseDiagramLayoutSummary(source) {
|
|
|
3714
3768
|
...header,
|
|
3715
3769
|
...family ? { family } : {},
|
|
3716
3770
|
...rootAlgorithm ? { rootAlgorithm } : {},
|
|
3717
|
-
layoutNodeCount:
|
|
3771
|
+
layoutNodeCount: descendants(root, "layoutNode").length
|
|
3718
3772
|
};
|
|
3719
3773
|
}
|
|
3720
3774
|
|
|
3721
|
-
//
|
|
3775
|
+
// drawingml/drawing-fill.ts
|
|
3722
3776
|
var FILL_ELEMENTS = /* @__PURE__ */ new Set([
|
|
3723
3777
|
"noFill",
|
|
3724
3778
|
"solidFill",
|
|
@@ -3750,7 +3804,7 @@ function parseDrawingFill(properties) {
|
|
|
3750
3804
|
});
|
|
3751
3805
|
const angle = Number.parseInt(first(fill, "lin", NS.a)?.getAttribute("ang") ?? "", 10);
|
|
3752
3806
|
const scaled = first(fill, "lin", NS.a)?.getAttribute("scaled");
|
|
3753
|
-
const
|
|
3807
|
+
const path2 = first(fill, "path", NS.a)?.getAttribute("path");
|
|
3754
3808
|
const focus = first(first(fill, "path", NS.a), "fillToRect", NS.a);
|
|
3755
3809
|
const tile = first(fill, "tileRect", NS.a);
|
|
3756
3810
|
const tileRect = tile ? {
|
|
@@ -3772,7 +3826,7 @@ function parseDrawingFill(properties) {
|
|
|
3772
3826
|
...Number.isFinite(angle) ? { angle: angle / 6e4 } : {},
|
|
3773
3827
|
...scaled === "1" || scaled === "true" ? { scaled: true } : {},
|
|
3774
3828
|
...scaled === "0" || scaled === "false" ? { scaled: false } : {},
|
|
3775
|
-
...
|
|
3829
|
+
...path2 ? { path: path2 } : {},
|
|
3776
3830
|
...fillToRect && Object.values(fillToRect).every(Number.isFinite) ? { fillToRect } : {},
|
|
3777
3831
|
...tileRect && Object.values(tileRect).every(Number.isFinite) ? { tileRect } : {}
|
|
3778
3832
|
};
|
|
@@ -3810,7 +3864,7 @@ function parseDrawingLine(ln) {
|
|
|
3810
3864
|
return line;
|
|
3811
3865
|
}
|
|
3812
3866
|
|
|
3813
|
-
//
|
|
3867
|
+
// drawingml/drawing-text.ts
|
|
3814
3868
|
function parseSpacing(parent) {
|
|
3815
3869
|
for (const [name, unit, divisor] of [
|
|
3816
3870
|
["spcPts", "points", 100],
|
|
@@ -3876,20 +3930,20 @@ function parseDrawingTextBody(body) {
|
|
|
3876
3930
|
const anchor = properties?.getAttribute("anchor");
|
|
3877
3931
|
if (anchor) result.anchor = anchor;
|
|
3878
3932
|
const insets = {};
|
|
3879
|
-
for (const [key,
|
|
3933
|
+
for (const [key, attribute2] of [
|
|
3880
3934
|
["left", "lIns"],
|
|
3881
3935
|
["top", "tIns"],
|
|
3882
3936
|
["right", "rIns"],
|
|
3883
3937
|
["bottom", "bIns"]
|
|
3884
3938
|
]) {
|
|
3885
|
-
const value = Number.parseInt(properties?.getAttribute(
|
|
3939
|
+
const value = Number.parseInt(properties?.getAttribute(attribute2) ?? "", 10);
|
|
3886
3940
|
if (Number.isFinite(value)) insets[key] = value;
|
|
3887
3941
|
}
|
|
3888
3942
|
if (Object.keys(insets).length > 0) result.insetsEmu = insets;
|
|
3889
3943
|
return result;
|
|
3890
3944
|
}
|
|
3891
3945
|
|
|
3892
|
-
//
|
|
3946
|
+
// drawingml/drawing-geometry.ts
|
|
3893
3947
|
var int = (element, name) => Number.parseInt(element?.getAttribute(name) ?? "", 10);
|
|
3894
3948
|
function parseFrame(container) {
|
|
3895
3949
|
const off = first(container, "off", NS.a);
|
|
@@ -3913,18 +3967,18 @@ function parseTransform(xfrm) {
|
|
|
3913
3967
|
...booleanAttribute(xfrm, "flipV") ? { flipVertical: true } : {}
|
|
3914
3968
|
};
|
|
3915
3969
|
}
|
|
3916
|
-
function parsePathCommands(
|
|
3970
|
+
function parsePathCommands(path2) {
|
|
3917
3971
|
const commands = [];
|
|
3918
3972
|
const point = (element) => {
|
|
3919
3973
|
const x = int(element, "x");
|
|
3920
3974
|
const y = int(element, "y");
|
|
3921
3975
|
return Number.isFinite(x) && Number.isFinite(y) ? { x, y } : void 0;
|
|
3922
3976
|
};
|
|
3923
|
-
for (const element of Array.from(
|
|
3977
|
+
for (const element of Array.from(path2.childNodes)) {
|
|
3924
3978
|
if (element.nodeType !== 1) continue;
|
|
3925
3979
|
const node = element;
|
|
3926
3980
|
const points = children(node, "pt", NS.a).map(point);
|
|
3927
|
-
if (points.some((
|
|
3981
|
+
if (points.some((entry2) => entry2 === void 0)) return void 0;
|
|
3928
3982
|
const [p0, p1, p2] = points;
|
|
3929
3983
|
switch (node.localName) {
|
|
3930
3984
|
case "moveTo":
|
|
@@ -3967,17 +4021,17 @@ function parseDrawingGeometry(spPr) {
|
|
|
3967
4021
|
const custom = first(spPr, "custGeom", NS.a);
|
|
3968
4022
|
if (custom) {
|
|
3969
4023
|
const paths = [];
|
|
3970
|
-
for (const
|
|
3971
|
-
const commands = parsePathCommands(
|
|
4024
|
+
for (const path2 of children(first(custom, "pathLst", NS.a) ?? custom, "path", NS.a)) {
|
|
4025
|
+
const commands = parsePathCommands(path2);
|
|
3972
4026
|
if (!commands) return { geometry: "custom", issue: "CUSTOM_GEOMETRY_GUIDES_UNSUPPORTED" };
|
|
3973
|
-
const width = int(
|
|
3974
|
-
const height = int(
|
|
4027
|
+
const width = int(path2, "w");
|
|
4028
|
+
const height = int(path2, "h");
|
|
3975
4029
|
paths.push({
|
|
3976
4030
|
commands,
|
|
3977
4031
|
...Number.isFinite(width) ? { width } : {},
|
|
3978
4032
|
...Number.isFinite(height) ? { height } : {},
|
|
3979
|
-
...
|
|
3980
|
-
...
|
|
4033
|
+
...path2.getAttribute("fill") ? { fill: path2.getAttribute("fill") } : {},
|
|
4034
|
+
...path2.getAttribute("stroke") === "0" || path2.getAttribute("stroke") === "false" ? { stroke: false } : {}
|
|
3981
4035
|
});
|
|
3982
4036
|
}
|
|
3983
4037
|
return { geometry: "custom", paths };
|
|
@@ -4319,60 +4373,1233 @@ async function resolveDiagramParts(diagram, readText) {
|
|
|
4319
4373
|
diagram.notice = diagramNotice(diagram.rendering);
|
|
4320
4374
|
}
|
|
4321
4375
|
|
|
4322
|
-
//
|
|
4323
|
-
var
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
if (isElement(child3) && child3.namespaceURI === ns && child3.localName === local) return child3;
|
|
4333
|
-
return void 0;
|
|
4376
|
+
// chart/color-style.ts
|
|
4377
|
+
var CHART_COLOR_STYLE_NS = "http://schemas.microsoft.com/office/drawing/2012/chartStyle";
|
|
4378
|
+
function chartColorStyleId(xml) {
|
|
4379
|
+
const root = parseXml(xml).documentElement;
|
|
4380
|
+
if (root.localName !== "colorStyle" || root.namespaceURI !== CHART_COLOR_STYLE_NS)
|
|
4381
|
+
return void 0;
|
|
4382
|
+
const value = root.getAttribute("id");
|
|
4383
|
+
if (!value || !/^\d+$/.test(value)) return void 0;
|
|
4384
|
+
const id = Number(value);
|
|
4385
|
+
return Number.isInteger(id) && id >= 0 ? id : void 0;
|
|
4334
4386
|
}
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
for (const
|
|
4341
|
-
|
|
4342
|
-
if (
|
|
4343
|
-
|
|
4387
|
+
|
|
4388
|
+
// chart/built-in-text-style.ts
|
|
4389
|
+
var C14 = NS.c14;
|
|
4390
|
+
function readBuiltInChartStyle(root) {
|
|
4391
|
+
for (const content of children(root, "AlternateContent", NS.mc)) {
|
|
4392
|
+
for (const choice of children(content, "Choice", NS.mc)) {
|
|
4393
|
+
const requires = choice.getAttribute("Requires")?.trim().split(/\s+/);
|
|
4394
|
+
if (!requires?.length || !requires.every((prefix) => choice.lookupNamespaceURI(prefix) === C14))
|
|
4395
|
+
continue;
|
|
4396
|
+
const modern = first(choice, "style", C14)?.getAttribute("val");
|
|
4397
|
+
if (modern && /^\d+$/.test(modern) && Number(modern) >= 101 && Number(modern) <= 148)
|
|
4398
|
+
return Number(modern);
|
|
4344
4399
|
}
|
|
4345
4400
|
}
|
|
4346
|
-
|
|
4401
|
+
const legacy = first(root, "style", NS.c) ?? first(first(first(root, "AlternateContent", NS.mc), "Fallback", NS.mc), "style", NS.c);
|
|
4402
|
+
const value = legacy?.getAttribute("val");
|
|
4403
|
+
if (!legacy) return 2;
|
|
4404
|
+
return value && /^\d+$/.test(value) && Number.isSafeInteger(Number(value)) ? Number(value) : void 0;
|
|
4347
4405
|
}
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4406
|
+
|
|
4407
|
+
// chart/read-appearance.ts
|
|
4408
|
+
function readChartAppearance(text, properties) {
|
|
4409
|
+
const out = {};
|
|
4410
|
+
const size = Number(text?.getAttribute("sz") ?? NaN);
|
|
4411
|
+
if (Number.isFinite(size) && size > 0) out.fontSize = size / 100;
|
|
4412
|
+
for (const [attribute2, key] of [
|
|
4413
|
+
["b", "bold"],
|
|
4414
|
+
["i", "italic"]
|
|
4415
|
+
]) {
|
|
4416
|
+
const value = text?.getAttribute(attribute2);
|
|
4417
|
+
if (value !== null && value !== void 0) out[key] = value === "1" || value === "true";
|
|
4418
|
+
}
|
|
4419
|
+
const typeface = first(text, "latin", NS.a)?.getAttribute("typeface");
|
|
4420
|
+
const underline = text?.getAttribute("u");
|
|
4421
|
+
if (underline) out.underline = underline !== "none";
|
|
4422
|
+
if (typeface) out.typeface = typeface;
|
|
4423
|
+
const color = parseDrawingColorIn(first(text, "solidFill", NS.a));
|
|
4424
|
+
if (color) out.textColor = color;
|
|
4425
|
+
const fill = parseDrawingFill(properties);
|
|
4426
|
+
const line = parseDrawingLine(first(properties, "ln", NS.a));
|
|
4427
|
+
if (fill) out.fill = fill;
|
|
4428
|
+
if (line) out.line = line;
|
|
4429
|
+
const effects = first(text, "effectLst", NS.a);
|
|
4430
|
+
if (effects) out.textEffectsXml = buildXml(effects);
|
|
4431
|
+
return out;
|
|
4351
4432
|
}
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4433
|
+
|
|
4434
|
+
// chart/formatting-nodes.ts
|
|
4435
|
+
function chartFormattingNodes(root) {
|
|
4436
|
+
const chart = first(root, "chart", NS.c);
|
|
4437
|
+
const plot = first(chart, "plotArea", NS.c);
|
|
4438
|
+
const category = first(plot, "catAx", NS.c) ?? first(plot, "dateAx", NS.c);
|
|
4439
|
+
const values = plot ? children(plot, "valAx", NS.c) : [];
|
|
4440
|
+
return {
|
|
4441
|
+
chartArea: root,
|
|
4442
|
+
plotArea: plot,
|
|
4443
|
+
title: first(chart, "title", NS.c),
|
|
4444
|
+
legend: first(chart, "legend", NS.c),
|
|
4445
|
+
categoryAxis: category ?? values[0],
|
|
4446
|
+
valueAxis: category ? values[0] : values[1],
|
|
4447
|
+
gridlineMajor: first(values[0], "majorGridlines", NS.c),
|
|
4448
|
+
gridlineMinor: first(values[0], "minorGridlines", NS.c)
|
|
4365
4449
|
};
|
|
4366
|
-
return extension && known[extension] || "application/octet-stream";
|
|
4367
4450
|
}
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
const
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4451
|
+
|
|
4452
|
+
// chart/manual-layout.ts
|
|
4453
|
+
function readChartManualLayoutValues(value) {
|
|
4454
|
+
const result = {};
|
|
4455
|
+
const enumeration = (name, values) => {
|
|
4456
|
+
const raw = value(name);
|
|
4457
|
+
return values.includes(raw) ? raw : void 0;
|
|
4458
|
+
};
|
|
4459
|
+
const target = enumeration("layoutTarget", ["inner", "outer"]);
|
|
4460
|
+
if (target) result.layoutTarget = target;
|
|
4461
|
+
for (const [xml, key] of [
|
|
4462
|
+
["xMode", "xMode"],
|
|
4463
|
+
["yMode", "yMode"],
|
|
4464
|
+
["wMode", "widthMode"],
|
|
4465
|
+
["hMode", "heightMode"]
|
|
4466
|
+
]) {
|
|
4467
|
+
const mode = enumeration(xml, ["edge", "factor"]);
|
|
4468
|
+
if (mode) result[key] = mode;
|
|
4469
|
+
}
|
|
4470
|
+
for (const [xml, key] of [
|
|
4471
|
+
["x", "x"],
|
|
4472
|
+
["y", "y"],
|
|
4473
|
+
["w", "width"],
|
|
4474
|
+
["h", "height"]
|
|
4475
|
+
]) {
|
|
4476
|
+
const raw = value(xml);
|
|
4477
|
+
if (typeof raw !== "string" && typeof raw !== "number" || typeof raw === "string" && !raw.trim())
|
|
4478
|
+
continue;
|
|
4479
|
+
const number = Number(raw);
|
|
4480
|
+
if (Number.isFinite(number)) result[key] = number;
|
|
4481
|
+
}
|
|
4482
|
+
return Object.keys(result).length ? result : void 0;
|
|
4483
|
+
}
|
|
4484
|
+
|
|
4485
|
+
// chart/read-formatting.ts
|
|
4486
|
+
var c = (parent, name) => first(parent, name, NS.c);
|
|
4487
|
+
var a = (parent, name) => first(parent, name, NS.a);
|
|
4488
|
+
function entry(node) {
|
|
4489
|
+
const body = c(node, "txPr");
|
|
4490
|
+
const paragraph = a(body, "p");
|
|
4491
|
+
const defaults = a(a(paragraph, "pPr"), "defRPr");
|
|
4492
|
+
const rich = c(c(node, "tx"), "rich");
|
|
4493
|
+
const richParagraph = a(rich, "p");
|
|
4494
|
+
const textBody = parseDrawingTextBody(rich);
|
|
4495
|
+
const manual = c(c(node, "layout"), "manualLayout");
|
|
4496
|
+
const layout2 = manual ? readChartManualLayoutValues((name) => c(manual, name)?.getAttribute("val")) : void 0;
|
|
4497
|
+
const overlay = c(node, "overlay")?.getAttribute("val");
|
|
4498
|
+
const out = {
|
|
4499
|
+
sourceXml: buildXml(node),
|
|
4500
|
+
...layout2 ? { layout: layout2 } : {},
|
|
4501
|
+
...overlay === "0" || overlay === "false" ? { overlay: false } : overlay === "1" || overlay === "true" ? { overlay: true } : {},
|
|
4502
|
+
...readChartAppearance(defaults, c(node, "spPr")),
|
|
4503
|
+
...readChartAppearance(a(a(richParagraph, "pPr"), "defRPr"), void 0),
|
|
4504
|
+
...readChartAppearance(a(a(richParagraph, "r"), "rPr"), void 0),
|
|
4505
|
+
...textBody ? { textBody, textBodyStyle: readChartAppearance(defaults, void 0) } : {}
|
|
4506
|
+
};
|
|
4507
|
+
if (["catAx", "dateAx", "valAx"].includes(node.localName)) {
|
|
4508
|
+
const deleted = c(node, "delete")?.getAttribute("val");
|
|
4509
|
+
if (deleted !== void 0) out.axisVisible = deleted !== "1" && deleted !== "true";
|
|
4510
|
+
out.labelsVisible = out.axisVisible !== false && c(node, "tickLblPos")?.getAttribute("val") !== "none";
|
|
4511
|
+
}
|
|
4512
|
+
return out;
|
|
4513
|
+
}
|
|
4514
|
+
function readChartFormatting(root) {
|
|
4515
|
+
const nodes = chartFormattingNodes(root);
|
|
4516
|
+
const entries = Object.fromEntries(
|
|
4517
|
+
Object.entries(nodes).flatMap(([name, node]) => node ? [[name, entry(node)]] : [])
|
|
4518
|
+
);
|
|
4519
|
+
const builtInStyle = readBuiltInChartStyle(root);
|
|
4520
|
+
const textBody = c(root, "txPr");
|
|
4521
|
+
const textDefaults = textBody ? {
|
|
4522
|
+
sourceXml: buildXml(textBody),
|
|
4523
|
+
...readChartAppearance(a(a(a(textBody, "p"), "pPr"), "defRPr"), void 0)
|
|
4524
|
+
} : void 0;
|
|
4525
|
+
return Object.keys(entries).length ? {
|
|
4526
|
+
entries,
|
|
4527
|
+
sourceXml: buildXml(root),
|
|
4528
|
+
...builtInStyle === void 0 ? {} : { builtInStyle },
|
|
4529
|
+
...textDefaults ? { textDefaults } : {}
|
|
4530
|
+
} : void 0;
|
|
4531
|
+
}
|
|
4532
|
+
|
|
4533
|
+
// chart/data-cache.ts
|
|
4534
|
+
function chartCacheValues(cache) {
|
|
4535
|
+
if (!cache) return [];
|
|
4536
|
+
const numeric = cache.type === "number";
|
|
4537
|
+
const out = [];
|
|
4538
|
+
for (const point of cache.points) {
|
|
4539
|
+
const text = point.value;
|
|
4540
|
+
out[point.index ?? out.length] = numeric && text.trim() !== "" && Number.isFinite(Number(text)) ? Number(text) : text;
|
|
4541
|
+
}
|
|
4542
|
+
const size = Math.max(cache.pointCount ?? 0, out.length);
|
|
4543
|
+
for (let index = 0; index < size; index++) if (out[index] === void 0) out[index] = "";
|
|
4544
|
+
return out;
|
|
4545
|
+
}
|
|
4546
|
+
|
|
4547
|
+
// chart/xml-fragment.ts
|
|
4548
|
+
var CHART_ROOT_BINDINGS = /* @__PURE__ */ new Map([
|
|
4549
|
+
["c", NS.c],
|
|
4550
|
+
["a", NS.a],
|
|
4551
|
+
["r", NS.r]
|
|
4552
|
+
]);
|
|
4553
|
+
var DECLARATION = / xmlns:([A-Za-z_][\w.-]*)="([^"]*)"/g;
|
|
4554
|
+
function stripDeclarations(xml, bindings) {
|
|
4555
|
+
const conflicting = /* @__PURE__ */ new Set();
|
|
4556
|
+
for (const [, prefix, uri] of xml.matchAll(DECLARATION))
|
|
4557
|
+
if (prefix !== void 0 && bindings.has(prefix) && bindings.get(prefix) !== uri)
|
|
4558
|
+
conflicting.add(prefix);
|
|
4559
|
+
return xml.replace(
|
|
4560
|
+
DECLARATION,
|
|
4561
|
+
(match, prefix, uri) => bindings.get(prefix) === uri && !conflicting.has(prefix) ? "" : match
|
|
4562
|
+
);
|
|
4563
|
+
}
|
|
4564
|
+
var innerXml = (element) => stripDeclarations(elements(element).map(buildXml).join(""), CHART_ROOT_BINDINGS);
|
|
4565
|
+
|
|
4566
|
+
// chart/parse-util.ts
|
|
4567
|
+
var cChild = (parent, local) => first(parent, local, NS.c);
|
|
4568
|
+
var attribute = (element, name) => element?.hasAttribute(name) ? element.getAttribute(name) ?? void 0 : void 0;
|
|
4569
|
+
var cVal = (parent, local) => attribute(cChild(parent, local), "val");
|
|
4570
|
+
var path = (element) => `c:${element.parentNode?.localName ?? ""}/c:${element.localName}`;
|
|
4571
|
+
function malformed(context, element, value) {
|
|
4572
|
+
context.issues.push({
|
|
4573
|
+
code: "CHART_VALUE_INVALID",
|
|
4574
|
+
message: `${path(element)} has an unreadable value "${value}".`
|
|
4575
|
+
});
|
|
4576
|
+
}
|
|
4577
|
+
function cBool(context, parent, local) {
|
|
4578
|
+
const element = cChild(parent, local);
|
|
4579
|
+
if (!element) return void 0;
|
|
4580
|
+
const raw = attribute(element, "val");
|
|
4581
|
+
if (raw === void 0) return true;
|
|
4582
|
+
const value = raw.trim().toLowerCase();
|
|
4583
|
+
if (value === "1" || value === "true") return true;
|
|
4584
|
+
if (value === "0" || value === "false") return false;
|
|
4585
|
+
malformed(context, element, raw);
|
|
4586
|
+
return void 0;
|
|
4587
|
+
}
|
|
4588
|
+
function cNumber(context, parent, local) {
|
|
4589
|
+
const element = cChild(parent, local);
|
|
4590
|
+
const raw = attribute(element, "val");
|
|
4591
|
+
if (!element || raw === void 0) return void 0;
|
|
4592
|
+
const value = raw.trim() ? Number(raw) : Number.NaN;
|
|
4593
|
+
if (Number.isFinite(value)) return value;
|
|
4594
|
+
malformed(context, element, raw);
|
|
4595
|
+
return void 0;
|
|
4596
|
+
}
|
|
4597
|
+
function reportUnmodelled(context, element, handled) {
|
|
4598
|
+
for (const child3 of elements(element)) {
|
|
4599
|
+
if (handled.has(child3.localName)) continue;
|
|
4600
|
+
context.issues.push({
|
|
4601
|
+
code: "CHART_ELEMENT_NOT_MODELLED",
|
|
4602
|
+
message: `${path(child3)} is not modelled; it is kept only in the source part.`
|
|
4603
|
+
});
|
|
4604
|
+
}
|
|
4605
|
+
}
|
|
4606
|
+
function extensionList(parent) {
|
|
4607
|
+
const extLst = cChild(parent, "extLst");
|
|
4608
|
+
return extLst ? buildXml(extLst) : void 0;
|
|
4609
|
+
}
|
|
4610
|
+
function readShapeFields(spPr) {
|
|
4611
|
+
const out = {};
|
|
4612
|
+
const fill = parseDrawingFill(spPr);
|
|
4613
|
+
if (fill) out.fill = fill;
|
|
4614
|
+
const line = parseDrawingLine(first(spPr, "ln", NS.a));
|
|
4615
|
+
if (line) out.line = line;
|
|
4616
|
+
const effects = first(spPr, "effectLst", NS.a);
|
|
4617
|
+
if (effects) out.effectsXml = buildXml(effects);
|
|
4618
|
+
return out;
|
|
4619
|
+
}
|
|
4620
|
+
function shapeProperties(parent) {
|
|
4621
|
+
const spPr = cChild(parent, "spPr");
|
|
4622
|
+
if (!spPr) return void 0;
|
|
4623
|
+
const out = readShapeFields(spPr);
|
|
4624
|
+
const source = innerXml(spPr);
|
|
4625
|
+
if (source) out.sourceXml = source;
|
|
4626
|
+
return out;
|
|
4627
|
+
}
|
|
4628
|
+
function chartTextBody(element) {
|
|
4629
|
+
const body = parseDrawingTextBody(element);
|
|
4630
|
+
if (!body || !element) return body;
|
|
4631
|
+
const source = innerXml(element);
|
|
4632
|
+
if (source) body.sourceXml = source;
|
|
4633
|
+
return body;
|
|
4634
|
+
}
|
|
4635
|
+
var textProperties = (parent) => chartTextBody(cChild(parent, "txPr"));
|
|
4636
|
+
function chartLines(parent, local) {
|
|
4637
|
+
const element = cChild(parent, local);
|
|
4638
|
+
if (!element) return void 0;
|
|
4639
|
+
const spPr = shapeProperties(element);
|
|
4640
|
+
return spPr ? { spPr } : {};
|
|
4641
|
+
}
|
|
4642
|
+
function numberFormat(parent) {
|
|
4643
|
+
const element = cChild(parent, "numFmt");
|
|
4644
|
+
const formatCode = attribute(element, "formatCode");
|
|
4645
|
+
if (formatCode === void 0) return void 0;
|
|
4646
|
+
const linked = attribute(element, "sourceLinked");
|
|
4647
|
+
return {
|
|
4648
|
+
formatCode,
|
|
4649
|
+
...linked === "1" || linked === "true" ? { sourceLinked: true } : {},
|
|
4650
|
+
...linked === "0" || linked === "false" ? { sourceLinked: false } : {}
|
|
4651
|
+
};
|
|
4652
|
+
}
|
|
4653
|
+
function readLayoutFields(layout2) {
|
|
4654
|
+
const manual = cChild(layout2, "manualLayout");
|
|
4655
|
+
return (manual && readChartManualLayoutValues((name) => cVal(manual, name))) ?? {};
|
|
4656
|
+
}
|
|
4657
|
+
function manualLayout(parent) {
|
|
4658
|
+
const layout2 = cChild(parent, "layout");
|
|
4659
|
+
if (!layout2) return void 0;
|
|
4660
|
+
const out = readLayoutFields(layout2);
|
|
4661
|
+
const source = innerXml(layout2);
|
|
4662
|
+
if (source) out.sourceXml = source;
|
|
4663
|
+
return out;
|
|
4664
|
+
}
|
|
4665
|
+
function assignDefined(target, values) {
|
|
4666
|
+
for (const [key, value] of Object.entries(values))
|
|
4667
|
+
if (value !== void 0) target[key] = value;
|
|
4668
|
+
return target;
|
|
4669
|
+
}
|
|
4670
|
+
|
|
4671
|
+
// chart/parse-text.ts
|
|
4672
|
+
function parseCache(node) {
|
|
4673
|
+
const cache = {
|
|
4674
|
+
type: node.localName === "numCache" || node.localName === "numLit" ? "number" : "string",
|
|
4675
|
+
points: children(node, "pt", NS.c).map((pt) => {
|
|
4676
|
+
const point = { value: cChild(pt, "v")?.textContent ?? "" };
|
|
4677
|
+
const index = Number(attribute(pt, "idx") ?? Number.NaN);
|
|
4678
|
+
if (Number.isInteger(index) && index >= 0) point.index = index;
|
|
4679
|
+
const formatCode2 = attribute(pt, "formatCode");
|
|
4680
|
+
if (formatCode2 !== void 0) point.formatCode = formatCode2;
|
|
4681
|
+
return point;
|
|
4682
|
+
})
|
|
4683
|
+
};
|
|
4684
|
+
const count = Number(cVal(node, "ptCount") ?? Number.NaN);
|
|
4685
|
+
if (Number.isInteger(count) && count >= 0) cache.pointCount = count;
|
|
4686
|
+
const formatCode = cChild(node, "formatCode")?.textContent;
|
|
4687
|
+
if (formatCode) cache.formatCode = formatCode;
|
|
4688
|
+
return cache;
|
|
4689
|
+
}
|
|
4690
|
+
function parseDataSource(element) {
|
|
4691
|
+
if (!element) return void 0;
|
|
4692
|
+
const source = {};
|
|
4693
|
+
const ref = cChild(element, "numRef") ?? cChild(element, "strRef") ?? cChild(element, "multiLvlStrRef");
|
|
4694
|
+
if (ref) {
|
|
4695
|
+
source.kind = ref.localName;
|
|
4696
|
+
const formula = cChild(ref, "f")?.textContent;
|
|
4697
|
+
if (formula) source.formula = formula;
|
|
4698
|
+
const cache = cChild(ref, "numCache") ?? cChild(ref, "strCache");
|
|
4699
|
+
if (cache) source.cache = parseCache(cache);
|
|
4700
|
+
const levels = cChild(ref, "multiLvlStrCache");
|
|
4701
|
+
if (levels) {
|
|
4702
|
+
source.levels = children(levels, "lvl", NS.c).map(parseCache);
|
|
4703
|
+
const count = Number(cVal(levels, "ptCount") ?? Number.NaN);
|
|
4704
|
+
if (Number.isInteger(count) && count >= 0) source.levelPointCount = count;
|
|
4705
|
+
}
|
|
4706
|
+
return source;
|
|
4707
|
+
}
|
|
4708
|
+
const literal = cChild(element, "numLit") ?? cChild(element, "strLit");
|
|
4709
|
+
if (literal) {
|
|
4710
|
+
source.kind = literal.localName;
|
|
4711
|
+
source.cache = parseCache(literal);
|
|
4712
|
+
}
|
|
4713
|
+
return source;
|
|
4714
|
+
}
|
|
4715
|
+
function parseChartText(context, tx, allowValue) {
|
|
4716
|
+
if (!tx) return void 0;
|
|
4717
|
+
const text = {};
|
|
4718
|
+
const rich = chartTextBody(cChild(tx, "rich"));
|
|
4719
|
+
if (rich) text.rich = rich;
|
|
4720
|
+
if (cChild(tx, "strRef")) {
|
|
4721
|
+
const reference = parseDataSource(tx);
|
|
4722
|
+
if (reference) text.reference = reference;
|
|
4723
|
+
}
|
|
4724
|
+
const value = allowValue ? cChild(tx, "v")?.textContent : void 0;
|
|
4725
|
+
if (value !== void 0 && value !== null) text.value = value;
|
|
4726
|
+
const cached2 = chartCacheValues(text.reference?.cache)[0];
|
|
4727
|
+
const flat = text.value ?? (rich ? rich.text : cached2 === void 0 ? void 0 : String(cached2));
|
|
4728
|
+
if (flat !== void 0) text.text = flat;
|
|
4729
|
+
reportUnmodelled(context, tx, new Set(allowValue ? ["strRef", "v"] : ["rich", "strRef"]));
|
|
4730
|
+
return text;
|
|
4731
|
+
}
|
|
4732
|
+
var TITLE = /* @__PURE__ */ new Set(["tx", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
4733
|
+
function parseTitle(context, element) {
|
|
4734
|
+
const tx = parseChartText(context, cChild(element, "tx"), false);
|
|
4735
|
+
reportUnmodelled(context, element, TITLE);
|
|
4736
|
+
return assignDefined(
|
|
4737
|
+
{},
|
|
4738
|
+
{
|
|
4739
|
+
tx,
|
|
4740
|
+
text: tx?.text,
|
|
4741
|
+
overlay: cBool(context, element, "overlay"),
|
|
4742
|
+
layout: manualLayout(element),
|
|
4743
|
+
spPr: shapeProperties(element),
|
|
4744
|
+
txPr: textProperties(element),
|
|
4745
|
+
extLst: extensionList(element)
|
|
4746
|
+
}
|
|
4747
|
+
);
|
|
4748
|
+
}
|
|
4749
|
+
var LABEL_OPTIONS = [
|
|
4750
|
+
"delete",
|
|
4751
|
+
"showLegendKey",
|
|
4752
|
+
"showVal",
|
|
4753
|
+
"showCatName",
|
|
4754
|
+
"showSerName",
|
|
4755
|
+
"showPercent",
|
|
4756
|
+
"showBubbleSize",
|
|
4757
|
+
"separator",
|
|
4758
|
+
"dLblPos",
|
|
4759
|
+
"numFmt",
|
|
4760
|
+
"spPr",
|
|
4761
|
+
"txPr",
|
|
4762
|
+
"extLst"
|
|
4763
|
+
];
|
|
4764
|
+
function labelOptions(context, element) {
|
|
4765
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
4766
|
+
return assignDefined(
|
|
4767
|
+
{},
|
|
4768
|
+
{
|
|
4769
|
+
deleted: flag2("delete"),
|
|
4770
|
+
showLegendKey: flag2("showLegendKey"),
|
|
4771
|
+
showValue: flag2("showVal"),
|
|
4772
|
+
showCategoryName: flag2("showCatName"),
|
|
4773
|
+
showSeriesName: flag2("showSerName"),
|
|
4774
|
+
showPercent: flag2("showPercent"),
|
|
4775
|
+
showBubbleSize: flag2("showBubbleSize"),
|
|
4776
|
+
separator: cChild(element, "separator")?.textContent ?? void 0,
|
|
4777
|
+
position: cVal(element, "dLblPos"),
|
|
4778
|
+
numberFormat: numberFormat(element),
|
|
4779
|
+
spPr: shapeProperties(element),
|
|
4780
|
+
txPr: textProperties(element),
|
|
4781
|
+
extLst: extensionList(element)
|
|
4782
|
+
}
|
|
4783
|
+
);
|
|
4784
|
+
}
|
|
4785
|
+
var LABEL = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "idx", "layout", "tx"]);
|
|
4786
|
+
var LABELS = /* @__PURE__ */ new Set([...LABEL_OPTIONS, "dLbl", "showLeaderLines", "leaderLines"]);
|
|
4787
|
+
function parseDataLabels(context, element) {
|
|
4788
|
+
if (!element) return void 0;
|
|
4789
|
+
const labels = children(element, "dLbl", NS.c).map((node) => {
|
|
4790
|
+
reportUnmodelled(context, node, LABEL);
|
|
4791
|
+
return assignDefined(labelOptions(context, node), {
|
|
4792
|
+
index: cNumber(context, node, "idx"),
|
|
4793
|
+
tx: parseChartText(context, cChild(node, "tx"), false),
|
|
4794
|
+
layout: manualLayout(node)
|
|
4795
|
+
});
|
|
4796
|
+
});
|
|
4797
|
+
reportUnmodelled(context, element, LABELS);
|
|
4798
|
+
return assignDefined(
|
|
4799
|
+
{ ...labelOptions(context, element), labels },
|
|
4800
|
+
{
|
|
4801
|
+
showLeaderLines: cBool(context, element, "showLeaderLines"),
|
|
4802
|
+
leaderLines: chartLines(element, "leaderLines")
|
|
4803
|
+
}
|
|
4804
|
+
);
|
|
4805
|
+
}
|
|
4806
|
+
|
|
4807
|
+
// chart/parse-chrome.ts
|
|
4808
|
+
var SURFACE = /* @__PURE__ */ new Set(["thickness", "spPr", "pictureOptions", "extLst"]);
|
|
4809
|
+
function parseSurface(context, element) {
|
|
4810
|
+
if (!element) return void 0;
|
|
4811
|
+
reportUnmodelled(context, element, SURFACE);
|
|
4812
|
+
const pictureOptions = cChild(element, "pictureOptions");
|
|
4813
|
+
return assignDefined(
|
|
4814
|
+
{},
|
|
4815
|
+
{
|
|
4816
|
+
thickness: cNumber(context, element, "thickness"),
|
|
4817
|
+
spPr: shapeProperties(element),
|
|
4818
|
+
pictureOptionsXml: pictureOptions ? buildXml(pictureOptions) : void 0,
|
|
4819
|
+
extLst: extensionList(element)
|
|
4820
|
+
}
|
|
4821
|
+
);
|
|
4822
|
+
}
|
|
4823
|
+
var DATA_TABLE = /* @__PURE__ */ new Set([
|
|
4824
|
+
"showHorzBorder",
|
|
4825
|
+
"showVertBorder",
|
|
4826
|
+
"showOutline",
|
|
4827
|
+
"showKeys",
|
|
4828
|
+
"spPr",
|
|
4829
|
+
"txPr",
|
|
4830
|
+
"extLst"
|
|
4831
|
+
]);
|
|
4832
|
+
function parseDataTable(context, element) {
|
|
4833
|
+
if (!element) return void 0;
|
|
4834
|
+
reportUnmodelled(context, element, DATA_TABLE);
|
|
4835
|
+
return assignDefined(
|
|
4836
|
+
{},
|
|
4837
|
+
{
|
|
4838
|
+
showHorizontalBorder: cBool(context, element, "showHorzBorder"),
|
|
4839
|
+
showVerticalBorder: cBool(context, element, "showVertBorder"),
|
|
4840
|
+
showOutline: cBool(context, element, "showOutline"),
|
|
4841
|
+
showKeys: cBool(context, element, "showKeys"),
|
|
4842
|
+
spPr: shapeProperties(element),
|
|
4843
|
+
txPr: textProperties(element),
|
|
4844
|
+
extLst: extensionList(element)
|
|
4845
|
+
}
|
|
4846
|
+
);
|
|
4847
|
+
}
|
|
4848
|
+
var DISPLAY_UNITS = /* @__PURE__ */ new Set(["custUnit", "builtInUnit", "dispUnitsLbl", "extLst"]);
|
|
4849
|
+
var DISPLAY_UNITS_LABEL = /* @__PURE__ */ new Set(["layout", "tx", "spPr", "txPr"]);
|
|
4850
|
+
function parseDisplayUnits(context, element) {
|
|
4851
|
+
if (!element) return void 0;
|
|
4852
|
+
reportUnmodelled(context, element, DISPLAY_UNITS);
|
|
4853
|
+
const labelElement = cChild(element, "dispUnitsLbl");
|
|
4854
|
+
let label;
|
|
4855
|
+
if (labelElement) {
|
|
4856
|
+
reportUnmodelled(context, labelElement, DISPLAY_UNITS_LABEL);
|
|
4857
|
+
label = assignDefined(
|
|
4858
|
+
{},
|
|
4859
|
+
{
|
|
4860
|
+
layout: manualLayout(labelElement),
|
|
4861
|
+
tx: parseChartText(context, cChild(labelElement, "tx"), false),
|
|
4862
|
+
spPr: shapeProperties(labelElement),
|
|
4863
|
+
txPr: textProperties(labelElement)
|
|
4864
|
+
}
|
|
4865
|
+
);
|
|
4866
|
+
}
|
|
4867
|
+
return assignDefined(
|
|
4868
|
+
{},
|
|
4869
|
+
{
|
|
4870
|
+
builtInUnit: cVal(element, "builtInUnit"),
|
|
4871
|
+
customUnit: cNumber(context, element, "custUnit"),
|
|
4872
|
+
label,
|
|
4873
|
+
extLst: extensionList(element)
|
|
4874
|
+
}
|
|
4875
|
+
);
|
|
4876
|
+
}
|
|
4877
|
+
|
|
4878
|
+
// chart/parse-series.ts
|
|
4879
|
+
var MARKER = /* @__PURE__ */ new Set(["symbol", "size", "spPr", "extLst"]);
|
|
4880
|
+
function parseMarker(context, element) {
|
|
4881
|
+
if (!element) return void 0;
|
|
4882
|
+
reportUnmodelled(context, element, MARKER);
|
|
4883
|
+
return assignDefined(
|
|
4884
|
+
{},
|
|
4885
|
+
{
|
|
4886
|
+
symbol: cVal(element, "symbol"),
|
|
4887
|
+
size: cNumber(context, element, "size"),
|
|
4888
|
+
spPr: shapeProperties(element),
|
|
4889
|
+
extLst: extensionList(element)
|
|
4890
|
+
}
|
|
4891
|
+
);
|
|
4892
|
+
}
|
|
4893
|
+
var POINT = /* @__PURE__ */ new Set([
|
|
4894
|
+
"idx",
|
|
4895
|
+
"invertIfNegative",
|
|
4896
|
+
"marker",
|
|
4897
|
+
"bubble3D",
|
|
4898
|
+
"explosion",
|
|
4899
|
+
"spPr",
|
|
4900
|
+
"extLst"
|
|
4901
|
+
]);
|
|
4902
|
+
function parseDataPoint(context, element) {
|
|
4903
|
+
reportUnmodelled(context, element, POINT);
|
|
4904
|
+
const index = cNumber(context, element, "idx");
|
|
4905
|
+
return assignDefined(
|
|
4906
|
+
{},
|
|
4907
|
+
{
|
|
4908
|
+
index: index !== void 0 && Number.isInteger(index) && index >= 0 ? index : void 0,
|
|
4909
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
4910
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
4911
|
+
explosion: cNumber(context, element, "explosion"),
|
|
4912
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
4913
|
+
spPr: shapeProperties(element),
|
|
4914
|
+
extLst: extensionList(element)
|
|
4915
|
+
}
|
|
4916
|
+
);
|
|
4917
|
+
}
|
|
4918
|
+
var SERIES = /* @__PURE__ */ new Set([
|
|
4919
|
+
"idx",
|
|
4920
|
+
"order",
|
|
4921
|
+
"tx",
|
|
4922
|
+
"spPr",
|
|
4923
|
+
"invertIfNegative",
|
|
4924
|
+
"dPt",
|
|
4925
|
+
"dLbls",
|
|
4926
|
+
"cat",
|
|
4927
|
+
"val",
|
|
4928
|
+
"xVal",
|
|
4929
|
+
"yVal",
|
|
4930
|
+
"smooth",
|
|
4931
|
+
"marker",
|
|
4932
|
+
"explosion",
|
|
4933
|
+
"bubbleSize",
|
|
4934
|
+
"bubble3D",
|
|
4935
|
+
"shape",
|
|
4936
|
+
"extLst"
|
|
4937
|
+
]);
|
|
4938
|
+
function parseSeries(context, element) {
|
|
4939
|
+
reportUnmodelled(context, element, SERIES);
|
|
4940
|
+
return assignDefined(
|
|
4941
|
+
{ dataPoints: children(element, "dPt", NS.c).map((point) => parseDataPoint(context, point)) },
|
|
4942
|
+
{
|
|
4943
|
+
index: cNumber(context, element, "idx"),
|
|
4944
|
+
order: cNumber(context, element, "order"),
|
|
4945
|
+
tx: parseChartText(context, cChild(element, "tx"), true),
|
|
4946
|
+
spPr: shapeProperties(element),
|
|
4947
|
+
marker: parseMarker(context, cChild(element, "marker")),
|
|
4948
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
4949
|
+
categories: parseDataSource(cChild(element, "cat")),
|
|
4950
|
+
values: parseDataSource(cChild(element, "val")),
|
|
4951
|
+
xValues: parseDataSource(cChild(element, "xVal")),
|
|
4952
|
+
yValues: parseDataSource(cChild(element, "yVal")),
|
|
4953
|
+
bubbleSizes: parseDataSource(cChild(element, "bubbleSize")),
|
|
4954
|
+
smooth: cBool(context, element, "smooth"),
|
|
4955
|
+
invertIfNegative: cBool(context, element, "invertIfNegative"),
|
|
4956
|
+
explosion: cNumber(context, element, "explosion"),
|
|
4957
|
+
bubble3D: cBool(context, element, "bubble3D"),
|
|
4958
|
+
shape: cVal(element, "shape"),
|
|
4959
|
+
extLst: extensionList(element)
|
|
4960
|
+
}
|
|
4961
|
+
);
|
|
4962
|
+
}
|
|
4963
|
+
|
|
4964
|
+
// chart/parse-plot.ts
|
|
4965
|
+
var CHART_GROUP_ELEMENTS = {
|
|
4966
|
+
barChart: { kind: "bar", is3D: false },
|
|
4967
|
+
bar3DChart: { kind: "bar", is3D: true },
|
|
4968
|
+
lineChart: { kind: "line", is3D: false },
|
|
4969
|
+
line3DChart: { kind: "line", is3D: true },
|
|
4970
|
+
areaChart: { kind: "area", is3D: false },
|
|
4971
|
+
area3DChart: { kind: "area", is3D: true },
|
|
4972
|
+
pieChart: { kind: "pie", is3D: false },
|
|
4973
|
+
pie3DChart: { kind: "pie", is3D: true },
|
|
4974
|
+
ofPieChart: { kind: "ofPie", is3D: false },
|
|
4975
|
+
doughnutChart: { kind: "doughnut", is3D: false },
|
|
4976
|
+
scatterChart: { kind: "scatter", is3D: false },
|
|
4977
|
+
radarChart: { kind: "radar", is3D: false },
|
|
4978
|
+
bubbleChart: { kind: "bubble", is3D: false },
|
|
4979
|
+
stockChart: { kind: "stock", is3D: false },
|
|
4980
|
+
surfaceChart: { kind: "surface", is3D: false },
|
|
4981
|
+
surface3DChart: { kind: "surface", is3D: true }
|
|
4982
|
+
};
|
|
4983
|
+
var AXIS_ELEMENTS = {
|
|
4984
|
+
catAx: "cat",
|
|
4985
|
+
valAx: "val",
|
|
4986
|
+
dateAx: "date",
|
|
4987
|
+
serAx: "ser"
|
|
4988
|
+
};
|
|
4989
|
+
var GROUP = /* @__PURE__ */ new Set([
|
|
4990
|
+
"ser",
|
|
4991
|
+
"axId",
|
|
4992
|
+
"varyColors",
|
|
4993
|
+
"dLbls",
|
|
4994
|
+
"barDir",
|
|
4995
|
+
"grouping",
|
|
4996
|
+
"gapWidth",
|
|
4997
|
+
"overlap",
|
|
4998
|
+
"gapDepth",
|
|
4999
|
+
"shape",
|
|
5000
|
+
"marker",
|
|
5001
|
+
"smooth",
|
|
5002
|
+
"dropLines",
|
|
5003
|
+
"hiLowLines",
|
|
5004
|
+
"upDownBars",
|
|
5005
|
+
"serLines",
|
|
5006
|
+
"firstSliceAng",
|
|
5007
|
+
"holeSize",
|
|
5008
|
+
"ofPieType",
|
|
5009
|
+
"scatterStyle",
|
|
5010
|
+
"radarStyle",
|
|
5011
|
+
"bubble3D",
|
|
5012
|
+
"bubbleScale",
|
|
5013
|
+
"showNegBubbles",
|
|
5014
|
+
"sizeRepresents",
|
|
5015
|
+
"wireframe",
|
|
5016
|
+
"extLst"
|
|
5017
|
+
]);
|
|
5018
|
+
function parseGroup(context, element) {
|
|
5019
|
+
const { kind, is3D } = CHART_GROUP_ELEMENTS[element.localName] ?? { kind: "bar", is3D: false };
|
|
5020
|
+
reportUnmodelled(context, element, GROUP);
|
|
5021
|
+
const number = (local) => cNumber(context, element, local);
|
|
5022
|
+
const flag2 = (local) => cBool(context, element, local);
|
|
5023
|
+
const barDir = cVal(element, "barDir");
|
|
5024
|
+
const present = (local) => cChild(element, local) ? true : void 0;
|
|
5025
|
+
const linesShape = (local) => chartLines(element, local)?.spPr;
|
|
5026
|
+
const bars = cChild(element, "upDownBars");
|
|
5027
|
+
return assignDefined(
|
|
5028
|
+
{
|
|
5029
|
+
kind,
|
|
5030
|
+
element: element.localName,
|
|
5031
|
+
is3D,
|
|
5032
|
+
series: children(element, "ser", NS.c).map((ser) => parseSeries(context, ser)),
|
|
5033
|
+
axisIds: children(element, "axId", NS.c).flatMap((axis) => {
|
|
5034
|
+
const raw = attribute(axis, "val")?.trim();
|
|
5035
|
+
const id = raw ? Number(raw) : Number.NaN;
|
|
5036
|
+
return Number.isFinite(id) ? [id] : [];
|
|
5037
|
+
})
|
|
5038
|
+
},
|
|
5039
|
+
{
|
|
5040
|
+
varyColors: flag2("varyColors"),
|
|
5041
|
+
dataLabels: parseDataLabels(context, cChild(element, "dLbls")),
|
|
5042
|
+
barDirection: barDir === "bar" || barDir === "col" ? barDir : void 0,
|
|
5043
|
+
grouping: cVal(element, "grouping"),
|
|
5044
|
+
gapWidth: number("gapWidth"),
|
|
5045
|
+
overlap: number("overlap"),
|
|
5046
|
+
gapDepth: number("gapDepth"),
|
|
5047
|
+
shape: cVal(element, "shape"),
|
|
5048
|
+
marker: flag2("marker"),
|
|
5049
|
+
smooth: flag2("smooth"),
|
|
5050
|
+
dropLines: present("dropLines"),
|
|
5051
|
+
hiLowLines: present("hiLowLines"),
|
|
5052
|
+
upDownBars: present("upDownBars"),
|
|
5053
|
+
seriesLines: present("serLines"),
|
|
5054
|
+
dropLinesSpPr: linesShape("dropLines"),
|
|
5055
|
+
hiLowLinesSpPr: linesShape("hiLowLines"),
|
|
5056
|
+
seriesLinesSpPr: linesShape("serLines"),
|
|
5057
|
+
upDownBarsGapWidth: cNumber(context, bars, "gapWidth"),
|
|
5058
|
+
upBars: chartLines(bars, "upBars"),
|
|
5059
|
+
downBars: chartLines(bars, "downBars"),
|
|
5060
|
+
firstSliceAngle: number("firstSliceAng"),
|
|
5061
|
+
holeSize: number("holeSize"),
|
|
5062
|
+
ofPieType: cVal(element, "ofPieType"),
|
|
5063
|
+
scatterStyle: cVal(element, "scatterStyle"),
|
|
5064
|
+
radarStyle: cVal(element, "radarStyle"),
|
|
5065
|
+
bubble3D: flag2("bubble3D"),
|
|
5066
|
+
bubbleScale: number("bubbleScale"),
|
|
5067
|
+
showNegativeBubbles: flag2("showNegBubbles"),
|
|
5068
|
+
sizeRepresents: cVal(element, "sizeRepresents"),
|
|
5069
|
+
wireframe: flag2("wireframe"),
|
|
5070
|
+
extLst: extensionList(element)
|
|
5071
|
+
}
|
|
5072
|
+
);
|
|
5073
|
+
}
|
|
5074
|
+
var SCALING = /* @__PURE__ */ new Set(["orientation", "logBase", "min", "max", "extLst"]);
|
|
5075
|
+
var AXIS = /* @__PURE__ */ new Set([
|
|
5076
|
+
"axId",
|
|
5077
|
+
"scaling",
|
|
5078
|
+
"delete",
|
|
5079
|
+
"axPos",
|
|
5080
|
+
"majorGridlines",
|
|
5081
|
+
"minorGridlines",
|
|
5082
|
+
"title",
|
|
5083
|
+
"numFmt",
|
|
5084
|
+
"majorTickMark",
|
|
5085
|
+
"minorTickMark",
|
|
5086
|
+
"tickLblPos",
|
|
5087
|
+
"spPr",
|
|
5088
|
+
"txPr",
|
|
5089
|
+
"crossAx",
|
|
5090
|
+
"crosses",
|
|
5091
|
+
"crossesAt",
|
|
5092
|
+
"crossBetween",
|
|
5093
|
+
"majorUnit",
|
|
5094
|
+
"minorUnit",
|
|
5095
|
+
"auto",
|
|
5096
|
+
"lblAlgn",
|
|
5097
|
+
"lblOffset",
|
|
5098
|
+
"tickLblSkip",
|
|
5099
|
+
"tickMarkSkip",
|
|
5100
|
+
"noMultiLvlLbl",
|
|
5101
|
+
"baseTimeUnit",
|
|
5102
|
+
"dispUnits",
|
|
5103
|
+
"extLst"
|
|
5104
|
+
]);
|
|
5105
|
+
function parseAxis(context, element, kind) {
|
|
5106
|
+
reportUnmodelled(context, element, AXIS);
|
|
5107
|
+
const number = (local) => cNumber(context, element, local);
|
|
5108
|
+
const scalingElement = cChild(element, "scaling");
|
|
5109
|
+
if (scalingElement) reportUnmodelled(context, scalingElement, SCALING);
|
|
5110
|
+
const scaling = assignDefined(
|
|
5111
|
+
{},
|
|
5112
|
+
{
|
|
5113
|
+
orientation: cVal(scalingElement, "orientation"),
|
|
5114
|
+
min: cNumber(context, scalingElement, "min"),
|
|
5115
|
+
max: cNumber(context, scalingElement, "max"),
|
|
5116
|
+
logBase: cNumber(context, scalingElement, "logBase")
|
|
5117
|
+
}
|
|
5118
|
+
);
|
|
5119
|
+
const title = cChild(element, "title");
|
|
5120
|
+
return assignDefined(
|
|
5121
|
+
{
|
|
5122
|
+
kind,
|
|
5123
|
+
scaling,
|
|
5124
|
+
majorGridlines: cChild(element, "majorGridlines") !== void 0,
|
|
5125
|
+
minorGridlines: cChild(element, "minorGridlines") !== void 0
|
|
5126
|
+
},
|
|
5127
|
+
{
|
|
5128
|
+
majorGridlinesSpPr: chartLines(element, "majorGridlines")?.spPr,
|
|
5129
|
+
minorGridlinesSpPr: chartLines(element, "minorGridlines")?.spPr,
|
|
5130
|
+
id: number("axId"),
|
|
5131
|
+
crossAxisId: number("crossAx"),
|
|
5132
|
+
position: cVal(element, "axPos"),
|
|
5133
|
+
deleted: cBool(context, element, "delete"),
|
|
5134
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
5135
|
+
numberFormat: numberFormat(element),
|
|
5136
|
+
majorTickMark: cVal(element, "majorTickMark"),
|
|
5137
|
+
minorTickMark: cVal(element, "minorTickMark"),
|
|
5138
|
+
tickLabelPosition: cVal(element, "tickLblPos"),
|
|
5139
|
+
crosses: cVal(element, "crosses"),
|
|
5140
|
+
crossesAt: number("crossesAt"),
|
|
5141
|
+
crossBetween: cVal(element, "crossBetween"),
|
|
5142
|
+
majorUnit: number("majorUnit"),
|
|
5143
|
+
minorUnit: number("minorUnit"),
|
|
5144
|
+
auto: cBool(context, element, "auto"),
|
|
5145
|
+
labelAlign: cVal(element, "lblAlgn"),
|
|
5146
|
+
labelOffset: number("lblOffset"),
|
|
5147
|
+
tickLabelSkip: number("tickLblSkip"),
|
|
5148
|
+
tickMarkSkip: number("tickMarkSkip"),
|
|
5149
|
+
noMultiLevelLabels: cBool(context, element, "noMultiLvlLbl"),
|
|
5150
|
+
baseTimeUnit: cVal(element, "baseTimeUnit"),
|
|
5151
|
+
displayUnits: parseDisplayUnits(context, cChild(element, "dispUnits")),
|
|
5152
|
+
spPr: shapeProperties(element),
|
|
5153
|
+
txPr: textProperties(element),
|
|
5154
|
+
extLst: extensionList(element)
|
|
5155
|
+
}
|
|
5156
|
+
);
|
|
5157
|
+
}
|
|
5158
|
+
var PLOT_AREA = /* @__PURE__ */ new Set(["layout", "dTable", "spPr", "extLst"]);
|
|
5159
|
+
function parsePlotArea(context, element) {
|
|
5160
|
+
const plotArea = { groups: [], axes: [] };
|
|
5161
|
+
if (!element) {
|
|
5162
|
+
context.issues.push({
|
|
5163
|
+
code: "CHART_PLOT_AREA_MISSING",
|
|
5164
|
+
message: "The chart has no c:plotArea."
|
|
5165
|
+
});
|
|
5166
|
+
return plotArea;
|
|
5167
|
+
}
|
|
5168
|
+
const handled = new Set(PLOT_AREA);
|
|
5169
|
+
for (const child3 of elements(element)) {
|
|
5170
|
+
if (CHART_GROUP_ELEMENTS[child3.localName]) {
|
|
5171
|
+
plotArea.groups.push(parseGroup(context, child3));
|
|
5172
|
+
handled.add(child3.localName);
|
|
5173
|
+
}
|
|
5174
|
+
const axis = AXIS_ELEMENTS[child3.localName];
|
|
5175
|
+
if (axis) {
|
|
5176
|
+
plotArea.axes.push(parseAxis(context, child3, axis));
|
|
5177
|
+
handled.add(child3.localName);
|
|
5178
|
+
}
|
|
5179
|
+
}
|
|
5180
|
+
reportUnmodelled(context, element, handled);
|
|
5181
|
+
return assignDefined(plotArea, {
|
|
5182
|
+
layout: manualLayout(element),
|
|
5183
|
+
dataTable: parseDataTable(context, cChild(element, "dTable")),
|
|
5184
|
+
spPr: shapeProperties(element),
|
|
5185
|
+
extLst: extensionList(element)
|
|
5186
|
+
});
|
|
5187
|
+
}
|
|
5188
|
+
|
|
5189
|
+
// chart/parse-space.ts
|
|
5190
|
+
var LEGEND = /* @__PURE__ */ new Set(["legendPos", "legendEntry", "layout", "overlay", "spPr", "txPr", "extLst"]);
|
|
5191
|
+
function parseLegend(context, element) {
|
|
5192
|
+
reportUnmodelled(context, element, LEGEND);
|
|
5193
|
+
const entries = children(element, "legendEntry", NS.c).map(
|
|
5194
|
+
(entry2) => assignDefined(
|
|
5195
|
+
{},
|
|
5196
|
+
{
|
|
5197
|
+
index: cNumber(context, entry2, "idx"),
|
|
5198
|
+
deleted: cBool(context, entry2, "delete"),
|
|
5199
|
+
txPr: textProperties(entry2)
|
|
5200
|
+
}
|
|
5201
|
+
)
|
|
5202
|
+
);
|
|
5203
|
+
return assignDefined(
|
|
5204
|
+
{ entries },
|
|
5205
|
+
{
|
|
5206
|
+
position: cVal(element, "legendPos"),
|
|
5207
|
+
overlay: cBool(context, element, "overlay"),
|
|
5208
|
+
layout: manualLayout(element),
|
|
5209
|
+
spPr: shapeProperties(element),
|
|
5210
|
+
txPr: textProperties(element),
|
|
5211
|
+
extLst: extensionList(element)
|
|
5212
|
+
}
|
|
5213
|
+
);
|
|
5214
|
+
}
|
|
5215
|
+
var VIEW_3D = /* @__PURE__ */ new Set(["rotX", "rotY", "depthPercent", "hPercent", "rAngAx", "perspective"]);
|
|
5216
|
+
function parseView3D(context, element) {
|
|
5217
|
+
reportUnmodelled(context, element, VIEW_3D);
|
|
5218
|
+
return assignDefined(
|
|
5219
|
+
{},
|
|
5220
|
+
{
|
|
5221
|
+
rotX: cNumber(context, element, "rotX"),
|
|
5222
|
+
rotY: cNumber(context, element, "rotY"),
|
|
5223
|
+
depthPercent: cNumber(context, element, "depthPercent"),
|
|
5224
|
+
heightPercent: cNumber(context, element, "hPercent"),
|
|
5225
|
+
rightAngleAxes: cBool(context, element, "rAngAx"),
|
|
5226
|
+
perspective: cNumber(context, element, "perspective")
|
|
5227
|
+
}
|
|
5228
|
+
);
|
|
5229
|
+
}
|
|
5230
|
+
function chartStyle(context, space) {
|
|
5231
|
+
const direct = cNumber(context, space, "style");
|
|
5232
|
+
if (direct !== void 0) return direct;
|
|
5233
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
5234
|
+
const style = cNumber(context, first(alternate, "Fallback", NS.mc), "style");
|
|
5235
|
+
if (style !== void 0) return style;
|
|
5236
|
+
}
|
|
5237
|
+
return void 0;
|
|
5238
|
+
}
|
|
5239
|
+
function c14Style(space) {
|
|
5240
|
+
for (const alternate of children(space, "AlternateContent", NS.mc)) {
|
|
5241
|
+
const raw = attribute(first(first(alternate, "Choice", NS.mc), "style", NS.c14, false), "val");
|
|
5242
|
+
const value = raw?.trim() ? Number(raw) : Number.NaN;
|
|
5243
|
+
if (Number.isFinite(value)) return value;
|
|
5244
|
+
}
|
|
5245
|
+
return void 0;
|
|
5246
|
+
}
|
|
5247
|
+
function namespaceDeclarations(root) {
|
|
5248
|
+
const out = [];
|
|
5249
|
+
for (const item of Array.from(root.attributes)) {
|
|
5250
|
+
if (item.prefix !== "xmlns" || CHART_ROOT_BINDINGS.get(item.localName) === item.value) continue;
|
|
5251
|
+
out.push({ prefix: item.localName, uri: item.value });
|
|
5252
|
+
}
|
|
5253
|
+
return out.length ? out : void 0;
|
|
5254
|
+
}
|
|
5255
|
+
var CHART = /* @__PURE__ */ new Set([
|
|
5256
|
+
"title",
|
|
5257
|
+
"autoTitleDeleted",
|
|
5258
|
+
"view3D",
|
|
5259
|
+
"floor",
|
|
5260
|
+
"sideWall",
|
|
5261
|
+
"backWall",
|
|
5262
|
+
"plotArea",
|
|
5263
|
+
"legend",
|
|
5264
|
+
"plotVisOnly",
|
|
5265
|
+
"dispBlanksAs",
|
|
5266
|
+
"showDLblsOverMax",
|
|
5267
|
+
"extLst"
|
|
5268
|
+
]);
|
|
5269
|
+
var SPACE = /* @__PURE__ */ new Set([
|
|
5270
|
+
"date1904",
|
|
5271
|
+
"lang",
|
|
5272
|
+
"roundedCorners",
|
|
5273
|
+
"AlternateContent",
|
|
5274
|
+
"style",
|
|
5275
|
+
"chart",
|
|
5276
|
+
"spPr",
|
|
5277
|
+
"txPr",
|
|
5278
|
+
"externalData",
|
|
5279
|
+
"printSettings",
|
|
5280
|
+
"userShapes",
|
|
5281
|
+
"extLst"
|
|
5282
|
+
]);
|
|
5283
|
+
function parseChartSpace(source) {
|
|
5284
|
+
const context = { issues: [] };
|
|
5285
|
+
const root = typeof source === "string" ? parseXml(source, { label: "Chart part" }).documentElement : source;
|
|
5286
|
+
if (root.localName !== "chartSpace" || root.namespaceURI && root.namespaceURI !== NS.c) {
|
|
5287
|
+
context.issues.push({
|
|
5288
|
+
code: "CHART_ROOT_UNEXPECTED",
|
|
5289
|
+
message: `The part root is {${root.namespaceURI ?? ""}}${root.localName}, not c:chartSpace (chartex parts are not modelled).`
|
|
5290
|
+
});
|
|
5291
|
+
return { chartSpace: { plotArea: { groups: [], axes: [] } }, issues: context.issues };
|
|
5292
|
+
}
|
|
5293
|
+
reportUnmodelled(context, root, SPACE);
|
|
5294
|
+
const chart = cChild(root, "chart");
|
|
5295
|
+
if (!chart)
|
|
5296
|
+
context.issues.push({ code: "CHART_CHART_MISSING", message: "The part has no c:chart." });
|
|
5297
|
+
else reportUnmodelled(context, chart, CHART);
|
|
5298
|
+
const title = cChild(chart, "title");
|
|
5299
|
+
const legend = cChild(chart, "legend");
|
|
5300
|
+
const view3D = cChild(chart, "view3D");
|
|
5301
|
+
const printSettings = cChild(root, "printSettings");
|
|
5302
|
+
const chartSpace = assignDefined(
|
|
5303
|
+
{ plotArea: parsePlotArea(context, cChild(chart, "plotArea")) },
|
|
5304
|
+
{
|
|
5305
|
+
date1904: cBool(context, root, "date1904"),
|
|
5306
|
+
language: cVal(root, "lang"),
|
|
5307
|
+
roundedCorners: cBool(context, root, "roundedCorners"),
|
|
5308
|
+
style: chartStyle(context, root),
|
|
5309
|
+
c14Style: c14Style(root),
|
|
5310
|
+
title: title ? parseTitle(context, title) : void 0,
|
|
5311
|
+
autoTitleDeleted: cBool(context, chart, "autoTitleDeleted"),
|
|
5312
|
+
view3D: view3D ? parseView3D(context, view3D) : void 0,
|
|
5313
|
+
floor: parseSurface(context, cChild(chart, "floor")),
|
|
5314
|
+
sideWall: parseSurface(context, cChild(chart, "sideWall")),
|
|
5315
|
+
backWall: parseSurface(context, cChild(chart, "backWall")),
|
|
5316
|
+
legend: legend ? parseLegend(context, legend) : void 0,
|
|
5317
|
+
plotVisibleOnly: cBool(context, chart, "plotVisOnly"),
|
|
5318
|
+
displayBlanksAs: cVal(chart, "dispBlanksAs"),
|
|
5319
|
+
showDataLabelsOverMax: cBool(context, chart, "showDLblsOverMax"),
|
|
5320
|
+
spPr: shapeProperties(root),
|
|
5321
|
+
txPr: textProperties(root),
|
|
5322
|
+
externalDataRelId: relAttr(cChild(root, "externalData"), "id") || void 0,
|
|
5323
|
+
externalDataAutoUpdate: cBool(context, cChild(root, "externalData"), "autoUpdate"),
|
|
5324
|
+
printSettings: printSettings ? buildXml(printSettings) : void 0,
|
|
5325
|
+
userShapesRelId: relAttr(cChild(root, "userShapes"), "id") || void 0,
|
|
5326
|
+
chartExtLst: extensionList(chart),
|
|
5327
|
+
extLst: extensionList(root),
|
|
5328
|
+
namespaceDeclarations: namespaceDeclarations(root)
|
|
5329
|
+
}
|
|
5330
|
+
);
|
|
5331
|
+
return { chartSpace, issues: context.issues };
|
|
5332
|
+
}
|
|
5333
|
+
|
|
5334
|
+
// docx/breaks.ts
|
|
5335
|
+
function isCachedPageBreak(element) {
|
|
5336
|
+
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
5337
|
+
(attribute2) => attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
5338
|
+
);
|
|
5339
|
+
}
|
|
5340
|
+
function hasSpecialBreak(element) {
|
|
5341
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5342
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5343
|
+
if (attribute2.namespaceURI !== WORD_NS) return true;
|
|
5344
|
+
if (attribute2.localName === "type") {
|
|
5345
|
+
if (attribute2.value !== "textWrapping") return true;
|
|
5346
|
+
} else if (attribute2.localName === "clear") {
|
|
5347
|
+
if (attribute2.value !== "none") return true;
|
|
5348
|
+
} else return true;
|
|
5349
|
+
}
|
|
5350
|
+
return false;
|
|
5351
|
+
}
|
|
5352
|
+
function classifyBreak(element) {
|
|
5353
|
+
const type = getW(element, "type");
|
|
5354
|
+
return type === "page" || type === "column" ? type : "textWrapping";
|
|
5355
|
+
}
|
|
5356
|
+
function isModeledBreak(element) {
|
|
5357
|
+
const kind = classifyBreak(element);
|
|
5358
|
+
if (kind === "textWrapping") return false;
|
|
5359
|
+
for (const attribute2 of Array.from(element.attributes)) {
|
|
5360
|
+
if (attribute2.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5361
|
+
if (attribute2.namespaceURI !== WORD_NS || attribute2.localName !== "type") return false;
|
|
5362
|
+
}
|
|
5363
|
+
return true;
|
|
5364
|
+
}
|
|
5365
|
+
|
|
5366
|
+
// docx/parse-warnings.ts
|
|
5367
|
+
function hasAny(document, names) {
|
|
5368
|
+
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
5369
|
+
}
|
|
5370
|
+
function warningsFor(document) {
|
|
5371
|
+
const warnings = [];
|
|
5372
|
+
const features = [
|
|
5373
|
+
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
5374
|
+
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
5375
|
+
[
|
|
5376
|
+
["fldSimple", "instrText", "fldChar"],
|
|
5377
|
+
"Fields show the result Word last saved while editing; Print Layout recalculates PAGE, NUMPAGES, SECTIONPAGES, DATE and TIME, and tables of contents update from the References tab."
|
|
5378
|
+
],
|
|
5379
|
+
[
|
|
5380
|
+
["moveFrom", "moveTo"],
|
|
5381
|
+
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
5382
|
+
],
|
|
5383
|
+
[
|
|
5384
|
+
["rPrChange"],
|
|
5385
|
+
"Formatting-change revisions retain their prior run-properties snapshots and support acceptance and rejection; recording new formatting changes and showing prior formatting in Original display are not supported yet."
|
|
5386
|
+
],
|
|
5387
|
+
[
|
|
5388
|
+
["pPrChange"],
|
|
5389
|
+
"Paragraph-formatting-change revisions retain their prior properties snapshots and support acceptance and rejection; recording new paragraph formatting changes and showing prior formatting in Original display are not supported yet."
|
|
5390
|
+
],
|
|
5391
|
+
[
|
|
5392
|
+
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
5393
|
+
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
5394
|
+
]
|
|
5395
|
+
];
|
|
5396
|
+
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
5397
|
+
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
5398
|
+
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
5399
|
+
))
|
|
5400
|
+
warnings.push(
|
|
5401
|
+
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
5402
|
+
);
|
|
5403
|
+
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
5404
|
+
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
5405
|
+
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
5406
|
+
(cr) => cr.attributes.length > 0
|
|
5407
|
+
);
|
|
5408
|
+
if (specialBreak)
|
|
5409
|
+
warnings.push(
|
|
5410
|
+
"Some non-line breaks other than page and column breaks are not distinguished from line breaks in the document model; edits to paragraphs containing them are rejected to preserve the original XML."
|
|
5411
|
+
);
|
|
5412
|
+
return warnings;
|
|
5413
|
+
}
|
|
5414
|
+
function forEachParagraph2(blocks, visit) {
|
|
5415
|
+
for (const block of blocks) {
|
|
5416
|
+
if (block.type === "paragraph") visit(block);
|
|
5417
|
+
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
5418
|
+
}
|
|
5419
|
+
}
|
|
5420
|
+
function imageAndBookmarkWarnings(blocks) {
|
|
5421
|
+
const warnings = [];
|
|
5422
|
+
let hasPicture = false;
|
|
5423
|
+
let hasAnchored = false;
|
|
5424
|
+
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
5425
|
+
let hasBookmarks = false;
|
|
5426
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
5427
|
+
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
5428
|
+
for (const run of paragraph.runs) {
|
|
5429
|
+
if (!run.image) continue;
|
|
5430
|
+
if (run.image.unsupported) {
|
|
5431
|
+
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
5432
|
+
unsupportedKinds.add(run.image.unsupported);
|
|
5433
|
+
} else hasPicture = true;
|
|
5434
|
+
if (run.image.anchored) hasAnchored = true;
|
|
5435
|
+
}
|
|
5436
|
+
});
|
|
5437
|
+
if (hasPicture)
|
|
5438
|
+
warnings.push(
|
|
5439
|
+
"Inline pictures render from their original bytes and can be deleted or newly inserted; crop, artistic effects, and non-inline text wrapping are not reproduced."
|
|
5440
|
+
);
|
|
5441
|
+
if (hasAnchored)
|
|
5442
|
+
warnings.push(
|
|
5443
|
+
"Floating pictures follow their text wrapping approximately (floated left or right, or on their own line); exact positions, vertical offsets and in-front/behind layering are not reproduced."
|
|
5444
|
+
);
|
|
5445
|
+
if (unsupportedKinds.size)
|
|
5446
|
+
warnings.push(
|
|
5447
|
+
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
5448
|
+
);
|
|
5449
|
+
if (hasBookmarks)
|
|
5450
|
+
warnings.push(
|
|
5451
|
+
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
5452
|
+
);
|
|
5453
|
+
return warnings;
|
|
5454
|
+
}
|
|
5455
|
+
|
|
5456
|
+
// docx/chart.ts
|
|
5457
|
+
var CHART_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
|
|
5458
|
+
var CHART_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";
|
|
5459
|
+
var PACKAGE_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package";
|
|
5460
|
+
var CHART_NOTICE = "The chart is drawn from the values cached in its part (bar, column, line, area, pie, doughnut, scatter and radar charts; other kinds show a labelled frame). It is not editable, and the chart part and its workbook are preserved unchanged on save.";
|
|
5461
|
+
function parseChartGraphic(graphicData, docPr, rels, isAnchor) {
|
|
5462
|
+
const element = Array.from(graphicData.childNodes).find(
|
|
5463
|
+
(node) => isElement(node) && node.localName === "chart"
|
|
5464
|
+
);
|
|
5465
|
+
const relId = getR(element, "id") || void 0;
|
|
5466
|
+
const issues = [];
|
|
5467
|
+
let partName;
|
|
5468
|
+
const rel = relId ? rels.get(relId) : void 0;
|
|
5469
|
+
if (!relId)
|
|
5470
|
+
issues.push({
|
|
5471
|
+
code: "CHART_RELATIONSHIP_MISSING",
|
|
5472
|
+
message: "The graphic has no c:chart/@r:id."
|
|
5473
|
+
});
|
|
5474
|
+
else if (!rel || rel.mode === "External")
|
|
5475
|
+
issues.push({
|
|
5476
|
+
code: "CHART_RELATIONSHIP_UNRESOLVED",
|
|
5477
|
+
message: `Chart relationship ${relId} does not point at a part in this package.`
|
|
5478
|
+
});
|
|
5479
|
+
else {
|
|
5480
|
+
if (rel.type !== CHART_RELATIONSHIP_TYPE)
|
|
5481
|
+
issues.push({
|
|
5482
|
+
code: "CHART_RELATIONSHIP_TYPE",
|
|
5483
|
+
message: `Chart relationship ${relId} has type ${rel.type}, expected ${CHART_RELATIONSHIP_TYPE}.`
|
|
5484
|
+
});
|
|
5485
|
+
partName = resolvePartPath("word/document.xml", rel.target);
|
|
5486
|
+
}
|
|
5487
|
+
const name = docPr?.getAttribute("name") || void 0;
|
|
5488
|
+
const id = docPr?.getAttribute("id") || void 0;
|
|
5489
|
+
return {
|
|
5490
|
+
placement: isAnchor ? "anchor" : "inline",
|
|
5491
|
+
...name ? { name } : {},
|
|
5492
|
+
...id ? { id } : {},
|
|
5493
|
+
...relId ? { relId } : {},
|
|
5494
|
+
...partName ? { partName } : {},
|
|
5495
|
+
notice: CHART_NOTICE,
|
|
5496
|
+
issues
|
|
5497
|
+
};
|
|
5498
|
+
}
|
|
5499
|
+
async function resolveChartPart(chart, readText) {
|
|
5500
|
+
if (!chart.partName) return;
|
|
5501
|
+
try {
|
|
5502
|
+
const xml = await readText(chart.partName);
|
|
5503
|
+
if (xml === void 0) {
|
|
5504
|
+
chart.issues.push({
|
|
5505
|
+
code: "CHART_PART_MISSING",
|
|
5506
|
+
message: `The chart part ${chart.partName} is not in the package.`
|
|
5507
|
+
});
|
|
5508
|
+
return;
|
|
5509
|
+
}
|
|
5510
|
+
const root = parseXml(xml, { label: "Chart part" }).documentElement;
|
|
5511
|
+
const { chartSpace, issues } = parseChartSpace(root);
|
|
5512
|
+
chart.chartSpace = chartSpace;
|
|
5513
|
+
chart.issues.push(...issues);
|
|
5514
|
+
const title = chartSpace.autoTitleDeleted ? void 0 : chartSpace.title?.text;
|
|
5515
|
+
if (title) chart.title = title;
|
|
5516
|
+
if (chartSpace.plotArea.groups.length) {
|
|
5517
|
+
const formatting = readChartFormatting(root);
|
|
5518
|
+
if (formatting) chart.formatting = formatting;
|
|
5519
|
+
}
|
|
5520
|
+
const rels = parseRelationships(await readText(relationshipsPartFor(chart.partName)));
|
|
5521
|
+
const dataRelId = chartSpace.externalDataRelId;
|
|
5522
|
+
const dataRel = dataRelId ? rels.get(dataRelId) : void 0;
|
|
5523
|
+
if (dataRel && dataRel.mode !== "External" && dataRel.type === PACKAGE_RELATIONSHIP_TYPE)
|
|
5524
|
+
chart.workbookPartName = resolvePartPath(chart.partName, dataRel.target);
|
|
5525
|
+
const colorsRel = [...rels.values()].find(
|
|
5526
|
+
(rel) => rel.mode !== "External" && rel.type.endsWith("/chartColorStyle")
|
|
5527
|
+
);
|
|
5528
|
+
const colorsXml = colorsRel && await readText(resolvePartPath(chart.partName, colorsRel.target));
|
|
5529
|
+
const palette = colorsXml ? chartColorStyleId(colorsXml) : void 0;
|
|
5530
|
+
if (palette !== void 0) chart.colorPalette = palette;
|
|
5531
|
+
} catch (error) {
|
|
5532
|
+
chart.issues.push({
|
|
5533
|
+
code: "CHART_PART_UNREADABLE",
|
|
5534
|
+
message: `The chart part ${chart.partName} could not be read: ${error instanceof Error ? error.message : String(error)}`
|
|
5535
|
+
});
|
|
5536
|
+
}
|
|
5537
|
+
}
|
|
5538
|
+
function chartsIn(blocks) {
|
|
5539
|
+
const charts = [];
|
|
5540
|
+
forEachParagraph2(blocks, (paragraph) => {
|
|
5541
|
+
for (const run of paragraph.runs) if (run.image?.chart) charts.push(run.image.chart);
|
|
5542
|
+
});
|
|
5543
|
+
return charts;
|
|
5544
|
+
}
|
|
5545
|
+
async function resolveDocumentCharts(blocks, readText) {
|
|
5546
|
+
for (const chart of chartsIn(blocks)) await resolveChartPart(chart, readText);
|
|
5547
|
+
}
|
|
5548
|
+
|
|
5549
|
+
// docx/drawing.ts
|
|
5550
|
+
var WP_NS2 = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
|
|
5551
|
+
var A_NS2 = "http://schemas.openxmlformats.org/drawingml/2006/main";
|
|
5552
|
+
var VML_NS2 = "urn:schemas-microsoft-com:vml";
|
|
5553
|
+
var WPS_NS2 = "http://schemas.microsoft.com/office/word/2010/wordprocessingShape";
|
|
5554
|
+
var W_NS2 = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
|
|
5555
|
+
var PICTURE_GRAPHIC_URI = "http://schemas.openxmlformats.org/drawingml/2006/picture";
|
|
5556
|
+
function firstNS(parent, ns, local) {
|
|
5557
|
+
if (!parent) return void 0;
|
|
5558
|
+
for (const child3 of Array.from(parent.childNodes))
|
|
5559
|
+
if (isElement(child3) && child3.namespaceURI === ns && child3.localName === local) return child3;
|
|
5560
|
+
return void 0;
|
|
5561
|
+
}
|
|
5562
|
+
function descendantNS(parent, ns, local) {
|
|
5563
|
+
if (!parent) return void 0;
|
|
5564
|
+
const stack = [parent];
|
|
5565
|
+
while (stack.length) {
|
|
5566
|
+
const node = stack.shift();
|
|
5567
|
+
for (const child3 of Array.from(node.childNodes)) {
|
|
5568
|
+
if (!isElement(child3)) continue;
|
|
5569
|
+
if (child3.namespaceURI === ns && child3.localName === local) return child3;
|
|
5570
|
+
stack.push(child3);
|
|
5571
|
+
}
|
|
5572
|
+
}
|
|
5573
|
+
return void 0;
|
|
5574
|
+
}
|
|
5575
|
+
function emuToPx(value) {
|
|
5576
|
+
const n = value ? Number(value) : NaN;
|
|
5577
|
+
return Number.isFinite(n) ? Math.round(n / EMU_PER_PIXEL) : 0;
|
|
5578
|
+
}
|
|
5579
|
+
function guessContentType(partName) {
|
|
5580
|
+
const extension = partName.split(".").pop()?.toLowerCase();
|
|
5581
|
+
const known = {
|
|
5582
|
+
png: "image/png",
|
|
5583
|
+
jpg: "image/jpeg",
|
|
5584
|
+
jpeg: "image/jpeg",
|
|
5585
|
+
gif: "image/gif",
|
|
5586
|
+
bmp: "image/bmp",
|
|
5587
|
+
svg: "image/svg+xml",
|
|
5588
|
+
tif: "image/tiff",
|
|
5589
|
+
tiff: "image/tiff",
|
|
5590
|
+
emf: "image/x-emf",
|
|
5591
|
+
wmf: "image/x-wmf"
|
|
5592
|
+
};
|
|
5593
|
+
return extension && known[extension] || "application/octet-stream";
|
|
5594
|
+
}
|
|
5595
|
+
function resolvePicture(relId, context) {
|
|
5596
|
+
const rel = context.rels.get(relId);
|
|
5597
|
+
if (!rel || rel.mode === "External") return void 0;
|
|
5598
|
+
const partName = resolveInternalTarget(rel.target);
|
|
5599
|
+
if (!context.mediaParts.has(partName)) return void 0;
|
|
5600
|
+
return {
|
|
5601
|
+
relId,
|
|
5602
|
+
partName,
|
|
4376
5603
|
contentType: contentTypeForPart(context.contentTypes, partName) ?? guessContentType(partName)
|
|
4377
5604
|
};
|
|
4378
5605
|
}
|
|
@@ -4434,6 +5661,7 @@ function parseModernDrawing(node, context) {
|
|
|
4434
5661
|
...svg ? { svgPartName: svg.partName } : {}
|
|
4435
5662
|
};
|
|
4436
5663
|
const diagram = uri === DIAGRAM_GRAPHIC_URI && graphicData ? parseDiagramGraphic(graphicData, extent, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
5664
|
+
const chart = uri === CHART_GRAPHIC_URI && graphicData ? parseChartGraphic(graphicData, docPr, context.rels, Boolean(anchored)) : void 0;
|
|
4437
5665
|
const textBox = uri.includes("wordprocessingShape") ? textBoxParagraphs(graphicData) : void 0;
|
|
4438
5666
|
return {
|
|
4439
5667
|
relId: relId ?? "",
|
|
@@ -4444,6 +5672,7 @@ function parseModernDrawing(node, context) {
|
|
|
4444
5672
|
...definedProps({ altText, title, anchored }),
|
|
4445
5673
|
unsupported: textBox ? "Text box" : unsupportedKindLabel(uri),
|
|
4446
5674
|
...diagram ? { diagram } : {},
|
|
5675
|
+
...chart ? { chart } : {},
|
|
4447
5676
|
...diagram && placement ? { placement } : {},
|
|
4448
5677
|
...textBox ? { textBoxText: textBox } : {},
|
|
4449
5678
|
...textBox && isSimpleTextBox(graphicData, Boolean(anchored)) ? { textBoxEditable: true, textBoxBorder: textBoxHasBorder(graphicData) } : {}
|
|
@@ -4523,8 +5752,8 @@ function findDrawingChild(run) {
|
|
|
4523
5752
|
if (isElement(child3) && (named2(child3, "drawing") || named2(child3, "pict"))) return child3;
|
|
4524
5753
|
return void 0;
|
|
4525
5754
|
}
|
|
4526
|
-
function sameUnderlyingImage(
|
|
4527
|
-
return Boolean(
|
|
5755
|
+
function sameUnderlyingImage(a2, b) {
|
|
5756
|
+
return Boolean(a2.partName) && a2.relId === b.relId && a2.partName === b.partName;
|
|
4528
5757
|
}
|
|
4529
5758
|
function walk(root, visit) {
|
|
4530
5759
|
const stack = [root];
|
|
@@ -4691,6 +5920,23 @@ function parseRunPropertiesSnapshot(xml) {
|
|
|
4691
5920
|
return parsePropertiesSnapshot(xml, "rPr");
|
|
4692
5921
|
}
|
|
4693
5922
|
|
|
5923
|
+
// docx/field-flags.ts
|
|
5924
|
+
function parseFieldFlags(element) {
|
|
5925
|
+
const locked = onOffAttribute(element, "fldLock");
|
|
5926
|
+
const dirty = onOffAttribute(element, "dirty");
|
|
5927
|
+
if (locked === void 0 && dirty === void 0) return void 0;
|
|
5928
|
+
return { ...locked !== void 0 && { locked }, ...dirty !== void 0 && { dirty } };
|
|
5929
|
+
}
|
|
5930
|
+
function writeFieldFlags(element, flags) {
|
|
5931
|
+
for (const [name, value] of [
|
|
5932
|
+
["fldLock", flags?.locked],
|
|
5933
|
+
["dirty", flags?.dirty]
|
|
5934
|
+
]) {
|
|
5935
|
+
if (value === void 0) element.removeAttributeNS(WORD_NS, name);
|
|
5936
|
+
else element.setAttributeNS(WORD_NS, `w:${name}`, value ? "true" : "false");
|
|
5937
|
+
}
|
|
5938
|
+
}
|
|
5939
|
+
|
|
4694
5940
|
// docx/write-run.ts
|
|
4695
5941
|
function setAttribute6(element, local, value) {
|
|
4696
5942
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
@@ -4717,17 +5963,17 @@ function setBooleanAttribute(doc, props, local, value) {
|
|
|
4717
5963
|
}
|
|
4718
5964
|
setAttribute6(element, "val", value ? "1" : "0");
|
|
4719
5965
|
}
|
|
4720
|
-
function setLanguageAttribute(doc, props,
|
|
5966
|
+
function setLanguageAttribute(doc, props, attribute2, value) {
|
|
4721
5967
|
let language = first2(props, "lang");
|
|
4722
5968
|
if (value === void 0 || value === "") {
|
|
4723
5969
|
if (!language) return;
|
|
4724
|
-
language.removeAttributeNS(WORD_NS,
|
|
5970
|
+
language.removeAttributeNS(WORD_NS, attribute2);
|
|
4725
5971
|
} else {
|
|
4726
5972
|
if (!language) {
|
|
4727
5973
|
language = makeW(doc, "lang");
|
|
4728
5974
|
props.appendChild(language);
|
|
4729
5975
|
}
|
|
4730
|
-
setAttribute6(language,
|
|
5976
|
+
setAttribute6(language, attribute2, value);
|
|
4731
5977
|
}
|
|
4732
5978
|
if (language && !language.attributes.length && !language.childNodes.length)
|
|
4733
5979
|
props.removeChild(language);
|
|
@@ -4827,8 +6073,8 @@ function setRunProperties(doc, runNode, run, base) {
|
|
|
4827
6073
|
};
|
|
4828
6074
|
for (const script of ["ascii", "hAnsi", "eastAsia", "cs"]) {
|
|
4829
6075
|
const role = run.fontTheme?.[script];
|
|
4830
|
-
const [
|
|
4831
|
-
if (role) setAttribute6(fonts,
|
|
6076
|
+
const [attribute2, suffix] = themeAttribute[script];
|
|
6077
|
+
if (role) setAttribute6(fonts, attribute2, `${role}${suffix}`);
|
|
4832
6078
|
}
|
|
4833
6079
|
props.appendChild(fonts);
|
|
4834
6080
|
}
|
|
@@ -4876,6 +6122,7 @@ function createRun(doc, run, base, old, allocator) {
|
|
|
4876
6122
|
if (run.fieldChar) {
|
|
4877
6123
|
const marker = makeW(doc, "fldChar");
|
|
4878
6124
|
setAttribute6(marker, "fldCharType", run.fieldChar);
|
|
6125
|
+
writeFieldFlags(marker, run.fieldFlags);
|
|
4879
6126
|
node.appendChild(marker);
|
|
4880
6127
|
return node;
|
|
4881
6128
|
}
|
|
@@ -4915,8 +6162,8 @@ function createRun(doc, run, base, old, allocator) {
|
|
|
4915
6162
|
}
|
|
4916
6163
|
|
|
4917
6164
|
// docx/inline-source.ts
|
|
4918
|
-
function samePictureSource(
|
|
4919
|
-
return !!
|
|
6165
|
+
function samePictureSource(a2, b) {
|
|
6166
|
+
return !!a2?.partName && a2.partName === b?.partName && a2.relId === b?.relId;
|
|
4920
6167
|
}
|
|
4921
6168
|
function inlineSourceLookup(runs, base) {
|
|
4922
6169
|
const usedPictures = /* @__PURE__ */ new Set();
|
|
@@ -4956,6 +6203,11 @@ function takeSimpleFieldCommentEdges(doc, runs, start, end, opens, closes) {
|
|
|
4956
6203
|
after: take(closes, end - 1).reverse().flatMap((edge) => rangeEndNodes(doc, edge))
|
|
4957
6204
|
};
|
|
4958
6205
|
}
|
|
6206
|
+
|
|
6207
|
+
// docx/field-lock.ts
|
|
6208
|
+
function sameFieldFlags(a2, b) {
|
|
6209
|
+
return a2?.locked === b?.locked && a2?.dirty === b?.dirty;
|
|
6210
|
+
}
|
|
4959
6211
|
var MATH_NAMESPACES = /* @__PURE__ */ new Set([
|
|
4960
6212
|
"http://schemas.openxmlformats.org/officeDocument/2006/math",
|
|
4961
6213
|
"http://purl.oclc.org/ooxml/officeDocument/math"
|
|
@@ -4981,38 +6233,6 @@ function preserveEquation(run, base, old) {
|
|
|
4981
6233
|
return old.cloneNode(true);
|
|
4982
6234
|
}
|
|
4983
6235
|
|
|
4984
|
-
// docx/breaks.ts
|
|
4985
|
-
function isCachedPageBreak(element) {
|
|
4986
|
-
return named2(element, "lastRenderedPageBreak") && !element.childNodes.length && Array.from(element.attributes).every(
|
|
4987
|
-
(attribute) => attribute.namespaceURI === "http://www.w3.org/2000/xmlns/"
|
|
4988
|
-
);
|
|
4989
|
-
}
|
|
4990
|
-
function hasSpecialBreak(element) {
|
|
4991
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
4992
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
4993
|
-
if (attribute.namespaceURI !== WORD_NS) return true;
|
|
4994
|
-
if (attribute.localName === "type") {
|
|
4995
|
-
if (attribute.value !== "textWrapping") return true;
|
|
4996
|
-
} else if (attribute.localName === "clear") {
|
|
4997
|
-
if (attribute.value !== "none") return true;
|
|
4998
|
-
} else return true;
|
|
4999
|
-
}
|
|
5000
|
-
return false;
|
|
5001
|
-
}
|
|
5002
|
-
function classifyBreak(element) {
|
|
5003
|
-
const type = getW(element, "type");
|
|
5004
|
-
return type === "page" || type === "column" ? type : "textWrapping";
|
|
5005
|
-
}
|
|
5006
|
-
function isModeledBreak(element) {
|
|
5007
|
-
const kind = classifyBreak(element);
|
|
5008
|
-
if (kind === "textWrapping") return false;
|
|
5009
|
-
for (const attribute of Array.from(element.attributes)) {
|
|
5010
|
-
if (attribute.namespaceURI === "http://www.w3.org/2000/xmlns/") continue;
|
|
5011
|
-
if (attribute.namespaceURI !== WORD_NS || attribute.localName !== "type") return false;
|
|
5012
|
-
}
|
|
5013
|
-
return true;
|
|
5014
|
-
}
|
|
5015
|
-
|
|
5016
6236
|
// docx/parse-revisions.ts
|
|
5017
6237
|
var REVISION_WRAPPERS = {
|
|
5018
6238
|
ins: "insert",
|
|
@@ -5034,7 +6254,7 @@ function trackMoveRange(item, moves) {
|
|
|
5034
6254
|
const open = moves[range.kind];
|
|
5035
6255
|
if (range.start) open.push({ name: getW(item, "name") ?? id, id });
|
|
5036
6256
|
else {
|
|
5037
|
-
const index = open.findIndex((
|
|
6257
|
+
const index = open.findIndex((entry2) => entry2.id === id);
|
|
5038
6258
|
if (index >= 0) open.splice(index, 1);
|
|
5039
6259
|
}
|
|
5040
6260
|
return true;
|
|
@@ -5207,10 +6427,10 @@ function replaceableInlineChildren(paragraph) {
|
|
|
5207
6427
|
(child3) => isElement(child3) && (isEquationElement(child3) || named2(child3, "r") || named2(child3, "hyperlink") || named2(child3, "fldSimple") || isRevisionWrapperElement(child3) || isCommentAnchorElement(child3))
|
|
5208
6428
|
);
|
|
5209
6429
|
}
|
|
5210
|
-
function sameLink(
|
|
5211
|
-
if (!
|
|
5212
|
-
if (!
|
|
5213
|
-
return
|
|
6430
|
+
function sameLink(a2, b) {
|
|
6431
|
+
if (!a2 && !b) return true;
|
|
6432
|
+
if (!a2 || !b) return false;
|
|
6433
|
+
return a2.href === b.href && a2.anchor === b.anchor && a2.tooltip === b.tooltip;
|
|
5214
6434
|
}
|
|
5215
6435
|
function setW6(element, local, value) {
|
|
5216
6436
|
element.setAttributeNS(WORD_NS, `w:${local}`, value);
|
|
@@ -5280,6 +6500,7 @@ function buildInlineContent(doc, runs, base, slots, allocator, ranges) {
|
|
|
5280
6500
|
container = makeW(doc, "fldSimple");
|
|
5281
6501
|
setW6(container, "instr", ` ${group.instr} `);
|
|
5282
6502
|
}
|
|
6503
|
+
if (group.kind === "simpleField") writeFieldFlags(container, runAt(start).fieldFlags);
|
|
5283
6504
|
const edges = group.kind === "simpleField" ? takeSimpleFieldCommentEdges(doc, runs, start, index, opens, closes) : { before: [], after: [] };
|
|
5284
6505
|
for (let item = start; item < index; item++)
|
|
5285
6506
|
for (const node of nodesFor(item)) container.appendChild(node);
|
|
@@ -5290,13 +6511,18 @@ function buildInlineContent(doc, runs, base, slots, allocator, ranges) {
|
|
|
5290
6511
|
function containerGroup(run) {
|
|
5291
6512
|
if (run.link) return { kind: "link", link: run.link };
|
|
5292
6513
|
if (run.field?.simple)
|
|
5293
|
-
return {
|
|
6514
|
+
return {
|
|
6515
|
+
kind: "simpleField",
|
|
6516
|
+
instr: run.field.instr,
|
|
6517
|
+
instanceId: run.fieldInstanceId,
|
|
6518
|
+
fieldFlags: run.fieldFlags
|
|
6519
|
+
};
|
|
5294
6520
|
return void 0;
|
|
5295
6521
|
}
|
|
5296
|
-
function sameGroup(
|
|
5297
|
-
if (!
|
|
5298
|
-
if (
|
|
5299
|
-
return
|
|
6522
|
+
function sameGroup(a2, b) {
|
|
6523
|
+
if (!a2 || !b) return a2 === b;
|
|
6524
|
+
if (a2.kind === "link" && b.kind === "link") return sameLink(a2.link, b.link);
|
|
6525
|
+
return a2.kind === "simpleField" && b.kind === "simpleField" && a2.instr === b.instr && a2.instanceId === b.instanceId && sameFieldFlags(a2.fieldFlags, b.fieldFlags);
|
|
5300
6526
|
}
|
|
5301
6527
|
|
|
5302
6528
|
// docx/paragraph-properties.ts
|
|
@@ -5528,8 +6754,8 @@ var IMAGE_RELATIONSHIP_TYPE = RELATIONSHIP_TYPES.image;
|
|
|
5528
6754
|
function scanUsedRelationshipIds(doc) {
|
|
5529
6755
|
const used = /* @__PURE__ */ new Set();
|
|
5530
6756
|
const visit = (node) => {
|
|
5531
|
-
for (const
|
|
5532
|
-
if (
|
|
6757
|
+
for (const attribute2 of Array.from(node.attributes))
|
|
6758
|
+
if (attribute2.namespaceURI === REL_NS) used.add(attribute2.value);
|
|
5533
6759
|
for (const child3 of Array.from(node.childNodes)) if (isElement(child3)) visit(child3);
|
|
5534
6760
|
};
|
|
5535
6761
|
if (doc.documentElement) visit(doc.documentElement);
|
|
@@ -5767,9 +6993,9 @@ function isXsdDateTime(value) {
|
|
|
5767
6993
|
return !zone || Number(zone[1]) <= 14 && Number(zone[2]) <= 59;
|
|
5768
6994
|
}
|
|
5769
6995
|
var Checker = class _Checker {
|
|
5770
|
-
constructor(issues,
|
|
6996
|
+
constructor(issues, path2) {
|
|
5771
6997
|
this.issues = issues;
|
|
5772
|
-
this.path =
|
|
6998
|
+
this.path = path2;
|
|
5773
6999
|
}
|
|
5774
7000
|
issues;
|
|
5775
7001
|
path;
|
|
@@ -5815,78 +7041,78 @@ var Checker = class _Checker {
|
|
|
5815
7041
|
|
|
5816
7042
|
// docx/validate-paragraph.ts
|
|
5817
7043
|
var isFraction = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1;
|
|
5818
|
-
function validateThemeReference(
|
|
7044
|
+
function validateThemeReference(c2, field, value) {
|
|
5819
7045
|
if (value === void 0) return;
|
|
5820
|
-
const at =
|
|
7046
|
+
const at = c2.at(`.${field}`);
|
|
5821
7047
|
at.theme("token", value.token);
|
|
5822
7048
|
at.check("tint", value.tint, isFraction, "must be a fraction between 0 and 1");
|
|
5823
7049
|
at.check("shade", value.shade, isFraction, "must be a fraction between 0 and 1");
|
|
5824
7050
|
}
|
|
5825
|
-
function validateRevision(
|
|
7051
|
+
function validateRevision(c2, field, revision) {
|
|
5826
7052
|
if (revision === void 0) return;
|
|
5827
|
-
|
|
7053
|
+
c2.at(`.${field}`).dateTime("date", revision.date);
|
|
5828
7054
|
}
|
|
5829
|
-
function validateFontSize(
|
|
5830
|
-
|
|
7055
|
+
function validateFontSize(c2, value) {
|
|
7056
|
+
c2.check(
|
|
5831
7057
|
"fontSize",
|
|
5832
7058
|
value,
|
|
5833
7059
|
(v) => typeof v === "number" && Number.isFinite(v) && Math.round(v * 2) >= 0,
|
|
5834
7060
|
"must be a finite, non-negative point size that converts to whole half-points (ST_HpsMeasure)"
|
|
5835
7061
|
);
|
|
5836
7062
|
}
|
|
5837
|
-
function validateRun(
|
|
5838
|
-
|
|
5839
|
-
validateFontSize(
|
|
5840
|
-
|
|
7063
|
+
function validateRun(c2, run) {
|
|
7064
|
+
c2.enum("ligatures", run.ligatures, isLigatures, "ST_Ligatures");
|
|
7065
|
+
validateFontSize(c2, run.fontSize);
|
|
7066
|
+
c2.check(
|
|
5841
7067
|
"textScalePercent",
|
|
5842
7068
|
run.textScalePercent,
|
|
5843
7069
|
(v) => Number.isSafeInteger(v) && v >= 0 && v <= 600,
|
|
5844
7070
|
"must be a whole percentage from 0 through 600 (ST_TextScale)"
|
|
5845
7071
|
);
|
|
5846
|
-
|
|
7072
|
+
c2.check(
|
|
5847
7073
|
"kerningHalfPoints",
|
|
5848
7074
|
run.kerningHalfPoints,
|
|
5849
7075
|
(v) => Number.isSafeInteger(v) && v >= 0,
|
|
5850
7076
|
"must be a nonnegative whole number of half-points (ST_HpsMeasure)"
|
|
5851
7077
|
);
|
|
5852
|
-
|
|
7078
|
+
c2.check(
|
|
5853
7079
|
"positionHalfPoints",
|
|
5854
7080
|
run.positionHalfPoints,
|
|
5855
7081
|
Number.isSafeInteger,
|
|
5856
7082
|
"must be a signed whole number of half-points (ST_SignedHpsMeasure)"
|
|
5857
7083
|
);
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
validateThemeReference(
|
|
5862
|
-
validateThemeReference(
|
|
5863
|
-
|
|
7084
|
+
c2.hex("color", run.color);
|
|
7085
|
+
c2.hex("shadingFill", run.shadingFill);
|
|
7086
|
+
c2.hex("underlineColor", run.underlineColor);
|
|
7087
|
+
validateThemeReference(c2, "colorTheme", run.colorTheme);
|
|
7088
|
+
validateThemeReference(c2, "shadingThemeFill", run.shadingThemeFill);
|
|
7089
|
+
c2.enum("underlineStyle", run.underlineStyle, isStUnderline, "ST_Underline");
|
|
5864
7090
|
if (run.highlight !== void 0 && !isStHighlightColor(run.highlight))
|
|
5865
|
-
|
|
7091
|
+
c2.fail(
|
|
5866
7092
|
"highlight",
|
|
5867
7093
|
run.highlight,
|
|
5868
7094
|
`Unsupported Word highlight token: ${String(run.highlight)}`
|
|
5869
7095
|
);
|
|
5870
|
-
|
|
5871
|
-
|
|
5872
|
-
|
|
7096
|
+
c2.enum("break", run.break, isStBrType, "ST_BrType");
|
|
7097
|
+
c2.enum("fieldChar", run.fieldChar, isStFldCharType, "ST_FldCharType");
|
|
7098
|
+
c2.check(
|
|
5873
7099
|
"characterSpacingTwips",
|
|
5874
7100
|
run.characterSpacingTwips,
|
|
5875
7101
|
(v) => typeof v === "number" && Number.isFinite(v),
|
|
5876
7102
|
"must be a finite number of twips (ST_SignedTwipsMeasure)"
|
|
5877
7103
|
);
|
|
5878
|
-
|
|
5879
|
-
|
|
5880
|
-
|
|
5881
|
-
|
|
7104
|
+
c2.language("language", run.language);
|
|
7105
|
+
c2.language("eastAsiaLanguage", run.eastAsiaLanguage);
|
|
7106
|
+
c2.language("bidiLanguage", run.bidiLanguage);
|
|
7107
|
+
c2.check(
|
|
5882
7108
|
"verticalAlign",
|
|
5883
7109
|
run.verticalAlign,
|
|
5884
7110
|
isStVerticalAlignRun,
|
|
5885
7111
|
'must be "baseline", "superscript" or "subscript"'
|
|
5886
7112
|
);
|
|
5887
|
-
validateRevision(
|
|
7113
|
+
validateRevision(c2, "revision", run.revision);
|
|
5888
7114
|
if (run.image) {
|
|
5889
|
-
const image =
|
|
7115
|
+
const image = c2.at(".image");
|
|
5890
7116
|
for (const key of ["widthPx", "heightPx"])
|
|
5891
7117
|
image.check(
|
|
5892
7118
|
key,
|
|
@@ -5896,14 +7122,14 @@ function validateRun(c, run) {
|
|
|
5896
7122
|
);
|
|
5897
7123
|
}
|
|
5898
7124
|
}
|
|
5899
|
-
function validateTabStop(
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
7125
|
+
function validateTabStop(c2, stop) {
|
|
7126
|
+
c2.signed("posTwips", stop.posTwips, "CT_TabStop/@pos");
|
|
7127
|
+
c2.enum("align", stop.align, isStTabJc, "ST_TabJc");
|
|
7128
|
+
c2.enum("leader", stop.leader, isStTabTlc, "ST_TabTlc");
|
|
5903
7129
|
}
|
|
5904
|
-
function validateParagraph(
|
|
7130
|
+
function validateParagraph(c2, paragraph) {
|
|
5905
7131
|
if (paragraph.dropCap) {
|
|
5906
|
-
const at =
|
|
7132
|
+
const at = c2.at(".dropCap");
|
|
5907
7133
|
at.check(
|
|
5908
7134
|
"style",
|
|
5909
7135
|
paragraph.dropCap.style,
|
|
@@ -5923,14 +7149,14 @@ function validateParagraph(c, paragraph) {
|
|
|
5923
7149
|
"must be a nonnegative whole number of twips"
|
|
5924
7150
|
);
|
|
5925
7151
|
}
|
|
5926
|
-
|
|
7152
|
+
c2.check(
|
|
5927
7153
|
"align",
|
|
5928
7154
|
paragraph.align,
|
|
5929
7155
|
(v) => v === "left" || v === "center" || v === "right" || v === "justify",
|
|
5930
7156
|
'must be "left", "center", "right" or "justify"'
|
|
5931
7157
|
);
|
|
5932
|
-
|
|
5933
|
-
|
|
7158
|
+
c2.enum("justification", paragraph.justification, isStJc, "ST_Jc");
|
|
7159
|
+
c2.check(
|
|
5934
7160
|
"direction",
|
|
5935
7161
|
paragraph.direction,
|
|
5936
7162
|
(v) => v === "ltr" || v === "rtl",
|
|
@@ -5942,7 +7168,7 @@ function validateParagraph(c, paragraph) {
|
|
|
5942
7168
|
"firstLineTwips",
|
|
5943
7169
|
"hangingTwips"
|
|
5944
7170
|
])
|
|
5945
|
-
|
|
7171
|
+
c2.unsigned(key, paragraph[key], "ST_TwipsMeasure");
|
|
5946
7172
|
for (const key of [
|
|
5947
7173
|
"lineSpacingTwips",
|
|
5948
7174
|
"indentLeftTwips",
|
|
@@ -5950,87 +7176,87 @@ function validateParagraph(c, paragraph) {
|
|
|
5950
7176
|
"indentStartTwips",
|
|
5951
7177
|
"indentEndTwips"
|
|
5952
7178
|
])
|
|
5953
|
-
|
|
5954
|
-
|
|
7179
|
+
c2.signed(key, paragraph[key], "ST_SignedTwipsMeasure");
|
|
7180
|
+
c2.enum("lineSpacingRule", paragraph.lineSpacingRule, isStLineSpacingRule, "ST_LineSpacingRule");
|
|
5955
7181
|
if (paragraph.numbering) {
|
|
5956
|
-
const numbering =
|
|
7182
|
+
const numbering = c2.at(".numbering");
|
|
5957
7183
|
numbering.unsigned("numId", paragraph.numbering.numId, "ST_DecimalNumber");
|
|
5958
7184
|
numbering.unsigned("level", paragraph.numbering.level, "ST_DecimalNumber");
|
|
5959
7185
|
}
|
|
5960
|
-
paragraph.tabStops?.forEach((stop, index) => validateTabStop(
|
|
5961
|
-
validateRevision(
|
|
5962
|
-
paragraph.runs.forEach((run, index) => validateRun(
|
|
7186
|
+
paragraph.tabStops?.forEach((stop, index) => validateTabStop(c2.at(`.tabStops[${index}]`), stop));
|
|
7187
|
+
validateRevision(c2, "markRevision", paragraph.markRevision);
|
|
7188
|
+
paragraph.runs.forEach((run, index) => validateRun(c2.at(`.runs[${index}]`), run));
|
|
5963
7189
|
}
|
|
5964
7190
|
|
|
5965
7191
|
// docx/validate-structure.ts
|
|
5966
|
-
function validateBorderSide(
|
|
7192
|
+
function validateBorderSide(c2, side) {
|
|
5967
7193
|
if (!side) return;
|
|
5968
|
-
|
|
5969
|
-
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
7194
|
+
c2.enum("style", side.style, isStBorder, "ST_Border");
|
|
7195
|
+
c2.unsigned("sizeEighthPoints", side.sizeEighthPoints, "ST_EighthPointMeasure");
|
|
7196
|
+
c2.unsigned("spacePoints", side.spacePoints, "ST_PointMeasure");
|
|
7197
|
+
c2.hex("color", side.color);
|
|
7198
|
+
c2.theme("themeColor", side.themeColor);
|
|
5973
7199
|
}
|
|
5974
|
-
function validateBorders(
|
|
7200
|
+
function validateBorders(c2, borders) {
|
|
5975
7201
|
if (!borders) return;
|
|
5976
7202
|
for (const side of ["top", "left", "bottom", "right", "insideH", "insideV"])
|
|
5977
|
-
validateBorderSide(
|
|
7203
|
+
validateBorderSide(c2.at(`.${side}`), borders[side]);
|
|
5978
7204
|
}
|
|
5979
|
-
function validateCell(
|
|
5980
|
-
|
|
7205
|
+
function validateCell(c2, cell) {
|
|
7206
|
+
c2.check(
|
|
5981
7207
|
"gridSpan",
|
|
5982
7208
|
cell.gridSpan,
|
|
5983
7209
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v >= 1,
|
|
5984
7210
|
"must be a positive integer (CT_DecimalNumber)"
|
|
5985
7211
|
);
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
validateThemeReference(
|
|
5991
|
-
validateBorders(
|
|
7212
|
+
c2.enum("verticalMerge", cell.verticalMerge, isStMerge, "ST_Merge");
|
|
7213
|
+
c2.unsigned("widthTwips", cell.widthTwips, "ST_TwipsMeasure");
|
|
7214
|
+
c2.enum("verticalAlign", cell.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
7215
|
+
c2.hex("shadingFill", cell.shadingFill);
|
|
7216
|
+
validateThemeReference(c2, "shadingThemeFill", cell.shadingThemeFill);
|
|
7217
|
+
validateBorders(c2.at(".borders"), cell.borders);
|
|
5992
7218
|
if (cell.margins)
|
|
5993
7219
|
for (const side of ["top", "bottom", "left", "right"])
|
|
5994
|
-
|
|
7220
|
+
c2.at(".margins").signed(side, cell.margins[side], "ST_SignedTwipsMeasure");
|
|
5995
7221
|
}
|
|
5996
|
-
function validateTable(
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
|
|
7222
|
+
function validateTable(c2, table) {
|
|
7223
|
+
c2.unsigned("widthTwips", table.widthTwips, "ST_TwipsMeasure");
|
|
7224
|
+
c2.signed("indentTwips", table.indentTwips, "ST_SignedTwipsMeasure");
|
|
7225
|
+
c2.check(
|
|
6000
7226
|
"alignment",
|
|
6001
7227
|
table.alignment,
|
|
6002
7228
|
(v) => v === "left" || v === "center" || v === "right",
|
|
6003
7229
|
'must be "left", "center" or "right"'
|
|
6004
7230
|
);
|
|
6005
|
-
|
|
7231
|
+
c2.enum("justification", table.justification, isStJcTable, "ST_JcTable");
|
|
6006
7232
|
table.grid?.forEach(
|
|
6007
|
-
(width, index) =>
|
|
7233
|
+
(width, index) => c2.at(`.grid[${index}]`).unsigned("width", width, "ST_TwipsMeasure")
|
|
6008
7234
|
);
|
|
6009
|
-
validateBorders(
|
|
7235
|
+
validateBorders(c2.at(".borders"), table.borders);
|
|
6010
7236
|
if (table.cellMargins)
|
|
6011
7237
|
for (const side of ["top", "bottom", "left", "right"])
|
|
6012
|
-
|
|
7238
|
+
c2.at(".cellMargins").signed(side, table.cellMargins[side], "ST_SignedTwipsMeasure");
|
|
6013
7239
|
table.rowProperties?.forEach((row, index) => {
|
|
6014
7240
|
if (row)
|
|
6015
|
-
|
|
7241
|
+
c2.at(`.rowProperties[${index}]`).unsigned("heightTwips", row.heightTwips, "ST_TwipsMeasure");
|
|
6016
7242
|
});
|
|
6017
7243
|
table.rows.forEach(
|
|
6018
|
-
(row, r) => row.forEach((cell, k) => validateCell(
|
|
7244
|
+
(row, r) => row.forEach((cell, k) => validateCell(c2.at(`.rows[${r}][${k}]`), cell))
|
|
6019
7245
|
);
|
|
6020
7246
|
}
|
|
6021
|
-
function validateSection(
|
|
6022
|
-
|
|
6023
|
-
|
|
6024
|
-
|
|
7247
|
+
function validateSection(c2, section) {
|
|
7248
|
+
c2.enum("type", section.type, isStSectionMark, "ST_SectionMark");
|
|
7249
|
+
c2.enum("orientation", section.orientation, isStPageOrientation, "ST_PageOrientation");
|
|
7250
|
+
c2.enum("verticalAlign", section.verticalAlign, isStVerticalJc, "ST_VerticalJc");
|
|
6025
7251
|
for (const key of ["pageWidthTwips", "pageHeightTwips"])
|
|
6026
|
-
|
|
7252
|
+
c2.check(
|
|
6027
7253
|
key,
|
|
6028
7254
|
section[key],
|
|
6029
7255
|
(v) => typeof v === "number" && Number.isSafeInteger(v) && v > 0,
|
|
6030
7256
|
"must be a positive integer number of twips (CT_PageSz)"
|
|
6031
7257
|
);
|
|
6032
7258
|
for (const key of ["marginTopTwips", "marginBottomTwips"])
|
|
6033
|
-
|
|
7259
|
+
c2.signed(key, section[key], "ST_SignedTwipsMeasure");
|
|
6034
7260
|
for (const key of [
|
|
6035
7261
|
"marginLeftTwips",
|
|
6036
7262
|
"marginRightTwips",
|
|
@@ -6038,8 +7264,8 @@ function validateSection(c, section) {
|
|
|
6038
7264
|
"footerDistanceTwips",
|
|
6039
7265
|
"gutterTwips"
|
|
6040
7266
|
])
|
|
6041
|
-
|
|
6042
|
-
const columns =
|
|
7267
|
+
c2.unsigned(key, section[key], "ST_TwipsMeasure");
|
|
7268
|
+
const columns = c2.at(".columns");
|
|
6043
7269
|
columns.check(
|
|
6044
7270
|
"count",
|
|
6045
7271
|
section.columns?.count,
|
|
@@ -6053,7 +7279,7 @@ function validateSection(c, section) {
|
|
|
6053
7279
|
at.unsigned("spacingTwips", column.spacingTwips, "ST_TwipsMeasure");
|
|
6054
7280
|
});
|
|
6055
7281
|
if (section.lineNumberSettings) {
|
|
6056
|
-
const line =
|
|
7282
|
+
const line = c2.at(".lineNumberSettings");
|
|
6057
7283
|
const settings = section.lineNumberSettings;
|
|
6058
7284
|
line.check(
|
|
6059
7285
|
"countBy",
|
|
@@ -6076,12 +7302,12 @@ function validateSection(c, section) {
|
|
|
6076
7302
|
line.unsigned("distanceTwips", settings.distanceTwips, "ST_TwipsMeasure");
|
|
6077
7303
|
}
|
|
6078
7304
|
if (section.pageNumbering) {
|
|
6079
|
-
const numbering =
|
|
7305
|
+
const numbering = c2.at(".pageNumbering");
|
|
6080
7306
|
numbering.enum("format", section.pageNumbering.format, isStNumberFormat, "ST_NumberFormat");
|
|
6081
7307
|
numbering.signed("start", section.pageNumbering.start, "ST_DecimalNumber");
|
|
6082
7308
|
}
|
|
6083
7309
|
}
|
|
6084
|
-
function validateNumberingCatalog(
|
|
7310
|
+
function validateNumberingCatalog(c2, catalog) {
|
|
6085
7311
|
const levelOf = (at, level) => {
|
|
6086
7312
|
at.enum("numFmt", level.numFmt, isStNumberFormat, "ST_NumberFormat");
|
|
6087
7313
|
at.signed("start", level.start, "ST_DecimalNumber");
|
|
@@ -6112,19 +7338,19 @@ function validateNumberingCatalog(c, catalog) {
|
|
|
6112
7338
|
};
|
|
6113
7339
|
for (const [id, abstract] of Object.entries(catalog.abstractNums))
|
|
6114
7340
|
for (const [key, level] of Object.entries(abstract.levels))
|
|
6115
|
-
levelOf(new Checker(
|
|
7341
|
+
levelOf(new Checker(c2.issues, `${c2.path}.abstractNums[${id}].levels[${key}]`), level);
|
|
6116
7342
|
for (const [id, num] of Object.entries(catalog.nums))
|
|
6117
7343
|
for (const [key, override] of Object.entries(num.levelOverrides ?? {})) {
|
|
6118
|
-
const at = new Checker(
|
|
7344
|
+
const at = new Checker(c2.issues, `${c2.path}.nums[${id}].levelOverrides[${key}]`);
|
|
6119
7345
|
at.signed("startOverride", override.startOverride, "ST_DecimalNumber");
|
|
6120
7346
|
if (override.lvl) levelOf(at.at(".lvl"), override.lvl);
|
|
6121
7347
|
}
|
|
6122
7348
|
}
|
|
6123
7349
|
|
|
6124
7350
|
// docx/validate-model.ts
|
|
6125
|
-
function validateBlocks(
|
|
7351
|
+
function validateBlocks(c2, blocks) {
|
|
6126
7352
|
blocks?.forEach((block, index) => {
|
|
6127
|
-
const at =
|
|
7353
|
+
const at = c2.at(`[${index}]`);
|
|
6128
7354
|
if (block.type === "paragraph") return validateParagraph(at, block);
|
|
6129
7355
|
validateTable(at, block);
|
|
6130
7356
|
block.rows.forEach(
|
|
@@ -6138,8 +7364,8 @@ function validateBlocks(c, blocks) {
|
|
|
6138
7364
|
}
|
|
6139
7365
|
function validateDocumentModel(model) {
|
|
6140
7366
|
const issues = [];
|
|
6141
|
-
const
|
|
6142
|
-
const page =
|
|
7367
|
+
const path2 = (suffix) => new Checker(issues, suffix);
|
|
7368
|
+
const page = path2("page");
|
|
6143
7369
|
for (const key of ["width", "height"])
|
|
6144
7370
|
page.check(
|
|
6145
7371
|
key,
|
|
@@ -6154,9 +7380,9 @@ function validateDocumentModel(model) {
|
|
|
6154
7380
|
(v) => typeof v === "number" && Number.isFinite(v) && (key === "marginTop" || key === "marginBottom" || v >= 0),
|
|
6155
7381
|
"must be a finite pixel size (converted to integer twips; left/right non-negative)"
|
|
6156
7382
|
);
|
|
6157
|
-
validateBlocks(
|
|
7383
|
+
validateBlocks(path2("blocks"), model.blocks);
|
|
6158
7384
|
model.sections?.forEach((section, index) => {
|
|
6159
|
-
const at =
|
|
7385
|
+
const at = path2(`sections[${index}]`);
|
|
6160
7386
|
validateSection(at, section);
|
|
6161
7387
|
for (const kind of ["headers", "footers"])
|
|
6162
7388
|
for (const [slot2, content] of Object.entries(section[kind] ?? {}))
|
|
@@ -6164,60 +7390,271 @@ function validateDocumentModel(model) {
|
|
|
6164
7390
|
});
|
|
6165
7391
|
for (const kind of ["footnotes", "endnotes"])
|
|
6166
7392
|
model[kind]?.forEach(
|
|
6167
|
-
(note, index) => validateBlocks(
|
|
7393
|
+
(note, index) => validateBlocks(path2(`${kind}[${index}].blocks`), note.blocks)
|
|
6168
7394
|
);
|
|
6169
7395
|
model.comments?.forEach(
|
|
6170
|
-
(comment, index) =>
|
|
7396
|
+
(comment, index) => path2(`comments[${index}]`).dateTime("date", comment.date)
|
|
6171
7397
|
);
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
7398
|
+
path2("model").hex("pageColor", model.pageColor);
|
|
7399
|
+
path2("model").enum("footnoteNumFmt", model.footnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
7400
|
+
path2("model").enum("endnoteNumFmt", model.endnoteNumFmt, isStNumberFormat, "ST_NumberFormat");
|
|
6175
7401
|
if (model.numberingCatalog)
|
|
6176
|
-
validateNumberingCatalog(
|
|
7402
|
+
validateNumberingCatalog(path2("numberingCatalog"), model.numberingCatalog);
|
|
6177
7403
|
return issues;
|
|
6178
7404
|
}
|
|
6179
|
-
function assertValidDocumentModel(model) {
|
|
6180
|
-
const issues = validateDocumentModel(model);
|
|
6181
|
-
if (issues.length) throw new DocxModelValidationError(issues);
|
|
7405
|
+
function assertValidDocumentModel(model) {
|
|
7406
|
+
const issues = validateDocumentModel(model);
|
|
7407
|
+
if (issues.length) throw new DocxModelValidationError(issues);
|
|
7408
|
+
}
|
|
7409
|
+
|
|
7410
|
+
// docx/numbering-parts.ts
|
|
7411
|
+
var CT_NS = "http://schemas.openxmlformats.org/package/2006/content-types";
|
|
7412
|
+
var REL_NS2 = "http://schemas.openxmlformats.org/package/2006/relationships";
|
|
7413
|
+
var NUMBERING_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering";
|
|
7414
|
+
var NUMBERING_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml";
|
|
7415
|
+
async function registerNumberingPart(zip) {
|
|
7416
|
+
const contentTypesPath = "[Content_Types].xml";
|
|
7417
|
+
const contentTypesFile = zip.file(contentTypesPath);
|
|
7418
|
+
const contentTypesXml = contentTypesFile ? await contentTypesFile.async("string") : `<?xml version="1.0"?><Types xmlns="${CT_NS}"/>`;
|
|
7419
|
+
const contentTypesDoc = parseXml2(contentTypesXml);
|
|
7420
|
+
const hasOverride = Array.from(contentTypesDoc.getElementsByTagNameNS(CT_NS, "Override")).some(
|
|
7421
|
+
(element) => element.getAttribute("PartName") === "/word/numbering.xml"
|
|
7422
|
+
);
|
|
7423
|
+
if (!hasOverride) {
|
|
7424
|
+
const override = contentTypesDoc.createElementNS(CT_NS, "Override");
|
|
7425
|
+
override.setAttribute("PartName", "/word/numbering.xml");
|
|
7426
|
+
override.setAttribute("ContentType", NUMBERING_CONTENT_TYPE);
|
|
7427
|
+
contentTypesDoc.documentElement.appendChild(override);
|
|
7428
|
+
zip.file(contentTypesPath, buildXml(contentTypesDoc));
|
|
7429
|
+
}
|
|
7430
|
+
const relsPath = "word/_rels/document.xml.rels";
|
|
7431
|
+
const relsFile = zip.file(relsPath);
|
|
7432
|
+
const relsXml = relsFile ? await relsFile.async("string") : `<?xml version="1.0"?><Relationships xmlns="${REL_NS2}"/>`;
|
|
7433
|
+
const relsDoc = parseXml2(relsXml);
|
|
7434
|
+
const existingIds = new Set(
|
|
7435
|
+
Array.from(relsDoc.getElementsByTagNameNS(REL_NS2, "Relationship")).map(
|
|
7436
|
+
(element) => element.getAttribute("Id") ?? ""
|
|
7437
|
+
)
|
|
7438
|
+
);
|
|
7439
|
+
let serial = 1;
|
|
7440
|
+
while (existingIds.has(`rId${serial}`)) serial++;
|
|
7441
|
+
const relationship = relsDoc.createElementNS(REL_NS2, "Relationship");
|
|
7442
|
+
relationship.setAttribute("Id", `rId${serial}`);
|
|
7443
|
+
relationship.setAttribute("Type", NUMBERING_RELATIONSHIP_TYPE);
|
|
7444
|
+
relationship.setAttribute("Target", "numbering.xml");
|
|
7445
|
+
relsDoc.documentElement.appendChild(relationship);
|
|
7446
|
+
zip.file(relsPath, buildXml(relsDoc));
|
|
7447
|
+
}
|
|
7448
|
+
|
|
7449
|
+
// docx/numbering-parse.ts
|
|
7450
|
+
var integer2 = (value, fallback) => parseInteger(value) ?? fallback;
|
|
7451
|
+
var flag = (element) => onOffElement(element) === true;
|
|
7452
|
+
function byName(root, local) {
|
|
7453
|
+
return Array.from(root.getElementsByTagName("*")).filter(
|
|
7454
|
+
(node) => node.nodeType === 1 && named2(node, local)
|
|
7455
|
+
);
|
|
7456
|
+
}
|
|
7457
|
+
function parseMarkerFormat(rPr) {
|
|
7458
|
+
if (!rPr) return void 0;
|
|
7459
|
+
const format = {};
|
|
7460
|
+
const family = getW(first2(rPr, "rFonts"), "ascii");
|
|
7461
|
+
if (family) format.fontFamily = family;
|
|
7462
|
+
const size = parseInteger(getW(first2(rPr, "sz"), "val"));
|
|
7463
|
+
if (size !== void 0 && size > 0) format.fontSizeHalfPoints = size;
|
|
7464
|
+
if (onOffElement(first2(rPr, "b")) === true) format.bold = true;
|
|
7465
|
+
if (onOffElement(first2(rPr, "i")) === true) format.italic = true;
|
|
7466
|
+
const color = getW(first2(rPr, "color"), "val");
|
|
7467
|
+
if (color && /^[0-9a-f]{6}$/i.test(color)) format.color = `#${color.toLowerCase()}`;
|
|
7468
|
+
return Object.keys(format).length ? format : void 0;
|
|
7469
|
+
}
|
|
7470
|
+
function parseNumberingLevel(lvl) {
|
|
7471
|
+
const level = integer2(getW(lvl, "ilvl"), 0);
|
|
7472
|
+
const start = integer2(getW(first2(lvl, "start"), "val"), 1);
|
|
7473
|
+
const numFmt = enumValue(isStNumberFormat, getW(first2(lvl, "numFmt"), "val"), "w:numFmt") ?? "decimal";
|
|
7474
|
+
const lvlText = getW(first2(lvl, "lvlText"), "val") ?? "";
|
|
7475
|
+
const jc = getW(first2(lvl, "lvlJc"), "val");
|
|
7476
|
+
const ind = first2(first2(lvl, "pPr"), "ind");
|
|
7477
|
+
const suffRaw = getW(first2(lvl, "suff"), "val");
|
|
7478
|
+
const result = { level, start, numFmt, lvlText };
|
|
7479
|
+
if (!first2(lvl, "start")) result.startWasOmitted = true;
|
|
7480
|
+
const paragraphStyleId = getW(first2(lvl, "pStyle"), "val");
|
|
7481
|
+
if (paragraphStyleId) result.paragraphStyleId = paragraphStyleId;
|
|
7482
|
+
if (jc === "left" || jc === "center" || jc === "right") result.lvlJc = jc;
|
|
7483
|
+
const left = getW(ind, "left") ?? getW(ind, "start");
|
|
7484
|
+
if (left !== void 0) result.indentLeftTwips = parseSignedTwips(left) ?? signedTwips(0);
|
|
7485
|
+
const hanging = getW(ind, "hanging");
|
|
7486
|
+
if (hanging !== void 0) result.hangingTwips = parseTwips(hanging) ?? twips(0);
|
|
7487
|
+
const firstLine = getW(ind, "firstLine");
|
|
7488
|
+
if (firstLine !== void 0) result.firstLineTwips = parseTwips(firstLine) ?? twips(0);
|
|
7489
|
+
const tabs = first2(first2(lvl, "pPr"), "tabs");
|
|
7490
|
+
const tab = tabs ? children2(tabs, "tab").find((stop) => getW(stop, "val") !== "clear") : void 0;
|
|
7491
|
+
const tabPos = tab ? parseTwips(getW(tab, "pos")) : void 0;
|
|
7492
|
+
if (tabPos !== void 0) result.tabStopTwips = tabPos;
|
|
7493
|
+
if (flag(first2(lvl, "isLgl"))) result.isLgl = true;
|
|
7494
|
+
const restart = getW(first2(lvl, "lvlRestart"), "val");
|
|
7495
|
+
if (restart !== void 0) result.lvlRestart = integer2(restart, 0);
|
|
7496
|
+
const marker = parseMarkerFormat(first2(lvl, "rPr"));
|
|
7497
|
+
if (marker) result.markerFormat = marker;
|
|
7498
|
+
result.suffix = suffRaw === "space" ? "space" : suffRaw === "nothing" ? "none" : "tab";
|
|
7499
|
+
return result;
|
|
7500
|
+
}
|
|
7501
|
+
function parseAbstractNum(element) {
|
|
7502
|
+
const id = getW(element, "abstractNumId");
|
|
7503
|
+
if (!id) return void 0;
|
|
7504
|
+
const levels = {};
|
|
7505
|
+
for (const lvl of children2(element, "lvl")) {
|
|
7506
|
+
const parsed = parseNumberingLevel(lvl);
|
|
7507
|
+
levels[parsed.level] = parsed;
|
|
7508
|
+
}
|
|
7509
|
+
return { id, levels };
|
|
7510
|
+
}
|
|
7511
|
+
function parseNum(element) {
|
|
7512
|
+
const id = getW(element, "numId");
|
|
7513
|
+
if (!id) return void 0;
|
|
7514
|
+
const abstractNumId = getW(first2(element, "abstractNumId"), "val") ?? "";
|
|
7515
|
+
const levelOverrides = {};
|
|
7516
|
+
for (const override of children2(element, "lvlOverride")) {
|
|
7517
|
+
const level = integer2(getW(override, "ilvl"), 0);
|
|
7518
|
+
const entry2 = {};
|
|
7519
|
+
const startOverride = getW(first2(override, "startOverride"), "val");
|
|
7520
|
+
if (startOverride !== void 0) entry2.startOverride = integer2(startOverride, 1);
|
|
7521
|
+
const lvl = first2(override, "lvl");
|
|
7522
|
+
if (lvl) entry2.lvl = parseNumberingLevel(lvl);
|
|
7523
|
+
if (Object.keys(entry2).length) levelOverrides[level] = entry2;
|
|
7524
|
+
}
|
|
7525
|
+
return {
|
|
7526
|
+
id,
|
|
7527
|
+
abstractNumId,
|
|
7528
|
+
...Object.keys(levelOverrides).length ? { levelOverrides } : {}
|
|
7529
|
+
};
|
|
7530
|
+
}
|
|
7531
|
+
function parseNumberingCatalog(xml) {
|
|
7532
|
+
const document = parseXml2(xml);
|
|
7533
|
+
const root = document.documentElement;
|
|
7534
|
+
const abstractNums = {};
|
|
7535
|
+
const warnings = [];
|
|
7536
|
+
for (const element of byName(root, "abstractNum")) {
|
|
7537
|
+
const parsed = parseAbstractNum(element);
|
|
7538
|
+
if (!parsed) continue;
|
|
7539
|
+
abstractNums[parsed.id] = parsed;
|
|
7540
|
+
const link = getW(first2(element, "numStyleLink"), "val");
|
|
7541
|
+
if (link)
|
|
7542
|
+
warnings.push(
|
|
7543
|
+
`Numbering definition abstractNum ${parsed.id} links to style "${link}"; style-linked numbering levels are not resolved.`
|
|
7544
|
+
);
|
|
7545
|
+
if (byName(element, "lvlPicBulletId").length)
|
|
7546
|
+
warnings.push(
|
|
7547
|
+
`Numbering definition abstractNum ${parsed.id} uses a picture bullet; picture bullets are not rendered.`
|
|
7548
|
+
);
|
|
7549
|
+
}
|
|
7550
|
+
const nums = {};
|
|
7551
|
+
for (const element of byName(root, "num")) {
|
|
7552
|
+
const parsed = parseNum(element);
|
|
7553
|
+
if (parsed) nums[parsed.id] = parsed;
|
|
7554
|
+
}
|
|
7555
|
+
return { abstractNums, nums, warnings: [...new Set(warnings)] };
|
|
7556
|
+
}
|
|
7557
|
+
function resolveNumberingLevel(catalog, numId, level) {
|
|
7558
|
+
const num = catalog.nums[numId];
|
|
7559
|
+
if (!num) return void 0;
|
|
7560
|
+
const override = num.levelOverrides?.[level];
|
|
7561
|
+
const sourceAbstract = catalog.abstractNums[num.abstractNumId]?.levels[level];
|
|
7562
|
+
const abstract = sourceAbstract?.startWasOmitted && sourceAbstract.start === 1 ? { ...sourceAbstract, start: 0 } : sourceAbstract;
|
|
7563
|
+
let base = override?.lvl ?? abstract;
|
|
7564
|
+
if (!base) return void 0;
|
|
7565
|
+
if (override?.lvl) {
|
|
7566
|
+
const { lvlRestart: _ignored, ...properties } = base;
|
|
7567
|
+
base = {
|
|
7568
|
+
...properties,
|
|
7569
|
+
...abstract?.lvlRestart !== void 0 ? { lvlRestart: abstract.lvlRestart } : {}
|
|
7570
|
+
};
|
|
7571
|
+
}
|
|
7572
|
+
let start = override?.startOverride ?? base.start;
|
|
7573
|
+
if (override?.lvl) {
|
|
7574
|
+
if (abstract?.lvlRestart === 0 && override.startOverride === void 0) start = abstract.start;
|
|
7575
|
+
else if (!override.lvl.startWasOmitted || override.lvl.start !== 1) start = override.lvl.start;
|
|
7576
|
+
else start = override.startOverride ?? 0;
|
|
7577
|
+
}
|
|
7578
|
+
return start !== base.start ? { ...base, start } : base;
|
|
7579
|
+
}
|
|
7580
|
+
|
|
7581
|
+
// docx/numbering-start-edit.ts
|
|
7582
|
+
function assertListStartValue(level, start) {
|
|
7583
|
+
if (!Number.isInteger(level) || level < 0 || level > 8)
|
|
7584
|
+
throw new Error("List level must be an integer from 0 through 8.");
|
|
7585
|
+
if (!Number.isInteger(start) || start < 0 || start > 2147483647)
|
|
7586
|
+
throw new Error("List start must be an integer from 0 through 2147483647.");
|
|
6182
7587
|
}
|
|
6183
7588
|
|
|
6184
|
-
// docx/numbering-
|
|
6185
|
-
|
|
6186
|
-
|
|
6187
|
-
|
|
6188
|
-
|
|
6189
|
-
|
|
6190
|
-
|
|
6191
|
-
|
|
6192
|
-
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
)
|
|
6197
|
-
|
|
6198
|
-
|
|
6199
|
-
|
|
6200
|
-
|
|
6201
|
-
|
|
6202
|
-
|
|
7589
|
+
// docx/numbering-start-patch.ts
|
|
7590
|
+
function withoutStarts(num) {
|
|
7591
|
+
const { levelOverrides, ...properties } = num;
|
|
7592
|
+
const kept = {};
|
|
7593
|
+
for (const [level, override] of Object.entries(levelOverrides ?? {})) {
|
|
7594
|
+
const { startOverride: _start, ...rest } = override;
|
|
7595
|
+
if (Object.keys(rest).length) kept[level] = rest;
|
|
7596
|
+
}
|
|
7597
|
+
return { ...properties, ...Object.keys(kept).length ? { levelOverrides: kept } : {} };
|
|
7598
|
+
}
|
|
7599
|
+
function numberingStartChanges(prior, next) {
|
|
7600
|
+
const changes = [];
|
|
7601
|
+
for (const [id, previous] of Object.entries(prior?.nums ?? {})) {
|
|
7602
|
+
const current = next.nums[id];
|
|
7603
|
+
if (!current || JSON.stringify(withoutStarts(current)) !== JSON.stringify(withoutStarts(previous)))
|
|
7604
|
+
throw new Error(
|
|
7605
|
+
`Cannot edit numbering definition num "${id}" except its supported start overrides.`
|
|
7606
|
+
);
|
|
7607
|
+
for (const key of /* @__PURE__ */ new Set([
|
|
7608
|
+
...Object.keys(previous.levelOverrides ?? {}),
|
|
7609
|
+
...Object.keys(current.levelOverrides ?? {})
|
|
7610
|
+
])) {
|
|
7611
|
+
const level = Number(key);
|
|
7612
|
+
const old = previous.levelOverrides?.[level];
|
|
7613
|
+
const value = current.levelOverrides?.[level];
|
|
7614
|
+
if (old?.startOverride === value?.startOverride) continue;
|
|
7615
|
+
if (value?.startOverride === void 0)
|
|
7616
|
+
throw new Error("Removing a list start override is unsupported.");
|
|
7617
|
+
assertListStartValue(level, value.startOverride);
|
|
7618
|
+
if (String(level) !== key || !prior || !resolveNumberingLevel(prior, id, level))
|
|
7619
|
+
throw new Error("List instance or level does not exist.");
|
|
7620
|
+
if (old?.lvl || value.lvl)
|
|
7621
|
+
throw new Error("Changing starts with a full level override is unsupported.");
|
|
7622
|
+
changes.push({ numId: id, level, start: value.startOverride });
|
|
7623
|
+
}
|
|
7624
|
+
}
|
|
7625
|
+
return changes;
|
|
7626
|
+
}
|
|
7627
|
+
function patchNumberingStarts(doc, changes) {
|
|
7628
|
+
const sameNumber = (source, expected) => source !== void 0 && /^[+-]?\d+$/.test(source) && Number(source) === Number(expected);
|
|
7629
|
+
const prepared = changes.map((change) => {
|
|
7630
|
+
const nums = children2(doc.documentElement, "num").filter(
|
|
7631
|
+
(num2) => sameNumber(getW(num2, "numId"), change.numId)
|
|
7632
|
+
);
|
|
7633
|
+
if (nums.length !== 1 || getW(nums[0], "numId") !== change.numId)
|
|
7634
|
+
throw new Error("Cannot patch an ambiguous or missing source list instance.");
|
|
7635
|
+
const num = nums[0];
|
|
7636
|
+
const overrides = children2(num, "lvlOverride").filter(
|
|
7637
|
+
(node) => sameNumber(getW(node, "ilvl"), String(change.level))
|
|
7638
|
+
);
|
|
7639
|
+
if (overrides.length > 1) throw new Error("Cannot patch duplicate source level overrides.");
|
|
7640
|
+
const override = overrides[0];
|
|
7641
|
+
if (override && getW(override, "ilvl") !== String(change.level))
|
|
7642
|
+
throw new Error("Cannot patch a noncanonical source level override.");
|
|
7643
|
+
if (override && (children2(override, "lvl").length || children2(override, "startOverride").length > 1))
|
|
7644
|
+
throw new Error("Cannot patch a full or ambiguous source level override.");
|
|
7645
|
+
return { change, num, override };
|
|
7646
|
+
});
|
|
7647
|
+
for (const { change, num, override: existing } of prepared) {
|
|
7648
|
+
const override = existing ?? makeW(doc, "lvlOverride");
|
|
7649
|
+
if (!existing) {
|
|
7650
|
+
override.setAttributeNS(WORD_NS, "w:ilvl", String(change.level));
|
|
7651
|
+
const after = children2(num, "lvlOverride").at(-1) ?? children2(num, "abstractNumId")[0];
|
|
7652
|
+
num.insertBefore(override, after?.nextSibling ?? null);
|
|
7653
|
+
}
|
|
7654
|
+
const start = children2(override, "startOverride")[0] ?? makeW(doc, "startOverride");
|
|
7655
|
+
start.setAttributeNS(WORD_NS, "w:val", String(change.start));
|
|
7656
|
+
if (!start.parentNode) override.insertBefore(start, override.firstChild);
|
|
6203
7657
|
}
|
|
6204
|
-
const relsPath = "word/_rels/document.xml.rels";
|
|
6205
|
-
const relsFile = zip.file(relsPath);
|
|
6206
|
-
const relsXml = relsFile ? await relsFile.async("string") : `<?xml version="1.0"?><Relationships xmlns="${REL_NS2}"/>`;
|
|
6207
|
-
const relsDoc = parseXml2(relsXml);
|
|
6208
|
-
const existingIds = new Set(
|
|
6209
|
-
Array.from(relsDoc.getElementsByTagNameNS(REL_NS2, "Relationship")).map(
|
|
6210
|
-
(element) => element.getAttribute("Id") ?? ""
|
|
6211
|
-
)
|
|
6212
|
-
);
|
|
6213
|
-
let serial = 1;
|
|
6214
|
-
while (existingIds.has(`rId${serial}`)) serial++;
|
|
6215
|
-
const relationship = relsDoc.createElementNS(REL_NS2, "Relationship");
|
|
6216
|
-
relationship.setAttribute("Id", `rId${serial}`);
|
|
6217
|
-
relationship.setAttribute("Type", NUMBERING_RELATIONSHIP_TYPE);
|
|
6218
|
-
relationship.setAttribute("Target", "numbering.xml");
|
|
6219
|
-
relsDoc.documentElement.appendChild(relationship);
|
|
6220
|
-
zip.file(relsPath, buildXml(relsDoc));
|
|
6221
7658
|
}
|
|
6222
7659
|
|
|
6223
7660
|
// docx/numbering-package.ts
|
|
@@ -6289,7 +7726,7 @@ function buildAbstractNumElement(doc, def) {
|
|
|
6289
7726
|
const element = makeW(doc, "abstractNum");
|
|
6290
7727
|
setAttribute8(element, "abstractNumId", def.id);
|
|
6291
7728
|
element.appendChild(valueElement(doc, "multiLevelType", "hybridMultilevel"));
|
|
6292
|
-
for (const level of Object.values(def.levels).sort((
|
|
7729
|
+
for (const level of Object.values(def.levels).sort((a2, b) => a2.level - b.level))
|
|
6293
7730
|
element.appendChild(buildLevelElement(doc, level));
|
|
6294
7731
|
return element;
|
|
6295
7732
|
}
|
|
@@ -6324,17 +7761,14 @@ async function applyNumberingCatalog(zip, model, binding) {
|
|
|
6324
7761
|
throw new Error(
|
|
6325
7762
|
`Cannot edit numbering definition abstractNum "${id}"; the original numbering.xml is preserved unchanged.`
|
|
6326
7763
|
);
|
|
6327
|
-
|
|
6328
|
-
if (JSON.stringify(next.nums[id]) !== JSON.stringify(prior?.nums[id]))
|
|
6329
|
-
throw new Error(
|
|
6330
|
-
`Cannot edit numbering definition num "${id}"; the original numbering.xml is preserved unchanged.`
|
|
6331
|
-
);
|
|
7764
|
+
const startChanges = numberingStartChanges(prior, next);
|
|
6332
7765
|
const newAbstractIds = Object.keys(next.abstractNums).filter((id) => !prior?.abstractNums[id]);
|
|
6333
7766
|
const newNumIds = Object.keys(next.nums).filter((id) => !prior?.nums[id]);
|
|
6334
|
-
if (!newAbstractIds.length && !newNumIds.length) return;
|
|
7767
|
+
if (!newAbstractIds.length && !newNumIds.length && !startChanges.length) return;
|
|
6335
7768
|
const existingFile = zip.file("word/numbering.xml");
|
|
6336
7769
|
const doc = existingFile ? parseXml2(await existingFile.async("string")) : parseXml2(`<w:numbering xmlns:w="${WORD_NS}"/>`);
|
|
6337
7770
|
const root = doc.documentElement;
|
|
7771
|
+
patchNumberingStarts(doc, startChanges);
|
|
6338
7772
|
const cleanup = children2(root, "numIdMacAtCleanup")[0] ?? null;
|
|
6339
7773
|
const firstNum = children2(root, "num")[0] ?? cleanup;
|
|
6340
7774
|
for (const id of newAbstractIds) {
|
|
@@ -6411,13 +7845,13 @@ async function applyStyleNumbering(zip, model, base) {
|
|
|
6411
7845
|
// docx/part-relationships.ts
|
|
6412
7846
|
var CONTENT_TYPES_PART = "[Content_Types].xml";
|
|
6413
7847
|
var extensionOf = (partName) => partName.split(".").pop()?.toLowerCase() ?? "";
|
|
6414
|
-
function
|
|
7848
|
+
function relationshipsPartFor2(partName) {
|
|
6415
7849
|
const slash = partName.lastIndexOf("/");
|
|
6416
7850
|
return `${partName.slice(0, slash)}/_rels/${partName.slice(slash + 1)}.rels`;
|
|
6417
7851
|
}
|
|
6418
7852
|
async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
6419
7853
|
const declared = parseRelationships(
|
|
6420
|
-
await zip.file(
|
|
7854
|
+
await zip.file(relationshipsPartFor2(partName))?.async("string")
|
|
6421
7855
|
);
|
|
6422
7856
|
const allocator = new RelationshipAllocator(
|
|
6423
7857
|
[...scanUsedRelationshipIds(doc), ...declared.keys()],
|
|
@@ -6428,7 +7862,7 @@ async function allocatorForPart(zip, partName, doc, docPrIds) {
|
|
|
6428
7862
|
}
|
|
6429
7863
|
async function writeNewRelationships(zip, partName, created, pendingMedia) {
|
|
6430
7864
|
if (!created.length) return;
|
|
6431
|
-
const relsPath =
|
|
7865
|
+
const relsPath = relationshipsPartFor2(partName);
|
|
6432
7866
|
const relationships = parseRelationships(await zip.file(relsPath)?.async("string"));
|
|
6433
7867
|
let contentTypesXml = await zip.file(CONTENT_TYPES_PART)?.async("string");
|
|
6434
7868
|
for (const relationship of created) {
|
|
@@ -6512,8 +7946,8 @@ async function createHeaderFooterParts(zip, model, base, docPrIds) {
|
|
|
6512
7946
|
(_match, start, end) => `${start}${docPrIds.next()}${end}`
|
|
6513
7947
|
) : xml
|
|
6514
7948
|
);
|
|
6515
|
-
const rels = zip.file(
|
|
6516
|
-
if (rels) zip.file(
|
|
7949
|
+
const rels = zip.file(relationshipsPartFor2(content.sourcePartName));
|
|
7950
|
+
if (rels) zip.file(relationshipsPartFor2(partName), await rels.async("uint8array"));
|
|
6517
7951
|
}
|
|
6518
7952
|
await ensureContentTypeOverride(
|
|
6519
7953
|
zip,
|
|
@@ -7200,23 +8634,31 @@ function createFieldTracker() {
|
|
|
7200
8634
|
const stack = [];
|
|
7201
8635
|
return (element, run) => {
|
|
7202
8636
|
let resultInstr;
|
|
8637
|
+
let resultLocked;
|
|
7203
8638
|
for (const child3 of Array.from(element.childNodes)) {
|
|
7204
8639
|
if (!isElement(child3)) continue;
|
|
7205
8640
|
if (named2(child3, "fldChar")) {
|
|
7206
8641
|
const type = getW(child3, "fldCharType");
|
|
7207
|
-
if (type === "begin")
|
|
7208
|
-
|
|
8642
|
+
if (type === "begin") {
|
|
8643
|
+
const locked = parseFieldFlags(child3)?.locked;
|
|
8644
|
+
stack.push({ instr: "", inResult: false, ...locked !== void 0 && { locked } });
|
|
8645
|
+
} else if (type === "separate") {
|
|
7209
8646
|
const top = stack.at(-1);
|
|
7210
8647
|
if (top) top.inResult = true;
|
|
7211
8648
|
} else if (type === "end") stack.pop();
|
|
7212
8649
|
} else {
|
|
7213
8650
|
const top = stack.at(-1);
|
|
7214
8651
|
if (named2(child3, "instrText") && top && !top.inResult) top.instr += textContent(child3);
|
|
7215
|
-
else if ((named2(child3, "t") || named2(child3, "delText")) && top?.inResult)
|
|
8652
|
+
else if ((named2(child3, "t") || named2(child3, "delText")) && top?.inResult) {
|
|
7216
8653
|
resultInstr = top.instr.trim();
|
|
8654
|
+
resultLocked = top.locked;
|
|
8655
|
+
}
|
|
7217
8656
|
}
|
|
7218
8657
|
}
|
|
7219
|
-
if (resultInstr)
|
|
8658
|
+
if (resultInstr) {
|
|
8659
|
+
run.field = { instr: resultInstr };
|
|
8660
|
+
if (resultLocked !== void 0) run.fieldFlags = { locked: resultLocked };
|
|
8661
|
+
}
|
|
7220
8662
|
return run;
|
|
7221
8663
|
};
|
|
7222
8664
|
}
|
|
@@ -7227,7 +8669,11 @@ function storyFieldResults(container) {
|
|
|
7227
8669
|
if (named2(element, "fldSimple") || named2(element, "txbxContent")) return;
|
|
7228
8670
|
if (named2(element, "r")) {
|
|
7229
8671
|
const run = trackField(element, { text: "" });
|
|
7230
|
-
if (run.field)
|
|
8672
|
+
if (run.field)
|
|
8673
|
+
metadata.set(element, {
|
|
8674
|
+
field: run.field,
|
|
8675
|
+
...run.fieldFlags && { fieldFlags: run.fieldFlags }
|
|
8676
|
+
});
|
|
7231
8677
|
return;
|
|
7232
8678
|
}
|
|
7233
8679
|
for (const child3 of Array.from(element.childNodes)) if (isElement(child3)) visit(child3);
|
|
@@ -7319,7 +8765,11 @@ function parseRun2(node, revision) {
|
|
|
7319
8765
|
if (breakKind) run.break = breakKind;
|
|
7320
8766
|
if (noteReference) run.noteReference = noteReference;
|
|
7321
8767
|
if (noteMark) run.noteMark = noteMark;
|
|
7322
|
-
if (fieldChar)
|
|
8768
|
+
if (fieldChar) {
|
|
8769
|
+
run.fieldChar = fieldChar;
|
|
8770
|
+
const flags = parseFieldFlags(only);
|
|
8771
|
+
if (flags) run.fieldFlags = flags;
|
|
8772
|
+
}
|
|
7323
8773
|
if (fieldCode !== void 0) run.fieldCode = fieldCode;
|
|
7324
8774
|
const runRevision = revision ?? runFormatRevision(props);
|
|
7325
8775
|
if (runRevision) run.revision = runRevision;
|
|
@@ -7338,8 +8788,11 @@ function parseParagraph2(node, id, fields) {
|
|
|
7338
8788
|
(element, revision) => {
|
|
7339
8789
|
const run = parseRun2(element, revision);
|
|
7340
8790
|
if (!fields) return trackField(element, run);
|
|
7341
|
-
const
|
|
7342
|
-
if (
|
|
8791
|
+
const metadata = fields.get(element);
|
|
8792
|
+
if (metadata) {
|
|
8793
|
+
run.field = { ...metadata.field };
|
|
8794
|
+
if (metadata.fieldFlags) run.fieldFlags = { ...metadata.fieldFlags };
|
|
8795
|
+
}
|
|
7343
8796
|
return run;
|
|
7344
8797
|
},
|
|
7345
8798
|
(item) => {
|
|
@@ -7361,20 +8814,23 @@ function parseParagraph2(node, id, fields) {
|
|
|
7361
8814
|
);
|
|
7362
8815
|
if (link) return results.map((run) => ({ ...run, link }));
|
|
7363
8816
|
const field = { instr: instr.trim(), simple: true };
|
|
8817
|
+
const flags = parseFieldFlags(item);
|
|
8818
|
+
const fieldState = flags ? { fieldFlags: flags } : {};
|
|
7364
8819
|
const fieldInstanceId = `${id}:simple-field-${simpleFieldIndex++}`;
|
|
7365
|
-
if (!results.length)
|
|
8820
|
+
if (!results.length)
|
|
8821
|
+
return [{ text: fieldPlaceholderText(instr), field, fieldInstanceId, ...fieldState }];
|
|
7366
8822
|
if (results.every(
|
|
7367
8823
|
(run) => !run.text && !run.equation && !run.image && !run.break && !run.noteReference && !run.noteMark && !run.fieldChar && run.fieldCode === void 0
|
|
7368
8824
|
)) {
|
|
7369
8825
|
return [
|
|
7370
|
-
{ text: "", fieldChar: "begin" },
|
|
8826
|
+
{ text: "", fieldChar: "begin", ...fieldState },
|
|
7371
8827
|
{ text: "", fieldCode: instr },
|
|
7372
8828
|
{ text: "", fieldChar: "separate" },
|
|
7373
8829
|
...results,
|
|
7374
8830
|
{ text: "", fieldChar: "end" }
|
|
7375
8831
|
];
|
|
7376
8832
|
}
|
|
7377
|
-
return results.map((run) => ({ ...run, field, fieldInstanceId }));
|
|
8833
|
+
return results.map((run) => ({ ...run, field, fieldInstanceId, ...fieldState }));
|
|
7378
8834
|
},
|
|
7379
8835
|
(hyperlink) => {
|
|
7380
8836
|
if (!activeContext) return void 0;
|
|
@@ -7564,15 +9020,15 @@ function parseNotesPart(xml, kind, parseBlocks) {
|
|
|
7564
9020
|
}
|
|
7565
9021
|
|
|
7566
9022
|
// docx/document-parts.ts
|
|
7567
|
-
async function partContext(zip,
|
|
9023
|
+
async function partContext(zip, path2, base) {
|
|
7568
9024
|
if (!base) return void 0;
|
|
7569
|
-
const slash =
|
|
7570
|
-
const relsPath = `${
|
|
9025
|
+
const slash = path2.lastIndexOf("/");
|
|
9026
|
+
const relsPath = `${path2.slice(0, slash)}/_rels/${path2.slice(slash + 1)}.rels`;
|
|
7571
9027
|
return { ...base, rels: parseRelationships(await readPart(zip, relsPath)) };
|
|
7572
9028
|
}
|
|
7573
9029
|
var FIELD_MARKUP = /<w:(?:fldSimple|instrText|fldChar)\b/;
|
|
7574
|
-
async function readPart(zip,
|
|
7575
|
-
return zip.file(
|
|
9030
|
+
async function readPart(zip, path2) {
|
|
9031
|
+
return zip.file(path2)?.async("string");
|
|
7576
9032
|
}
|
|
7577
9033
|
function parseSettings(xml) {
|
|
7578
9034
|
if (!xml) return { evenAndOddHeaders: false, autoHyphenation: false };
|
|
@@ -7600,21 +9056,21 @@ async function resolveSlots(zip, relationships, refs, cache, fieldMarkup, drawin
|
|
|
7600
9056
|
for (const ref of refs) {
|
|
7601
9057
|
const relationship = relationships.get(ref.rId);
|
|
7602
9058
|
if (!relationship) continue;
|
|
7603
|
-
const
|
|
7604
|
-
let blocks = cache.get(
|
|
9059
|
+
const path2 = resolvePartPath("word/document.xml", relationship.target);
|
|
9060
|
+
let blocks = cache.get(path2);
|
|
7605
9061
|
if (!blocks) {
|
|
7606
|
-
const xml = await readPart(zip,
|
|
9062
|
+
const xml = await readPart(zip, path2);
|
|
7607
9063
|
if (xml === void 0) continue;
|
|
7608
9064
|
if (FIELD_MARKUP.test(xml)) fieldMarkup.seen = true;
|
|
7609
|
-
const context = await partContext(zip,
|
|
9065
|
+
const context = await partContext(zip, path2, drawings);
|
|
7610
9066
|
const root = parseXml2(xml).documentElement;
|
|
7611
9067
|
blocks = withParseWarnings(
|
|
7612
9068
|
sink2,
|
|
7613
|
-
() => parseBlocksFromContainer(root, `${
|
|
9069
|
+
() => parseBlocksFromContainer(root, `${path2.replace(/[^a-z0-9]+/gi, "")}-`, context)
|
|
7614
9070
|
);
|
|
7615
|
-
cache.set(
|
|
9071
|
+
cache.set(path2, blocks);
|
|
7616
9072
|
}
|
|
7617
|
-
slots[ref.slot] = { blocks, partName:
|
|
9073
|
+
slots[ref.slot] = { blocks, partName: path2 };
|
|
7618
9074
|
}
|
|
7619
9075
|
return Object.keys(slots).length ? slots : void 0;
|
|
7620
9076
|
}
|
|
@@ -7650,8 +9106,8 @@ async function parseDocumentParts(zip, body, blocks, drawings) {
|
|
|
7650
9106
|
}
|
|
7651
9107
|
const footnotesXml = await readPart(zip, "word/footnotes.xml");
|
|
7652
9108
|
const endnotesXml = await readPart(zip, "word/endnotes.xml");
|
|
7653
|
-
const notesParser = async (
|
|
7654
|
-
const context = await partContext(zip,
|
|
9109
|
+
const notesParser = async (path2) => {
|
|
9110
|
+
const context = await partContext(zip, path2, drawings);
|
|
7655
9111
|
return (container, prefix) => withParseWarnings(warnings, () => parseBlocksFromContainer(container, prefix, context));
|
|
7656
9112
|
};
|
|
7657
9113
|
const footnotes = footnotesXml ? parseNotesPart(footnotesXml, "footnote", await notesParser("word/footnotes.xml")) : void 0;
|
|
@@ -7676,115 +9132,6 @@ async function parseDocumentParts(zip, body, blocks, drawings) {
|
|
|
7676
9132
|
};
|
|
7677
9133
|
}
|
|
7678
9134
|
|
|
7679
|
-
// docx/numbering-parse.ts
|
|
7680
|
-
var integer2 = (value, fallback) => parseInteger(value) ?? fallback;
|
|
7681
|
-
var flag = (element) => onOffElement(element) === true;
|
|
7682
|
-
function byName(root, local) {
|
|
7683
|
-
return Array.from(root.getElementsByTagName("*")).filter(
|
|
7684
|
-
(node) => node.nodeType === 1 && named2(node, local)
|
|
7685
|
-
);
|
|
7686
|
-
}
|
|
7687
|
-
function parseMarkerFormat(rPr) {
|
|
7688
|
-
if (!rPr) return void 0;
|
|
7689
|
-
const format = {};
|
|
7690
|
-
const family = getW(first2(rPr, "rFonts"), "ascii");
|
|
7691
|
-
if (family) format.fontFamily = family;
|
|
7692
|
-
const size = parseInteger(getW(first2(rPr, "sz"), "val"));
|
|
7693
|
-
if (size !== void 0 && size > 0) format.fontSizeHalfPoints = size;
|
|
7694
|
-
if (onOffElement(first2(rPr, "b")) === true) format.bold = true;
|
|
7695
|
-
if (onOffElement(first2(rPr, "i")) === true) format.italic = true;
|
|
7696
|
-
const color = getW(first2(rPr, "color"), "val");
|
|
7697
|
-
if (color && /^[0-9a-f]{6}$/i.test(color)) format.color = `#${color.toLowerCase()}`;
|
|
7698
|
-
return Object.keys(format).length ? format : void 0;
|
|
7699
|
-
}
|
|
7700
|
-
function parseNumberingLevel(lvl) {
|
|
7701
|
-
const level = integer2(getW(lvl, "ilvl"), 0);
|
|
7702
|
-
const start = integer2(getW(first2(lvl, "start"), "val"), 1);
|
|
7703
|
-
const numFmt = enumValue(isStNumberFormat, getW(first2(lvl, "numFmt"), "val"), "w:numFmt") ?? "decimal";
|
|
7704
|
-
const lvlText = getW(first2(lvl, "lvlText"), "val") ?? "";
|
|
7705
|
-
const jc = getW(first2(lvl, "lvlJc"), "val");
|
|
7706
|
-
const ind = first2(first2(lvl, "pPr"), "ind");
|
|
7707
|
-
const suffRaw = getW(first2(lvl, "suff"), "val");
|
|
7708
|
-
const result = { level, start, numFmt, lvlText };
|
|
7709
|
-
if (!first2(lvl, "start")) result.startWasOmitted = true;
|
|
7710
|
-
const paragraphStyleId = getW(first2(lvl, "pStyle"), "val");
|
|
7711
|
-
if (paragraphStyleId) result.paragraphStyleId = paragraphStyleId;
|
|
7712
|
-
if (jc === "left" || jc === "center" || jc === "right") result.lvlJc = jc;
|
|
7713
|
-
const left = getW(ind, "left") ?? getW(ind, "start");
|
|
7714
|
-
if (left !== void 0) result.indentLeftTwips = parseSignedTwips(left) ?? signedTwips(0);
|
|
7715
|
-
const hanging = getW(ind, "hanging");
|
|
7716
|
-
if (hanging !== void 0) result.hangingTwips = parseTwips(hanging) ?? twips(0);
|
|
7717
|
-
const firstLine = getW(ind, "firstLine");
|
|
7718
|
-
if (firstLine !== void 0) result.firstLineTwips = parseTwips(firstLine) ?? twips(0);
|
|
7719
|
-
const tabs = first2(first2(lvl, "pPr"), "tabs");
|
|
7720
|
-
const tab = tabs ? children2(tabs, "tab").find((stop) => getW(stop, "val") !== "clear") : void 0;
|
|
7721
|
-
const tabPos = tab ? parseTwips(getW(tab, "pos")) : void 0;
|
|
7722
|
-
if (tabPos !== void 0) result.tabStopTwips = tabPos;
|
|
7723
|
-
if (flag(first2(lvl, "isLgl"))) result.isLgl = true;
|
|
7724
|
-
const restart = getW(first2(lvl, "lvlRestart"), "val");
|
|
7725
|
-
if (restart !== void 0) result.lvlRestart = integer2(restart, 0);
|
|
7726
|
-
const marker = parseMarkerFormat(first2(lvl, "rPr"));
|
|
7727
|
-
if (marker) result.markerFormat = marker;
|
|
7728
|
-
result.suffix = suffRaw === "space" ? "space" : suffRaw === "nothing" ? "none" : "tab";
|
|
7729
|
-
return result;
|
|
7730
|
-
}
|
|
7731
|
-
function parseAbstractNum(element) {
|
|
7732
|
-
const id = getW(element, "abstractNumId");
|
|
7733
|
-
if (!id) return void 0;
|
|
7734
|
-
const levels = {};
|
|
7735
|
-
for (const lvl of children2(element, "lvl")) {
|
|
7736
|
-
const parsed = parseNumberingLevel(lvl);
|
|
7737
|
-
levels[parsed.level] = parsed;
|
|
7738
|
-
}
|
|
7739
|
-
return { id, levels };
|
|
7740
|
-
}
|
|
7741
|
-
function parseNum(element) {
|
|
7742
|
-
const id = getW(element, "numId");
|
|
7743
|
-
if (!id) return void 0;
|
|
7744
|
-
const abstractNumId = getW(first2(element, "abstractNumId"), "val") ?? "";
|
|
7745
|
-
const levelOverrides = {};
|
|
7746
|
-
for (const override of children2(element, "lvlOverride")) {
|
|
7747
|
-
const level = integer2(getW(override, "ilvl"), 0);
|
|
7748
|
-
const entry = {};
|
|
7749
|
-
const startOverride = getW(first2(override, "startOverride"), "val");
|
|
7750
|
-
if (startOverride !== void 0) entry.startOverride = integer2(startOverride, 1);
|
|
7751
|
-
const lvl = first2(override, "lvl");
|
|
7752
|
-
if (lvl) entry.lvl = parseNumberingLevel(lvl);
|
|
7753
|
-
if (Object.keys(entry).length) levelOverrides[level] = entry;
|
|
7754
|
-
}
|
|
7755
|
-
return {
|
|
7756
|
-
id,
|
|
7757
|
-
abstractNumId,
|
|
7758
|
-
...Object.keys(levelOverrides).length ? { levelOverrides } : {}
|
|
7759
|
-
};
|
|
7760
|
-
}
|
|
7761
|
-
function parseNumberingCatalog(xml) {
|
|
7762
|
-
const document = parseXml2(xml);
|
|
7763
|
-
const root = document.documentElement;
|
|
7764
|
-
const abstractNums = {};
|
|
7765
|
-
const warnings = [];
|
|
7766
|
-
for (const element of byName(root, "abstractNum")) {
|
|
7767
|
-
const parsed = parseAbstractNum(element);
|
|
7768
|
-
if (!parsed) continue;
|
|
7769
|
-
abstractNums[parsed.id] = parsed;
|
|
7770
|
-
const link = getW(first2(element, "numStyleLink"), "val");
|
|
7771
|
-
if (link)
|
|
7772
|
-
warnings.push(
|
|
7773
|
-
`Numbering definition abstractNum ${parsed.id} links to style "${link}"; style-linked numbering levels are not resolved.`
|
|
7774
|
-
);
|
|
7775
|
-
if (byName(element, "lvlPicBulletId").length)
|
|
7776
|
-
warnings.push(
|
|
7777
|
-
`Numbering definition abstractNum ${parsed.id} uses a picture bullet; picture bullets are not rendered.`
|
|
7778
|
-
);
|
|
7779
|
-
}
|
|
7780
|
-
const nums = {};
|
|
7781
|
-
for (const element of byName(root, "num")) {
|
|
7782
|
-
const parsed = parseNum(element);
|
|
7783
|
-
if (parsed) nums[parsed.id] = parsed;
|
|
7784
|
-
}
|
|
7785
|
-
return { abstractNums, nums, warnings: [...new Set(warnings)] };
|
|
7786
|
-
}
|
|
7787
|
-
|
|
7788
9135
|
// docx/comments.ts
|
|
7789
9136
|
var W14_NS2 = "http://schemas.microsoft.com/office/word/2010/wordml";
|
|
7790
9137
|
var W15_NS2 = "http://schemas.microsoft.com/office/word/2012/wordml";
|
|
@@ -7812,15 +9159,15 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
7812
9159
|
});
|
|
7813
9160
|
if (extendedXml) {
|
|
7814
9161
|
const extended = parseXml2(extendedXml);
|
|
7815
|
-
for (const
|
|
9162
|
+
for (const entry2 of Array.from(
|
|
7816
9163
|
extended.getElementsByTagNameNS(W15_NS2, "commentEx")
|
|
7817
9164
|
)) {
|
|
7818
|
-
const paraId =
|
|
7819
|
-
const comment = paraId && comments.find((
|
|
9165
|
+
const paraId = entry2.getAttributeNS(W15_NS2, "paraId");
|
|
9166
|
+
const comment = paraId && comments.find((c2) => c2.id === paraIdToCommentId.get(paraId));
|
|
7820
9167
|
if (!comment) continue;
|
|
7821
|
-
const done =
|
|
9168
|
+
const done = entry2.getAttributeNS(W15_NS2, "done");
|
|
7822
9169
|
comment.resolved = done === "1" || done === "true";
|
|
7823
|
-
const parentParaId =
|
|
9170
|
+
const parentParaId = entry2.getAttributeNS(W15_NS2, "paraIdParent");
|
|
7824
9171
|
const parentId = parentParaId && paraIdToCommentId.get(parentParaId);
|
|
7825
9172
|
if (parentId) comment.parentId = parentId;
|
|
7826
9173
|
}
|
|
@@ -7828,96 +9175,6 @@ function parseComments(commentsXml, extendedXml) {
|
|
|
7828
9175
|
return comments;
|
|
7829
9176
|
}
|
|
7830
9177
|
|
|
7831
|
-
// docx/parse-warnings.ts
|
|
7832
|
-
function hasAny(document, names) {
|
|
7833
|
-
return names.some((name) => document.getElementsByTagNameNS(WORD_NS, name).length > 0);
|
|
7834
|
-
}
|
|
7835
|
-
function warningsFor(document) {
|
|
7836
|
-
const warnings = [];
|
|
7837
|
-
const features = [
|
|
7838
|
-
[["object"], "Embedded OLE objects (w:object) are preserved but rendered as a placeholder."],
|
|
7839
|
-
[["altChunk"], "Embedded alternate-format content is not represented in the document model."],
|
|
7840
|
-
[
|
|
7841
|
-
["fldSimple", "instrText", "fldChar"],
|
|
7842
|
-
"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."
|
|
7843
|
-
],
|
|
7844
|
-
[
|
|
7845
|
-
["moveFrom", "moveTo"],
|
|
7846
|
-
"Moved text is linked by its move name: accepting or rejecting either side resolves both. Moves are shown and saved with their range markers."
|
|
7847
|
-
],
|
|
7848
|
-
[
|
|
7849
|
-
["rPrChange"],
|
|
7850
|
-
"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."
|
|
7851
|
-
],
|
|
7852
|
-
[
|
|
7853
|
-
["pPrChange"],
|
|
7854
|
-
"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."
|
|
7855
|
-
],
|
|
7856
|
-
[
|
|
7857
|
-
["tblPrChange", "trPrChange", "tcPrChange"],
|
|
7858
|
-
"Table-structure tracked changes are preserved in the source XML but are not represented in the document model."
|
|
7859
|
-
]
|
|
7860
|
-
];
|
|
7861
|
-
for (const [names, message] of features) if (hasAny(document, names)) warnings.push(message);
|
|
7862
|
-
if (Array.from(document.getElementsByTagNameNS(WORD_NS, "instrText")).some(
|
|
7863
|
-
(el3) => /HYPERLINK/i.test(textContent(el3))
|
|
7864
|
-
))
|
|
7865
|
-
warnings.push(
|
|
7866
|
-
"Complex HYPERLINK field codes (w:fldChar/w:instrText) are preserved but not parsed as links; their result text edits as plain text."
|
|
7867
|
-
);
|
|
7868
|
-
const specialBreak = Array.from(document.getElementsByTagNameNS(WORD_NS, "br")).some(
|
|
7869
|
-
(br) => hasSpecialBreak(br) && !isModeledBreak(br)
|
|
7870
|
-
) || Array.from(document.getElementsByTagNameNS(WORD_NS, "cr")).some(
|
|
7871
|
-
(cr) => cr.attributes.length > 0
|
|
7872
|
-
);
|
|
7873
|
-
if (specialBreak)
|
|
7874
|
-
warnings.push(
|
|
7875
|
-
"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."
|
|
7876
|
-
);
|
|
7877
|
-
return warnings;
|
|
7878
|
-
}
|
|
7879
|
-
function forEachParagraph2(blocks, visit) {
|
|
7880
|
-
for (const block of blocks) {
|
|
7881
|
-
if (block.type === "paragraph") visit(block);
|
|
7882
|
-
else for (const row of block.rows) for (const cell of row) cell.paragraphs.forEach(visit);
|
|
7883
|
-
}
|
|
7884
|
-
}
|
|
7885
|
-
function imageAndBookmarkWarnings(blocks) {
|
|
7886
|
-
const warnings = [];
|
|
7887
|
-
let hasPicture = false;
|
|
7888
|
-
let hasAnchored = false;
|
|
7889
|
-
const unsupportedKinds = /* @__PURE__ */ new Set();
|
|
7890
|
-
let hasBookmarks = false;
|
|
7891
|
-
forEachParagraph2(blocks, (paragraph) => {
|
|
7892
|
-
if (paragraph.bookmarks?.length) hasBookmarks = true;
|
|
7893
|
-
for (const run of paragraph.runs) {
|
|
7894
|
-
if (!run.image) continue;
|
|
7895
|
-
if (run.image.unsupported) {
|
|
7896
|
-
if (run.image.diagram?.rendering !== "cached-drawing")
|
|
7897
|
-
unsupportedKinds.add(run.image.unsupported);
|
|
7898
|
-
} else hasPicture = true;
|
|
7899
|
-
if (run.image.anchored) hasAnchored = true;
|
|
7900
|
-
}
|
|
7901
|
-
});
|
|
7902
|
-
if (hasPicture)
|
|
7903
|
-
warnings.push(
|
|
7904
|
-
"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."
|
|
7905
|
-
);
|
|
7906
|
-
if (hasAnchored)
|
|
7907
|
-
warnings.push(
|
|
7908
|
-
"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."
|
|
7909
|
-
);
|
|
7910
|
-
if (unsupportedKinds.size)
|
|
7911
|
-
warnings.push(
|
|
7912
|
-
`${Array.from(unsupportedKinds).join(", ")} content is rendered as a labeled placeholder and is not editable.`
|
|
7913
|
-
);
|
|
7914
|
-
if (hasBookmarks)
|
|
7915
|
-
warnings.push(
|
|
7916
|
-
"Bookmark names are read-only; editing a paragraph that contains bookmarks preserves them but moves their start/end to the paragraph boundaries."
|
|
7917
|
-
);
|
|
7918
|
-
return warnings;
|
|
7919
|
-
}
|
|
7920
|
-
|
|
7921
9178
|
// docx/diagram-document.ts
|
|
7922
9179
|
function diagramsIn(blocks) {
|
|
7923
9180
|
const diagrams = [];
|
|
@@ -7955,7 +9212,7 @@ async function readPackage(input) {
|
|
|
7955
9212
|
const entries = Object.values(zip.files);
|
|
7956
9213
|
if (entries.length > 5e3) throw new Error("DOCX package exceeds the 5,000 part limit");
|
|
7957
9214
|
const totalSize = entries.reduce(
|
|
7958
|
-
(sum,
|
|
9215
|
+
(sum, entry2) => sum + Number(entry2._data?.uncompressedSize ?? 0),
|
|
7959
9216
|
0
|
|
7960
9217
|
);
|
|
7961
9218
|
if (totalSize > 200 * 1024 * 1024)
|
|
@@ -8019,7 +9276,7 @@ async function readPackage(input) {
|
|
|
8019
9276
|
const themeFile = zip.file("word/theme/theme1.xml");
|
|
8020
9277
|
const settingsFile = zip.file("word/settings.xml");
|
|
8021
9278
|
if (themeFile) {
|
|
8022
|
-
model.theme =
|
|
9279
|
+
model.theme = parseTheme2(await themeFile.async("string"));
|
|
8023
9280
|
if (settingsFile) {
|
|
8024
9281
|
const settingsXml = await settingsFile.async("string");
|
|
8025
9282
|
model.theme.colorMapping = withParseWarnings(
|
|
@@ -8106,6 +9363,10 @@ async function readPackage(input) {
|
|
|
8106
9363
|
pictureBlocks,
|
|
8107
9364
|
async (partName) => zip.file(partName)?.async("string")
|
|
8108
9365
|
);
|
|
9366
|
+
await resolveDocumentCharts(
|
|
9367
|
+
pictureBlocks,
|
|
9368
|
+
async (partName) => zip.file(partName)?.async("string")
|
|
9369
|
+
);
|
|
8109
9370
|
model.warnings.push(...imageAndBookmarkWarnings(blocks), ...diagramWarnings(pictureBlocks));
|
|
8110
9371
|
for (const warning of schemaWarnings)
|
|
8111
9372
|
if (!model.warnings.includes(warning)) model.warnings.push(warning);
|