@syncfusion/ej2-docx 0.0.0-stage → 35.1.39
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 +68 -2
- package/core.js +4 -0
- package/dist/ej2-docx.umd.min.js +2 -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 +2 -0
- package/dist/global/ej2-docx.min.js.map +1 -0
- package/dist/global/index.d.ts +5 -0
- package/features.js +4 -0
- package/index.js +4 -0
- package/license +10 -0
- package/package.json +31 -4
- 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,1192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DrawingShape leaf — residual-preserving DrawingML/VML run child.
|
|
3
|
+
*
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
import { WordDocument } from '../document/document';
|
|
7
|
+
import { EntityType } from '../document/entity-type';
|
|
8
|
+
import { FeatureRunLeaf } from '../document/feature-run-leaf';
|
|
9
|
+
import { Emus } from '../document/length';
|
|
10
|
+
import { Body } from '../document/body';
|
|
11
|
+
import { BodyItem } from '../document/body-item';
|
|
12
|
+
import { BlockContent, Paragraph, ParagraphOwner } from '../document/paragraph';
|
|
13
|
+
import { OpenXmlElement } from '../../core/xml/index';
|
|
14
|
+
import { HorizontalAlignment as HorizontalAlignmentType, HorizontalOrigin as HorizontalOriginType, TextWrappingStyle as TextWrappingStyleType, TextWrappingType as TextWrappingTypeType, VerticalAlignment as VerticalAlignmentType, VerticalOrigin as VerticalOriginType } from '../images/layout-types';
|
|
15
|
+
import { Table as TableFeature } from '../tables/index';
|
|
16
|
+
import { DrawingHostPlacement } from './host-codec';
|
|
17
|
+
import { ShapeFill, ShapeLine } from './sp-pr';
|
|
18
|
+
import { BodyInsets, TextAnchoring, TextAutoFit, TextBodyWrap, TextHorzOverflow, TextVerticalType, TextVertOverflow } from './body-pr';
|
|
19
|
+
import { AutoShapeType } from './shape-types';
|
|
20
|
+
import { FillFormat, FillFormatOwner } from './fill-format';
|
|
21
|
+
import { LineFormat, LineFormatOwner } from './line-format';
|
|
22
|
+
import { WrapFormat, WrapFormatOwner } from './wrap-format';
|
|
23
|
+
import { TextFrame, TextFrameOwner } from './text-frame';
|
|
24
|
+
import { TextDirection, TextVerticalAlignment } from './body-pr';
|
|
25
|
+
import { DrawingEncoding, DrawingExtent, DrawingPlacement, DrawingVariant } from './types';
|
|
26
|
+
export declare type DirtyMode = 'clean' | 'identity' | 'layout' | 'structure';
|
|
27
|
+
/**
|
|
28
|
+
* Cached `wps:spPr` MVP state read from residual (lazy).
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
export interface ShapePropertiesStateCached {
|
|
32
|
+
readonly presetGeometry: string | undefined;
|
|
33
|
+
readonly useCustomGeometry: boolean;
|
|
34
|
+
readonly fill: ShapeFill | undefined;
|
|
35
|
+
readonly line: ShapeLine | undefined;
|
|
36
|
+
readonly hasThemeStyle: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface DrawingShapeInit {
|
|
39
|
+
readonly encoding: DrawingEncoding;
|
|
40
|
+
readonly residual: OpenXmlElement;
|
|
41
|
+
readonly dirty: DirtyMode;
|
|
42
|
+
readonly name?: string | undefined;
|
|
43
|
+
readonly title?: string | undefined;
|
|
44
|
+
readonly description?: string | undefined;
|
|
45
|
+
readonly docPrId?: number | undefined;
|
|
46
|
+
readonly placement?: DrawingHostPlacement | undefined;
|
|
47
|
+
/** Display width in points. */
|
|
48
|
+
readonly width?: number | undefined;
|
|
49
|
+
/** Display height in points. */
|
|
50
|
+
readonly height?: number | undefined;
|
|
51
|
+
readonly presetGeometry?: string | undefined;
|
|
52
|
+
readonly rotation?: number | undefined;
|
|
53
|
+
readonly lockAspectRatio?: boolean | undefined;
|
|
54
|
+
readonly flipHorizontal?: boolean | undefined;
|
|
55
|
+
readonly flipVertical?: boolean | undefined;
|
|
56
|
+
readonly wrapping?: TextWrappingStyleType | undefined;
|
|
57
|
+
/** Wrap side (`wp:wrap*@wrapText`) for square/tight/through. */
|
|
58
|
+
readonly wrapType?: TextWrappingTypeType | undefined;
|
|
59
|
+
/** Top text distance in points. */
|
|
60
|
+
readonly distanceTop?: number | undefined;
|
|
61
|
+
/** Bottom text distance in points. */
|
|
62
|
+
readonly distanceBottom?: number | undefined;
|
|
63
|
+
/** Left text distance in points. */
|
|
64
|
+
readonly distanceLeft?: number | undefined;
|
|
65
|
+
/** Right text distance in points. */
|
|
66
|
+
readonly distanceRight?: number | undefined;
|
|
67
|
+
readonly behindDocument?: boolean | undefined;
|
|
68
|
+
readonly horizontalOrigin?: HorizontalOriginType | undefined;
|
|
69
|
+
readonly verticalOrigin?: VerticalOriginType | undefined;
|
|
70
|
+
/** Horizontal offset in points. */
|
|
71
|
+
readonly horizontalPosition?: number | undefined;
|
|
72
|
+
/** Vertical offset in points. */
|
|
73
|
+
readonly verticalPosition?: number | undefined;
|
|
74
|
+
readonly horizontalAlignment?: HorizontalAlignmentType | undefined;
|
|
75
|
+
readonly verticalAlignment?: VerticalAlignmentType | undefined;
|
|
76
|
+
readonly lockAnchor?: boolean | undefined;
|
|
77
|
+
readonly allowOverlap?: boolean | undefined;
|
|
78
|
+
readonly layoutInCell?: boolean | undefined;
|
|
79
|
+
readonly fill?: ShapeFill | undefined;
|
|
80
|
+
readonly line?: ShapeLine | undefined;
|
|
81
|
+
/** Serialized `w:txbxContent` children for authored text box variants (TASK-8049). */
|
|
82
|
+
readonly txbxContent?: ReadonlyArray<OpenXmlElement> | undefined;
|
|
83
|
+
/** Modeled `wps:bodyPr` element for authored text box variants (TASK-8049). */
|
|
84
|
+
readonly bodyPrElement?: OpenXmlElement | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Nested group/canvas children (TASK-8051). When defined, the shape is a
|
|
87
|
+
* modeled group host even if the array is empty.
|
|
88
|
+
*/
|
|
89
|
+
readonly children?: ReadonlyArray<DrawingShape> | undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Cached `wps:txbx` body state (lazy).
|
|
93
|
+
* @private
|
|
94
|
+
*/
|
|
95
|
+
export interface TextBoxStateCached {
|
|
96
|
+
/** True when a `wps:txbx` (WML body) exists under the residual host. */
|
|
97
|
+
readonly present: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Internal ordered store for `w:txbxContent` (paragraphs/tables/SDTs).
|
|
100
|
+
* Public lists project via adapters.
|
|
101
|
+
*/
|
|
102
|
+
readonly blocks: BlockContent[];
|
|
103
|
+
/** Residual `wps:txbx` element for verbatim clone when body is untouched. */
|
|
104
|
+
readonly residualTxbx: OpenXmlElement | undefined;
|
|
105
|
+
/** Residual `w:txbxContent` element (may be absent in odd fixtures). */
|
|
106
|
+
readonly residualTxbxContent: OpenXmlElement | undefined;
|
|
107
|
+
}
|
|
108
|
+
export declare class TextBoxParagraphOwner implements ParagraphOwner {
|
|
109
|
+
private readonly shape;
|
|
110
|
+
constructor(shape: DrawingShape);
|
|
111
|
+
assertAttachedParagraph(target: Paragraph): void;
|
|
112
|
+
/**
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
owningDocument(): WordDocument;
|
|
116
|
+
}
|
|
117
|
+
/** Deep membership check: direct or nested (table cell / SDT) paragraph. */
|
|
118
|
+
export declare function blockListOwnsParagraph(blocks: ReadonlyArray<BlockContent>, target: Paragraph): boolean;
|
|
119
|
+
export declare function tableOwnsParagraph(table: TableFeature, target: Paragraph): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Minimum `w:txbxContent` body: one empty paragraph (`EG_BlockLevelElts`
|
|
122
|
+
* minOccurs=1 — `CT_TxbxContent` cannot be empty; Word authors a bare `w:p`).
|
|
123
|
+
*/
|
|
124
|
+
/**
|
|
125
|
+
* Shared base for DrawingML / VML run leaves: identity, placement, size,
|
|
126
|
+
* rotation/flip/lock, wrap/distances, position, residual dirty plumbing, and
|
|
127
|
+
* `FeatureRunLeaf` serialization.
|
|
128
|
+
*
|
|
129
|
+
* Concrete leaves are {@link Shape}; group/canvas hosts are {@link GroupShape}.
|
|
130
|
+
* Prefer those subclasses (and {@link createDrawingShape}) at construction time.
|
|
131
|
+
* `instanceof DrawingShape` remains true for both subclasses so existing leaf
|
|
132
|
+
* guards keep working.
|
|
133
|
+
*
|
|
134
|
+
* Clean load/save is residual pass-through. Identity mutators patch `wp:docPr`
|
|
135
|
+
* only. Layout mutators (size/rotation/lock/flip) patch residual extent+xfrm+locks
|
|
136
|
+
* without full dual-AC rebuild. Position mutators (H/V origin, offset vs align,
|
|
137
|
+
* `lockAnchor`/`allowOverlap`/`layoutInCell`) mark the shape structure dirty:
|
|
138
|
+
* the dual MC shell is re-encoded with residual position preserved per-axis
|
|
139
|
+
* when a mode was not modeled. Authoring (`appendShape`) emits dual MC
|
|
140
|
+
* AlternateContent (Choice wps + Fallback VML stub) — GO Policy B.
|
|
141
|
+
* Text box leaves expose `wps:bodyPr` typed state and the `w:txbxContent`
|
|
142
|
+
* block body (paragraphs / tables / nested tables / block SDTs — GO Q6);
|
|
143
|
+
* non-textBox shapes throw on body APIs (TASK-8049).
|
|
144
|
+
*
|
|
145
|
+
* @private
|
|
146
|
+
*/
|
|
147
|
+
export declare class DrawingShape implements FeatureRunLeaf, FillFormatOwner, LineFormatOwner, WrapFormatOwner, TextFrameOwner {
|
|
148
|
+
private residual;
|
|
149
|
+
private encodingValue;
|
|
150
|
+
private dirtyMode;
|
|
151
|
+
private nameValue;
|
|
152
|
+
private titleValue;
|
|
153
|
+
private descriptionValue;
|
|
154
|
+
private docPrIdValue;
|
|
155
|
+
private placementValue;
|
|
156
|
+
/** Display width in points. */
|
|
157
|
+
private widthValue;
|
|
158
|
+
/** Display height in points. */
|
|
159
|
+
private heightValue;
|
|
160
|
+
private presetGeometryValue;
|
|
161
|
+
private rotationValue;
|
|
162
|
+
private lockAspectRatioValue;
|
|
163
|
+
private flipHorizontalValue;
|
|
164
|
+
private flipVerticalValue;
|
|
165
|
+
private wrappingValue;
|
|
166
|
+
/** Top text distance in points. */
|
|
167
|
+
private distanceTopValue;
|
|
168
|
+
/** Bottom text distance in points. */
|
|
169
|
+
private distanceBottomValue;
|
|
170
|
+
/** Left text distance in points. */
|
|
171
|
+
private distanceLeftValue;
|
|
172
|
+
/** Right text distance in points. */
|
|
173
|
+
private distanceRightValue;
|
|
174
|
+
private behindDocumentValue;
|
|
175
|
+
/** Whether distance* fields were explicitly modeled (vs residual/default). */
|
|
176
|
+
private distancesModeled;
|
|
177
|
+
/** Whether behindDocument was explicitly modeled. */
|
|
178
|
+
private behindDocumentModeled;
|
|
179
|
+
private horizontalOriginValue;
|
|
180
|
+
private verticalOriginValue;
|
|
181
|
+
/** Horizontal offset in points. */
|
|
182
|
+
private horizontalPositionValue;
|
|
183
|
+
/** Vertical offset in points. */
|
|
184
|
+
private verticalPositionValue;
|
|
185
|
+
private horizontalAlignmentValue;
|
|
186
|
+
private verticalAlignmentValue;
|
|
187
|
+
/** Whether a horizontal position mode (offset or align) is explicitly modeled. */
|
|
188
|
+
private horizontalModeled;
|
|
189
|
+
/** Whether a vertical position mode (offset or align) is explicitly modeled. */
|
|
190
|
+
private verticalModeled;
|
|
191
|
+
private lockAnchorValue;
|
|
192
|
+
private allowOverlapValue;
|
|
193
|
+
private layoutInCellValue;
|
|
194
|
+
/** Geometry/fill/line state (TASK-8048). Defined after first read/mtate. */
|
|
195
|
+
private spPrState;
|
|
196
|
+
private fillValue;
|
|
197
|
+
private fillModeled;
|
|
198
|
+
private lineValue;
|
|
199
|
+
private lineModeled;
|
|
200
|
+
/** Text box body state (TASK-8049). Lazy; defined after first body access. */
|
|
201
|
+
private txbxState;
|
|
202
|
+
private txbxBlocksValue;
|
|
203
|
+
private txbxBodyModeled;
|
|
204
|
+
private bodyPrValue;
|
|
205
|
+
private bodyPrModeled;
|
|
206
|
+
private textBoxOwner;
|
|
207
|
+
/**
|
|
208
|
+
* Nested DrawingML children under a group/canvas host (TASK-8051).
|
|
209
|
+
* Populated when {@link childrenModeled} is true (authored or materialised).
|
|
210
|
+
*/
|
|
211
|
+
protected childrenValue: DrawingShape[];
|
|
212
|
+
/** True when nested children are owned by the model (including empty group). */
|
|
213
|
+
protected childrenModeled: boolean;
|
|
214
|
+
/** Lazy residual parse cache when children are not yet modeled. */
|
|
215
|
+
protected childrenCache: DrawingShape[] | undefined;
|
|
216
|
+
/** Parent group/canvas when this leaf is a nested child (TASK-8051). */
|
|
217
|
+
/** Parent group when nested; package-visible for GroupShape reparenting. @private */
|
|
218
|
+
parentGroup: DrawingShape | undefined;
|
|
219
|
+
/** Modeled wrap type (square sides). Default Both when unset. */
|
|
220
|
+
private wrappingTypeValue;
|
|
221
|
+
private fillFormatValue;
|
|
222
|
+
private lineFormatValue;
|
|
223
|
+
private wrapFormatValue;
|
|
224
|
+
private textFrameValue;
|
|
225
|
+
private textBodyValue;
|
|
226
|
+
/**
|
|
227
|
+
* @private
|
|
228
|
+
*/
|
|
229
|
+
constructor(encoding: DrawingEncoding, element: OpenXmlElement);
|
|
230
|
+
/**
|
|
231
|
+
* @private
|
|
232
|
+
*/
|
|
233
|
+
constructor(init: DrawingShapeInit);
|
|
234
|
+
/**
|
|
235
|
+
* Whether this leaf is DrawingML (`w:drawing` / MC Choice) or VML (`w:pict`).
|
|
236
|
+
*
|
|
237
|
+
* @private
|
|
238
|
+
*/
|
|
239
|
+
encoding(): DrawingEncoding;
|
|
240
|
+
/**
|
|
241
|
+
* Placement host for DrawingML leaves, or `unknown` for VML.
|
|
242
|
+
*
|
|
243
|
+
* @private
|
|
244
|
+
*/
|
|
245
|
+
placement(): DrawingPlacement;
|
|
246
|
+
/**
|
|
247
|
+
* Shape variant: kind of drawing object this leaf hosts.
|
|
248
|
+
*
|
|
249
|
+
* Detection is via `a:graphicData @uri` for DML and child element localName
|
|
250
|
+
* for VML. Modeled empty groups (`childrenModeled`) read as `'group'` before
|
|
251
|
+
* residual URI detection. Nested residual leaves (`wps:wsp` / `wpg:grpSp`)
|
|
252
|
+
* are classified from their own element when no `w:drawing` host is present
|
|
253
|
+
* (TASK-8051). Authored structure + presetGeometry still short-circuits to
|
|
254
|
+
* `'shape'` / `'textBox'` after group/canvas checks so residual groups are
|
|
255
|
+
* never misread as shapes.
|
|
256
|
+
*
|
|
257
|
+
* @private
|
|
258
|
+
*/
|
|
259
|
+
variant(): DrawingVariant;
|
|
260
|
+
/**
|
|
261
|
+
* Nested DrawingML children under a group or canvas host (TASK-8051).
|
|
262
|
+
*
|
|
263
|
+
* Leaf shapes, VML, and unknown variants return `[]`. Residual group/canvas
|
|
264
|
+
* hosts lazy-parse `wps:wsp` / `wpg:grpSp` under `wpg:wgp` or `wpc:wpc`.
|
|
265
|
+
* Modeled groups (including empty authored groups) return the owned list.
|
|
266
|
+
* Public consumers use {@link GroupShape.childShapes}.
|
|
267
|
+
*
|
|
268
|
+
* @private
|
|
269
|
+
*/
|
|
270
|
+
children(): ReadonlyArray<DrawingShape>;
|
|
271
|
+
/**
|
|
272
|
+
* Non-visual drawing name from `wp:docPr @name` / nested `cNvPr @name`.
|
|
273
|
+
* @public
|
|
274
|
+
*/
|
|
275
|
+
name: string | undefined;
|
|
276
|
+
/**
|
|
277
|
+
* Title from `wp:docPr @title` / nested `cNvPr @title`.
|
|
278
|
+
* @public
|
|
279
|
+
*/
|
|
280
|
+
title: string | undefined;
|
|
281
|
+
/**
|
|
282
|
+
* Alternative text from `wp:docPr @descr` / nested `cNvPr @descr`.
|
|
283
|
+
* @public
|
|
284
|
+
*/
|
|
285
|
+
alternativeText: string | undefined;
|
|
286
|
+
/**
|
|
287
|
+
* Stable fill format facade (Shape.md).
|
|
288
|
+
* @public
|
|
289
|
+
*/
|
|
290
|
+
readonly fillFormat: FillFormat;
|
|
291
|
+
/**
|
|
292
|
+
* Stable line format facade (Shape.md).
|
|
293
|
+
* @public
|
|
294
|
+
*/
|
|
295
|
+
readonly lineFormat: LineFormat;
|
|
296
|
+
/**
|
|
297
|
+
* Stable wrap format facade (Shape.md).
|
|
298
|
+
* @public
|
|
299
|
+
*/
|
|
300
|
+
readonly wrapFormat: WrapFormat;
|
|
301
|
+
/**
|
|
302
|
+
* Stable text frame facade (Shape.md).
|
|
303
|
+
* @public
|
|
304
|
+
*/
|
|
305
|
+
readonly textFrame: TextFrame;
|
|
306
|
+
/**
|
|
307
|
+
* Text-box story content as a document {@link Body} (`w:txbxContent`).
|
|
308
|
+
* First access promotes the leaf to a text-box variant (`wps:txbx`).
|
|
309
|
+
* @public
|
|
310
|
+
*/
|
|
311
|
+
readonly textBody: Body;
|
|
312
|
+
/**
|
|
313
|
+
* Auto shape type from preset geometry. Returns AutoShapeType.Unknown when missing/unrecognized/VML; Custom for custGeom.
|
|
314
|
+
* @public
|
|
315
|
+
*/
|
|
316
|
+
readonly autoShapeType: AutoShapeType;
|
|
317
|
+
/** @private */
|
|
318
|
+
readShapeFillState(): ShapeFill | undefined;
|
|
319
|
+
/** @private */
|
|
320
|
+
writeShapeFillState(value: ShapeFill | undefined): void;
|
|
321
|
+
/** @private */
|
|
322
|
+
readShapeLineState(): ShapeLine | undefined;
|
|
323
|
+
/** @private */
|
|
324
|
+
writeShapeLineState(value: ShapeLine | undefined): void;
|
|
325
|
+
/** @private */
|
|
326
|
+
readWrapStyle(): TextWrappingStyleType;
|
|
327
|
+
/** @private */
|
|
328
|
+
writeWrapStyle(value: TextWrappingStyleType): void;
|
|
329
|
+
/** @private */
|
|
330
|
+
readWrapType(): TextWrappingTypeType;
|
|
331
|
+
/** @private */
|
|
332
|
+
writeWrapType(value: TextWrappingTypeType): void;
|
|
333
|
+
/** @private */
|
|
334
|
+
readAllowOverlap(): boolean;
|
|
335
|
+
/** @private */
|
|
336
|
+
writeAllowOverlap(value: boolean): void;
|
|
337
|
+
/** @private */
|
|
338
|
+
readDistanceTop(): number;
|
|
339
|
+
/** @private */
|
|
340
|
+
writeDistanceTop(value: number): void;
|
|
341
|
+
/** @private */
|
|
342
|
+
readDistanceBottom(): number;
|
|
343
|
+
/** @private */
|
|
344
|
+
writeDistanceBottom(value: number): void;
|
|
345
|
+
/** @private */
|
|
346
|
+
readDistanceLeft(): number;
|
|
347
|
+
/** @private */
|
|
348
|
+
writeDistanceLeft(value: number): void;
|
|
349
|
+
/** @private */
|
|
350
|
+
readDistanceRight(): number;
|
|
351
|
+
/** @private */
|
|
352
|
+
writeDistanceRight(value: number): void;
|
|
353
|
+
/** @private */
|
|
354
|
+
readTextFrameDirection(): TextDirection | undefined;
|
|
355
|
+
/** @private */
|
|
356
|
+
writeTextFrameDirection(value: TextDirection | undefined): void;
|
|
357
|
+
/** @private */
|
|
358
|
+
readTextFrameVerticalAlignment(): TextVerticalAlignment | undefined;
|
|
359
|
+
/** @private */
|
|
360
|
+
writeTextFrameVerticalAlignment(value: TextVerticalAlignment | undefined): void;
|
|
361
|
+
/** @private */
|
|
362
|
+
readInternalMarginLeft(): number;
|
|
363
|
+
/** @private */
|
|
364
|
+
writeInternalMarginLeft(value: number): void;
|
|
365
|
+
/** @private */
|
|
366
|
+
readInternalMarginTop(): number;
|
|
367
|
+
/** @private */
|
|
368
|
+
writeInternalMarginTop(value: number): void;
|
|
369
|
+
/** @private */
|
|
370
|
+
readInternalMarginRight(): number;
|
|
371
|
+
/** @private */
|
|
372
|
+
writeInternalMarginRight(value: number): void;
|
|
373
|
+
/** @private */
|
|
374
|
+
readInternalMarginBottom(): number;
|
|
375
|
+
/** @private */
|
|
376
|
+
writeInternalMarginBottom(value: number): void;
|
|
377
|
+
/** @private */
|
|
378
|
+
private readBodyInsets;
|
|
379
|
+
/** @private */
|
|
380
|
+
private writeBodyInsets;
|
|
381
|
+
/**
|
|
382
|
+
* BodyInsets sides are **points** (body-pr parse/build converts at the
|
|
383
|
+
* wire boundary). Defaults are Word bodyPr EMU constants converted once.
|
|
384
|
+
* @private
|
|
385
|
+
*/
|
|
386
|
+
private readInsetPoints;
|
|
387
|
+
/**
|
|
388
|
+
* Store InternalMargin sides as points on BodyInsets (same unit as
|
|
389
|
+
* body-pr model). Do not convert to EMU here — buildBodyPrElement does.
|
|
390
|
+
* @private
|
|
391
|
+
*/
|
|
392
|
+
private writeInsetPoints;
|
|
393
|
+
/** @private */
|
|
394
|
+
ensureTextBodyAccessible(): void;
|
|
395
|
+
/**
|
|
396
|
+
* @private
|
|
397
|
+
* Point the txbx cache at the Body block store after Body mutations.
|
|
398
|
+
*/
|
|
399
|
+
syncTxbxBlocksFromBody(blocks: BlockContent[]): void;
|
|
400
|
+
/**
|
|
401
|
+
* Append a nested preset-geometry shape under this group or canvas (TASK-8051).
|
|
402
|
+
*
|
|
403
|
+
* Only valid when {@link variant} is `'group'` or `'canvas'`. Nested children
|
|
404
|
+
* serialize as bare `wps:wsp` (with `wps:cNvPr`) under `wpg:wgp` / `wpc:wpc`
|
|
405
|
+
* — not as a second `w:drawing` host. Marks this host structure-dirty.
|
|
406
|
+
*
|
|
407
|
+
* @throws DocxError `content/invalid-shape` when the host is not a group/canvas,
|
|
408
|
+
* or when geometry/size options are invalid.
|
|
409
|
+
*
|
|
410
|
+
* Public consumers call {@link GroupShape.appendShape}.
|
|
411
|
+
*
|
|
412
|
+
* @private
|
|
413
|
+
*/
|
|
414
|
+
/**
|
|
415
|
+
* Append a nested preset-geometry {@link Shape} under this group or canvas.
|
|
416
|
+
* @public
|
|
417
|
+
*/
|
|
418
|
+
appendShape(autoShapeType: AutoShapeType, width: number, height: number): Shape;
|
|
419
|
+
/**
|
|
420
|
+
* Extent (width × height) from modeled size or `wp:extent`, as point `number`.
|
|
421
|
+
*
|
|
422
|
+
* Returns `undefined` when no size is modeled and no `wp:extent` / `a:ext`
|
|
423
|
+
* is reachable with numeric `cx`/`cy`. VML leaves return `undefined`.
|
|
424
|
+
*
|
|
425
|
+
* @private
|
|
426
|
+
*/
|
|
427
|
+
extent(): DrawingExtent | undefined;
|
|
428
|
+
/**
|
|
429
|
+
* @deprecated Use {@link DrawingShape.extent} instead. Returns raw EMU
|
|
430
|
+
* numbers; kept for back-compat with existing feature-module tests.
|
|
431
|
+
*
|
|
432
|
+
* @private
|
|
433
|
+
*/
|
|
434
|
+
extentEmu(): {
|
|
435
|
+
readonly width: Emus;
|
|
436
|
+
readonly height: Emus;
|
|
437
|
+
} | undefined;
|
|
438
|
+
/**
|
|
439
|
+
* Display width (`wp:extent/@cx` preferred; EMU-backed point `number`).
|
|
440
|
+
* Setter marks layout dirty and updates both `wp:extent` and `a:xfrm/a:ext`
|
|
441
|
+
* on save. Does **not** auto-adjust height when {@link lockAspectRatio} is true
|
|
442
|
+
* (images parity — lock is a flag for consumers/Word).
|
|
443
|
+
*
|
|
444
|
+
* @public
|
|
445
|
+
*/
|
|
446
|
+
width: number | undefined;
|
|
447
|
+
/**
|
|
448
|
+
* Display height (`wp:extent/@cy` preferred). Same lock semantics as {@link width}.
|
|
449
|
+
*
|
|
450
|
+
* @public
|
|
451
|
+
*/
|
|
452
|
+
height: number | undefined;
|
|
453
|
+
/**
|
|
454
|
+
* Clockwise rotation in degrees (`a:xfrm/@rot`).
|
|
455
|
+
* Wire uses ST_Angle = degrees × 60000. Missing attribute reads as `0`.
|
|
456
|
+
* `@rot` is omitted on encode when the value is `0`.
|
|
457
|
+
*
|
|
458
|
+
* @throws RangeError when the value is not finite.
|
|
459
|
+
*
|
|
460
|
+
* @public
|
|
461
|
+
*/
|
|
462
|
+
rotation: number;
|
|
463
|
+
/**
|
|
464
|
+
* Aspect-ratio lock (`a:graphicFrameLocks/@noChangeAspect`).
|
|
465
|
+
* Authoring default is `true`; missing locks on load read as `false`.
|
|
466
|
+
* Setting the flag does not recompute width/height (images parity).
|
|
467
|
+
*
|
|
468
|
+
* @public
|
|
469
|
+
*/
|
|
470
|
+
lockAspectRatio: boolean;
|
|
471
|
+
/**
|
|
472
|
+
* Horizontal flip (`a:xfrm/@flipH`). Missing attribute reads as `false`.
|
|
473
|
+
*
|
|
474
|
+
* @public
|
|
475
|
+
*/
|
|
476
|
+
flipHorizontal: boolean;
|
|
477
|
+
/**
|
|
478
|
+
* Vertical flip (`a:xfrm/@flipV`). Missing attribute reads as `false`.
|
|
479
|
+
*
|
|
480
|
+
* @public
|
|
481
|
+
*/
|
|
482
|
+
flipVertical: boolean;
|
|
483
|
+
/**
|
|
484
|
+
* Text wrapping style.
|
|
485
|
+
*
|
|
486
|
+
* - `'inline'` serializes as `wp:inline`. Collapsing an anchored shape to
|
|
487
|
+
* inline **drops** position and wrap residual by design (images parity).
|
|
488
|
+
* - Other values promote to `wp:anchor` with the matching `wp:wrap*` child.
|
|
489
|
+
* Tight/through without a residual wrapPolygon fall back to `wrapNone`
|
|
490
|
+
* (library does not invent polygons).
|
|
491
|
+
*
|
|
492
|
+
* VML leaves report `'none'`.
|
|
493
|
+
*
|
|
494
|
+
* @throws RangeError when `value` is not a known {@link TextWrappingStyle}.
|
|
495
|
+
*
|
|
496
|
+
* @public
|
|
497
|
+
*/
|
|
498
|
+
/** @private */
|
|
499
|
+
/** @private */
|
|
500
|
+
private wrappingStyleInternal;
|
|
501
|
+
/**
|
|
502
|
+
* Distance from text above the shape (`wp:inline|wp:anchor/@distT`).
|
|
503
|
+
* Missing residual attribute reads as `emuToPoint(0)`.
|
|
504
|
+
*
|
|
505
|
+
* @public
|
|
506
|
+
*/
|
|
507
|
+
/** @private */
|
|
508
|
+
/** @private */
|
|
509
|
+
private distanceTopInternal;
|
|
510
|
+
/**
|
|
511
|
+
* Distance from text below the shape (`wp:inline|wp:anchor/@distB`).
|
|
512
|
+
* Missing residual attribute reads as `0` points.
|
|
513
|
+
*
|
|
514
|
+
* @public
|
|
515
|
+
*/
|
|
516
|
+
/** @private */
|
|
517
|
+
/** @private */
|
|
518
|
+
private distanceBottomInternal;
|
|
519
|
+
/**
|
|
520
|
+
* Distance from text to the left of the shape (`wp:inline|wp:anchor/@distL`).
|
|
521
|
+
* Missing residual on anchor reads as author default `emuToPoint(114300)`; inline `0` points.
|
|
522
|
+
*
|
|
523
|
+
* @public
|
|
524
|
+
*/
|
|
525
|
+
/** @private */
|
|
526
|
+
/** @private */
|
|
527
|
+
private distanceLeftInternal;
|
|
528
|
+
/**
|
|
529
|
+
* Distance from text to the right of the shape (`wp:inline|wp:anchor/@distR`).
|
|
530
|
+
* Missing residual on anchor reads as author default `emuToPoint(114300)`; inline `0` points.
|
|
531
|
+
*
|
|
532
|
+
* @public
|
|
533
|
+
*/
|
|
534
|
+
/** @private */
|
|
535
|
+
/** @private */
|
|
536
|
+
private distanceRightInternal;
|
|
537
|
+
/**
|
|
538
|
+
* Whether the shape is behind document text (`wp:anchor/@behindDoc`).
|
|
539
|
+
* Inline hosts always report `false`. VML leaves report `false`.
|
|
540
|
+
*
|
|
541
|
+
* @private
|
|
542
|
+
*/
|
|
543
|
+
/**
|
|
544
|
+
* Whether the shape is drawn below text (`wp:anchor/@behindDoc`).
|
|
545
|
+
* @public
|
|
546
|
+
*/
|
|
547
|
+
isBelowText: boolean;
|
|
548
|
+
/**
|
|
549
|
+
* Horizontal origin (`wp:positionH/@relativeFrom`, `ST_RelFromH`).
|
|
550
|
+
* Missing residual position reads as {@link HorizontalOrigin.Column}.
|
|
551
|
+
* Effective getter never returns `undefined` and does not dirty on read.
|
|
552
|
+
*
|
|
553
|
+
* @throws RangeError when `value` is not a known {@link HorizontalOrigin}.
|
|
554
|
+
*
|
|
555
|
+
* @public
|
|
556
|
+
*/
|
|
557
|
+
horizontalOrigin: HorizontalOriginType;
|
|
558
|
+
/**
|
|
559
|
+
* Vertical origin (`wp:positionV/@relativeFrom`, `ST_RelFromV`).
|
|
560
|
+
* Missing residual position reads as {@link VerticalOrigin.Paragraph}.
|
|
561
|
+
* Effective getter never returns `undefined` and does not dirty on read.
|
|
562
|
+
*
|
|
563
|
+
* @throws RangeError when `value` is not a known {@link VerticalOrigin}.
|
|
564
|
+
*
|
|
565
|
+
* @public
|
|
566
|
+
*/
|
|
567
|
+
verticalOrigin: VerticalOriginType;
|
|
568
|
+
/**
|
|
569
|
+
* Horizontal offset (`wp:positionH/wp:posOffset`).
|
|
570
|
+
* Setting a defined offset clears {@link horizontalAlignment} (align XOR
|
|
571
|
+
* posOffset — CT_PosH schema choice). Setting `undefined` clears the modeled
|
|
572
|
+
* offset (encoder then falls back to offset `0` unless align is modeled).
|
|
573
|
+
*
|
|
574
|
+
* @public
|
|
575
|
+
*/
|
|
576
|
+
horizontalPosition: number | undefined;
|
|
577
|
+
/**
|
|
578
|
+
* Vertical offset (`wp:positionV/wp:posOffset`).
|
|
579
|
+
* Setting a defined offset clears {@link verticalAlignment} (align XOR
|
|
580
|
+
* posOffset — CT_PosV schema choice). Setting `undefined` clears the modeled
|
|
581
|
+
* offset (encoder then falls back to offset `0` unless align is modeled).
|
|
582
|
+
*
|
|
583
|
+
* @public
|
|
584
|
+
*/
|
|
585
|
+
verticalPosition: number | undefined;
|
|
586
|
+
/**
|
|
587
|
+
* Horizontal alignment (`wp:positionH/wp:align`, `ST_AlignH`).
|
|
588
|
+
* Setting a defined alignment clears {@link horizontalPosition} (align XOR
|
|
589
|
+
* posOffset — CT_PosH schema choice). Effective value is never undefined:
|
|
590
|
+
* modeled alignment, else residual align, else {@link HorizontalAlignment.None}
|
|
591
|
+
* when the axis uses posOffset or the leaf is VML.
|
|
592
|
+
*
|
|
593
|
+
* @throws RangeError when `value` is not a known {@link HorizontalAlignment}.
|
|
594
|
+
*
|
|
595
|
+
* @public
|
|
596
|
+
*/
|
|
597
|
+
horizontalAlignment: HorizontalAlignmentType;
|
|
598
|
+
/**
|
|
599
|
+
* Vertical alignment (`wp:positionV/wp:align`, `ST_AlignV`).
|
|
600
|
+
* Setting a defined alignment clears {@link verticalPosition} (align XOR
|
|
601
|
+
* posOffset — CT_PosV schema choice). Effective value is never undefined:
|
|
602
|
+
* modeled alignment, else residual align, else {@link VerticalAlignment.None}
|
|
603
|
+
* when the axis uses posOffset or the leaf is VML.
|
|
604
|
+
*
|
|
605
|
+
* @throws RangeError when `value` is not a known {@link VerticalAlignment}.
|
|
606
|
+
*
|
|
607
|
+
* @public
|
|
608
|
+
*/
|
|
609
|
+
verticalAlignment: VerticalAlignmentType;
|
|
610
|
+
/**
|
|
611
|
+
* Lock anchor (`wp:anchor/@locked`): the anchor location must not be modified
|
|
612
|
+
* at runtime by an application editing the document (ECMA-376-1 §20.4.2.1).
|
|
613
|
+
* Inline and VML leaves report `false`.
|
|
614
|
+
*
|
|
615
|
+
* @public
|
|
616
|
+
*/
|
|
617
|
+
lockAnchor: boolean;
|
|
618
|
+
/**
|
|
619
|
+
* Allow overlap (`wp:anchor/@allowOverlap`). Inline and VML leaves report
|
|
620
|
+
* `false` (inline hosts have no anchor surface).
|
|
621
|
+
*
|
|
622
|
+
* @public
|
|
623
|
+
*/
|
|
624
|
+
/** @private */
|
|
625
|
+
/** @private */
|
|
626
|
+
private allowOverlapInternal;
|
|
627
|
+
/**
|
|
628
|
+
* Layout in table cell (`wp:anchor/@layoutInCell`). Inline and VML leaves
|
|
629
|
+
* report `false` (inline hosts have no anchor surface).
|
|
630
|
+
*
|
|
631
|
+
* @public
|
|
632
|
+
*/
|
|
633
|
+
layoutInCell: boolean;
|
|
634
|
+
/** Lazy spPr state read (cached per instance; invalidated on structure dirty). */
|
|
635
|
+
private readSpPrState;
|
|
636
|
+
/**
|
|
637
|
+
* Preset geometry token (`a:prstGeom/@prst`, `ST_ShapeType`).
|
|
638
|
+
* `undefined` when spPr is absent, has `a:custGeom`, or the `@prst` token is
|
|
639
|
+
* not in the schema set (residual passthrough). VML reads `undefined`.
|
|
640
|
+
*
|
|
641
|
+
* @throws RangeError when set to a value outside `ST_ShapeType`.
|
|
642
|
+
*
|
|
643
|
+
* @private
|
|
644
|
+
*/
|
|
645
|
+
presetGeometryToken: string | undefined;
|
|
646
|
+
/**
|
|
647
|
+
* Fill MVP (`CT_ShapeProperties` `EG_FillProperties`).
|
|
648
|
+
*
|
|
649
|
+
* Reads:
|
|
650
|
+
* - `a:solidFill/a:srgbClr` → `{ kind: 'solid', srgb }`
|
|
651
|
+
* - `a:noFill` → `{ kind: 'none' }`
|
|
652
|
+
* - `a:pattFill` → `{ kind: 'pattern', preset }` (residual-preserving slice)
|
|
653
|
+
* - theme/absent/gradient/picture → `undefined` or `{ kind: 'theme' }`
|
|
654
|
+
* (never an invented color); check {@link DrawingShape.hasThemeStyle}.
|
|
655
|
+
*
|
|
656
|
+
* Setting `solid`/`none` marks the shape structure dirty and replaces the
|
|
657
|
+
* spPr fill child (`wps:style` theme refs stay residual per GO).
|
|
658
|
+
*
|
|
659
|
+
* @public
|
|
660
|
+
*/
|
|
661
|
+
/** @private */
|
|
662
|
+
/** @private */
|
|
663
|
+
private fillInternal;
|
|
664
|
+
/**
|
|
665
|
+
* Line MVP (`a:ln`). `kind: 'theme'` when absent/non-srgb (inherited from
|
|
666
|
+
* `wps:style`); `kind: 'none'` when `a:ln/a:noFill`; `residual: true` flags a
|
|
667
|
+
* line with unmodeled children (join/custDash/nknown dash) — mutating it
|
|
668
|
+
* would drop those children, so serialization keeps the residual element
|
|
669
|
+
* unless the caller models it explicitly.
|
|
670
|
+
*
|
|
671
|
+
* @public
|
|
672
|
+
*/
|
|
673
|
+
/** @private */
|
|
674
|
+
/** @private */
|
|
675
|
+
private lineInternal;
|
|
676
|
+
/**
|
|
677
|
+
* Whether theme formatting (`wps:style` with `lnRef`/`fillRef`/`effectRef`/
|
|
678
|
+
* `fontRef`) is present on the shape. Theme-styled shapes without a solid
|
|
679
|
+
*
|
|
680
|
+
* @private
|
|
681
|
+
* override read fill/line as `theme`/`undefined` — set {@link fill}/
|
|
682
|
+
* {@link line} to replace.
|
|
683
|
+
*/
|
|
684
|
+
readonly hasThemeStyle: boolean;
|
|
685
|
+
/**
|
|
686
|
+
* Lazy residual txbx state read (cached per instance).
|
|
687
|
+
* @private
|
|
688
|
+
*/
|
|
689
|
+
private readTxbxState;
|
|
690
|
+
/**
|
|
691
|
+
* Paragraph-owner context for lazy body parse.
|
|
692
|
+
* @private
|
|
693
|
+
*/
|
|
694
|
+
private textBoxOwnerForParse;
|
|
695
|
+
/**
|
|
696
|
+
* Whether this shape hosts a WordprocessingShape text box
|
|
697
|
+
* (`wps:txbx` child). Deep residual walk only — does **not** materialize
|
|
698
|
+
* the body block state (reads stay byte-stable). `linkedTxbx` also reports
|
|
699
|
+
* true for guard purposes — linked text boxes are out of scope (GO) but
|
|
700
|
+
* body APIs still throw the documented non-textBox error only when no txbx
|
|
701
|
+
* of any kind exists.
|
|
702
|
+
*
|
|
703
|
+
* @private
|
|
704
|
+
*/
|
|
705
|
+
isTextBox(): boolean;
|
|
706
|
+
/**
|
|
707
|
+
* Whether the residual root carries a Markup Compatibility Fallback branch
|
|
708
|
+
* with a VML `w:pict` tree (Policy B dual AC — TASK-8050).
|
|
709
|
+
*
|
|
710
|
+
* True for authored dual AC and for residual Choice+Fallback fixtures.
|
|
711
|
+
* Pure DrawingML-only or pure VML leaves return false. Does not execute VML.
|
|
712
|
+
*
|
|
713
|
+
* @private
|
|
714
|
+
*/
|
|
715
|
+
hasVmlFallback(): boolean;
|
|
716
|
+
/** Guard for body APIs on non-textBox shapes. */
|
|
717
|
+
private requireTextBox;
|
|
718
|
+
/**
|
|
719
|
+
* Lazy residual bodyPr state read (cached per instance).
|
|
720
|
+
* @private
|
|
721
|
+
*/
|
|
722
|
+
private readBodyPrState;
|
|
723
|
+
/**
|
|
724
|
+
* Persist a modeled bodyPr slice (marks structure dirty).
|
|
725
|
+
* @private
|
|
726
|
+
*/
|
|
727
|
+
private writeBodyPrField;
|
|
728
|
+
/**
|
|
729
|
+
* Text anchor inside the shape (`wps:bodyPr/@anchor`,
|
|
730
|
+
* `ST_TextAnchoringType`: `t|ctr|b|just|dist`). `undefined` = attribute
|
|
731
|
+
* absent (Word default `t`).
|
|
732
|
+
*
|
|
733
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
734
|
+
*
|
|
735
|
+
* @private
|
|
736
|
+
*/
|
|
737
|
+
/**
|
|
738
|
+
* Text anchor inside the shape (`wps:bodyPr/@anchor`,
|
|
739
|
+
* `ST_TextAnchoringType`: `t|ctr|b|just|dist`). `undefined` = attribute
|
|
740
|
+
* absent (Word default `t`).
|
|
741
|
+
*
|
|
742
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
743
|
+
*
|
|
744
|
+
* @private
|
|
745
|
+
*/
|
|
746
|
+
verticalAnchor: TextAnchoring | undefined;
|
|
747
|
+
/**
|
|
748
|
+
* Center anchoring (`wps:bodyPr/@anchorCtr`). `undefined` = attribute absent.
|
|
749
|
+
*
|
|
750
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
751
|
+
*
|
|
752
|
+
* @private
|
|
753
|
+
*/
|
|
754
|
+
/**
|
|
755
|
+
* Center anchoring (`wps:bodyPr/@anchorCtr`). `undefined` = attribute absent.
|
|
756
|
+
*
|
|
757
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
758
|
+
*
|
|
759
|
+
* @private
|
|
760
|
+
*/
|
|
761
|
+
anchorCenter: boolean | undefined;
|
|
762
|
+
/**
|
|
763
|
+
* Vertical text type (`wps:bodyPr/@vert`, `ST_TextVerticalType`).
|
|
764
|
+
* `undefined` = attribute absent (horizontal).
|
|
765
|
+
*
|
|
766
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
767
|
+
*
|
|
768
|
+
* @public
|
|
769
|
+
*/
|
|
770
|
+
textDirection: TextVerticalType | undefined;
|
|
771
|
+
/**
|
|
772
|
+
* Text wrap inside the shape (`wps:bodyPr/@wrap`,
|
|
773
|
+
* `ST_TextWrappingType`: `none|square` only per schema).
|
|
774
|
+
* `undefined` = attribute absent (square).
|
|
775
|
+
*
|
|
776
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
777
|
+
*
|
|
778
|
+
* @private
|
|
779
|
+
*/
|
|
780
|
+
/**
|
|
781
|
+
* Text wrap inside the shape (`wps:bodyPr/@wrap`,
|
|
782
|
+
* `ST_TextWrappingType`: `none|square` only per schema).
|
|
783
|
+
* `undefined` = attribute absent (square).
|
|
784
|
+
*
|
|
785
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
786
|
+
*
|
|
787
|
+
* @private
|
|
788
|
+
*/
|
|
789
|
+
textWrapInside: TextBodyWrap | undefined;
|
|
790
|
+
/**
|
|
791
|
+
* Vertical text overflow (`wps:bodyPr/@vertOverflow`,
|
|
792
|
+
* `ST_TextVertOverflowType`). `undefined` = attribute absent.
|
|
793
|
+
*
|
|
794
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
795
|
+
*
|
|
796
|
+
* @private
|
|
797
|
+
*/
|
|
798
|
+
/**
|
|
799
|
+
* Vertical text overflow (`wps:bodyPr/@vertOverflow`,
|
|
800
|
+
* `ST_TextVertOverflowType`). `undefined` = attribute absent.
|
|
801
|
+
*
|
|
802
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
803
|
+
*
|
|
804
|
+
* @private
|
|
805
|
+
*/
|
|
806
|
+
verticalOverflow: TextVertOverflow | undefined;
|
|
807
|
+
/**
|
|
808
|
+
* Horizontal text overflow (`wps:bodyPr/@horzOverflow`,
|
|
809
|
+
* `ST_TextHorzOverflowType`). `undefined` = attribute absent.
|
|
810
|
+
*
|
|
811
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
812
|
+
*
|
|
813
|
+
* @private
|
|
814
|
+
*/
|
|
815
|
+
/**
|
|
816
|
+
* Horizontal text overflow (`wps:bodyPr/@horzOverflow`,
|
|
817
|
+
* `ST_TextHorzOverflowType`). `undefined` = attribute absent.
|
|
818
|
+
*
|
|
819
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
820
|
+
*
|
|
821
|
+
* @private
|
|
822
|
+
*/
|
|
823
|
+
horizontalOverflow: TextHorzOverflow | undefined;
|
|
824
|
+
/**
|
|
825
|
+
* WordArt source flag (`wps:bodyPr/@fromWordArt`). `undefined` = absent.
|
|
826
|
+
* Flag only — no WordArt pipeline (GO).
|
|
827
|
+
*
|
|
828
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
829
|
+
*
|
|
830
|
+
* @private
|
|
831
|
+
*/
|
|
832
|
+
/**
|
|
833
|
+
* WordArt source flag (`wps:bodyPr/@fromWordArt`). `undefined` = absent.
|
|
834
|
+
* Flag only — no WordArt pipeline (GO).
|
|
835
|
+
*
|
|
836
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
837
|
+
*
|
|
838
|
+
* @private
|
|
839
|
+
*/
|
|
840
|
+
fromWordArt: boolean | undefined;
|
|
841
|
+
/**
|
|
842
|
+
* Text insets (`wps:bodyPr/@lIns|tIns|rIns|bIns`, `ST_Coordinate32` EMU).
|
|
843
|
+
* Non-negative EMU `Point`; `undefined` per side = attribute absent
|
|
844
|
+
* (Word default 91440/45720/91440/45720). Absent insets object = no
|
|
845
|
+
* inset attribute modeled.
|
|
846
|
+
*
|
|
847
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
848
|
+
*
|
|
849
|
+
* @private
|
|
850
|
+
*/
|
|
851
|
+
/**
|
|
852
|
+
* Text insets (`wps:bodyPr/@lIns|tIns|rIns|bIns`, `ST_Coordinate32` EMU).
|
|
853
|
+
* Non-negative EMU `Point`; `undefined` per side = attribute absent
|
|
854
|
+
* (Word default 91440/45720/91440/45720). Absent insets object = no
|
|
855
|
+
* inset attribute modeled.
|
|
856
|
+
*
|
|
857
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
858
|
+
*
|
|
859
|
+
* @private
|
|
860
|
+
*/
|
|
861
|
+
insets: BodyInsets | undefined;
|
|
862
|
+
/**
|
|
863
|
+
* Autofit choice (`wps:bodyPr` child: `a:noAutofit` | `a:normAutofit` |
|
|
864
|
+
* `a:spAutoFit`, `EG_TextAutofit`). `undefined` = no autofit child
|
|
865
|
+
* (Word default noAutofit). Residual `a:prstTxWarp` / 3D / extLst stay
|
|
866
|
+
* residual — setting any bodyPr field rebuilds bodyPr without them
|
|
867
|
+
* (residual flag on read documents what was dropped).
|
|
868
|
+
*
|
|
869
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
870
|
+
*
|
|
871
|
+
* @private
|
|
872
|
+
*/
|
|
873
|
+
/**
|
|
874
|
+
* Text insets (`wps:bodyPr/@lIns|tIns|rIns|bIns`, `ST_Coordinate32` EMU).
|
|
875
|
+
* Non-negative EMU `Point`; `undefined` per side = attribute absent
|
|
876
|
+
* (Word default 91440/45720/91440/45720). Absent insets object = no
|
|
877
|
+
* inset attribute modeled.
|
|
878
|
+
*
|
|
879
|
+
* @throws DocxError `content/invalid-shape` on a VML leaf.
|
|
880
|
+
*
|
|
881
|
+
* @private
|
|
882
|
+
*/
|
|
883
|
+
autoFit: TextAutoFit | undefined;
|
|
884
|
+
/**
|
|
885
|
+
* Whether residual `wps:bodyPr` carries unmodeled content (`a:prstTxWarp`,
|
|
886
|
+
* 3D children, `extLst`, unknown attributes). Read-only; mutating any
|
|
887
|
+
* bodyPr field rebuilds `wps:bodyPr` from modeled state and drops the
|
|
888
|
+
* residual children (documented in the mapping).
|
|
889
|
+
*
|
|
890
|
+
* @private
|
|
891
|
+
*/
|
|
892
|
+
readonly bodyPrResidual: boolean;
|
|
893
|
+
/**
|
|
894
|
+
* Whether the residual bodyPr has WordArt warp (`a:prstTxWarp` child).
|
|
895
|
+
* Read-only flag — warp is not modeled (never invented).
|
|
896
|
+
*
|
|
897
|
+
* @private
|
|
898
|
+
*/
|
|
899
|
+
readonly hasPresetTextWarp: boolean;
|
|
900
|
+
/**
|
|
901
|
+
* Modeled blocks inside `w:txbxContent` (GO Q6). Public consumers use
|
|
902
|
+
* {@link Shape.items} / {@link Shape.insertBodyItemAt}.
|
|
903
|
+
* Projects internal {@link BlockContent} store via body-item adapters.
|
|
904
|
+
*
|
|
905
|
+
* @private
|
|
906
|
+
*/
|
|
907
|
+
readonly blocks: ReadonlyArray<BodyItem>;
|
|
908
|
+
/**
|
|
909
|
+
* Insert a body item at `index` in the text box block list.
|
|
910
|
+
* Public consumers use {@link Shape.insertBodyItemAt}.
|
|
911
|
+
*
|
|
912
|
+
* @private
|
|
913
|
+
*/
|
|
914
|
+
insertBodyItemAt(index: number, item: BodyItem): BodyItem;
|
|
915
|
+
/**
|
|
916
|
+
* Remove the body item at `index` in the text box block list.
|
|
917
|
+
* Public consumers use {@link Shape.removeBodyItemAt}.
|
|
918
|
+
*
|
|
919
|
+
* @private
|
|
920
|
+
*/
|
|
921
|
+
removeBodyItemAt(index: number): void;
|
|
922
|
+
/**
|
|
923
|
+
* Remove a body item from the text box block list by projected identity.
|
|
924
|
+
* Public consumers use {@link Shape.removeBodyItem}.
|
|
925
|
+
*
|
|
926
|
+
* @private
|
|
927
|
+
*/
|
|
928
|
+
removeBodyItem(item: BodyItem): void;
|
|
929
|
+
/**
|
|
930
|
+
* @private
|
|
931
|
+
* Txbx block store for TextBoxParagraphOwner attach checks.
|
|
932
|
+
*/
|
|
933
|
+
internalBlocks(): ReadonlyArray<BlockContent>;
|
|
934
|
+
/**
|
|
935
|
+
* @private
|
|
936
|
+
* Owning document for textbox body paragraphs. Resolves through
|
|
937
|
+
* the anchoring paragraph when bound; throws detached otherwise.
|
|
938
|
+
*/
|
|
939
|
+
internalOwningDocument(): WordDocument;
|
|
940
|
+
/**
|
|
941
|
+
* Anchoring paragraph (bound at append/load time).
|
|
942
|
+
* @private
|
|
943
|
+
*/
|
|
944
|
+
private anchoringParagraph;
|
|
945
|
+
/**
|
|
946
|
+
* @private
|
|
947
|
+
* Bind the anchoring paragraph for textbox owner document resolution. */
|
|
948
|
+
/** @private */
|
|
949
|
+
/** Anchoring paragraph accessor; package-visible for GroupShape reparenting. @private */
|
|
950
|
+
getAnchoringParagraph(): Paragraph | undefined;
|
|
951
|
+
bindAnchoringParagraph(paragraph: Paragraph | undefined): void;
|
|
952
|
+
/**
|
|
953
|
+
* Relationship ids referenced by `r:embed` or `r:link` in the preserved subtree.
|
|
954
|
+
*
|
|
955
|
+
* @private
|
|
956
|
+
*/
|
|
957
|
+
relationshipIds(): ReadonlyArray<string>;
|
|
958
|
+
/**
|
|
959
|
+
* @private
|
|
960
|
+
*/
|
|
961
|
+
toOpenXml(): OpenXmlElement;
|
|
962
|
+
/**
|
|
963
|
+
* Replace the materialized `w:txbxContent` inside a cloned residual host
|
|
964
|
+
* (identity / layout dirty paths keep everything else verbatim).
|
|
965
|
+
*/
|
|
966
|
+
private replaceTxbxContentInResidual;
|
|
967
|
+
private drawingRoot;
|
|
968
|
+
private markIdentityDirty;
|
|
969
|
+
/**
|
|
970
|
+
* Promote to layout dirty. Never demotes `structure`.
|
|
971
|
+
* Hydrates size/transform/lock from residual when leaving `clean`/`identity`.
|
|
972
|
+
*/
|
|
973
|
+
private markLayoutDirty;
|
|
974
|
+
/**
|
|
975
|
+
* Promote the leaf to a textBox variant (`wps:txbx` modeled).
|
|
976
|
+
* Never demotes; idempotent once set.
|
|
977
|
+
* @private
|
|
978
|
+
*/
|
|
979
|
+
private markTxbxBodyModeled;
|
|
980
|
+
/**
|
|
981
|
+
* Promote to structure dirty (host kind / wrap / distances / behindDoc).
|
|
982
|
+
* Never demotes. Hydrates identity, layout, wrap, and presetGeometry from residual.
|
|
983
|
+
*/
|
|
984
|
+
/** Promote dirty mode to structure; package-visible for GroupShape. @private */
|
|
985
|
+
markStructureDirty(): void;
|
|
986
|
+
private hydrateIdentityAndLayoutFromResidual;
|
|
987
|
+
/**
|
|
988
|
+
* Read identity from nested `wps:cNvPr` / `wpg:cNvPr` when residual is a bare
|
|
989
|
+
* nested shape/group; otherwise from top-level `wp:docPr`.
|
|
990
|
+
*/
|
|
991
|
+
private readResidualIdentity;
|
|
992
|
+
/**
|
|
993
|
+
* Parse nested `wps:wsp` / `wpg:grpSp` children under residual `wpg:wgp` or
|
|
994
|
+
* `wpc:wpc` (TASK-8051). Unknown residual siblings are not modeled as children.
|
|
995
|
+
*/
|
|
996
|
+
private parseNestedChildrenFromResidual;
|
|
997
|
+
/**
|
|
998
|
+
* Materialize residual or cached children into {@link childrenValue} so nested
|
|
999
|
+
* authoring can push without dropping lazy residual siblings.
|
|
1000
|
+
*/
|
|
1001
|
+
protected ensureChildrenModeled(): void;
|
|
1002
|
+
/**
|
|
1003
|
+
* Allocate a package-unique cNvPr/docPr id for a nested child using the
|
|
1004
|
+
* top-level host's anchoring paragraph when available.
|
|
1005
|
+
*/
|
|
1006
|
+
private allocateNestedDocPrId;
|
|
1007
|
+
/** True when any nested child (direct) is not clean. */
|
|
1008
|
+
private hasDirtyNestedChildren;
|
|
1009
|
+
/**
|
|
1010
|
+
* Clone residual host and replace nested wsp/grpSp under wgp/wpc with each
|
|
1011
|
+
* child's {@link toOpenXml}, preserving grpSpPr and unknown residual siblings.
|
|
1012
|
+
*/
|
|
1013
|
+
private rewriteResidualNestedChildren;
|
|
1014
|
+
/**
|
|
1015
|
+
* Nested child dirt must surface on save even when the parent residual stays
|
|
1016
|
+
* clean — notify by ensuring children are modeled (so hasDirtyNestedChildren
|
|
1017
|
+
* can see them). Parent dirtyMode is left alone; toOpenXml rewrites kids.
|
|
1018
|
+
*/
|
|
1019
|
+
protected notifyParentOfChildDirty(): void;
|
|
1020
|
+
private readDistancePoints;
|
|
1021
|
+
}
|
|
1022
|
+
/**
|
|
1023
|
+
* Leaf DrawingML / VML shape (preset geometry, fill/line, optional text box).
|
|
1024
|
+
*
|
|
1025
|
+
* Inherits identity, placement, size, wrap, and position format from
|
|
1026
|
+
* {@link DrawingShape}. Text-box body content uses {@link Shape.items}.
|
|
1027
|
+
* Group hosts use {@link GroupShape}.
|
|
1028
|
+
*
|
|
1029
|
+
* @public
|
|
1030
|
+
*/
|
|
1031
|
+
export declare class Shape extends DrawingShape {
|
|
1032
|
+
/**
|
|
1033
|
+
* Public discriminant for {@link Paragraph.items} ({@link EntityType.Shape}).
|
|
1034
|
+
* @public
|
|
1035
|
+
*/
|
|
1036
|
+
readonly type: EntityType.Shape | EntityType.GroupShape;
|
|
1037
|
+
/**
|
|
1038
|
+
* @private
|
|
1039
|
+
*/
|
|
1040
|
+
constructor(encoding: DrawingEncoding, element: OpenXmlElement);
|
|
1041
|
+
/**
|
|
1042
|
+
* @private
|
|
1043
|
+
*/
|
|
1044
|
+
constructor(init: DrawingShapeInit);
|
|
1045
|
+
/**
|
|
1046
|
+
* Ordered text-box body children ({@link BodyItem}) — paragraphs, tables,
|
|
1047
|
+
* block content controls, and residual-opaque blocks in document order.
|
|
1048
|
+
*
|
|
1049
|
+
* Requires a text-box variant (`wps:txbx`). Mutate only through
|
|
1050
|
+
* {@link insertBodyItemAt}, {@link removeBodyItemAt}, and {@link removeBodyItem}.
|
|
1051
|
+
*
|
|
1052
|
+
* @throws DocxError `content/invalid-shape` when the shape is not a text box.
|
|
1053
|
+
*
|
|
1054
|
+
* @public
|
|
1055
|
+
*/
|
|
1056
|
+
readonly items: ReadonlyArray<BodyItem>;
|
|
1057
|
+
/**
|
|
1058
|
+
* Inserts a body item at `index` in {@link Shape.items}
|
|
1059
|
+
* (`0…length` inclusive — insert-before / append).
|
|
1060
|
+
*
|
|
1061
|
+
* Attaches paragraphs and binds feature blocks to the owning document.
|
|
1062
|
+
* Returns the same `item` reference for chaining (API-RULES R1.1).
|
|
1063
|
+
*
|
|
1064
|
+
* @param index - Index in {@link Shape.items}.
|
|
1065
|
+
* @param item - Paragraph, feature, or opaque body child.
|
|
1066
|
+
* @returns The inserted {@link BodyItem}.
|
|
1067
|
+
* @throws RangeError if `index` is out of range.
|
|
1068
|
+
* @throws DocxError `content/invalid-shape` when the shape is not a text box.
|
|
1069
|
+
*
|
|
1070
|
+
* @public
|
|
1071
|
+
*/
|
|
1072
|
+
insertBodyItemAt(index: number, item: BodyItem): BodyItem;
|
|
1073
|
+
/**
|
|
1074
|
+
* Removes the body item at `index` in {@link Shape.items}
|
|
1075
|
+
* (`0…length-1`). Paragraphs detach; feature blocks may release content.
|
|
1076
|
+
*
|
|
1077
|
+
* @param index - Index in {@link Shape.items}.
|
|
1078
|
+
* @throws RangeError if `index` is out of range.
|
|
1079
|
+
* @throws DocxError `content/invalid-shape` when the shape is not a text box.
|
|
1080
|
+
*
|
|
1081
|
+
* @public
|
|
1082
|
+
*/
|
|
1083
|
+
removeBodyItemAt(index: number): void;
|
|
1084
|
+
/**
|
|
1085
|
+
* Removes a body item from {@link Shape.items}.
|
|
1086
|
+
*
|
|
1087
|
+
* Matches by collection entry identity first, then by payload identity
|
|
1088
|
+
* (same {@link Paragraph}, feature value, or opaque XML node).
|
|
1089
|
+
*
|
|
1090
|
+
* @param item - Entry from `items`, or an equivalent payload wrapper.
|
|
1091
|
+
* @throws DetachedObjectError if `item` is not in this text box.
|
|
1092
|
+
* @throws DocxError `content/invalid-shape` when the shape is not a text box.
|
|
1093
|
+
*
|
|
1094
|
+
* @public
|
|
1095
|
+
*/
|
|
1096
|
+
removeBodyItem(item: BodyItem): void;
|
|
1097
|
+
}
|
|
1098
|
+
/**
|
|
1099
|
+
* DrawingML group or canvas host with nested {@link Shape} / {@link GroupShape}
|
|
1100
|
+
* children (TASK-8051).
|
|
1101
|
+
*
|
|
1102
|
+
* Inherits identity, placement, size, wrap, and position format from
|
|
1103
|
+
* {@link DrawingShape}. Nested children are exposed as {@link childShapes};
|
|
1104
|
+
* author nested leaves with {@link appendShape}.
|
|
1105
|
+
*
|
|
1106
|
+
* @public
|
|
1107
|
+
*/
|
|
1108
|
+
export declare class GroupShape extends Shape {
|
|
1109
|
+
/**
|
|
1110
|
+
* Public discriminant for {@link Paragraph.items} ({@link EntityType.GroupShape}).
|
|
1111
|
+
* @public
|
|
1112
|
+
*/
|
|
1113
|
+
readonly type: EntityType.GroupShape;
|
|
1114
|
+
/**
|
|
1115
|
+
* @private
|
|
1116
|
+
*/
|
|
1117
|
+
constructor(encoding: DrawingEncoding, element: OpenXmlElement);
|
|
1118
|
+
/**
|
|
1119
|
+
* @private
|
|
1120
|
+
*/
|
|
1121
|
+
constructor(init: DrawingShapeInit);
|
|
1122
|
+
/**
|
|
1123
|
+
* Nested DrawingML children under this group or canvas, in document order.
|
|
1124
|
+
* @public
|
|
1125
|
+
*/
|
|
1126
|
+
readonly childShapes: ReadonlyArray<DrawingShape>;
|
|
1127
|
+
/**
|
|
1128
|
+
* Nested child items (collection surface).
|
|
1129
|
+
* @public
|
|
1130
|
+
*/
|
|
1131
|
+
readonly childItems: ReadonlyArray<DrawingShape>;
|
|
1132
|
+
/**
|
|
1133
|
+
* Nested DrawingML children under this group or canvas.
|
|
1134
|
+
* @private
|
|
1135
|
+
*/
|
|
1136
|
+
children(): ReadonlyArray<DrawingShape>;
|
|
1137
|
+
/**
|
|
1138
|
+
* Add an existing drawing leaf as a nested child. Detaches from anchoring paragraph when needed.
|
|
1139
|
+
* @public
|
|
1140
|
+
*/
|
|
1141
|
+
add(paragraphItem: DrawingShape | {
|
|
1142
|
+
readonly type?: string;
|
|
1143
|
+
readonly value?: unknown;
|
|
1144
|
+
}): void;
|
|
1145
|
+
/**
|
|
1146
|
+
* Ungroup children into an array of drawing leaves.
|
|
1147
|
+
* @public
|
|
1148
|
+
*/
|
|
1149
|
+
unGroup(): ReadonlyArray<DrawingShape>;
|
|
1150
|
+
/**
|
|
1151
|
+
* Append a nested preset-geometry {@link Shape} under this group.
|
|
1152
|
+
* @public
|
|
1153
|
+
*/
|
|
1154
|
+
appendShape(autoShapeType: AutoShapeType, width: number, height: number): Shape;
|
|
1155
|
+
/** @private */
|
|
1156
|
+
writeShapeFillState(_value: ShapeFill | undefined): void;
|
|
1157
|
+
/** @private */
|
|
1158
|
+
writeShapeLineState(_value: ShapeLine | undefined): void;
|
|
1159
|
+
/** @private */
|
|
1160
|
+
writeTextFrameDirection(_value: TextDirection | undefined): void;
|
|
1161
|
+
/** @private */
|
|
1162
|
+
writeTextFrameVerticalAlignment(_value: TextVerticalAlignment | undefined): void;
|
|
1163
|
+
/** @private */
|
|
1164
|
+
ensureTextBodyAccessible(): void;
|
|
1165
|
+
}
|
|
1166
|
+
/**
|
|
1167
|
+
* Construct {@link Shape} or {@link GroupShape} from a residual host element.
|
|
1168
|
+
* Nested `wps:wsp` / `wpg:grpSp` residuals and top-level dual-AC trees are
|
|
1169
|
+
* classified by residual localName / Choice URI (TASK-8051).
|
|
1170
|
+
*
|
|
1171
|
+
* @private
|
|
1172
|
+
*/
|
|
1173
|
+
export declare function createDrawingShape(encoding: DrawingEncoding, element: OpenXmlElement): DrawingShape;
|
|
1174
|
+
/**
|
|
1175
|
+
* Construct {@link Shape} or {@link GroupShape} from an authored / modeled init.
|
|
1176
|
+
* Modeled `children` (including `[]`) always yields {@link GroupShape}.
|
|
1177
|
+
*
|
|
1178
|
+
* @private
|
|
1179
|
+
*/
|
|
1180
|
+
export declare function createDrawingShapeFromInit(init: DrawingShapeInit): DrawingShape;
|
|
1181
|
+
/**
|
|
1182
|
+
* Type guard for leaf {@link Shape} instances (not group/canvas hosts).
|
|
1183
|
+
*
|
|
1184
|
+
* @private
|
|
1185
|
+
*/
|
|
1186
|
+
export declare function isShape(value: DrawingShape): value is Shape;
|
|
1187
|
+
/**
|
|
1188
|
+
* Type guard for {@link GroupShape} group/canvas hosts.
|
|
1189
|
+
*
|
|
1190
|
+
* @private
|
|
1191
|
+
*/
|
|
1192
|
+
export declare function isGroupShape(value: DrawingShape): value is GroupShape;
|