@syncfusion/ej2-docx 0.0.0-stage → 35.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitleaksignore +35 -0
- package/README.md +68 -2
- package/core.js +4 -0
- package/dist/ej2-docx.umd.min.js +11 -0
- package/dist/ej2-docx.umd.min.js.map +1 -0
- package/dist/es6/ej2-docx.es2015.js +66697 -0
- package/dist/es6/ej2-docx.es2015.js.map +1 -0
- package/dist/es6/ej2-docx.es5.js +77568 -0
- package/dist/es6/ej2-docx.es5.js.map +1 -0
- package/dist/global/ej2-docx.min.js +11 -0
- package/dist/global/ej2-docx.min.js.map +1 -0
- package/dist/global/index.d.ts +14 -0
- package/features.js +4 -0
- package/index.js +4 -0
- package/license +10 -0
- package/package.json +30 -3
- package/src/all.d.ts +50 -0
- package/src/all.js +147 -0
- package/src/core/compat/base64.d.ts +13 -0
- package/src/core/compat/base64.js +90 -0
- package/src/core/compat/object-compat.d.ts +30 -0
- package/src/core/compat/object-compat.js +40 -0
- package/src/core/compat/sha256.d.ts +9 -0
- package/src/core/compat/sha256.js +98 -0
- package/src/core/errors/docx-error.d.ts +89 -0
- package/src/core/errors/docx-error.js +138 -0
- package/src/core/errors/error-codes.d.ts +8 -0
- package/src/core/errors/error-codes.js +0 -0
- package/src/core/errors/index.d.ts +10 -0
- package/src/core/errors/index.js +9 -0
- package/src/core/index.d.ts +12 -0
- package/src/core/index.js +12 -0
- package/src/core/mc/alternate-content.d.ts +7 -0
- package/src/core/mc/alternate-content.js +67 -0
- package/src/core/mc/attributes.d.ts +24 -0
- package/src/core/mc/attributes.js +82 -0
- package/src/core/mc/index.d.ts +7 -0
- package/src/core/mc/index.js +5 -0
- package/src/core/mc/inspect.d.ts +16 -0
- package/src/core/mc/inspect.js +148 -0
- package/src/core/mc/namespaces.d.ts +4 -0
- package/src/core/mc/namespaces.js +4 -0
- package/src/core/mc/scope.d.ts +6 -0
- package/src/core/mc/scope.js +47 -0
- package/src/core/opc/content-types.d.ts +34 -0
- package/src/core/opc/content-types.js +162 -0
- package/src/core/opc/index.d.ts +8 -0
- package/src/core/opc/index.js +4 -0
- package/src/core/opc/package.d.ts +49 -0
- package/src/core/opc/package.js +324 -0
- package/src/core/opc/part-name.d.ts +47 -0
- package/src/core/opc/part-name.js +205 -0
- package/src/core/opc/relationships.d.ts +46 -0
- package/src/core/opc/relationships.js +212 -0
- package/src/core/preservation/index.d.ts +2 -0
- package/src/core/preservation/index.js +1 -0
- package/src/core/preservation/opaque-body.d.ts +16 -0
- package/src/core/preservation/opaque-body.js +69 -0
- package/src/core/registry/block-handlers.d.ts +30 -0
- package/src/core/registry/block-handlers.js +36 -0
- package/src/core/registry/create-defaults.d.ts +39 -0
- package/src/core/registry/create-defaults.js +42 -0
- package/src/core/registry/feature-registry.d.ts +20 -0
- package/src/core/registry/feature-registry.js +29 -0
- package/src/core/registry/index.d.ts +9 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/inline-handlers.d.ts +20 -0
- package/src/core/registry/inline-handlers.js +30 -0
- package/src/core/registry/materialize-handlers.d.ts +35 -0
- package/src/core/registry/materialize-handlers.js +75 -0
- package/src/core/registry/multi-part-handlers.d.ts +37 -0
- package/src/core/registry/multi-part-handlers.js +206 -0
- package/src/core/registry/package-part-handlers.d.ts +28 -0
- package/src/core/registry/package-part-handlers.js +190 -0
- package/src/core/registry/part-handlers.d.ts +24 -0
- package/src/core/registry/part-handlers.js +172 -0
- package/src/core/registry/run-leaf-handlers.d.ts +26 -0
- package/src/core/registry/run-leaf-handlers.js +72 -0
- package/src/core/security/limits.d.ts +40 -0
- package/src/core/security/limits.js +26 -0
- package/src/core/xml/index.d.ts +7 -0
- package/src/core/xml/index.js +3 -0
- package/src/core/xml/model.d.ts +66 -0
- package/src/core/xml/model.js +17 -0
- package/src/core/xml/parse.d.ts +12 -0
- package/src/core/xml/parse.js +382 -0
- package/src/core/xml/serialize.d.ts +6 -0
- package/src/core/xml/serialize.js +93 -0
- package/src/core/zip/crc32.d.ts +2 -0
- package/src/core/zip/crc32.js +25 -0
- package/src/core/zip/deflate.d.ts +6 -0
- package/src/core/zip/deflate.js +6 -0
- package/src/core/zip/index.d.ts +10 -0
- package/src/core/zip/index.js +4 -0
- package/src/core/zip/inflate-raw.d.ts +17 -0
- package/src/core/zip/inflate-raw.js +450 -0
- package/src/core/zip/names.d.ts +6 -0
- package/src/core/zip/names.js +52 -0
- package/src/core/zip/read.d.ts +8 -0
- package/src/core/zip/read.js +262 -0
- package/src/core/zip/write.d.ts +7 -0
- package/src/core/zip/write.js +189 -0
- package/src/core/zip/zip-entry.d.ts +4 -0
- package/src/core/zip/zip-entry.js +0 -0
- package/src/features/bibliography/index.d.ts +100 -0
- package/src/features/bibliography/index.js +290 -0
- package/src/features/bookmarks/index.d.ts +331 -0
- package/src/features/bookmarks/index.js +1009 -0
- package/src/features/comments/comment-extensions.d.ts +157 -0
- package/src/features/comments/comment-extensions.js +356 -0
- package/src/features/comments/index.d.ts +579 -0
- package/src/features/comments/index.js +1727 -0
- package/src/features/content-controls/index.d.ts +821 -0
- package/src/features/content-controls/index.js +2857 -0
- package/src/features/custom-xml/index.d.ts +236 -0
- package/src/features/custom-xml/index.js +661 -0
- package/src/features/document/alignment.d.ts +23 -0
- package/src/features/document/alignment.js +36 -0
- package/src/features/document/alt-chunk.d.ts +103 -0
- package/src/features/document/alt-chunk.js +221 -0
- package/src/features/document/assert-never.d.ts +1 -0
- package/src/features/document/assert-never.js +4 -0
- package/src/features/document/augmentations.d.ts +578 -0
- package/src/features/document/augmentations.js +0 -0
- package/src/features/document/body-always-on.d.ts +36 -0
- package/src/features/document/body-always-on.js +66 -0
- package/src/features/document/body-blocks.d.ts +7 -0
- package/src/features/document/body-blocks.js +78 -0
- package/src/features/document/body-item-adapters.d.ts +62 -0
- package/src/features/document/body-item-adapters.js +97 -0
- package/src/features/document/body-item-collection.d.ts +151 -0
- package/src/features/document/body-item-collection.js +440 -0
- package/src/features/document/body-item.d.ts +35 -0
- package/src/features/document/body-item.js +8 -0
- package/src/features/document/body.d.ts +150 -0
- package/src/features/document/body.js +263 -0
- package/src/features/document/character-format.d.ts +413 -0
- package/src/features/document/character-format.js +2054 -0
- package/src/features/document/color.d.ts +178 -0
- package/src/features/document/color.js +495 -0
- package/src/features/document/document.d.ts +410 -0
- package/src/features/document/document.js +1049 -0
- package/src/features/document/element-type.d.ts +68 -0
- package/src/features/document/element-type.js +133 -0
- package/src/features/document/entity-type.d.ts +92 -0
- package/src/features/document/entity-type.js +93 -0
- package/src/features/document/feature-block.d.ts +16 -0
- package/src/features/document/feature-block.js +0 -0
- package/src/features/document/feature-inline.d.ts +13 -0
- package/src/features/document/feature-inline.js +0 -0
- package/src/features/document/feature-multi-package-part.d.ts +19 -0
- package/src/features/document/feature-multi-package-part.js +8 -0
- package/src/features/document/feature-package-level-part.d.ts +18 -0
- package/src/features/document/feature-package-level-part.js +8 -0
- package/src/features/document/feature-package-part.d.ts +14 -0
- package/src/features/document/feature-package-part.js +0 -0
- package/src/features/document/feature-run-leaf.d.ts +9 -0
- package/src/features/document/feature-run-leaf.js +0 -0
- package/src/features/document/headers-footers.d.ts +206 -0
- package/src/features/document/headers-footers.js +384 -0
- package/src/features/document/index.d.ts +41 -0
- package/src/features/document/index.js +34 -0
- package/src/features/document/length.d.ts +152 -0
- package/src/features/document/length.js +245 -0
- package/src/features/document/load-options.d.ts +14 -0
- package/src/features/document/load-options.js +0 -0
- package/src/features/document/locale-ids.d.ts +227 -0
- package/src/features/document/locale-ids.js +485 -0
- package/src/features/document/on-off.d.ts +9 -0
- package/src/features/document/on-off.js +27 -0
- package/src/features/document/page-setup.d.ts +339 -0
- package/src/features/document/page-setup.js +244 -0
- package/src/features/document/paragraph-format.d.ts +880 -0
- package/src/features/document/paragraph-format.js +2807 -0
- package/src/features/document/paragraph-item-collection.d.ts +162 -0
- package/src/features/document/paragraph-item-collection.js +363 -0
- package/src/features/document/paragraph-item.d.ts +83 -0
- package/src/features/document/paragraph-item.js +103 -0
- package/src/features/document/paragraph.d.ts +435 -0
- package/src/features/document/paragraph.js +888 -0
- package/src/features/document/run.d.ts +1 -0
- package/src/features/document/run.js +768 -0
- package/src/features/document/section-partition-flatten.d.ts +124 -0
- package/src/features/document/section-partition-flatten.js +217 -0
- package/src/features/document/section-properties-model.d.ts +13 -0
- package/src/features/document/section-properties-model.js +0 -0
- package/src/features/document/section.d.ts +93 -0
- package/src/features/document/section.js +178 -0
- package/src/features/document/sections.d.ts +103 -0
- package/src/features/document/sections.js +217 -0
- package/src/features/document/sub-super-script.d.ts +23 -0
- package/src/features/document/sub-super-script.js +43 -0
- package/src/features/document/text-range.d.ts +445 -0
- package/src/features/document/text-range.js +1156 -0
- package/src/features/document/typed-body-collections.d.ts +162 -0
- package/src/features/document/typed-body-collections.js +371 -0
- package/src/features/document/underline-style.d.ts +38 -0
- package/src/features/document/underline-style.js +126 -0
- package/src/features/document/units.d.ts +8 -0
- package/src/features/document/units.js +7 -0
- package/src/features/document/wml.d.ts +16 -0
- package/src/features/document/wml.js +67 -0
- package/src/features/drawing/authoring.d.ts +27 -0
- package/src/features/drawing/authoring.js +271 -0
- package/src/features/drawing/body-pr.d.ts +271 -0
- package/src/features/drawing/body-pr.js +663 -0
- package/src/features/drawing/drawing-shape.d.ts +1192 -0
- package/src/features/drawing/drawing-shape.js +3239 -0
- package/src/features/drawing/encode-builders.d.ts +176 -0
- package/src/features/drawing/encode-builders.js +390 -0
- package/src/features/drawing/fill-format.d.ts +52 -0
- package/src/features/drawing/fill-format.js +124 -0
- package/src/features/drawing/host-codec.d.ts +632 -0
- package/src/features/drawing/host-codec.js +2595 -0
- package/src/features/drawing/index.d.ts +13 -0
- package/src/features/drawing/index.js +33 -0
- package/src/features/drawing/line-format.d.ts +76 -0
- package/src/features/drawing/line-format.js +343 -0
- package/src/features/drawing/parse-register.d.ts +50 -0
- package/src/features/drawing/parse-register.js +257 -0
- package/src/features/drawing/residual-utils.d.ts +47 -0
- package/src/features/drawing/residual-utils.js +290 -0
- package/src/features/drawing/shape-types.d.ts +433 -0
- package/src/features/drawing/shape-types.js +437 -0
- package/src/features/drawing/sp-pr.d.ts +396 -0
- package/src/features/drawing/sp-pr.js +610 -0
- package/src/features/drawing/text-frame.d.ts +90 -0
- package/src/features/drawing/text-frame.js +152 -0
- package/src/features/drawing/types.d.ts +352 -0
- package/src/features/drawing/types.js +60 -0
- package/src/features/drawing/wrap-format.d.ts +62 -0
- package/src/features/drawing/wrap-format.js +114 -0
- package/src/features/editable-ranges/index.d.ts +494 -0
- package/src/features/editable-ranges/index.js +1348 -0
- package/src/features/fields/index.d.ts +428 -0
- package/src/features/fields/index.js +2148 -0
- package/src/features/fields/paragraph-field.d.ts +187 -0
- package/src/features/fields/paragraph-field.js +692 -0
- package/src/features/font-table/font-substitution-table.d.ts +75 -0
- package/src/features/font-table/font-substitution-table.js +257 -0
- package/src/features/font-table/font-table-entry.d.ts +255 -0
- package/src/features/font-table/font-table-entry.js +823 -0
- package/src/features/font-table/font-table.d.ts +128 -0
- package/src/features/font-table/font-table.js +313 -0
- package/src/features/font-table/index.d.ts +27 -0
- package/src/features/font-table/index.js +48 -0
- package/src/features/glossary/index.d.ts +97 -0
- package/src/features/glossary/index.js +286 -0
- package/src/features/headers-footers/index.d.ts +506 -0
- package/src/features/headers-footers/index.js +1666 -0
- package/src/features/hyperlinks/index.d.ts +230 -0
- package/src/features/hyperlinks/index.js +685 -0
- package/src/features/images/caption-authoring-api.d.ts +33 -0
- package/src/features/images/caption-authoring-api.js +33 -0
- package/src/features/images/caption-enums.d.ts +52 -0
- package/src/features/images/caption-enums.js +141 -0
- package/src/features/images/caption-host.d.ts +10 -0
- package/src/features/images/caption-host.js +21 -0
- package/src/features/images/captions.d.ts +13 -0
- package/src/features/images/captions.js +142 -0
- package/src/features/images/host-codec.d.ts +103 -0
- package/src/features/images/host-codec.js +720 -0
- package/src/features/images/image-sniff.d.ts +21 -0
- package/src/features/images/image-sniff.js +71 -0
- package/src/features/images/index.d.ts +506 -0
- package/src/features/images/index.js +1429 -0
- package/src/features/images/layout-types.d.ts +232 -0
- package/src/features/images/layout-types.js +294 -0
- package/src/features/images/public-entry.d.ts +9 -0
- package/src/features/images/public-entry.js +9 -0
- package/src/features/index.d.ts +35 -0
- package/src/features/index.js +36 -0
- package/src/features/mail-merge/index.d.ts +113 -0
- package/src/features/mail-merge/index.js +315 -0
- package/src/features/notes/index.d.ts +573 -0
- package/src/features/notes/index.js +1725 -0
- package/src/features/numbering/abstract-numbering.d.ts +90 -0
- package/src/features/numbering/abstract-numbering.js +292 -0
- package/src/features/numbering/index.d.ts +182 -0
- package/src/features/numbering/index.js +668 -0
- package/src/features/numbering/list-format.d.ts +158 -0
- package/src/features/numbering/list-format.js +590 -0
- package/src/features/numbering/list-string.d.ts +7 -0
- package/src/features/numbering/list-string.js +423 -0
- package/src/features/numbering/list-style.d.ts +204 -0
- package/src/features/numbering/list-style.js +1084 -0
- package/src/features/numbering/numbering-instance.d.ts +101 -0
- package/src/features/numbering/numbering-instance.js +329 -0
- package/src/features/numbering/numbering-level.d.ts +118 -0
- package/src/features/numbering/numbering-level.js +501 -0
- package/src/features/numbering/picture-bullet.d.ts +34 -0
- package/src/features/numbering/picture-bullet.js +88 -0
- package/src/features/ole-object/catalog.d.ts +300 -0
- package/src/features/ole-object/catalog.js +908 -0
- package/src/features/ole-object/index.d.ts +526 -0
- package/src/features/ole-object/index.js +1421 -0
- package/src/features/ole-object/relationship.d.ts +27 -0
- package/src/features/ole-object/relationship.js +27 -0
- package/src/features/ole-object/typed-dom.d.ts +186 -0
- package/src/features/ole-object/typed-dom.js +595 -0
- package/src/features/properties/index.d.ts +205 -0
- package/src/features/properties/index.js +549 -0
- package/src/features/revisions/index.d.ts +204 -0
- package/src/features/revisions/index.js +695 -0
- package/src/features/sections/column-collection.d.ts +119 -0
- package/src/features/sections/column-collection.js +478 -0
- package/src/features/sections/column.d.ts +15 -0
- package/src/features/sections/column.js +37 -0
- package/src/features/sections/index.d.ts +91 -0
- package/src/features/sections/index.js +1096 -0
- package/src/features/sections/margins.d.ts +40 -0
- package/src/features/sections/margins.js +105 -0
- package/src/features/sections/page-number-style.d.ts +21 -0
- package/src/features/sections/page-number-style.js +62 -0
- package/src/features/sections/page-orientation.d.ts +10 -0
- package/src/features/sections/page-orientation.js +10 -0
- package/src/features/sections/page-setup.d.ts +435 -0
- package/src/features/sections/page-setup.js +1479 -0
- package/src/features/sections/page-size.d.ts +59 -0
- package/src/features/sections/page-size.js +68 -0
- package/src/features/sections/section-break-code.d.ts +27 -0
- package/src/features/sections/section-break-code.js +60 -0
- package/src/features/sections/section-document-association.d.ts +18 -0
- package/src/features/sections/section-document-association.js +31 -0
- package/src/features/sections/section-validation.d.ts +43 -0
- package/src/features/sections/section-validation.js +97 -0
- package/src/features/settings/attached-template.d.ts +35 -0
- package/src/features/settings/attached-template.js +98 -0
- package/src/features/settings/compat-settings.d.ts +216 -0
- package/src/features/settings/compat-settings.js +508 -0
- package/src/features/settings/document-background.d.ts +59 -0
- package/src/features/settings/document-background.js +131 -0
- package/src/features/settings/document-protection.d.ts +65 -0
- package/src/features/settings/document-protection.js +157 -0
- package/src/features/settings/document-settings-facades.d.ts +108 -0
- package/src/features/settings/document-settings-facades.js +312 -0
- package/src/features/settings/document-settings-values.d.ts +43 -0
- package/src/features/settings/document-settings-values.js +60 -0
- package/src/features/settings/footnote-properties.d.ts +211 -0
- package/src/features/settings/footnote-properties.js +591 -0
- package/src/features/settings/index.d.ts +356 -0
- package/src/features/settings/index.js +829 -0
- package/src/features/settings/settings-children.d.ts +151 -0
- package/src/features/settings/settings-children.js +505 -0
- package/src/features/settings/web-settings.d.ts +88 -0
- package/src/features/settings/web-settings.js +227 -0
- package/src/features/settings/zoom.d.ts +79 -0
- package/src/features/settings/zoom.js +147 -0
- package/src/features/styles/builtin-catalog.d.ts +159 -0
- package/src/features/styles/builtin-catalog.js +963 -0
- package/src/features/styles/builtin-resolver.d.ts +49 -0
- package/src/features/styles/builtin-resolver.js +165 -0
- package/src/features/styles/default-styles.d.ts +37 -0
- package/src/features/styles/default-styles.js +186 -0
- package/src/features/styles/default-theme.d.ts +13 -0
- package/src/features/styles/default-theme.js +13 -0
- package/src/features/styles/doc-defaults.d.ts +58 -0
- package/src/features/styles/doc-defaults.js +178 -0
- package/src/features/styles/formatting-resolver.d.ts +27 -0
- package/src/features/styles/formatting-resolver.js +72 -0
- package/src/features/styles/index.d.ts +256 -0
- package/src/features/styles/index.js +1325 -0
- package/src/features/styles/latent-styles.d.ts +68 -0
- package/src/features/styles/latent-styles.js +305 -0
- package/src/features/styles/paragraph-properties.d.ts +71 -0
- package/src/features/styles/paragraph-properties.js +237 -0
- package/src/features/styles/run-properties.d.ts +93 -0
- package/src/features/styles/run-properties.js +516 -0
- package/src/features/styles/style-base.d.ts +402 -0
- package/src/features/styles/style-base.js +1026 -0
- package/src/features/styles/style-collection.d.ts +264 -0
- package/src/features/styles/style-collection.js +714 -0
- package/src/features/styles/style-format-bridge.d.ts +64 -0
- package/src/features/styles/style-format-bridge.js +100 -0
- package/src/features/styles/style.d.ts +84 -0
- package/src/features/styles/style.js +375 -0
- package/src/features/styles/styles-with-effects.d.ts +71 -0
- package/src/features/styles/styles-with-effects.js +180 -0
- package/src/features/styles/table-style.d.ts +272 -0
- package/src/features/styles/table-style.js +1226 -0
- package/src/features/styles/theme.d.ts +126 -0
- package/src/features/styles/theme.js +377 -0
- package/src/features/tables/border-style-map.d.ts +24 -0
- package/src/features/tables/border-style-map.js +81 -0
- package/src/features/tables/borders.d.ts +126 -0
- package/src/features/tables/borders.js +527 -0
- package/src/features/tables/collections.d.ts +113 -0
- package/src/features/tables/collections.js +261 -0
- package/src/features/tables/format.d.ts +208 -0
- package/src/features/tables/format.js +716 -0
- package/src/features/tables/index.d.ts +597 -0
- package/src/features/tables/index.js +2386 -0
- package/src/features/tables/paddings.d.ts +41 -0
- package/src/features/tables/paddings.js +97 -0
- package/src/features/tables/tbl-pr-positioning.d.ts +27 -0
- package/src/features/tables/tbl-pr-positioning.js +178 -0
- package/src/features/tables/tbl-pr.d.ts +528 -0
- package/src/features/tables/tbl-pr.js +1208 -0
- package/src/features/tables/tc-pr.d.ts +168 -0
- package/src/features/tables/tc-pr.js +553 -0
- package/src/features/tables/tr-pr.d.ts +60 -0
- package/src/features/tables/tr-pr.js +215 -0
- package/src/features/watermark/detect.d.ts +76 -0
- package/src/features/watermark/detect.js +219 -0
- package/src/features/watermark/index.d.ts +28 -0
- package/src/features/watermark/index.js +91 -0
- package/src/features/watermark/logical-store.d.ts +29 -0
- package/src/features/watermark/logical-store.js +31 -0
- package/src/features/watermark/model.d.ts +285 -0
- package/src/features/watermark/model.js +597 -0
- package/src/features/watermark/parse.d.ts +84 -0
- package/src/features/watermark/parse.js +815 -0
- package/src/features/watermark/serialize.d.ts +98 -0
- package/src/features/watermark/serialize.js +1517 -0
- package/src/global.js +1 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
var __values = (this && this.__values) || function (o) {
|
|
2
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
|
3
|
+
if (m) return m.call(o);
|
|
4
|
+
return {
|
|
5
|
+
next: function () {
|
|
6
|
+
if (o && i >= o.length) o = void 0;
|
|
7
|
+
return { value: o && o[i++], done: !o };
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Typed parse/serialize helpers for `w:trPr`.
|
|
13
|
+
*
|
|
14
|
+
* Citations: Transitional `wml.xsd` `CT_TrPrBase`, `CT_Height`, `ST_HeightRule`,
|
|
15
|
+
* `ST_JcTable`.
|
|
16
|
+
*/
|
|
17
|
+
import { parseOnOff, serializeOnOff } from '../document/on-off';
|
|
18
|
+
import { elementChildren, isWml, wmlAttr, wmlElement, } from '../document/wml';
|
|
19
|
+
import { emptyPropsToUndefined, parseCnfStyle, parseShd, parseDecimalVal, parseTableAlignment, pointToTwips, serializeCnfStyle, serializeShd, serializeTableAlignment, normalizeCnfStyle, normalizedCnfStyleHasTrue, TableRowHeightRule, twipsToPoint, upsertPropChild, wmlAttrVal } from './tbl-pr';
|
|
20
|
+
// TS 3.3: no `export type { ... }` — re-export interface via value import usage only.
|
|
21
|
+
function findWmlChild(parent, localName) {
|
|
22
|
+
var e_1, _a;
|
|
23
|
+
try {
|
|
24
|
+
for (var _b = __values(elementChildren(parent)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
25
|
+
var child = _c.value;
|
|
26
|
+
if (isWml(child, localName)) {
|
|
27
|
+
return child;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
32
|
+
finally {
|
|
33
|
+
try {
|
|
34
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
35
|
+
}
|
|
36
|
+
finally { if (e_1) throw e_1.error; }
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
function ensureTrPr(trPr) {
|
|
41
|
+
return trPr != null ? trPr : wmlElement('trPr');
|
|
42
|
+
}
|
|
43
|
+
function writeTrChild(trPr, localName, replacement) {
|
|
44
|
+
var next = upsertPropChild(ensureTrPr(trPr), 'trPr', localName, replacement);
|
|
45
|
+
return emptyPropsToUndefined(next);
|
|
46
|
+
}
|
|
47
|
+
// TS 3.3 / ES5 parity: avoid Object.values on the const map.
|
|
48
|
+
var HEIGHT_RULES = new Set([
|
|
49
|
+
TableRowHeightRule.Auto,
|
|
50
|
+
TableRowHeightRule.AtLeast,
|
|
51
|
+
TableRowHeightRule.Exact,
|
|
52
|
+
]);
|
|
53
|
+
/**
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
export function readRowHeight(trPr) {
|
|
57
|
+
var __ts33_0;
|
|
58
|
+
if (trPr === undefined) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
var el = findWmlChild(trPr, 'trHeight');
|
|
62
|
+
if (el === undefined) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
var val = parseDecimalVal(wmlAttrVal(el, 'val'));
|
|
66
|
+
if (val === undefined) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
var ruleRaw = ((__ts33_0 = wmlAttrVal(el, 'hRule')), __ts33_0 != null ? __ts33_0 : 'auto');
|
|
70
|
+
if (!HEIGHT_RULES.has(ruleRaw)) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
value: twipsToPoint(val),
|
|
75
|
+
rule: ruleRaw,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
export function writeRowHeight(trPr, height) {
|
|
82
|
+
if (height === undefined) {
|
|
83
|
+
if (trPr === undefined) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return writeTrChild(trPr, 'trHeight', undefined);
|
|
87
|
+
}
|
|
88
|
+
var attrs = [
|
|
89
|
+
wmlAttr('val', String(pointToTwips(height.value))),
|
|
90
|
+
wmlAttr('hRule', height.rule),
|
|
91
|
+
];
|
|
92
|
+
return writeTrChild(trPr, 'trHeight', wmlElement('trHeight', { attributes: attrs }));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @private
|
|
96
|
+
*/
|
|
97
|
+
export function readRowCantSplit(trPr) {
|
|
98
|
+
if (trPr === undefined) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
var el = findWmlChild(trPr, 'cantSplit');
|
|
102
|
+
return el !== undefined ? parseOnOff(el) : undefined;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
export function writeRowCantSplit(trPr, cantSplit) {
|
|
108
|
+
if (cantSplit === undefined && trPr === undefined) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return writeTrChild(trPr, 'cantSplit', cantSplit !== undefined ? serializeOnOff('cantSplit', cantSplit) : undefined);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
export function readRowIsHeader(trPr) {
|
|
117
|
+
if (trPr === undefined) {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
var el = findWmlChild(trPr, 'tblHeader');
|
|
121
|
+
return el !== undefined ? parseOnOff(el) : undefined;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @private
|
|
125
|
+
*/
|
|
126
|
+
export function writeRowIsHeader(trPr, isHeader) {
|
|
127
|
+
if (isHeader === undefined && trPr === undefined) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
return writeTrChild(trPr, 'tblHeader', isHeader !== undefined ? serializeOnOff('tblHeader', isHeader) : undefined);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @private
|
|
134
|
+
*/
|
|
135
|
+
export function readRowAlignment(trPr) {
|
|
136
|
+
if (trPr === undefined) {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
var el = findWmlChild(trPr, 'jc');
|
|
140
|
+
return el !== undefined ? parseTableAlignment(el) : undefined;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* @private
|
|
144
|
+
*/
|
|
145
|
+
export function writeRowAlignment(trPr, alignment) {
|
|
146
|
+
if (alignment === undefined && trPr === undefined) {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
return writeTrChild(trPr, 'jc', alignment !== undefined ? serializeTableAlignment(alignment) : undefined);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Row shading (`w:trPr/w:shd`).
|
|
153
|
+
*
|
|
154
|
+
* @private
|
|
155
|
+
*/
|
|
156
|
+
export function readRowShading(trPr) {
|
|
157
|
+
if (trPr === undefined) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
var el = findWmlChild(trPr, 'shd');
|
|
161
|
+
if (el === undefined) {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
var shd = parseShd(el);
|
|
165
|
+
if (shd.fill === undefined && shd.color === undefined && shd.pattern === undefined) {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
return shd;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* @private
|
|
172
|
+
*/
|
|
173
|
+
export function writeRowShading(trPr, shading) {
|
|
174
|
+
if (shading === undefined && trPr === undefined) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
return writeTrChild(trPr, 'shd', shading !== undefined ? serializeShd(shading) : undefined);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Row conditional formatting membership (`w:trPr/w:cnfStyle` / `CT_Cnf`).
|
|
181
|
+
* Preserve-only: does not recompute from table layout.
|
|
182
|
+
*
|
|
183
|
+
* Citations: ECMA-376-1 §17.4.7; Part 4 §14.3.1.1 / §14.11.9; Transitional `CT_Cnf`.
|
|
184
|
+
*
|
|
185
|
+
* @private
|
|
186
|
+
*/
|
|
187
|
+
export function readRowCnfStyle(trPr) {
|
|
188
|
+
if (trPr === undefined) {
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
var el = findWmlChild(trPr, 'cnfStyle');
|
|
192
|
+
if (el === undefined) {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
var state = parseCnfStyle(el);
|
|
196
|
+
var normalized = normalizeCnfStyle(state);
|
|
197
|
+
return normalizedCnfStyleHasTrue(normalized) ? state : undefined;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Write or clear row `w:cnfStyle`. Passing `undefined` removes the element.
|
|
201
|
+
* A supplied {@link NormalizedCnfStyle} is always written (including all-false).
|
|
202
|
+
*
|
|
203
|
+
* @private
|
|
204
|
+
*/
|
|
205
|
+
export function writeRowCnfStyle(trPr, state) {
|
|
206
|
+
if (state === undefined) {
|
|
207
|
+
if (trPr === undefined) {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
return writeTrChild(trPr, 'cnfStyle', undefined);
|
|
211
|
+
}
|
|
212
|
+
var existing = trPr !== undefined ? findWmlChild(trPr, 'cnfStyle') : undefined;
|
|
213
|
+
var normalized = normalizeCnfStyle(state);
|
|
214
|
+
return writeTrChild(trPr, 'cnfStyle', serializeCnfStyle(normalized, existing));
|
|
215
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { OpenXmlElement } from '../../core/xml/index';
|
|
2
|
+
/** VML main namespace (ECMA-376-4 VML). */
|
|
3
|
+
export declare const VML_NS = "urn:schemas-microsoft-com:vml";
|
|
4
|
+
/** Exact text watermark shapetype token (parse + dirty emit). */
|
|
5
|
+
export declare const TEXT_WATERMARK_TYPE = "#_x0000_t136";
|
|
6
|
+
/** Canonical picture watermark shapetype token (dirty emit). */
|
|
7
|
+
export declare const PICTURE_WATERMARK_TYPE = "#_x0000_t75";
|
|
8
|
+
/** Malformed but tolerated picture type (parse only; dirty normalizes to single `#`). */
|
|
9
|
+
export declare const PICTURE_WATERMARK_TYPE_DOUBLE_HASH = "##_x0000_t75";
|
|
10
|
+
/** Word DocIO / UI text watermark id prefix. */
|
|
11
|
+
export declare const TEXT_WATERMARK_ID_PREFIX = "PowerPlusWaterMarkObject";
|
|
12
|
+
/** Word DocIO / UI picture watermark id prefix. */
|
|
13
|
+
export declare const PICTURE_WATERMARK_ID_PREFIX = "WordPictureWatermark";
|
|
14
|
+
/**
|
|
15
|
+
* Parsed `v:shape/@style` declaration map (lower-cased keys, trimmed values).
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseVmlStyle(style: string | undefined): Map<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* Read an attribute from an element, accepting empty-namespace or a specific URI.
|
|
22
|
+
*
|
|
23
|
+
* VML attributes are commonly un-namespaced on the attribute node even when the
|
|
24
|
+
* element carries the VML namespace.
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
export declare function vmlAttribute(el: OpenXmlElement, localName: string): string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* True when `el` is a VML element with the given local name.
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
export declare function isVml(el: OpenXmlElement, localName: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Watermark positioning pattern shared by text (optional id) and picture
|
|
36
|
+
* (with negative z-index when z-index is present):
|
|
37
|
+
* absolute + horizontal/vertical center + both relatives margin.
|
|
38
|
+
*
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
export declare function hasWatermarkPositionPattern(style: ReadonlyMap<string, string>, options?: {
|
|
42
|
+
readonly requireNegativeZIndexWhenPresent?: boolean;
|
|
43
|
+
}): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* True when `type` is an accepted picture watermark shapetype token.
|
|
46
|
+
* Allows `#_x0000_t75` and `##_x0000_t75` only (not three or more leading `#`).
|
|
47
|
+
*
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
export declare function isAcceptedPictureWatermarkType(type: string | undefined): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Conservative text-watermark detector for a `v:shape` element.
|
|
53
|
+
*
|
|
54
|
+
* Requires `v:textpath`, type exactly `#_x0000_t136`, and either a
|
|
55
|
+
* `PowerPlusWaterMarkObject*` id or the watermark positioning pattern.
|
|
56
|
+
* Does **not** require `z-index:-1` (verified text fixtures omit a -1 token
|
|
57
|
+
* or use a large negative Word z-index).
|
|
58
|
+
*
|
|
59
|
+
* Host / `w:pict` checks are the caller's responsibility (header walk).
|
|
60
|
+
*
|
|
61
|
+
* @private
|
|
62
|
+
*/
|
|
63
|
+
export declare function isTextWatermarkShape(shape: OpenXmlElement): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Conservative picture-watermark detector for a `v:shape` element.
|
|
66
|
+
*
|
|
67
|
+
* Requires `v:imagedata`, type `#_x0000_t75` or `##_x0000_t75`, and either a
|
|
68
|
+
* `WordPictureWatermark*` id or the positioning pattern (negative z-index
|
|
69
|
+
* enforced when z-index is present). Type alone is insufficient (WordArt /
|
|
70
|
+
* ordinary pictures must not match).
|
|
71
|
+
*
|
|
72
|
+
* Host / `w:pict` checks are the caller's responsibility (header walk).
|
|
73
|
+
*
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
export declare function isPictureWatermarkShape(shape: OpenXmlElement): boolean;
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
var __values = (this && this.__values) || function (o) {
|
|
2
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
|
3
|
+
if (m) return m.call(o);
|
|
4
|
+
return {
|
|
5
|
+
next: function () {
|
|
6
|
+
if (o && i >= o.length) o = void 0;
|
|
7
|
+
return { value: o && o[i++], done: !o };
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Conservative watermark shape detectors (TASK-8061).
|
|
13
|
+
*
|
|
14
|
+
* Prefer false negatives over false positives. Same predicates feed parse,
|
|
15
|
+
* replace, and remove. Normative rules:
|
|
16
|
+
* `docs/requirements/watermark-basic.md` (Detection).
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import { elementChildren } from '../document/wml';
|
|
21
|
+
/** VML main namespace (ECMA-376-4 VML). */
|
|
22
|
+
export var VML_NS = 'urn:schemas-microsoft-com:vml';
|
|
23
|
+
/** Exact text watermark shapetype token (parse + dirty emit). */
|
|
24
|
+
export var TEXT_WATERMARK_TYPE = '#_x0000_t136';
|
|
25
|
+
/** Canonical picture watermark shapetype token (dirty emit). */
|
|
26
|
+
export var PICTURE_WATERMARK_TYPE = '#_x0000_t75';
|
|
27
|
+
/** Malformed but tolerated picture type (parse only; dirty normalizes to single `#`). */
|
|
28
|
+
export var PICTURE_WATERMARK_TYPE_DOUBLE_HASH = '##_x0000_t75';
|
|
29
|
+
/** Word DocIO / UI text watermark id prefix. */
|
|
30
|
+
export var TEXT_WATERMARK_ID_PREFIX = 'PowerPlusWaterMarkObject';
|
|
31
|
+
/** Word DocIO / UI picture watermark id prefix. */
|
|
32
|
+
export var PICTURE_WATERMARK_ID_PREFIX = 'WordPictureWatermark';
|
|
33
|
+
/**
|
|
34
|
+
* Parsed `v:shape/@style` declaration map (lower-cased keys, trimmed values).
|
|
35
|
+
*
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
export function parseVmlStyle(style) {
|
|
39
|
+
var e_1, _a;
|
|
40
|
+
var out = new Map();
|
|
41
|
+
if (style === undefined || style.length === 0) {
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
for (var _b = __values(style.split(';')), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
46
|
+
var part = _c.value;
|
|
47
|
+
var trimmed = part.trim();
|
|
48
|
+
if (trimmed.length === 0) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
var colon = trimmed.indexOf(':');
|
|
52
|
+
if (colon <= 0) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
var key = trimmed.slice(0, colon).trim().toLowerCase();
|
|
56
|
+
var value = trimmed.slice(colon + 1).trim();
|
|
57
|
+
if (key.length === 0) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
out.set(key, value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
64
|
+
finally {
|
|
65
|
+
try {
|
|
66
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
67
|
+
}
|
|
68
|
+
finally { if (e_1) throw e_1.error; }
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Read an attribute from an element, accepting empty-namespace or a specific URI.
|
|
74
|
+
*
|
|
75
|
+
* VML attributes are commonly un-namespaced on the attribute node even when the
|
|
76
|
+
* element carries the VML namespace.
|
|
77
|
+
*
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
export function vmlAttribute(el, localName) {
|
|
81
|
+
var found = el.attributes.find(function (a) { return a.localName === localName &&
|
|
82
|
+
(a.namespaceUri === '' || a.namespaceUri === VML_NS); });
|
|
83
|
+
return found == null ? undefined : found.value;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* True when `el` is a VML element with the given local name.
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
export function isVml(el, localName) {
|
|
90
|
+
return el.namespaceUri === VML_NS && el.localName === localName;
|
|
91
|
+
}
|
|
92
|
+
function hasChildLocal(el, localName) {
|
|
93
|
+
var e_2, _a;
|
|
94
|
+
try {
|
|
95
|
+
for (var _b = __values(elementChildren(el)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
96
|
+
var child = _c.value;
|
|
97
|
+
if (isVml(child, localName)) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
103
|
+
finally {
|
|
104
|
+
try {
|
|
105
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
106
|
+
}
|
|
107
|
+
finally { if (e_2) throw e_2.error; }
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Watermark positioning pattern shared by text (optional id) and picture
|
|
113
|
+
* (with negative z-index when z-index is present):
|
|
114
|
+
* absolute + horizontal/vertical center + both relatives margin.
|
|
115
|
+
*
|
|
116
|
+
* @private
|
|
117
|
+
*/
|
|
118
|
+
export function hasWatermarkPositionPattern(style, options) {
|
|
119
|
+
var __ts33_0, __ts33_1, __ts33_2, __ts33_3, __ts33_4;
|
|
120
|
+
if ((((__ts33_0 = style.get('position')), __ts33_0 != null ? __ts33_0 : '')).toLowerCase() !== 'absolute') {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
if ((((__ts33_1 = style.get('mso-position-horizontal')), __ts33_1 != null ? __ts33_1 : '')).toLowerCase() !== 'center') {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
if ((((__ts33_2 = style.get('mso-position-vertical')), __ts33_2 != null ? __ts33_2 : '')).toLowerCase() !== 'center') {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
if ((((__ts33_3 = style.get('mso-position-horizontal-relative')), __ts33_3 != null ? __ts33_3 : '')).toLowerCase() !== 'margin') {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
if ((((__ts33_4 = style.get('mso-position-vertical-relative')), __ts33_4 != null ? __ts33_4 : '')).toLowerCase() !== 'margin') {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
if ((options == null ? undefined : options.requireNegativeZIndexWhenPresent) === true) {
|
|
136
|
+
var zRaw = style.get('z-index');
|
|
137
|
+
if (zRaw !== undefined) {
|
|
138
|
+
var z = Number.parseFloat(zRaw);
|
|
139
|
+
if (!Number.isFinite(z) || z >= 0) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* True when `type` is an accepted picture watermark shapetype token.
|
|
148
|
+
* Allows `#_x0000_t75` and `##_x0000_t75` only (not three or more leading `#`).
|
|
149
|
+
*
|
|
150
|
+
* @private
|
|
151
|
+
*/
|
|
152
|
+
export function isAcceptedPictureWatermarkType(type) {
|
|
153
|
+
if (type === undefined) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
return type === PICTURE_WATERMARK_TYPE || type === PICTURE_WATERMARK_TYPE_DOUBLE_HASH;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Conservative text-watermark detector for a `v:shape` element.
|
|
160
|
+
*
|
|
161
|
+
* Requires `v:textpath`, type exactly `#_x0000_t136`, and either a
|
|
162
|
+
* `PowerPlusWaterMarkObject*` id or the watermark positioning pattern.
|
|
163
|
+
* Does **not** require `z-index:-1` (verified text fixtures omit a -1 token
|
|
164
|
+
* or use a large negative Word z-index).
|
|
165
|
+
*
|
|
166
|
+
* Host / `w:pict` checks are the caller's responsibility (header walk).
|
|
167
|
+
*
|
|
168
|
+
* @private
|
|
169
|
+
*/
|
|
170
|
+
export function isTextWatermarkShape(shape) {
|
|
171
|
+
var __ts33_5;
|
|
172
|
+
if (!isVml(shape, 'shape')) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
if (!hasChildLocal(shape, 'textpath')) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
var type = vmlAttribute(shape, 'type');
|
|
179
|
+
if (type !== TEXT_WATERMARK_TYPE) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
var id = ((__ts33_5 = vmlAttribute(shape, 'id')), __ts33_5 != null ? __ts33_5 : '');
|
|
183
|
+
if (id.startsWith(TEXT_WATERMARK_ID_PREFIX)) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
var style = parseVmlStyle(vmlAttribute(shape, 'style'));
|
|
187
|
+
return hasWatermarkPositionPattern(style);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Conservative picture-watermark detector for a `v:shape` element.
|
|
191
|
+
*
|
|
192
|
+
* Requires `v:imagedata`, type `#_x0000_t75` or `##_x0000_t75`, and either a
|
|
193
|
+
* `WordPictureWatermark*` id or the positioning pattern (negative z-index
|
|
194
|
+
* enforced when z-index is present). Type alone is insufficient (WordArt /
|
|
195
|
+
* ordinary pictures must not match).
|
|
196
|
+
*
|
|
197
|
+
* Host / `w:pict` checks are the caller's responsibility (header walk).
|
|
198
|
+
*
|
|
199
|
+
* @private
|
|
200
|
+
*/
|
|
201
|
+
export function isPictureWatermarkShape(shape) {
|
|
202
|
+
var __ts33_6;
|
|
203
|
+
if (!isVml(shape, 'shape')) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
if (!hasChildLocal(shape, 'imagedata')) {
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
var type = vmlAttribute(shape, 'type');
|
|
210
|
+
if (!isAcceptedPictureWatermarkType(type)) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
var id = ((__ts33_6 = vmlAttribute(shape, 'id')), __ts33_6 != null ? __ts33_6 : '');
|
|
214
|
+
if (id.startsWith(PICTURE_WATERMARK_ID_PREFIX)) {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
var style = parseVmlStyle(vmlAttribute(shape, 'style'));
|
|
218
|
+
return hasWatermarkPositionPattern(style, { requireNegativeZIndexWhenPresent: true });
|
|
219
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export { PICTURE_WATERMARK_ID_PREFIX, PICTURE_WATERMARK_TYPE, PICTURE_WATERMARK_TYPE_DOUBLE_HASH, TEXT_WATERMARK_ID_PREFIX, TEXT_WATERMARK_TYPE, hasWatermarkPositionPattern, isAcceptedPictureWatermarkType, isVml, parseVmlStyle, vmlAttribute, } from './detect';
|
|
2
|
+
export * from './logical-store';
|
|
3
|
+
export * from './model';
|
|
4
|
+
export * from './parse';
|
|
5
|
+
export * from './serialize';
|
|
6
|
+
import { isPictureWatermarkShape, isTextWatermarkShape } from './detect';
|
|
7
|
+
import { clearLogicalWatermark, logicalWatermarkOf } from './logical-store';
|
|
8
|
+
import { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType, PictureWatermarkOptions, SemitransparentState, TextWatermarkOptions, WatermarkShapeResidual } from './model';
|
|
9
|
+
export { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType, isPictureWatermarkShape, isTextWatermarkShape, clearLogicalWatermark, logicalWatermarkOf, };
|
|
10
|
+
export { PictureWatermarkOptions, SemitransparentState, TextWatermarkOptions, WatermarkShapeResidual, };
|
|
11
|
+
/**
|
|
12
|
+
* @private
|
|
13
|
+
* Test hook */
|
|
14
|
+
export declare function resetWatermarkFeatureForTests(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Register the watermark feature. Idempotent.
|
|
17
|
+
*
|
|
18
|
+
* Lazy header VML parse runs on first {@link WordDocument.watermark} get
|
|
19
|
+
* (TASK-8061). Dirty assignment marks the document so save materializes
|
|
20
|
+
* canonical watermark VML into scratch headers (TASK-8062). Remove/replace
|
|
21
|
+
* strips recognized watermark leaves, GCs unused header image relationships
|
|
22
|
+
* and unreferenced media, and never deletes header parts (TASK-8063). Picture
|
|
23
|
+
* media is applied via a package-level feature part after header multi-part
|
|
24
|
+
* writes.
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerWatermarkFeature(): void;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export { PICTURE_WATERMARK_ID_PREFIX, PICTURE_WATERMARK_TYPE, PICTURE_WATERMARK_TYPE_DOUBLE_HASH, TEXT_WATERMARK_ID_PREFIX, TEXT_WATERMARK_TYPE, hasWatermarkPositionPattern, isAcceptedPictureWatermarkType, isVml, parseVmlStyle, vmlAttribute, } from './detect';
|
|
2
|
+
export * from './logical-store';
|
|
3
|
+
export * from './model';
|
|
4
|
+
export * from './parse';
|
|
5
|
+
export * from './serialize';
|
|
6
|
+
/**
|
|
7
|
+
* Optional watermark feature module (text and picture).
|
|
8
|
+
*
|
|
9
|
+
* Public construction (TASK-8060), lazy header VML parse (TASK-8061), and
|
|
10
|
+
* dirty header rewrite on save (TASK-8062). Logical state is held in a module
|
|
11
|
+
* WeakMap so clean parse never mutates package parts.
|
|
12
|
+
*
|
|
13
|
+
* OOXML ownership: docs/ooxml-mapping/watermark.md. Requirement:
|
|
14
|
+
* docs/requirements/watermark-basic.md. Spec: docs/specs/watermark-basic.md.
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
import { WordDocument } from '../document/document';
|
|
19
|
+
import { featureId, registerFeature, registerFeatureMaterializeHandler, registerFeaturePackagePartHandler, } from '../../core/registry/index';
|
|
20
|
+
import { isPictureWatermarkShape, isTextWatermarkShape } from './detect';
|
|
21
|
+
import { clearLogicalWatermark, logicalWatermarkOf, setLogicalWatermark, } from './logical-store';
|
|
22
|
+
import { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType } from './model';
|
|
23
|
+
import { ensureParsedAndLogical, markWatermarkParseCompleted, resetWatermarkParseStateForTests, } from './parse';
|
|
24
|
+
import { loadWatermarkPackageParts, markWatermarkDirty, materializeWatermarks, resetWatermarkSerializeStateForTests, } from './serialize';
|
|
25
|
+
export { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType, isPictureWatermarkShape, isTextWatermarkShape, clearLogicalWatermark, logicalWatermarkOf, };
|
|
26
|
+
var WATERMARK = featureId('watermark');
|
|
27
|
+
var registered = false;
|
|
28
|
+
/**
|
|
29
|
+
* @private
|
|
30
|
+
* Test hook */
|
|
31
|
+
export function resetWatermarkFeatureForTests() {
|
|
32
|
+
registered = false;
|
|
33
|
+
resetWatermarkParseStateForTests();
|
|
34
|
+
resetWatermarkSerializeStateForTests();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Register the watermark feature. Idempotent.
|
|
38
|
+
*
|
|
39
|
+
* Lazy header VML parse runs on first {@link WordDocument.watermark} get
|
|
40
|
+
* (TASK-8061). Dirty assignment marks the document so save materializes
|
|
41
|
+
* canonical watermark VML into scratch headers (TASK-8062). Remove/replace
|
|
42
|
+
* strips recognized watermark leaves, GCs unused header image relationships
|
|
43
|
+
* and unreferenced media, and never deletes header parts (TASK-8063). Picture
|
|
44
|
+
* media is applied via a package-level feature part after header multi-part
|
|
45
|
+
* writes.
|
|
46
|
+
*
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
export function registerWatermarkFeature() {
|
|
50
|
+
if (registered) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
registered = true;
|
|
54
|
+
registerFeature({ id: WATERMARK });
|
|
55
|
+
registerFeatureMaterializeHandler({
|
|
56
|
+
featureId: WATERMARK,
|
|
57
|
+
materialize: function (document) {
|
|
58
|
+
materializeWatermarks(document);
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
registerFeaturePackagePartHandler({
|
|
62
|
+
featureId: WATERMARK,
|
|
63
|
+
loadParts: function (pkg) {
|
|
64
|
+
return loadWatermarkPackageParts(pkg);
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
Object.defineProperty(WordDocument.prototype, 'watermark', {
|
|
69
|
+
configurable: true,
|
|
70
|
+
enumerable: false,
|
|
71
|
+
get: function () {
|
|
72
|
+
var _this = this;
|
|
73
|
+
ensureParsedAndLogical(this, function () { return logicalWatermarkOf(_this); }, function (value) {
|
|
74
|
+
setLogicalWatermark(_this, value);
|
|
75
|
+
});
|
|
76
|
+
return logicalWatermarkOf(this);
|
|
77
|
+
},
|
|
78
|
+
set: function (value) {
|
|
79
|
+
// Author assignment wins over a later lazy parse ensure.
|
|
80
|
+
// Assigning `undefined` clears the logical watermark (replaces removeWatermark()).
|
|
81
|
+
markWatermarkParseCompleted(this);
|
|
82
|
+
if (value === undefined) {
|
|
83
|
+
clearLogicalWatermark(this);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
setLogicalWatermark(this, value);
|
|
87
|
+
}
|
|
88
|
+
markWatermarkDirty(this);
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
registerWatermarkFeature();
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logical watermark attachment store (document → watermark).
|
|
3
|
+
*
|
|
4
|
+
* Kept separate from `index.ts` and `serialize.ts` so materialize can read
|
|
5
|
+
* logical state without a circular import through the public barrel.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { WordDocument } from '../document/document';
|
|
10
|
+
import { Watermark } from './model';
|
|
11
|
+
/**
|
|
12
|
+
* Read the logical watermark attached to a document.
|
|
13
|
+
* Does not trigger lazy parse.
|
|
14
|
+
*
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
export declare function logicalWatermarkOf(document: WordDocument): Watermark | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Attach or clear the logical watermark for a document (no package I/O).
|
|
20
|
+
*
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
23
|
+
export declare function setLogicalWatermark(document: WordDocument, value: Watermark | undefined): void;
|
|
24
|
+
/**
|
|
25
|
+
* Clear logical watermark state for a single document.
|
|
26
|
+
*
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
export declare function clearLogicalWatermark(document: WordDocument): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Logical watermark attachment store (document → watermark). No package I/O. */
|
|
2
|
+
var documentWatermarks = new WeakMap();
|
|
3
|
+
/**
|
|
4
|
+
* Read the logical watermark attached to a document.
|
|
5
|
+
* Does not trigger lazy parse.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
8
|
+
*/
|
|
9
|
+
export function logicalWatermarkOf(document) {
|
|
10
|
+
return documentWatermarks.get(document);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Attach or clear the logical watermark for a document (no package I/O).
|
|
14
|
+
*
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
export function setLogicalWatermark(document, value) {
|
|
18
|
+
if (value === undefined) {
|
|
19
|
+
documentWatermarks.delete(document);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
documentWatermarks.set(document, value);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Clear logical watermark state for a single document.
|
|
26
|
+
*
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
export function clearLogicalWatermark(document) {
|
|
30
|
+
documentWatermarks.delete(document);
|
|
31
|
+
}
|