@syncfusion/ej2-docx 0.0.0-stage → 35.1.40
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/.gitleaksignore +35 -0
- package/README.md +68 -2
- package/core.js +4 -0
- package/dist/ej2-docx.umd.min.js +11 -0
- package/dist/ej2-docx.umd.min.js.map +1 -0
- package/dist/es6/ej2-docx.es2015.js +66697 -0
- package/dist/es6/ej2-docx.es2015.js.map +1 -0
- package/dist/es6/ej2-docx.es5.js +77568 -0
- package/dist/es6/ej2-docx.es5.js.map +1 -0
- package/dist/global/ej2-docx.min.js +11 -0
- package/dist/global/ej2-docx.min.js.map +1 -0
- package/dist/global/index.d.ts +14 -0
- package/features.js +4 -0
- package/index.js +4 -0
- package/license +10 -0
- package/package.json +30 -3
- package/src/all.d.ts +50 -0
- package/src/all.js +147 -0
- package/src/core/compat/base64.d.ts +13 -0
- package/src/core/compat/base64.js +90 -0
- package/src/core/compat/object-compat.d.ts +30 -0
- package/src/core/compat/object-compat.js +40 -0
- package/src/core/compat/sha256.d.ts +9 -0
- package/src/core/compat/sha256.js +98 -0
- package/src/core/errors/docx-error.d.ts +89 -0
- package/src/core/errors/docx-error.js +138 -0
- package/src/core/errors/error-codes.d.ts +8 -0
- package/src/core/errors/error-codes.js +0 -0
- package/src/core/errors/index.d.ts +10 -0
- package/src/core/errors/index.js +9 -0
- package/src/core/index.d.ts +12 -0
- package/src/core/index.js +12 -0
- package/src/core/mc/alternate-content.d.ts +7 -0
- package/src/core/mc/alternate-content.js +67 -0
- package/src/core/mc/attributes.d.ts +24 -0
- package/src/core/mc/attributes.js +82 -0
- package/src/core/mc/index.d.ts +7 -0
- package/src/core/mc/index.js +5 -0
- package/src/core/mc/inspect.d.ts +16 -0
- package/src/core/mc/inspect.js +148 -0
- package/src/core/mc/namespaces.d.ts +4 -0
- package/src/core/mc/namespaces.js +4 -0
- package/src/core/mc/scope.d.ts +6 -0
- package/src/core/mc/scope.js +47 -0
- package/src/core/opc/content-types.d.ts +34 -0
- package/src/core/opc/content-types.js +162 -0
- package/src/core/opc/index.d.ts +8 -0
- package/src/core/opc/index.js +4 -0
- package/src/core/opc/package.d.ts +49 -0
- package/src/core/opc/package.js +324 -0
- package/src/core/opc/part-name.d.ts +47 -0
- package/src/core/opc/part-name.js +205 -0
- package/src/core/opc/relationships.d.ts +46 -0
- package/src/core/opc/relationships.js +212 -0
- package/src/core/preservation/index.d.ts +2 -0
- package/src/core/preservation/index.js +1 -0
- package/src/core/preservation/opaque-body.d.ts +16 -0
- package/src/core/preservation/opaque-body.js +69 -0
- package/src/core/registry/block-handlers.d.ts +30 -0
- package/src/core/registry/block-handlers.js +36 -0
- package/src/core/registry/create-defaults.d.ts +39 -0
- package/src/core/registry/create-defaults.js +42 -0
- package/src/core/registry/feature-registry.d.ts +20 -0
- package/src/core/registry/feature-registry.js +29 -0
- package/src/core/registry/index.d.ts +9 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/inline-handlers.d.ts +20 -0
- package/src/core/registry/inline-handlers.js +30 -0
- package/src/core/registry/materialize-handlers.d.ts +35 -0
- package/src/core/registry/materialize-handlers.js +75 -0
- package/src/core/registry/multi-part-handlers.d.ts +37 -0
- package/src/core/registry/multi-part-handlers.js +206 -0
- package/src/core/registry/package-part-handlers.d.ts +28 -0
- package/src/core/registry/package-part-handlers.js +190 -0
- package/src/core/registry/part-handlers.d.ts +24 -0
- package/src/core/registry/part-handlers.js +172 -0
- package/src/core/registry/run-leaf-handlers.d.ts +26 -0
- package/src/core/registry/run-leaf-handlers.js +72 -0
- package/src/core/security/limits.d.ts +40 -0
- package/src/core/security/limits.js +26 -0
- package/src/core/xml/index.d.ts +7 -0
- package/src/core/xml/index.js +3 -0
- package/src/core/xml/model.d.ts +66 -0
- package/src/core/xml/model.js +17 -0
- package/src/core/xml/parse.d.ts +12 -0
- package/src/core/xml/parse.js +382 -0
- package/src/core/xml/serialize.d.ts +6 -0
- package/src/core/xml/serialize.js +93 -0
- package/src/core/zip/crc32.d.ts +2 -0
- package/src/core/zip/crc32.js +25 -0
- package/src/core/zip/deflate.d.ts +6 -0
- package/src/core/zip/deflate.js +6 -0
- package/src/core/zip/index.d.ts +10 -0
- package/src/core/zip/index.js +4 -0
- package/src/core/zip/inflate-raw.d.ts +17 -0
- package/src/core/zip/inflate-raw.js +450 -0
- package/src/core/zip/names.d.ts +6 -0
- package/src/core/zip/names.js +52 -0
- package/src/core/zip/read.d.ts +8 -0
- package/src/core/zip/read.js +262 -0
- package/src/core/zip/write.d.ts +7 -0
- package/src/core/zip/write.js +189 -0
- package/src/core/zip/zip-entry.d.ts +4 -0
- package/src/core/zip/zip-entry.js +0 -0
- package/src/features/bibliography/index.d.ts +100 -0
- package/src/features/bibliography/index.js +290 -0
- package/src/features/bookmarks/index.d.ts +331 -0
- package/src/features/bookmarks/index.js +1009 -0
- package/src/features/comments/comment-extensions.d.ts +157 -0
- package/src/features/comments/comment-extensions.js +356 -0
- package/src/features/comments/index.d.ts +579 -0
- package/src/features/comments/index.js +1727 -0
- package/src/features/content-controls/index.d.ts +821 -0
- package/src/features/content-controls/index.js +2857 -0
- package/src/features/custom-xml/index.d.ts +236 -0
- package/src/features/custom-xml/index.js +661 -0
- package/src/features/document/alignment.d.ts +23 -0
- package/src/features/document/alignment.js +36 -0
- package/src/features/document/alt-chunk.d.ts +103 -0
- package/src/features/document/alt-chunk.js +221 -0
- package/src/features/document/assert-never.d.ts +1 -0
- package/src/features/document/assert-never.js +4 -0
- package/src/features/document/augmentations.d.ts +578 -0
- package/src/features/document/augmentations.js +0 -0
- package/src/features/document/body-always-on.d.ts +36 -0
- package/src/features/document/body-always-on.js +66 -0
- package/src/features/document/body-blocks.d.ts +7 -0
- package/src/features/document/body-blocks.js +78 -0
- package/src/features/document/body-item-adapters.d.ts +62 -0
- package/src/features/document/body-item-adapters.js +97 -0
- package/src/features/document/body-item-collection.d.ts +151 -0
- package/src/features/document/body-item-collection.js +440 -0
- package/src/features/document/body-item.d.ts +35 -0
- package/src/features/document/body-item.js +8 -0
- package/src/features/document/body.d.ts +150 -0
- package/src/features/document/body.js +263 -0
- package/src/features/document/character-format.d.ts +413 -0
- package/src/features/document/character-format.js +2054 -0
- package/src/features/document/color.d.ts +178 -0
- package/src/features/document/color.js +495 -0
- package/src/features/document/document.d.ts +410 -0
- package/src/features/document/document.js +1049 -0
- package/src/features/document/element-type.d.ts +68 -0
- package/src/features/document/element-type.js +133 -0
- package/src/features/document/entity-type.d.ts +92 -0
- package/src/features/document/entity-type.js +93 -0
- package/src/features/document/feature-block.d.ts +16 -0
- package/src/features/document/feature-block.js +0 -0
- package/src/features/document/feature-inline.d.ts +13 -0
- package/src/features/document/feature-inline.js +0 -0
- package/src/features/document/feature-multi-package-part.d.ts +19 -0
- package/src/features/document/feature-multi-package-part.js +8 -0
- package/src/features/document/feature-package-level-part.d.ts +18 -0
- package/src/features/document/feature-package-level-part.js +8 -0
- package/src/features/document/feature-package-part.d.ts +14 -0
- package/src/features/document/feature-package-part.js +0 -0
- package/src/features/document/feature-run-leaf.d.ts +9 -0
- package/src/features/document/feature-run-leaf.js +0 -0
- package/src/features/document/headers-footers.d.ts +206 -0
- package/src/features/document/headers-footers.js +384 -0
- package/src/features/document/index.d.ts +41 -0
- package/src/features/document/index.js +34 -0
- package/src/features/document/length.d.ts +152 -0
- package/src/features/document/length.js +245 -0
- package/src/features/document/load-options.d.ts +14 -0
- package/src/features/document/load-options.js +0 -0
- package/src/features/document/locale-ids.d.ts +227 -0
- package/src/features/document/locale-ids.js +485 -0
- package/src/features/document/on-off.d.ts +9 -0
- package/src/features/document/on-off.js +27 -0
- package/src/features/document/page-setup.d.ts +339 -0
- package/src/features/document/page-setup.js +244 -0
- package/src/features/document/paragraph-format.d.ts +880 -0
- package/src/features/document/paragraph-format.js +2807 -0
- package/src/features/document/paragraph-item-collection.d.ts +162 -0
- package/src/features/document/paragraph-item-collection.js +363 -0
- package/src/features/document/paragraph-item.d.ts +83 -0
- package/src/features/document/paragraph-item.js +103 -0
- package/src/features/document/paragraph.d.ts +435 -0
- package/src/features/document/paragraph.js +888 -0
- package/src/features/document/run.d.ts +1 -0
- package/src/features/document/run.js +768 -0
- package/src/features/document/section-partition-flatten.d.ts +124 -0
- package/src/features/document/section-partition-flatten.js +217 -0
- package/src/features/document/section-properties-model.d.ts +13 -0
- package/src/features/document/section-properties-model.js +0 -0
- package/src/features/document/section.d.ts +93 -0
- package/src/features/document/section.js +178 -0
- package/src/features/document/sections.d.ts +103 -0
- package/src/features/document/sections.js +217 -0
- package/src/features/document/sub-super-script.d.ts +23 -0
- package/src/features/document/sub-super-script.js +43 -0
- package/src/features/document/text-range.d.ts +445 -0
- package/src/features/document/text-range.js +1156 -0
- package/src/features/document/typed-body-collections.d.ts +162 -0
- package/src/features/document/typed-body-collections.js +371 -0
- package/src/features/document/underline-style.d.ts +38 -0
- package/src/features/document/underline-style.js +126 -0
- package/src/features/document/units.d.ts +8 -0
- package/src/features/document/units.js +7 -0
- package/src/features/document/wml.d.ts +16 -0
- package/src/features/document/wml.js +67 -0
- package/src/features/drawing/authoring.d.ts +27 -0
- package/src/features/drawing/authoring.js +271 -0
- package/src/features/drawing/body-pr.d.ts +271 -0
- package/src/features/drawing/body-pr.js +663 -0
- package/src/features/drawing/drawing-shape.d.ts +1192 -0
- package/src/features/drawing/drawing-shape.js +3239 -0
- package/src/features/drawing/encode-builders.d.ts +176 -0
- package/src/features/drawing/encode-builders.js +390 -0
- package/src/features/drawing/fill-format.d.ts +52 -0
- package/src/features/drawing/fill-format.js +124 -0
- package/src/features/drawing/host-codec.d.ts +632 -0
- package/src/features/drawing/host-codec.js +2595 -0
- package/src/features/drawing/index.d.ts +13 -0
- package/src/features/drawing/index.js +33 -0
- package/src/features/drawing/line-format.d.ts +76 -0
- package/src/features/drawing/line-format.js +343 -0
- package/src/features/drawing/parse-register.d.ts +50 -0
- package/src/features/drawing/parse-register.js +257 -0
- package/src/features/drawing/residual-utils.d.ts +47 -0
- package/src/features/drawing/residual-utils.js +290 -0
- package/src/features/drawing/shape-types.d.ts +433 -0
- package/src/features/drawing/shape-types.js +437 -0
- package/src/features/drawing/sp-pr.d.ts +396 -0
- package/src/features/drawing/sp-pr.js +610 -0
- package/src/features/drawing/text-frame.d.ts +90 -0
- package/src/features/drawing/text-frame.js +152 -0
- package/src/features/drawing/types.d.ts +352 -0
- package/src/features/drawing/types.js +60 -0
- package/src/features/drawing/wrap-format.d.ts +62 -0
- package/src/features/drawing/wrap-format.js +114 -0
- package/src/features/editable-ranges/index.d.ts +494 -0
- package/src/features/editable-ranges/index.js +1348 -0
- package/src/features/fields/index.d.ts +428 -0
- package/src/features/fields/index.js +2148 -0
- package/src/features/fields/paragraph-field.d.ts +187 -0
- package/src/features/fields/paragraph-field.js +692 -0
- package/src/features/font-table/font-substitution-table.d.ts +75 -0
- package/src/features/font-table/font-substitution-table.js +257 -0
- package/src/features/font-table/font-table-entry.d.ts +255 -0
- package/src/features/font-table/font-table-entry.js +823 -0
- package/src/features/font-table/font-table.d.ts +128 -0
- package/src/features/font-table/font-table.js +313 -0
- package/src/features/font-table/index.d.ts +27 -0
- package/src/features/font-table/index.js +48 -0
- package/src/features/glossary/index.d.ts +97 -0
- package/src/features/glossary/index.js +286 -0
- package/src/features/headers-footers/index.d.ts +506 -0
- package/src/features/headers-footers/index.js +1666 -0
- package/src/features/hyperlinks/index.d.ts +230 -0
- package/src/features/hyperlinks/index.js +685 -0
- package/src/features/images/caption-authoring-api.d.ts +33 -0
- package/src/features/images/caption-authoring-api.js +33 -0
- package/src/features/images/caption-enums.d.ts +52 -0
- package/src/features/images/caption-enums.js +141 -0
- package/src/features/images/caption-host.d.ts +10 -0
- package/src/features/images/caption-host.js +21 -0
- package/src/features/images/captions.d.ts +13 -0
- package/src/features/images/captions.js +142 -0
- package/src/features/images/host-codec.d.ts +103 -0
- package/src/features/images/host-codec.js +720 -0
- package/src/features/images/image-sniff.d.ts +21 -0
- package/src/features/images/image-sniff.js +71 -0
- package/src/features/images/index.d.ts +506 -0
- package/src/features/images/index.js +1429 -0
- package/src/features/images/layout-types.d.ts +232 -0
- package/src/features/images/layout-types.js +294 -0
- package/src/features/images/public-entry.d.ts +9 -0
- package/src/features/images/public-entry.js +9 -0
- package/src/features/index.d.ts +35 -0
- package/src/features/index.js +36 -0
- package/src/features/mail-merge/index.d.ts +113 -0
- package/src/features/mail-merge/index.js +315 -0
- package/src/features/notes/index.d.ts +573 -0
- package/src/features/notes/index.js +1725 -0
- package/src/features/numbering/abstract-numbering.d.ts +90 -0
- package/src/features/numbering/abstract-numbering.js +292 -0
- package/src/features/numbering/index.d.ts +182 -0
- package/src/features/numbering/index.js +668 -0
- package/src/features/numbering/list-format.d.ts +158 -0
- package/src/features/numbering/list-format.js +590 -0
- package/src/features/numbering/list-string.d.ts +7 -0
- package/src/features/numbering/list-string.js +423 -0
- package/src/features/numbering/list-style.d.ts +204 -0
- package/src/features/numbering/list-style.js +1084 -0
- package/src/features/numbering/numbering-instance.d.ts +101 -0
- package/src/features/numbering/numbering-instance.js +329 -0
- package/src/features/numbering/numbering-level.d.ts +118 -0
- package/src/features/numbering/numbering-level.js +501 -0
- package/src/features/numbering/picture-bullet.d.ts +34 -0
- package/src/features/numbering/picture-bullet.js +88 -0
- package/src/features/ole-object/catalog.d.ts +300 -0
- package/src/features/ole-object/catalog.js +908 -0
- package/src/features/ole-object/index.d.ts +526 -0
- package/src/features/ole-object/index.js +1421 -0
- package/src/features/ole-object/relationship.d.ts +27 -0
- package/src/features/ole-object/relationship.js +27 -0
- package/src/features/ole-object/typed-dom.d.ts +186 -0
- package/src/features/ole-object/typed-dom.js +595 -0
- package/src/features/properties/index.d.ts +205 -0
- package/src/features/properties/index.js +549 -0
- package/src/features/revisions/index.d.ts +204 -0
- package/src/features/revisions/index.js +695 -0
- package/src/features/sections/column-collection.d.ts +119 -0
- package/src/features/sections/column-collection.js +478 -0
- package/src/features/sections/column.d.ts +15 -0
- package/src/features/sections/column.js +37 -0
- package/src/features/sections/index.d.ts +91 -0
- package/src/features/sections/index.js +1096 -0
- package/src/features/sections/margins.d.ts +40 -0
- package/src/features/sections/margins.js +105 -0
- package/src/features/sections/page-number-style.d.ts +21 -0
- package/src/features/sections/page-number-style.js +62 -0
- package/src/features/sections/page-orientation.d.ts +10 -0
- package/src/features/sections/page-orientation.js +10 -0
- package/src/features/sections/page-setup.d.ts +435 -0
- package/src/features/sections/page-setup.js +1479 -0
- package/src/features/sections/page-size.d.ts +59 -0
- package/src/features/sections/page-size.js +68 -0
- package/src/features/sections/section-break-code.d.ts +27 -0
- package/src/features/sections/section-break-code.js +60 -0
- package/src/features/sections/section-document-association.d.ts +18 -0
- package/src/features/sections/section-document-association.js +31 -0
- package/src/features/sections/section-validation.d.ts +43 -0
- package/src/features/sections/section-validation.js +97 -0
- package/src/features/settings/attached-template.d.ts +35 -0
- package/src/features/settings/attached-template.js +98 -0
- package/src/features/settings/compat-settings.d.ts +216 -0
- package/src/features/settings/compat-settings.js +508 -0
- package/src/features/settings/document-background.d.ts +59 -0
- package/src/features/settings/document-background.js +131 -0
- package/src/features/settings/document-protection.d.ts +65 -0
- package/src/features/settings/document-protection.js +157 -0
- package/src/features/settings/document-settings-facades.d.ts +108 -0
- package/src/features/settings/document-settings-facades.js +312 -0
- package/src/features/settings/document-settings-values.d.ts +43 -0
- package/src/features/settings/document-settings-values.js +60 -0
- package/src/features/settings/footnote-properties.d.ts +211 -0
- package/src/features/settings/footnote-properties.js +591 -0
- package/src/features/settings/index.d.ts +356 -0
- package/src/features/settings/index.js +829 -0
- package/src/features/settings/settings-children.d.ts +151 -0
- package/src/features/settings/settings-children.js +505 -0
- package/src/features/settings/web-settings.d.ts +88 -0
- package/src/features/settings/web-settings.js +227 -0
- package/src/features/settings/zoom.d.ts +79 -0
- package/src/features/settings/zoom.js +147 -0
- package/src/features/styles/builtin-catalog.d.ts +159 -0
- package/src/features/styles/builtin-catalog.js +963 -0
- package/src/features/styles/builtin-resolver.d.ts +49 -0
- package/src/features/styles/builtin-resolver.js +165 -0
- package/src/features/styles/default-styles.d.ts +37 -0
- package/src/features/styles/default-styles.js +186 -0
- package/src/features/styles/default-theme.d.ts +13 -0
- package/src/features/styles/default-theme.js +13 -0
- package/src/features/styles/doc-defaults.d.ts +58 -0
- package/src/features/styles/doc-defaults.js +178 -0
- package/src/features/styles/formatting-resolver.d.ts +27 -0
- package/src/features/styles/formatting-resolver.js +72 -0
- package/src/features/styles/index.d.ts +256 -0
- package/src/features/styles/index.js +1325 -0
- package/src/features/styles/latent-styles.d.ts +68 -0
- package/src/features/styles/latent-styles.js +305 -0
- package/src/features/styles/paragraph-properties.d.ts +71 -0
- package/src/features/styles/paragraph-properties.js +237 -0
- package/src/features/styles/run-properties.d.ts +93 -0
- package/src/features/styles/run-properties.js +516 -0
- package/src/features/styles/style-base.d.ts +402 -0
- package/src/features/styles/style-base.js +1026 -0
- package/src/features/styles/style-collection.d.ts +264 -0
- package/src/features/styles/style-collection.js +714 -0
- package/src/features/styles/style-format-bridge.d.ts +64 -0
- package/src/features/styles/style-format-bridge.js +100 -0
- package/src/features/styles/style.d.ts +84 -0
- package/src/features/styles/style.js +375 -0
- package/src/features/styles/styles-with-effects.d.ts +71 -0
- package/src/features/styles/styles-with-effects.js +180 -0
- package/src/features/styles/table-style.d.ts +272 -0
- package/src/features/styles/table-style.js +1226 -0
- package/src/features/styles/theme.d.ts +126 -0
- package/src/features/styles/theme.js +377 -0
- package/src/features/tables/border-style-map.d.ts +24 -0
- package/src/features/tables/border-style-map.js +81 -0
- package/src/features/tables/borders.d.ts +126 -0
- package/src/features/tables/borders.js +527 -0
- package/src/features/tables/collections.d.ts +113 -0
- package/src/features/tables/collections.js +261 -0
- package/src/features/tables/format.d.ts +208 -0
- package/src/features/tables/format.js +716 -0
- package/src/features/tables/index.d.ts +597 -0
- package/src/features/tables/index.js +2386 -0
- package/src/features/tables/paddings.d.ts +41 -0
- package/src/features/tables/paddings.js +97 -0
- package/src/features/tables/tbl-pr-positioning.d.ts +27 -0
- package/src/features/tables/tbl-pr-positioning.js +178 -0
- package/src/features/tables/tbl-pr.d.ts +528 -0
- package/src/features/tables/tbl-pr.js +1208 -0
- package/src/features/tables/tc-pr.d.ts +168 -0
- package/src/features/tables/tc-pr.js +553 -0
- package/src/features/tables/tr-pr.d.ts +60 -0
- package/src/features/tables/tr-pr.js +215 -0
- package/src/features/watermark/detect.d.ts +76 -0
- package/src/features/watermark/detect.js +219 -0
- package/src/features/watermark/index.d.ts +28 -0
- package/src/features/watermark/index.js +91 -0
- package/src/features/watermark/logical-store.d.ts +29 -0
- package/src/features/watermark/logical-store.js +31 -0
- package/src/features/watermark/model.d.ts +285 -0
- package/src/features/watermark/model.js +597 -0
- package/src/features/watermark/parse.d.ts +84 -0
- package/src/features/watermark/parse.js +815 -0
- package/src/features/watermark/serialize.d.ts +98 -0
- package/src/features/watermark/serialize.js +1517 -0
- package/src/global.js +1 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
|
@@ -0,0 +1,663 @@
|
|
|
1
|
+
var __values = (this && this.__values) || function (o) {
|
|
2
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
|
3
|
+
if (m) return m.call(o);
|
|
4
|
+
return {
|
|
5
|
+
next: function () {
|
|
6
|
+
if (o && i >= o.length) o = void 0;
|
|
7
|
+
return { value: o && o[i++], done: !o };
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* `wps:bodyPr` text-body properties codec (TASK-8049).
|
|
13
|
+
*
|
|
14
|
+
* Schema cites (transitional `dml-main.xsd` + `dml-wordprocessingDrawing.xsd`):
|
|
15
|
+
* - `CT_TextBodyProperties` attributes: `rot`, `spcFirstLastPara`,
|
|
16
|
+
* `vertOverflow` (`ST_TextVertOverflowType`), `horzOverflow`
|
|
17
|
+
* (`ST_TextHorzOverflowType`), `vert` (`ST_TextVerticalType`), `wrap`
|
|
18
|
+
* (`ST_TextWrappingType` = `none|square` only), `lIns`/`tIns`/`rIns`/`bIns`
|
|
19
|
+
* (`ST_Coordinate32` EMU), `numCol`, `spcCol`, `rtlCol`, `fromWordArt`,
|
|
20
|
+
* `anchor` (`ST_TextAnchoringType`), `anchorCtr`, `forceAA`, `upright`
|
|
21
|
+
* (default false), `compatLnSpc`
|
|
22
|
+
* - Sequence: `prstTxWarp?`, `EG_TextAutofit?` (`a:noAutofit` |
|
|
23
|
+
* `a:normAutofit` | `a:spAutoFit`), `scene3d?`, `EG_Text3D?`, `extLst?`
|
|
24
|
+
* - `CT_TextNormalAutofit`: `@fontScale` (`ST_TextFontScalePercent` 1000…100000,
|
|
25
|
+
* default 100%), `@lnSpcReduction` (default 0%)
|
|
26
|
+
* - Wire element: **`wps:bodyPr`** (type `a:CT_TextBodyProperties`); autofit
|
|
27
|
+
* children use the DrawingML `a:` namespace
|
|
28
|
+
* - `CT_WordprocessingShape` (dml-wordprocessingDrawing): after `style?` /
|
|
29
|
+
* `extLst?` / `txbx|linkedTxbx?`, **`bodyPr` minOccurs=1**
|
|
30
|
+
*
|
|
31
|
+
* Unknown attrs and residual children (`prstTxWarp`, `scene3d`, Text3D,
|
|
32
|
+
* `extLst`) stay residual — never invent OOXML.
|
|
33
|
+
*
|
|
34
|
+
* @packageDocumentation
|
|
35
|
+
*/
|
|
36
|
+
import { emuToPoint, pointToCoordinateEmus } from '../document/length';
|
|
37
|
+
import { DocxError } from '../../core/errors/docx-error';
|
|
38
|
+
import { A_NS, WPS_NS } from './host-codec';
|
|
39
|
+
/**
|
|
40
|
+
* DrawingML text anchoring (`ST_TextAnchoringType`).
|
|
41
|
+
*
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
export var TEXT_ANCHORING_VALUES = ['t', 'ctr', 'b', 'just', 'dist'];
|
|
45
|
+
/**
|
|
46
|
+
* DrawingML vertical text overflow (`ST_TextVertOverflowType`).
|
|
47
|
+
*
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
export var TEXT_VERT_OVERFLOW_VALUES = ['overflow', 'ellipsis', 'clip'];
|
|
51
|
+
/**
|
|
52
|
+
* DrawingML horizontal text overflow (`ST_TextHorzOverflowType`).
|
|
53
|
+
*
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
export var TEXT_HORZ_OVERFLOW_VALUES = ['overflow', 'clip'];
|
|
57
|
+
/**
|
|
58
|
+
* DrawingML text vertical type (`ST_TextVerticalType`).
|
|
59
|
+
*
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
export var TEXT_VERTICAL_TYPE_VALUES = [
|
|
63
|
+
'horz',
|
|
64
|
+
'vert',
|
|
65
|
+
'vert270',
|
|
66
|
+
'wordArtVert',
|
|
67
|
+
'eaVert',
|
|
68
|
+
'mongolianVert',
|
|
69
|
+
'wordArtVertRtl',
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* DrawingML text wrapping inside the shape (`ST_TextWrappingType`).
|
|
73
|
+
* Schema allows **`none` | `square` only**.
|
|
74
|
+
*
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
export var TEXT_BODY_WRAP_VALUES = ['none', 'square'];
|
|
78
|
+
/** ST_TextFontScalePercent: 1000…100000 (percent × 1000; 100000 = 100%). */
|
|
79
|
+
var FONT_SCALE_MIN = 1000;
|
|
80
|
+
var FONT_SCALE_MAX = 100000;
|
|
81
|
+
var TEXT_ANCHORING_SET = new Set(TEXT_ANCHORING_VALUES);
|
|
82
|
+
var TEXT_VERT_OVERFLOW_SET = new Set(TEXT_VERT_OVERFLOW_VALUES);
|
|
83
|
+
var TEXT_HORZ_OVERFLOW_SET = new Set(TEXT_HORZ_OVERFLOW_VALUES);
|
|
84
|
+
var TEXT_VERTICAL_TYPE_SET = new Set(TEXT_VERTICAL_TYPE_VALUES);
|
|
85
|
+
var TEXT_BODY_WRAP_SET = new Set(TEXT_BODY_WRAP_VALUES);
|
|
86
|
+
/**
|
|
87
|
+
* Whether `value` is a schema `ST_TextAnchoringType` token.
|
|
88
|
+
*
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
export function isTextAnchoring(value) {
|
|
92
|
+
return TEXT_ANCHORING_SET.has(value);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Whether `value` is a schema `ST_TextVertOverflowType` token.
|
|
96
|
+
*
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
export function isTextVertOverflow(value) {
|
|
100
|
+
return TEXT_VERT_OVERFLOW_SET.has(value);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Whether `value` is a schema `ST_TextHorzOverflowType` token.
|
|
104
|
+
*
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
export function isTextHorzOverflow(value) {
|
|
108
|
+
return TEXT_HORZ_OVERFLOW_SET.has(value);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Whether `value` is a schema `ST_TextVerticalType` token.
|
|
112
|
+
*
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
export function isTextVerticalType(value) {
|
|
116
|
+
return TEXT_VERTICAL_TYPE_SET.has(value);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Whether `value` is a schema `ST_TextWrappingType` token (`none`|`square`).
|
|
120
|
+
*
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
123
|
+
export function isTextBodyWrap(value) {
|
|
124
|
+
return TEXT_BODY_WRAP_SET.has(value);
|
|
125
|
+
}
|
|
126
|
+
function elementChildren(el) {
|
|
127
|
+
return el.children.filter(function (c) { return c.kind === 'element'; });
|
|
128
|
+
}
|
|
129
|
+
function isElement(el, namespaceUri, localName) {
|
|
130
|
+
return el.namespaceUri === namespaceUri && el.localName === localName;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Shallow child lookup under `root` (direct element children only).
|
|
134
|
+
*
|
|
135
|
+
* @private
|
|
136
|
+
*/
|
|
137
|
+
export function findBodyPrChild(root, namespaceUri, localName) {
|
|
138
|
+
var e_1, _a;
|
|
139
|
+
try {
|
|
140
|
+
for (var _b = __values(elementChildren(root)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
141
|
+
var child = _c.value;
|
|
142
|
+
if (isElement(child, namespaceUri, localName)) {
|
|
143
|
+
return child;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
148
|
+
finally {
|
|
149
|
+
try {
|
|
150
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
151
|
+
}
|
|
152
|
+
finally { if (e_1) throw e_1.error; }
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Deep first-match walker under `root` (including `root` itself).
|
|
158
|
+
* Local so residual dual-AC hosts can be searched without circular imports.
|
|
159
|
+
*/
|
|
160
|
+
function findDeepElement(root, namespaceUri, localName) {
|
|
161
|
+
var e_2, _a;
|
|
162
|
+
if (isElement(root, namespaceUri, localName)) {
|
|
163
|
+
return root;
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
for (var _b = __values(elementChildren(root)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
167
|
+
var child = _c.value;
|
|
168
|
+
var found = findDeepElement(child, namespaceUri, localName);
|
|
169
|
+
if (found !== undefined) {
|
|
170
|
+
return found;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
175
|
+
finally {
|
|
176
|
+
try {
|
|
177
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
178
|
+
}
|
|
179
|
+
finally { if (e_2) throw e_2.error; }
|
|
180
|
+
}
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
function attrValue(el, localName) {
|
|
184
|
+
var __ts33_0;
|
|
185
|
+
return ((__ts33_0 = el.attributes.find(function (a) { return a.namespaceUri === '' && a.localName === localName; })), __ts33_0 == null ? undefined : __ts33_0.value);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Parse OOXML boolean attribute wire (`"1"`/`"true"`/`"0"`/`"false"`).
|
|
189
|
+
* Returns `undefined` when absent or unrecognized.
|
|
190
|
+
*/
|
|
191
|
+
function parseXmlBoolean(raw) {
|
|
192
|
+
if (raw === undefined) {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
if (raw === '1' || raw === 'true') {
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
if (raw === '0' || raw === 'false') {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
return undefined;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Parse `ST_Coordinate32` EMU attribute to branded Point.
|
|
205
|
+
* Accepts non-negative integers only (insets are physical margins ≥ 0).
|
|
206
|
+
* Uses `emuToPoint()` so 0 is legal (unlike `lengthToEmus`, which requires > 0).
|
|
207
|
+
*/
|
|
208
|
+
function parseInsetEmu(raw) {
|
|
209
|
+
if (raw === undefined || !/^-?\d+$/.test(raw)) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
var n = Number.parseInt(raw, 10);
|
|
213
|
+
if (!Number.isFinite(n) || n < 0) {
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
return emuToPoint(n);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Parse percent-ish autofit attributes.
|
|
220
|
+
* Accepts either plain decimal (`100000`) or percent-string (`100%`).
|
|
221
|
+
* fontScale schema range is 1000…100000 when decimal.
|
|
222
|
+
*/
|
|
223
|
+
function parsePercentAttr(raw) {
|
|
224
|
+
if (raw === undefined) {
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
if (/^\d+%$/.test(raw)) {
|
|
228
|
+
var pct = Number.parseInt(raw.slice(0, -1), 10);
|
|
229
|
+
if (!Number.isFinite(pct)) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
// Map "100%" → 100000, "50%" → 50000 (percent × 1000).
|
|
233
|
+
return pct * 1000;
|
|
234
|
+
}
|
|
235
|
+
if (/^\d+$/.test(raw)) {
|
|
236
|
+
return Number.parseInt(raw, 10);
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
function parseAutoFit(bodyPr) {
|
|
241
|
+
if (findBodyPrChild(bodyPr, A_NS, 'noAutofit') !== undefined) {
|
|
242
|
+
return { kind: 'none' };
|
|
243
|
+
}
|
|
244
|
+
if (findBodyPrChild(bodyPr, A_NS, 'spAutoFit') !== undefined) {
|
|
245
|
+
return { kind: 'shape' };
|
|
246
|
+
}
|
|
247
|
+
var norm = findBodyPrChild(bodyPr, A_NS, 'normAutofit');
|
|
248
|
+
if (norm !== undefined) {
|
|
249
|
+
var fontScale = parsePercentAttr(attrValue(norm, 'fontScale'));
|
|
250
|
+
var lineSpaceReduction = parsePercentAttr(attrValue(norm, 'lnSpcReduction'));
|
|
251
|
+
var result = { kind: 'normal' };
|
|
252
|
+
if (fontScale !== undefined) {
|
|
253
|
+
result.fontScale = fontScale;
|
|
254
|
+
}
|
|
255
|
+
if (lineSpaceReduction !== undefined) {
|
|
256
|
+
result.lineSpaceReduction = lineSpaceReduction;
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Locate `wps:bodyPr` under a residual dual-AC drawing host.
|
|
264
|
+
*
|
|
265
|
+
* @private
|
|
266
|
+
*/
|
|
267
|
+
export function findBodyPrElement(residual) {
|
|
268
|
+
return findDeepElement(residual, WPS_NS, 'bodyPr');
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Locate `wps:txbx` under a residual dual-AC drawing host.
|
|
272
|
+
*
|
|
273
|
+
* @private
|
|
274
|
+
*/
|
|
275
|
+
export function findTxbxElement(residual) {
|
|
276
|
+
return findDeepElement(residual, WPS_NS, 'txbx');
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Locate `w:txbxContent` under a residual host (WML namespace, local `txbxContent`).
|
|
280
|
+
*
|
|
281
|
+
* @private
|
|
282
|
+
*/
|
|
283
|
+
export function findTxbxContentElement(residual) {
|
|
284
|
+
var e_3, _a;
|
|
285
|
+
// Walk from txbx first when present; fall back to deep search.
|
|
286
|
+
var txbx = findTxbxElement(residual);
|
|
287
|
+
if (txbx !== undefined) {
|
|
288
|
+
try {
|
|
289
|
+
for (var _b = __values(elementChildren(txbx)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
290
|
+
var child = _c.value;
|
|
291
|
+
if (child.localName === 'txbxContent') {
|
|
292
|
+
return child;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
297
|
+
finally {
|
|
298
|
+
try {
|
|
299
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
300
|
+
}
|
|
301
|
+
finally { if (e_3) throw e_3.error; }
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// Deep fallback (any namespace with localName txbxContent).
|
|
305
|
+
var walk = function (root) {
|
|
306
|
+
var e_4, _a;
|
|
307
|
+
if (root.localName === 'txbxContent') {
|
|
308
|
+
return root;
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
for (var _b = __values(elementChildren(root)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
312
|
+
var child = _c.value;
|
|
313
|
+
var found = walk(child);
|
|
314
|
+
if (found !== undefined) {
|
|
315
|
+
return found;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
320
|
+
finally {
|
|
321
|
+
try {
|
|
322
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
323
|
+
}
|
|
324
|
+
finally { if (e_4) throw e_4.error; }
|
|
325
|
+
}
|
|
326
|
+
return undefined;
|
|
327
|
+
};
|
|
328
|
+
return walk(residual);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Read `wps:bodyPr` MVP state from residual DrawingML host.
|
|
332
|
+
*
|
|
333
|
+
* Residual hosts are dual MC AlternateContent trees, so `wps:bodyPr` is
|
|
334
|
+
* located with a deep walk. Children of the found bodyPr stay shallow.
|
|
335
|
+
*
|
|
336
|
+
* Cites: `CT_TextBodyProperties` + `EG_TextAutofit` (dml-main.xsd);
|
|
337
|
+
* `CT_WordprocessingShape/bodyPr` (dml-wordprocessingDrawing.xsd).
|
|
338
|
+
*
|
|
339
|
+
* @private
|
|
340
|
+
*/
|
|
341
|
+
export function readBodyPropertiesState(residual) {
|
|
342
|
+
var bodyPr = findBodyPrElement(residual);
|
|
343
|
+
if (bodyPr === undefined) {
|
|
344
|
+
return {
|
|
345
|
+
verticalAnchor: undefined,
|
|
346
|
+
anchorCenter: undefined,
|
|
347
|
+
textDirection: undefined,
|
|
348
|
+
textWrapInside: undefined,
|
|
349
|
+
verticalOverflow: undefined,
|
|
350
|
+
horizontalOverflow: undefined,
|
|
351
|
+
fromWordArt: undefined,
|
|
352
|
+
insets: undefined,
|
|
353
|
+
autoFit: undefined,
|
|
354
|
+
hasPresetTextWarp: false,
|
|
355
|
+
residual: false,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
var anchorRaw = attrValue(bodyPr, 'anchor');
|
|
359
|
+
var vertRaw = attrValue(bodyPr, 'vert');
|
|
360
|
+
var wrapRaw = attrValue(bodyPr, 'wrap');
|
|
361
|
+
var vertOverflowRaw = attrValue(bodyPr, 'vertOverflow');
|
|
362
|
+
var horzOverflowRaw = attrValue(bodyPr, 'horzOverflow');
|
|
363
|
+
var left = parseInsetEmu(attrValue(bodyPr, 'lIns'));
|
|
364
|
+
var top = parseInsetEmu(attrValue(bodyPr, 'tIns'));
|
|
365
|
+
var right = parseInsetEmu(attrValue(bodyPr, 'rIns'));
|
|
366
|
+
var bottom = parseInsetEmu(attrValue(bodyPr, 'bIns'));
|
|
367
|
+
var hasAnyInset = left !== undefined || top !== undefined || right !== undefined || bottom !== undefined;
|
|
368
|
+
var insets;
|
|
369
|
+
if (hasAnyInset) {
|
|
370
|
+
var insetOut = {};
|
|
371
|
+
if (left !== undefined) {
|
|
372
|
+
insetOut.left = left;
|
|
373
|
+
}
|
|
374
|
+
if (top !== undefined) {
|
|
375
|
+
insetOut.top = top;
|
|
376
|
+
}
|
|
377
|
+
if (right !== undefined) {
|
|
378
|
+
insetOut.right = right;
|
|
379
|
+
}
|
|
380
|
+
if (bottom !== undefined) {
|
|
381
|
+
insetOut.bottom = bottom;
|
|
382
|
+
}
|
|
383
|
+
insets = insetOut;
|
|
384
|
+
}
|
|
385
|
+
var hasPresetTextWarp = findBodyPrChild(bodyPr, A_NS, 'prstTxWarp') !== undefined;
|
|
386
|
+
var hasScene3d = findBodyPrChild(bodyPr, A_NS, 'scene3d') !== undefined;
|
|
387
|
+
var hasSp3d = findBodyPrChild(bodyPr, A_NS, 'sp3d') !== undefined;
|
|
388
|
+
var hasFlatTx = findBodyPrChild(bodyPr, A_NS, 'flatTx') !== undefined;
|
|
389
|
+
var hasExtLst = findBodyPrChild(bodyPr, A_NS, 'extLst') !== undefined;
|
|
390
|
+
// Modeled attrs only; any other bodyPr attrs count as residual.
|
|
391
|
+
var modeledAttrNames = new Set([
|
|
392
|
+
'anchor',
|
|
393
|
+
'anchorCtr',
|
|
394
|
+
'vert',
|
|
395
|
+
'wrap',
|
|
396
|
+
'vertOverflow',
|
|
397
|
+
'horzOverflow',
|
|
398
|
+
'fromWordArt',
|
|
399
|
+
'lIns',
|
|
400
|
+
'tIns',
|
|
401
|
+
'rIns',
|
|
402
|
+
'bIns',
|
|
403
|
+
]);
|
|
404
|
+
var hasUnknownAttrs = bodyPr.attributes.some(function (a) { return a.namespaceUri === '' && !modeledAttrNames.has(a.localName); });
|
|
405
|
+
return {
|
|
406
|
+
verticalAnchor: anchorRaw !== undefined && isTextAnchoring(anchorRaw) ? anchorRaw : undefined,
|
|
407
|
+
anchorCenter: parseXmlBoolean(attrValue(bodyPr, 'anchorCtr')),
|
|
408
|
+
textDirection: vertRaw !== undefined && isTextVerticalType(vertRaw) ? vertRaw : undefined,
|
|
409
|
+
textWrapInside: wrapRaw !== undefined && isTextBodyWrap(wrapRaw) ? wrapRaw : undefined,
|
|
410
|
+
verticalOverflow: vertOverflowRaw !== undefined && isTextVertOverflow(vertOverflowRaw)
|
|
411
|
+
? vertOverflowRaw
|
|
412
|
+
: undefined,
|
|
413
|
+
horizontalOverflow: horzOverflowRaw !== undefined && isTextHorzOverflow(horzOverflowRaw)
|
|
414
|
+
? horzOverflowRaw
|
|
415
|
+
: undefined,
|
|
416
|
+
fromWordArt: parseXmlBoolean(attrValue(bodyPr, 'fromWordArt')),
|
|
417
|
+
insets: insets,
|
|
418
|
+
autoFit: parseAutoFit(bodyPr),
|
|
419
|
+
hasPresetTextWarp: hasPresetTextWarp,
|
|
420
|
+
residual: hasPresetTextWarp || hasScene3d || hasSp3d || hasFlatTx || hasExtLst || hasUnknownAttrs,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
function buildEmptyAElement(localName) {
|
|
424
|
+
return {
|
|
425
|
+
kind: 'element',
|
|
426
|
+
namespaceUri: A_NS,
|
|
427
|
+
localName: localName,
|
|
428
|
+
prefix: 'a',
|
|
429
|
+
attributes: [],
|
|
430
|
+
namespaceDeclarations: [],
|
|
431
|
+
children: [],
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
function buildNormAutofit(fontScale, lineSpaceReduction) {
|
|
435
|
+
var attributes = [];
|
|
436
|
+
if (fontScale !== undefined) {
|
|
437
|
+
if (!Number.isInteger(fontScale) ||
|
|
438
|
+
fontScale < FONT_SCALE_MIN ||
|
|
439
|
+
fontScale > FONT_SCALE_MAX) {
|
|
440
|
+
throw new DocxError('content/invalid-shape', "normAutofit fontScale " + String(fontScale) + " outside ST_TextFontScalePercent range " + String(FONT_SCALE_MIN) + "\u2026" + String(FONT_SCALE_MAX));
|
|
441
|
+
}
|
|
442
|
+
attributes.push({
|
|
443
|
+
namespaceUri: '',
|
|
444
|
+
localName: 'fontScale',
|
|
445
|
+
prefix: '',
|
|
446
|
+
value: String(fontScale),
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
if (lineSpaceReduction !== undefined) {
|
|
450
|
+
if (!Number.isInteger(lineSpaceReduction) || lineSpaceReduction < 0) {
|
|
451
|
+
throw new DocxError('content/invalid-shape', "normAutofit lnSpcReduction " + String(lineSpaceReduction) + " must be a non-negative integer");
|
|
452
|
+
}
|
|
453
|
+
attributes.push({
|
|
454
|
+
namespaceUri: '',
|
|
455
|
+
localName: 'lnSpcReduction',
|
|
456
|
+
prefix: '',
|
|
457
|
+
value: String(lineSpaceReduction),
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
return {
|
|
461
|
+
kind: 'element',
|
|
462
|
+
namespaceUri: A_NS,
|
|
463
|
+
localName: 'normAutofit',
|
|
464
|
+
prefix: 'a',
|
|
465
|
+
attributes: attributes,
|
|
466
|
+
namespaceDeclarations: [],
|
|
467
|
+
children: [],
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function buildAutoFitChild(autoFit) {
|
|
471
|
+
if (autoFit.kind === 'none') {
|
|
472
|
+
return buildEmptyAElement('noAutofit');
|
|
473
|
+
}
|
|
474
|
+
if (autoFit.kind === 'shape') {
|
|
475
|
+
return buildEmptyAElement('spAutoFit');
|
|
476
|
+
}
|
|
477
|
+
return buildNormAutofit(autoFit.fontScale, autoFit.lineSpaceReduction);
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Convert inset points to a non-negative wire EMU integer string.
|
|
481
|
+
* 0 is legal for insets; uses pointToCoordinateEmus (allows 0).
|
|
482
|
+
*/
|
|
483
|
+
function insetToEmuString(value) {
|
|
484
|
+
var emu = pointToCoordinateEmus(value);
|
|
485
|
+
if (!Number.isInteger(emu) || emu < 0) {
|
|
486
|
+
throw new DocxError('content/invalid-shape', "bodyPr inset must be a non-negative point value convertible to EMU, got " + String(value));
|
|
487
|
+
}
|
|
488
|
+
return String(emu);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Build `wps:bodyPr` from the modeled MVP subset.
|
|
492
|
+
*
|
|
493
|
+
* Always emits the element (schema requires bodyPr on `wps:wsp`). When no
|
|
494
|
+
* modeled fields are set, emits empty `<wps:bodyPr/>`.
|
|
495
|
+
*
|
|
496
|
+
* Autofit children use the DrawingML `a:` namespace. Residual warp/3d/extLst
|
|
497
|
+
* are not re-emitted on the full structure rebuild path.
|
|
498
|
+
*
|
|
499
|
+
* @private
|
|
500
|
+
*/
|
|
501
|
+
export function buildBodyPrElement(state) {
|
|
502
|
+
var attributes = [];
|
|
503
|
+
if (state.verticalAnchor !== undefined) {
|
|
504
|
+
if (!isTextAnchoring(state.verticalAnchor)) {
|
|
505
|
+
throw new DocxError('content/invalid-shape', "Invalid bodyPr anchor \"" + String(state.verticalAnchor) + "\"");
|
|
506
|
+
}
|
|
507
|
+
attributes.push({
|
|
508
|
+
namespaceUri: '',
|
|
509
|
+
localName: 'anchor',
|
|
510
|
+
prefix: '',
|
|
511
|
+
value: state.verticalAnchor,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
if (state.anchorCenter !== undefined) {
|
|
515
|
+
attributes.push({
|
|
516
|
+
namespaceUri: '',
|
|
517
|
+
localName: 'anchorCtr',
|
|
518
|
+
prefix: '',
|
|
519
|
+
value: state.anchorCenter ? '1' : '0',
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
if (state.textDirection !== undefined) {
|
|
523
|
+
if (!isTextVerticalType(state.textDirection)) {
|
|
524
|
+
throw new DocxError('content/invalid-shape', "Invalid bodyPr vert \"" + String(state.textDirection) + "\"");
|
|
525
|
+
}
|
|
526
|
+
attributes.push({
|
|
527
|
+
namespaceUri: '',
|
|
528
|
+
localName: 'vert',
|
|
529
|
+
prefix: '',
|
|
530
|
+
value: state.textDirection,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
if (state.textWrapInside !== undefined) {
|
|
534
|
+
if (!isTextBodyWrap(state.textWrapInside)) {
|
|
535
|
+
throw new DocxError('content/invalid-shape', "Invalid bodyPr wrap \"" + String(state.textWrapInside) + "\" (schema: none|square only)");
|
|
536
|
+
}
|
|
537
|
+
attributes.push({
|
|
538
|
+
namespaceUri: '',
|
|
539
|
+
localName: 'wrap',
|
|
540
|
+
prefix: '',
|
|
541
|
+
value: state.textWrapInside,
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
if (state.verticalOverflow !== undefined) {
|
|
545
|
+
if (!isTextVertOverflow(state.verticalOverflow)) {
|
|
546
|
+
throw new DocxError('content/invalid-shape', "Invalid bodyPr vertOverflow \"" + String(state.verticalOverflow) + "\"");
|
|
547
|
+
}
|
|
548
|
+
attributes.push({
|
|
549
|
+
namespaceUri: '',
|
|
550
|
+
localName: 'vertOverflow',
|
|
551
|
+
prefix: '',
|
|
552
|
+
value: state.verticalOverflow,
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
if (state.horizontalOverflow !== undefined) {
|
|
556
|
+
if (!isTextHorzOverflow(state.horizontalOverflow)) {
|
|
557
|
+
throw new DocxError('content/invalid-shape', "Invalid bodyPr horzOverflow \"" + String(state.horizontalOverflow) + "\"");
|
|
558
|
+
}
|
|
559
|
+
attributes.push({
|
|
560
|
+
namespaceUri: '',
|
|
561
|
+
localName: 'horzOverflow',
|
|
562
|
+
prefix: '',
|
|
563
|
+
value: state.horizontalOverflow,
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
if (state.fromWordArt !== undefined) {
|
|
567
|
+
attributes.push({
|
|
568
|
+
namespaceUri: '',
|
|
569
|
+
localName: 'fromWordArt',
|
|
570
|
+
prefix: '',
|
|
571
|
+
value: state.fromWordArt ? '1' : '0',
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
var insets = state.insets;
|
|
575
|
+
if (insets !== undefined) {
|
|
576
|
+
if (insets.left !== undefined) {
|
|
577
|
+
attributes.push({
|
|
578
|
+
namespaceUri: '',
|
|
579
|
+
localName: 'lIns',
|
|
580
|
+
prefix: '',
|
|
581
|
+
value: insetToEmuString(insets.left),
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
if (insets.top !== undefined) {
|
|
585
|
+
attributes.push({
|
|
586
|
+
namespaceUri: '',
|
|
587
|
+
localName: 'tIns',
|
|
588
|
+
prefix: '',
|
|
589
|
+
value: insetToEmuString(insets.top),
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
if (insets.right !== undefined) {
|
|
593
|
+
attributes.push({
|
|
594
|
+
namespaceUri: '',
|
|
595
|
+
localName: 'rIns',
|
|
596
|
+
prefix: '',
|
|
597
|
+
value: insetToEmuString(insets.right),
|
|
598
|
+
});
|
|
599
|
+
}
|
|
600
|
+
if (insets.bottom !== undefined) {
|
|
601
|
+
attributes.push({
|
|
602
|
+
namespaceUri: '',
|
|
603
|
+
localName: 'bIns',
|
|
604
|
+
prefix: '',
|
|
605
|
+
value: insetToEmuString(insets.bottom),
|
|
606
|
+
});
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
var children = [];
|
|
610
|
+
if (state.autoFit !== undefined) {
|
|
611
|
+
children.push(buildAutoFitChild(state.autoFit));
|
|
612
|
+
}
|
|
613
|
+
return {
|
|
614
|
+
kind: 'element',
|
|
615
|
+
namespaceUri: WPS_NS,
|
|
616
|
+
localName: 'bodyPr',
|
|
617
|
+
prefix: 'wps',
|
|
618
|
+
attributes: attributes,
|
|
619
|
+
namespaceDeclarations: [],
|
|
620
|
+
children: children,
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Whether any modeled bodyPr field is present (used by encode path to decide
|
|
625
|
+
* empty vs populated bodyPr emission — empty is still required on wsp).
|
|
626
|
+
*
|
|
627
|
+
* @private
|
|
628
|
+
*/
|
|
629
|
+
export function hasModeledBodyPrFields(state) {
|
|
630
|
+
return (state.verticalAnchor !== undefined ||
|
|
631
|
+
state.anchorCenter !== undefined ||
|
|
632
|
+
state.textDirection !== undefined ||
|
|
633
|
+
state.textWrapInside !== undefined ||
|
|
634
|
+
state.verticalOverflow !== undefined ||
|
|
635
|
+
state.horizontalOverflow !== undefined ||
|
|
636
|
+
state.fromWordArt !== undefined ||
|
|
637
|
+
state.insets !== undefined ||
|
|
638
|
+
state.autoFit !== undefined);
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Public text direction inside a shape text frame (`wps:bodyPr/@vert`).
|
|
642
|
+
* @public
|
|
643
|
+
*/
|
|
644
|
+
export var TextDirection = {
|
|
645
|
+
Horizontal: 'horz',
|
|
646
|
+
Vertical: 'vert',
|
|
647
|
+
Vertical270: 'vert270',
|
|
648
|
+
WordArtVertical: 'wordArtVert',
|
|
649
|
+
EastAsianVertical: 'eaVert',
|
|
650
|
+
MongolianVertical: 'mongolianVert',
|
|
651
|
+
WordArtVerticalRtl: 'wordArtVertRtl',
|
|
652
|
+
};
|
|
653
|
+
/**
|
|
654
|
+
* Public vertical alignment of text inside a shape text frame (`wps:bodyPr/@anchor`).
|
|
655
|
+
* @public
|
|
656
|
+
*/
|
|
657
|
+
export var TextVerticalAlignment = {
|
|
658
|
+
Top: 't',
|
|
659
|
+
Center: 'ctr',
|
|
660
|
+
Bottom: 'b',
|
|
661
|
+
Justified: 'just',
|
|
662
|
+
Distributed: 'dist',
|
|
663
|
+
};
|