@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,595 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __values = (this && this.__values) || function (o) {
|
|
13
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
|
14
|
+
if (m) return m.call(o);
|
|
15
|
+
return {
|
|
16
|
+
next: function () {
|
|
17
|
+
if (o && i >= o.length) o = void 0;
|
|
18
|
+
return { value: o && o[i++], done: !o };
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
23
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
24
|
+
if (!m) return o;
|
|
25
|
+
var i = m.call(o), r, ar = [], e;
|
|
26
|
+
try {
|
|
27
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
28
|
+
}
|
|
29
|
+
catch (error) { e = { error: error }; }
|
|
30
|
+
finally {
|
|
31
|
+
try {
|
|
32
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
33
|
+
}
|
|
34
|
+
finally { if (e) throw e.error; }
|
|
35
|
+
}
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
var __spread = (this && this.__spread) || function () {
|
|
39
|
+
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
40
|
+
return ar;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* OLE object typed DOM (TASK-8053): enums, wire-form model, and attribute /
|
|
44
|
+
* child patch codec over the stored `w:object` element.
|
|
45
|
+
*
|
|
46
|
+
* One semantic model over two schema-backed wire encodings:
|
|
47
|
+
* - **office** — `o:OLEObject` child (transitional `vml-officeDrawing.xsd`
|
|
48
|
+
* `CT_OLEObject`, ECMA-376-4 §19.2.2.20); what Word writes today.
|
|
49
|
+
* - **wml** — `w:objectEmbed` / `w:objectLink` children (transitional
|
|
50
|
+
* `wml.xsd` `CT_ObjectEmbed` line 1198 / `CT_ObjectLink` line 1211;
|
|
51
|
+
* ECMA-376-1 §17.3.3.20/§17.3.3.21).
|
|
52
|
+
*
|
|
53
|
+
* Non-negotiable (`.agent/policies/security.md`): this DOM never executes,
|
|
54
|
+
* activates, or fetches anything. Payload bytes are not surfaced here
|
|
55
|
+
* (TASK-8054 owns that decision under human GO Q1).
|
|
56
|
+
*
|
|
57
|
+
* @packageDocumentation
|
|
58
|
+
*/
|
|
59
|
+
import { pointToTwips, twipsToPoint } from '../document/length';
|
|
60
|
+
import { objectValues } from '../../core/compat/object-compat';
|
|
61
|
+
import { DocxError } from '../../core/errors/index';
|
|
62
|
+
/**
|
|
63
|
+
* Office namespace for VML Office Drawing / `o:OLEObject`.
|
|
64
|
+
*
|
|
65
|
+
* Source: transitional `vml-officeDrawing.xsd` `targetNamespace`
|
|
66
|
+
* (`urn:schemas-microsoft-com:office:office`).
|
|
67
|
+
*/
|
|
68
|
+
export var OFFICE_OLE_NAMESPACE = 'urn:schemas-microsoft-com:office:office';
|
|
69
|
+
/** WordprocessingML transitional namespace (local constant to avoid cycles). */
|
|
70
|
+
var WML_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
|
|
71
|
+
/**
|
|
72
|
+
* Kind of OLE object connection (`o:OLEObject/@Type`, `ST_OLEType`:
|
|
73
|
+
* `Embed` | `Link`; the WML-native form encodes the same choice as
|
|
74
|
+
* `w:objectEmbed` vs `w:objectLink` element selection).
|
|
75
|
+
*
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
export var OleLinkType = {
|
|
79
|
+
/** Embedded storage part (`word/embeddings/*.bin`). */
|
|
80
|
+
Embed: 'embed',
|
|
81
|
+
/** External link target (stored, never fetched). */
|
|
82
|
+
Link: 'link',
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Visual representation of the object (`o:OLEObject/@DrawAspect`,
|
|
86
|
+
* `ST_OLEDrawAspect`: `Content` | `Icon`; WML-native `drawAspect` uses the
|
|
87
|
+
* lowercase tokens `content` | `icon` — both decode to this enum).
|
|
88
|
+
*
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
export var OleDrawAspect = {
|
|
92
|
+
/** Render the object's current content. */
|
|
93
|
+
Content: 'content',
|
|
94
|
+
/** Render a placeholder icon. */
|
|
95
|
+
Icon: 'icon',
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Link refresh mode (`o:OLEObject/@UpdateMode`, `ST_OLEUpdateMode`:
|
|
99
|
+
* `Always` | `OnCall`; WML-native `updateMode`: `always` | `onCall`).
|
|
100
|
+
* Meaningful for linked objects only.
|
|
101
|
+
*
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
export var OleUpdateMode = {
|
|
105
|
+
/** Update automatically. */
|
|
106
|
+
Always: 'always',
|
|
107
|
+
/** Update on caller request. */
|
|
108
|
+
OnCall: 'onCall',
|
|
109
|
+
};
|
|
110
|
+
/** Wire-form discriminant for the office (`o:OLEObject`) encoding. */
|
|
111
|
+
var OFFICE_OLE_ELEMENT = 'OLEObject';
|
|
112
|
+
/** Wire-form discriminants for the WML-native encodings. */
|
|
113
|
+
var WML_EMBED_ELEMENT = 'objectEmbed';
|
|
114
|
+
var WML_LINK_ELEMENT = 'objectLink';
|
|
115
|
+
/** `ST_OLEType` tokens (office form, capitalized). */
|
|
116
|
+
var OLE_TYPE_TOKENS = { Embed: 'Embed', Link: 'Link' };
|
|
117
|
+
/** `ST_OLEDrawAspect` tokens (office form, capitalized). */
|
|
118
|
+
var OLE_ASPECT_TOKENS = { Content: 'Content', Icon: 'Icon' };
|
|
119
|
+
/** `ST_OLEUpdateMode` tokens (office form, capitalized). */
|
|
120
|
+
var OLE_UPDATE_TOKENS = { Always: 'Always', OnCall: 'OnCall' };
|
|
121
|
+
/** WML-native lowercase tokens (`ST_ObjectDrawAspect` / `ST_ObjectUpdateMode`). */
|
|
122
|
+
var WML_ASPECT_TOKENS = { Content: 'content', Icon: 'icon' };
|
|
123
|
+
var WML_UPDATE_TOKENS = { Always: 'always', OnCall: 'onCall' };
|
|
124
|
+
/** Element child of an {@link OpenXmlElement}. */
|
|
125
|
+
function elementChildren(el) {
|
|
126
|
+
return el.children.filter(function (c) { return c.kind === 'element'; });
|
|
127
|
+
}
|
|
128
|
+
/** Attribute value by namespace + local name. */
|
|
129
|
+
function attributeValue(el, namespaceUri, localName) {
|
|
130
|
+
var __ts33_0;
|
|
131
|
+
return ((__ts33_0 = el.attributes.find(function (a) { return a.namespaceUri === namespaceUri && a.localName === localName; })), __ts33_0 == null ? undefined : __ts33_0.value);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Resolve the OLE child of a `w:object` element and its wire form.
|
|
135
|
+
* Returns `undefined` when no recognized OLE child exists (the element
|
|
136
|
+
* stays opaque per the TASK-8022 rule).
|
|
137
|
+
*
|
|
138
|
+
* @private
|
|
139
|
+
*/
|
|
140
|
+
export function resolveOleChild(element) {
|
|
141
|
+
var e_1, _a;
|
|
142
|
+
try {
|
|
143
|
+
for (var _b = __values(elementChildren(element)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
144
|
+
var child = _c.value;
|
|
145
|
+
if (child.namespaceUri === OFFICE_OLE_NAMESPACE &&
|
|
146
|
+
child.localName === OFFICE_OLE_ELEMENT) {
|
|
147
|
+
return { oleElement: child, wireForm: 'office' };
|
|
148
|
+
}
|
|
149
|
+
if (child.namespaceUri === WML_NS &&
|
|
150
|
+
(child.localName === WML_EMBED_ELEMENT || child.localName === WML_LINK_ELEMENT)) {
|
|
151
|
+
return { oleElement: child, wireForm: 'wml' };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
156
|
+
finally {
|
|
157
|
+
try {
|
|
158
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
159
|
+
}
|
|
160
|
+
finally { if (e_1) throw e_1.error; }
|
|
161
|
+
}
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
/** Initial DOM state parsed at load (no mutation). */
|
|
165
|
+
export function parseOleObjectDomState(element, oleElement, wireForm) {
|
|
166
|
+
return { element: element, oleElement: oleElement, wireForm: wireForm };
|
|
167
|
+
}
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// Read codec (office + wml forms)
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
/** Read `@Type` / element choice as a typed link kind. */
|
|
172
|
+
export function readLinkType(state) {
|
|
173
|
+
if (state.wireForm === 'wml') {
|
|
174
|
+
return state.oleElement.localName === WML_LINK_ELEMENT ? OleLinkType.Link : OleLinkType.Embed;
|
|
175
|
+
}
|
|
176
|
+
var type = attributeValue(state.oleElement, '', 'Type');
|
|
177
|
+
if (type === OLE_TYPE_TOKENS.Link) {
|
|
178
|
+
return OleLinkType.Link;
|
|
179
|
+
}
|
|
180
|
+
if (type === OLE_TYPE_TOKENS.Embed) {
|
|
181
|
+
return OleLinkType.Embed;
|
|
182
|
+
}
|
|
183
|
+
return undefined; // unknown/malformed stays residual
|
|
184
|
+
}
|
|
185
|
+
/** Read `@ProgID` (office) / `@progId` (wml). */
|
|
186
|
+
export function readProgId(state) {
|
|
187
|
+
return state.wireForm === 'wml'
|
|
188
|
+
? attributeValue(state.oleElement, '', 'progId')
|
|
189
|
+
: attributeValue(state.oleElement, '', 'ProgID');
|
|
190
|
+
}
|
|
191
|
+
/** Read `@ShapeID` (office) / `@shapeId` (wml). */
|
|
192
|
+
export function readShapeId(state) {
|
|
193
|
+
return state.wireForm === 'wml'
|
|
194
|
+
? attributeValue(state.oleElement, '', 'shapeId')
|
|
195
|
+
: attributeValue(state.oleElement, '', 'ShapeID');
|
|
196
|
+
}
|
|
197
|
+
/** Read `@DrawAspect` / `@drawAspect` in either casing. */
|
|
198
|
+
export function readDrawAspect(state) {
|
|
199
|
+
if (state.wireForm === 'wml') {
|
|
200
|
+
var v_1 = attributeValue(state.oleElement, '', 'drawAspect');
|
|
201
|
+
if (v_1 === WML_ASPECT_TOKENS.Content) {
|
|
202
|
+
return OleDrawAspect.Content;
|
|
203
|
+
}
|
|
204
|
+
if (v_1 === WML_ASPECT_TOKENS.Icon) {
|
|
205
|
+
return OleDrawAspect.Icon;
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
var v = attributeValue(state.oleElement, '', 'DrawAspect');
|
|
210
|
+
if (v === OLE_ASPECT_TOKENS.Content) {
|
|
211
|
+
return OleDrawAspect.Content;
|
|
212
|
+
}
|
|
213
|
+
if (v === OLE_ASPECT_TOKENS.Icon) {
|
|
214
|
+
return OleDrawAspect.Icon;
|
|
215
|
+
}
|
|
216
|
+
return undefined;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Read `@ObjectID` (office form only; no WML-native counterpart — Office
|
|
220
|
+
* regenerates it per save and does not support it on linked objects,
|
|
221
|
+
* [MS-OI29500] §2.1.1834).
|
|
222
|
+
*/
|
|
223
|
+
export function readObjectId(state) {
|
|
224
|
+
return state.wireForm === 'wml'
|
|
225
|
+
? undefined
|
|
226
|
+
: attributeValue(state.oleElement, '', 'ObjectID');
|
|
227
|
+
}
|
|
228
|
+
/** Read `@UpdateMode` (office) / required `@updateMode` (wml link). */
|
|
229
|
+
export function readUpdateMode(state) {
|
|
230
|
+
if (state.wireForm === 'wml') {
|
|
231
|
+
if (state.oleElement.localName !== WML_LINK_ELEMENT) {
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
var v_2 = attributeValue(state.oleElement, '', 'updateMode');
|
|
235
|
+
if (v_2 === WML_UPDATE_TOKENS.Always) {
|
|
236
|
+
return OleUpdateMode.Always;
|
|
237
|
+
}
|
|
238
|
+
if (v_2 === WML_UPDATE_TOKENS.OnCall) {
|
|
239
|
+
return OleUpdateMode.OnCall;
|
|
240
|
+
}
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
var v = attributeValue(state.oleElement, '', 'UpdateMode');
|
|
244
|
+
if (v === OLE_UPDATE_TOKENS.Always) {
|
|
245
|
+
return OleUpdateMode.Always;
|
|
246
|
+
}
|
|
247
|
+
if (v === OLE_UPDATE_TOKENS.OnCall) {
|
|
248
|
+
return OleUpdateMode.OnCall;
|
|
249
|
+
}
|
|
250
|
+
return undefined;
|
|
251
|
+
}
|
|
252
|
+
/** `ST_TrueFalseBlank` parse: t/true/on → true; f/false/off/0 → false. */
|
|
253
|
+
function parseTrueFalseBlank(value) {
|
|
254
|
+
var normalized = value.trim().toLowerCase();
|
|
255
|
+
if (normalized === 't' || normalized === 'true' || normalized === 'on') {
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
if (normalized === 'f' || normalized === 'false' || normalized === 'off' || normalized === '0') {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
/** True when the attribute value is the explicit-false `ST_TrueFalseBlank` form. */
|
|
264
|
+
function isExplicitFalse(value) {
|
|
265
|
+
var normalized = value.trim().toLowerCase();
|
|
266
|
+
return (normalized === 'f' || normalized === 'false' || normalized === 'off' || normalized === '0');
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Read `o:LockedField` child (office) / `@lockedField` (wml link).
|
|
270
|
+
* Returns `undefined` when absent or unparseable (residual).
|
|
271
|
+
*/
|
|
272
|
+
export function readLockedField(state) {
|
|
273
|
+
if (state.wireForm === 'wml') {
|
|
274
|
+
if (state.oleElement.localName !== WML_LINK_ELEMENT) {
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
var v = attributeValue(state.oleElement, '', 'lockedField');
|
|
278
|
+
return v === undefined ? undefined : parseTrueFalseBlank(v);
|
|
279
|
+
}
|
|
280
|
+
var child = elementChildren(state.oleElement).find(function (c) { return c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === 'LockedField'; });
|
|
281
|
+
if (child === undefined) {
|
|
282
|
+
return undefined;
|
|
283
|
+
}
|
|
284
|
+
var text = child.children.find(function (c) { return c.kind === 'text'; });
|
|
285
|
+
if (text === undefined) {
|
|
286
|
+
// `<o:LockedField/>` — blank parses as true per ST_TrueFalseBlank.
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
return parseTrueFalseBlank(text.value);
|
|
290
|
+
}
|
|
291
|
+
/** Read `o:LinkType` child (office form only; `ST_OLELinkType` is a string). */
|
|
292
|
+
export function readLinkTypeDescription(state) {
|
|
293
|
+
if (state.wireForm !== 'office') {
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
var child = elementChildren(state.oleElement).find(function (c) { return c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === 'LinkType'; });
|
|
297
|
+
var text = (child == null ? undefined : child.children).find(function (c) { return c.kind === 'text'; });
|
|
298
|
+
return text == null ? undefined : text.value;
|
|
299
|
+
}
|
|
300
|
+
/** Read `o:FieldCodes` child (office) / `@fieldCodes` (wml). */
|
|
301
|
+
export function readFieldCodes(state) {
|
|
302
|
+
if (state.wireForm === 'wml') {
|
|
303
|
+
return attributeValue(state.oleElement, '', 'fieldCodes');
|
|
304
|
+
}
|
|
305
|
+
var child = elementChildren(state.oleElement).find(function (c) { return c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === 'FieldCodes'; });
|
|
306
|
+
var text = (child == null ? undefined : child.children).find(function (c) { return c.kind === 'text'; });
|
|
307
|
+
return text == null ? undefined : text.value;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Parse an `ST_TwipsMeasure` value (`N` twips or `Npt` points) into points.
|
|
311
|
+
* Wire conversion happens only at this boundary.
|
|
312
|
+
*/
|
|
313
|
+
function parseTwipsMeasureAsPoints(value) {
|
|
314
|
+
var trimmed = value.trim();
|
|
315
|
+
if (trimmed.endsWith('pt')) {
|
|
316
|
+
var pts = Number(trimmed.slice(0, -2));
|
|
317
|
+
return Number.isFinite(pts) ? pts : undefined;
|
|
318
|
+
}
|
|
319
|
+
var twips = Number(trimmed);
|
|
320
|
+
return Number.isFinite(twips) ? twipsToPoint(twips) : undefined;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Read `w:object/@dxaOrig` as points (accepts WML-qualified and unqualified
|
|
324
|
+
* spellings — the schema declares it unqualified; Word writes `w:`-prefixed
|
|
325
|
+
* in practice).
|
|
326
|
+
*/
|
|
327
|
+
export function readOriginalWidth(state) {
|
|
328
|
+
var __ts33_1;
|
|
329
|
+
var v = ((__ts33_1 = attributeValue(state.element, WML_NS, 'dxaOrig')), __ts33_1 != null ? __ts33_1 : attributeValue(state.element, '', 'dxaOrig'));
|
|
330
|
+
return v === undefined ? undefined : parseTwipsMeasureAsPoints(v);
|
|
331
|
+
}
|
|
332
|
+
/** Read `w:object/@dyaOrig` as points (qualified/unqualified tolerant). */
|
|
333
|
+
export function readOriginalHeight(state) {
|
|
334
|
+
var __ts33_2;
|
|
335
|
+
var v = ((__ts33_2 = attributeValue(state.element, WML_NS, 'dyaOrig')), __ts33_2 != null ? __ts33_2 : attributeValue(state.element, '', 'dyaOrig'));
|
|
336
|
+
return v === undefined ? undefined : parseTwipsMeasureAsPoints(v);
|
|
337
|
+
}
|
|
338
|
+
// ---------------------------------------------------------------------------
|
|
339
|
+
// Write codec (patch-in-place)
|
|
340
|
+
// ---------------------------------------------------------------------------
|
|
341
|
+
/**
|
|
342
|
+
* Replace or remove one attribute on a cloned element, **preserving the
|
|
343
|
+
* original attribute position and prefix** (patch-in-place rule: attribute
|
|
344
|
+
* order is part of byte-stability). New attributes append at the end with
|
|
345
|
+
* the given prefix.
|
|
346
|
+
*/
|
|
347
|
+
function withAttribute(el, namespaceUri, localName, value, prefix) {
|
|
348
|
+
var index = el.attributes.findIndex(function (a) { return a.namespaceUri === namespaceUri && a.localName === localName; });
|
|
349
|
+
if (value === undefined) {
|
|
350
|
+
if (index < 0) {
|
|
351
|
+
return el; // nothing to remove
|
|
352
|
+
}
|
|
353
|
+
return __assign({}, el, { attributes: el.attributes.filter(function (_, i) { return i !== index; }) });
|
|
354
|
+
}
|
|
355
|
+
// Preserve the existing prefix on replacement (e.g. w:dxaOrig stays
|
|
356
|
+
// w:-prefixed even when the caller passes ''); use the given prefix only
|
|
357
|
+
// for newly created attributes.
|
|
358
|
+
var existing = el.attributes[index];
|
|
359
|
+
var effectivePrefix = existing !== undefined ? existing.prefix : prefix;
|
|
360
|
+
var next = {
|
|
361
|
+
namespaceUri: namespaceUri,
|
|
362
|
+
localName: localName,
|
|
363
|
+
prefix: effectivePrefix,
|
|
364
|
+
value: value,
|
|
365
|
+
};
|
|
366
|
+
if (index >= 0) {
|
|
367
|
+
return __assign({}, el, { attributes: el.attributes.map(function (a, i) { return (i === index ? next : a); }) });
|
|
368
|
+
}
|
|
369
|
+
return __assign({}, el, { attributes: __spread(el.attributes, [next]) });
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Replace the element's children, preserving every non-modeled child.
|
|
373
|
+
* The replacer receives the current element children and returns the next
|
|
374
|
+
* list (filter/append/remove).
|
|
375
|
+
*/
|
|
376
|
+
function withChildren(el, replace) {
|
|
377
|
+
var next = replace(elementChildren(el));
|
|
378
|
+
// Keep text children (none modeled in CT_OLEObject today) before the
|
|
379
|
+
// element children, matching load order where both exist.
|
|
380
|
+
var textChildren = el.children.filter(function (c) { return c.kind === 'text'; });
|
|
381
|
+
return __assign({}, el, { children: __spread(textChildren, next) });
|
|
382
|
+
}
|
|
383
|
+
/** Shallow structural clone of the whole subtree (attributes preserved). */
|
|
384
|
+
function cloneElement(el) {
|
|
385
|
+
return {
|
|
386
|
+
kind: 'element',
|
|
387
|
+
namespaceUri: el.namespaceUri,
|
|
388
|
+
localName: el.localName,
|
|
389
|
+
prefix: el.prefix,
|
|
390
|
+
attributes: el.attributes.map(function (a) { return (__assign({}, a)); }),
|
|
391
|
+
namespaceDeclarations: el.namespaceDeclarations.map(function (n) { return (__assign({}, n)); }),
|
|
392
|
+
children: el.children.map(function (c) { return c.kind === 'element'
|
|
393
|
+
? cloneElement(c)
|
|
394
|
+
: { kind: 'text', value: c.value }; }),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/** Error for value validation failures (mapped to `content/invalid-ole-object` by callers). */
|
|
398
|
+
function invalidEnum(name, value, allowed) {
|
|
399
|
+
throw new DocxError('content/invalid-ole-object', "Invalid OleObject " + name + " \"" + String(value) + "\"; expected one of: " + allowed.join(', '));
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Runtime enum guard for values crossing the JS boundary (the type system
|
|
403
|
+
* narrows these to the union, but a JS caller can pass an arbitrary string).
|
|
404
|
+
* `never` via exhaustive check with the as-const member sets.
|
|
405
|
+
*/
|
|
406
|
+
function assertEnumMember(name, value, members, tokens) {
|
|
407
|
+
var __ts33_3;
|
|
408
|
+
if (members.indexOf(value) === -1) {
|
|
409
|
+
invalidEnum(name, value, tokens);
|
|
410
|
+
}
|
|
411
|
+
return ((__ts33_3 = tokens[members.indexOf(value)]), __ts33_3 != null ? __ts33_3 : value);
|
|
412
|
+
}
|
|
413
|
+
/** Office + WML member lists, parallel to their token lists. */
|
|
414
|
+
var ASPECT_MEMBERS = [OleDrawAspect.Content, OleDrawAspect.Icon];
|
|
415
|
+
var UPDATE_MEMBERS = [OleUpdateMode.Always, OleUpdateMode.OnCall];
|
|
416
|
+
/** Validate + convert a draw-aspect input for the active wire form. */
|
|
417
|
+
function drawAspectToken(state, value) {
|
|
418
|
+
if (state.wireForm === 'wml') {
|
|
419
|
+
return assertEnumMember('drawAspect', value, ASPECT_MEMBERS, objectValues(WML_ASPECT_TOKENS));
|
|
420
|
+
}
|
|
421
|
+
return assertEnumMember('DrawAspect', value, ASPECT_MEMBERS, objectValues(OLE_ASPECT_TOKENS));
|
|
422
|
+
}
|
|
423
|
+
/** Validate + convert an update-mode input for the active wire form. */
|
|
424
|
+
function updateModeToken(state, value) {
|
|
425
|
+
if (state.wireForm === 'wml') {
|
|
426
|
+
return assertEnumMember('updateMode', value, UPDATE_MEMBERS, objectValues(WML_UPDATE_TOKENS));
|
|
427
|
+
}
|
|
428
|
+
return assertEnumMember('UpdateMode', value, UPDATE_MEMBERS, objectValues(OLE_UPDATE_TOKENS));
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Format points as an `ST_TwipsMeasure` integral-twips attribute string.
|
|
432
|
+
* Conversion to wire units happens only at this boundary.
|
|
433
|
+
*/
|
|
434
|
+
function formatPointsAsTwipsMeasure(points) {
|
|
435
|
+
var twips = pointToTwips(points);
|
|
436
|
+
if (twips <= 0 || !Number.isFinite(twips)) {
|
|
437
|
+
throw new DocxError('content/invalid-ole-object', 'OleObject original size must be a positive point value');
|
|
438
|
+
}
|
|
439
|
+
return String(twips);
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Patch the DOM state with the given mutations and return the next state
|
|
443
|
+
* (new element + oleElement references; previous tree untouched).
|
|
444
|
+
*
|
|
445
|
+
* @private
|
|
446
|
+
*/
|
|
447
|
+
export function applyOleDomMutations(state, mutations) {
|
|
448
|
+
var element = cloneElement(state.element);
|
|
449
|
+
var resolved = resolveOleChild(element);
|
|
450
|
+
if (resolved === undefined) {
|
|
451
|
+
// Defensive: callers only construct state with a resolved child.
|
|
452
|
+
throw new DocxError('content/invalid-ole-object', 'OLE object element lost its OLE child');
|
|
453
|
+
}
|
|
454
|
+
var oleElement = resolved.oleElement;
|
|
455
|
+
var nextElement = element;
|
|
456
|
+
var office = state.wireForm === 'office';
|
|
457
|
+
// All modeled attributes on o:OLEObject and w:object* WML children are
|
|
458
|
+
// schema-unqualified (no namespace, no prefix): `ProgID`, `DrawAspect`,
|
|
459
|
+
// `progId`, `dxaOrig`, … — serialize as bare localNames.
|
|
460
|
+
var attrNs = '';
|
|
461
|
+
var attrPrefix = '';
|
|
462
|
+
// -- w:object original-size attributes ---------------------------------
|
|
463
|
+
// Word writes these WML-qualified (`w:dxaOrig`); producers that emit them
|
|
464
|
+
// unqualified also parse (namespace ''). Create uses the 'w' prefix;
|
|
465
|
+
// replacement preserves whatever prefix the source carried.
|
|
466
|
+
if ('originalWidth' in mutations) {
|
|
467
|
+
nextElement = withAttribute(nextElement, WML_NS, 'dxaOrig', mutations.originalWidth === undefined
|
|
468
|
+
? undefined
|
|
469
|
+
: formatPointsAsTwipsMeasure(mutations.originalWidth), 'w');
|
|
470
|
+
}
|
|
471
|
+
if ('originalHeight' in mutations) {
|
|
472
|
+
nextElement = withAttribute(nextElement, WML_NS, 'dyaOrig', mutations.originalHeight === undefined
|
|
473
|
+
? undefined
|
|
474
|
+
: formatPointsAsTwipsMeasure(mutations.originalHeight), 'w');
|
|
475
|
+
}
|
|
476
|
+
// -- o:OLEObject / w:object* attributes --------------------------------
|
|
477
|
+
// Note: the WML form encodes Embed/Link in the element choice
|
|
478
|
+
// (w:objectEmbed vs w:objectLink); converting between element names is a
|
|
479
|
+
// form conversion and is out of scope (wireForm is fixed at load), so a
|
|
480
|
+
// `type` mutation only applies on the office form. Clearing `@Type` is
|
|
481
|
+
// allowed there (embed is the schema default when absent).
|
|
482
|
+
if ('type' in mutations && office) {
|
|
483
|
+
var value = mutations.type;
|
|
484
|
+
if (value === undefined) {
|
|
485
|
+
oleElement = withAttribute(oleElement, attrNs, 'Type', undefined, attrPrefix);
|
|
486
|
+
}
|
|
487
|
+
else if (value === OleLinkType.Link) {
|
|
488
|
+
oleElement = withAttribute(oleElement, attrNs, 'Type', OLE_TYPE_TOKENS.Link, attrPrefix);
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
oleElement = withAttribute(oleElement, attrNs, 'Type', OLE_TYPE_TOKENS.Embed, attrPrefix);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
if ('progId' in mutations) {
|
|
495
|
+
oleElement = withAttribute(oleElement, attrNs, office ? 'ProgID' : 'progId', mutations.progId, attrPrefix);
|
|
496
|
+
}
|
|
497
|
+
if ('shapeId' in mutations) {
|
|
498
|
+
oleElement = withAttribute(oleElement, attrNs, office ? 'ShapeID' : 'shapeId', mutations.shapeId, attrPrefix);
|
|
499
|
+
}
|
|
500
|
+
if ('drawAspect' in mutations) {
|
|
501
|
+
var value = mutations.drawAspect;
|
|
502
|
+
oleElement = withAttribute(oleElement, attrNs, office ? 'DrawAspect' : 'drawAspect', value === undefined ? undefined : drawAspectToken(state, value), attrPrefix);
|
|
503
|
+
}
|
|
504
|
+
if ('objectId' in mutations && office) {
|
|
505
|
+
oleElement = withAttribute(oleElement, attrNs, 'ObjectID', mutations.objectId, attrPrefix);
|
|
506
|
+
}
|
|
507
|
+
if ('updateMode' in mutations) {
|
|
508
|
+
var value = mutations.updateMode;
|
|
509
|
+
if (office || state.oleElement.localName === WML_LINK_ELEMENT) {
|
|
510
|
+
oleElement = withAttribute(oleElement, attrNs, office ? 'UpdateMode' : 'updateMode', value === undefined ? undefined : updateModeToken(state, value), attrPrefix);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
// -- office-form children (LinkType / LockedField / FieldCodes) --------
|
|
514
|
+
if (office) {
|
|
515
|
+
oleElement = withChildren(oleElement, function (children) {
|
|
516
|
+
var next = children;
|
|
517
|
+
if ('linkTypeDescription' in mutations) {
|
|
518
|
+
next = setOfficeChild(next, 'LinkType', mutations.linkTypeDescription);
|
|
519
|
+
}
|
|
520
|
+
if ('lockedField' in mutations) {
|
|
521
|
+
next = setOfficeChild(next, 'LockedField', mutations.lockedField === undefined
|
|
522
|
+
? undefined
|
|
523
|
+
: mutations.lockedField
|
|
524
|
+
? 't'
|
|
525
|
+
: 'f');
|
|
526
|
+
}
|
|
527
|
+
if ('fieldCodes' in mutations) {
|
|
528
|
+
next = setOfficeChild(next, 'FieldCodes', mutations.fieldCodes);
|
|
529
|
+
}
|
|
530
|
+
return next;
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
else if ('lockedField' in mutations || 'fieldCodes' in mutations) {
|
|
534
|
+
// WML link form carries lockedField/fieldCodes as attributes.
|
|
535
|
+
if ('lockedField' in mutations) {
|
|
536
|
+
var value = mutations.lockedField;
|
|
537
|
+
oleElement = withAttribute(oleElement, attrNs, 'lockedField', value === undefined ? undefined : value ? 'true' : 'false', attrPrefix);
|
|
538
|
+
}
|
|
539
|
+
if ('fieldCodes' in mutations) {
|
|
540
|
+
oleElement = withAttribute(oleElement, attrNs, 'fieldCodes', mutations.fieldCodes, attrPrefix);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
// Splice the patched oleElement back into the element's children.
|
|
544
|
+
nextElement = __assign({}, nextElement, { children: nextElement.children.map(function (c) { return c.kind === 'element' && c === resolved.oleElement ? oleElement : c; }) });
|
|
545
|
+
return { element: nextElement, oleElement: oleElement, wireForm: state.wireForm };
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Set or remove one office-form child (`o:LinkType`, `o:LockedField`,
|
|
549
|
+
* `o:FieldCodes`) preserving relative order; the child is appended at the
|
|
550
|
+
* end when newly created (CT_OLEObject child sequence is
|
|
551
|
+
* LinkType → LockedField → FieldCodes; setters that create children
|
|
552
|
+
* out of order would violate the sequence, so callers set values in an
|
|
553
|
+
* order-independent way here by always keeping the three slots sorted).
|
|
554
|
+
*/
|
|
555
|
+
function setOfficeChild(children, localName, value) {
|
|
556
|
+
var filtered = children.filter(function (c) { return !(c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === localName); });
|
|
557
|
+
if (value === undefined) {
|
|
558
|
+
return filtered;
|
|
559
|
+
}
|
|
560
|
+
var created = {
|
|
561
|
+
kind: 'element',
|
|
562
|
+
namespaceUri: OFFICE_OLE_NAMESPACE,
|
|
563
|
+
localName: localName,
|
|
564
|
+
prefix: 'o',
|
|
565
|
+
attributes: [],
|
|
566
|
+
namespaceDeclarations: [],
|
|
567
|
+
children: [{ kind: 'text', value: value }],
|
|
568
|
+
};
|
|
569
|
+
// Re-sort the three modeled slots into schema order relative to each other.
|
|
570
|
+
var order = ['LinkType', 'LockedField', 'FieldCodes'];
|
|
571
|
+
var slot = order.indexOf(localName);
|
|
572
|
+
var insertAt = filtered.findIndex(function (c) {
|
|
573
|
+
if (c.namespaceUri !== OFFICE_OLE_NAMESPACE) {
|
|
574
|
+
return false;
|
|
575
|
+
}
|
|
576
|
+
var other = order.indexOf(c.localName);
|
|
577
|
+
return other >= 0 && other > slot;
|
|
578
|
+
});
|
|
579
|
+
if (insertAt < 0) {
|
|
580
|
+
return __spread(filtered, [created]);
|
|
581
|
+
}
|
|
582
|
+
return __spread(filtered.slice(0, insertAt), [created], filtered.slice(insertAt));
|
|
583
|
+
}
|
|
584
|
+
/** Exported for the class: attribute lookup helper (namespace-qualified). */
|
|
585
|
+
export function oleAttributeValue(el, namespaceUri, localName) {
|
|
586
|
+
return attributeValue(el, namespaceUri, localName);
|
|
587
|
+
}
|
|
588
|
+
/** Exported for the class: element children helper. */
|
|
589
|
+
export function oleElementChildren(el) {
|
|
590
|
+
return elementChildren(el);
|
|
591
|
+
}
|
|
592
|
+
/** Exported for the class: explicit-false detection for LockedField. */
|
|
593
|
+
export function oleIsExplicitFalse(value) {
|
|
594
|
+
return isExplicitFalse(value);
|
|
595
|
+
}
|