@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,829 @@
|
|
|
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
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
12
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
13
|
+
if (!m) return o;
|
|
14
|
+
var i = m.call(o), r, ar = [], e;
|
|
15
|
+
try {
|
|
16
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
17
|
+
}
|
|
18
|
+
catch (error) { e = { error: error }; }
|
|
19
|
+
finally {
|
|
20
|
+
try {
|
|
21
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
22
|
+
}
|
|
23
|
+
finally { if (e) throw e.error; }
|
|
24
|
+
}
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
var __spread = (this && this.__spread) || function () {
|
|
28
|
+
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
export * from './attached-template';
|
|
32
|
+
export * from './compat-settings';
|
|
33
|
+
export * from './document-background';
|
|
34
|
+
export * from './document-protection';
|
|
35
|
+
export * from './document-settings-facades';
|
|
36
|
+
export * from './document-settings-values';
|
|
37
|
+
export * from './footnote-properties';
|
|
38
|
+
export * from './settings-children';
|
|
39
|
+
export * from './web-settings';
|
|
40
|
+
export * from './zoom';
|
|
41
|
+
/**
|
|
42
|
+
* WordDocument Settings feature (`word/settings.xml`).
|
|
43
|
+
*
|
|
44
|
+
* Load builds a typed child graph (`SettingsPart` → modeled/opaque nodes);
|
|
45
|
+
* dirty serialize emits only from that graph (not a flat element bag dump).
|
|
46
|
+
*
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
49
|
+
import { DocxError } from '../../core/errors/docx-error';
|
|
50
|
+
import { elementChildren, isWml, wmlElement } from '../document/wml';
|
|
51
|
+
import { partName, resolveInternalTarget } from '../../core/opc/part-name';
|
|
52
|
+
import { officeDocumentPartName, relationshipsForPart } from '../../core/opc/package';
|
|
53
|
+
import { TargetMode } from '../../core/opc/relationships';
|
|
54
|
+
import { featureId, registerFeature, registerFeaturePartHandler, registerFeatureMaterializeHandler, } from '../../core/registry/index';
|
|
55
|
+
import { parseXml, serializeXml, WML_TRANSITIONAL_NAMESPACE } from '../../core/xml/index';
|
|
56
|
+
import { CompatSettings } from './compat-settings';
|
|
57
|
+
import { DocumentProtection } from './document-protection';
|
|
58
|
+
import { createBackground } from './document-background';
|
|
59
|
+
import { EndnoteProperties, FootnoteProperties, } from './footnote-properties';
|
|
60
|
+
import { findChildIndex, parseSettingsChild, replaceOrInsertChild, serializeSettingsChildren, SettingsAttachedTemplateChild, SettingsCompatChild, SettingsDefaultTabStopChild, SettingsDocumentProtectionChild, SettingsCharacterSpacingControlChild, SettingsEndnotePrChild, SettingsFootnotePrChild, SettingsOnOffChild, SettingsViewChild, SettingsZoomChild, } from './settings-children';
|
|
61
|
+
import { registerWebSettingsFeature, resetWebSettingsFeatureForTests, } from './web-settings';
|
|
62
|
+
import { ZoomSettings } from './zoom';
|
|
63
|
+
/**
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
/**
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
/**
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
import { bindDocumentSettingsFacades, registerDocumentSettingsFacades, } from './document-settings-facades';
|
|
76
|
+
var SETTINGS = featureId('settings');
|
|
77
|
+
/**
|
|
78
|
+
* @private
|
|
79
|
+
* Transitional settings relationship (ECMA-376-4 §9.2.3). */
|
|
80
|
+
export var SETTINGS_RELATIONSHIP_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings';
|
|
81
|
+
/**
|
|
82
|
+
* @private
|
|
83
|
+
* Strict settings relationship (ECMA-376-1 §11.3.3). */
|
|
84
|
+
export var STRICT_SETTINGS_RELATIONSHIP_TYPE = 'http://purl.oclc.org/ooxml/officeDocument/relationships/settings';
|
|
85
|
+
/**
|
|
86
|
+
* @private
|
|
87
|
+
* ECMA-376-1 §11.3.3 WordDocument Settings content type. */
|
|
88
|
+
export var SETTINGS_CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml';
|
|
89
|
+
/**
|
|
90
|
+
* @private
|
|
91
|
+
* Transitional attached-template relationship (ECMA-376-4 §14.12.22). */
|
|
92
|
+
export var ATTACHED_TEMPLATE_RELATIONSHIP_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate';
|
|
93
|
+
/**
|
|
94
|
+
* @private
|
|
95
|
+
* Strict attached-template relationship (ECMA-376-1 §11.4). */
|
|
96
|
+
export var STRICT_ATTACHED_TEMPLATE_RELATIONSHIP_TYPE = 'http://purl.oclc.org/ooxml/officeDocument/relationships/attachedTemplate';
|
|
97
|
+
var ATTACHED_TEMPLATE_RELATIONSHIP_TYPES = [
|
|
98
|
+
ATTACHED_TEMPLATE_RELATIONSHIP_TYPE,
|
|
99
|
+
STRICT_ATTACHED_TEMPLATE_RELATIONSHIP_TYPE,
|
|
100
|
+
];
|
|
101
|
+
/**
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
export var SETTINGS_PART_NAME = partName('/word/settings.xml');
|
|
105
|
+
var utf8Decoder = new TextDecoder('utf-8');
|
|
106
|
+
var utf8 = new TextEncoder();
|
|
107
|
+
function resolveSettingsPartName(pkg) {
|
|
108
|
+
var e_1, _a;
|
|
109
|
+
var main = officeDocumentPartName(pkg);
|
|
110
|
+
try {
|
|
111
|
+
for (var _b = __values(relationshipsForPart(pkg, main).items), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
112
|
+
var rel = _c.value;
|
|
113
|
+
if (rel.type !== SETTINGS_RELATIONSHIP_TYPE &&
|
|
114
|
+
rel.type !== STRICT_SETTINGS_RELATIONSHIP_TYPE) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
return resolveInternalTarget(rel.target, main);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
121
|
+
finally {
|
|
122
|
+
try {
|
|
123
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
124
|
+
}
|
|
125
|
+
finally { if (e_1) throw e_1.error; }
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
function resolveAttachedTemplateTarget(pkg, settingsPartName, relationshipId) {
|
|
130
|
+
var e_2, _a;
|
|
131
|
+
try {
|
|
132
|
+
for (var _b = __values(relationshipsForPart(pkg, settingsPartName).items), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
133
|
+
var rel = _c.value;
|
|
134
|
+
if (rel.id !== relationshipId) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (ATTACHED_TEMPLATE_RELATIONSHIP_TYPES.indexOf(rel.type) === -1) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
if (rel.targetMode === TargetMode.External) {
|
|
141
|
+
return rel.target;
|
|
142
|
+
}
|
|
143
|
+
return resolveInternalTarget(rel.target, settingsPartName);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
147
|
+
finally {
|
|
148
|
+
try {
|
|
149
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
150
|
+
}
|
|
151
|
+
finally { if (e_2) throw e_2.error; }
|
|
152
|
+
}
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* In-memory WordDocument Settings part (`word/settings.xml`).
|
|
157
|
+
*
|
|
158
|
+
* Children are a typed ordered graph: modeled OnOff / protection / attachedTemplate /
|
|
159
|
+
* compat nodes plus opaque shells for the rest of `CT_Settings`.
|
|
160
|
+
*
|
|
161
|
+
* @private
|
|
162
|
+
*/
|
|
163
|
+
var SettingsPart = /** @class */ (function () {
|
|
164
|
+
/**
|
|
165
|
+
* @private
|
|
166
|
+
*/
|
|
167
|
+
function SettingsPart(rootAttributes, rootNamespaceDeclarations, children, dirty) {
|
|
168
|
+
this.rootAttributes = rootAttributes;
|
|
169
|
+
this.rootNamespaceDeclarations = rootNamespaceDeclarations;
|
|
170
|
+
this.children = children;
|
|
171
|
+
this.dirty = dirty;
|
|
172
|
+
}
|
|
173
|
+
SettingsPart.prototype.findOnOff = function (localName) {
|
|
174
|
+
var index = findChildIndex(this.children, localName);
|
|
175
|
+
if (index < 0) {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
var child = this.children[index];
|
|
179
|
+
return child instanceof SettingsOnOffChild ? child : undefined;
|
|
180
|
+
};
|
|
181
|
+
SettingsPart.prototype.setOnOff = function (localName, value) {
|
|
182
|
+
replaceOrInsertChild(this.children, localName, value === undefined ? undefined : new SettingsOnOffChild(localName, value));
|
|
183
|
+
this.dirty = true;
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* `w:evenAndOddHeaders` as a boolean, or `undefined` when the element is absent.
|
|
187
|
+
*
|
|
188
|
+
* @public
|
|
189
|
+
*/
|
|
190
|
+
SettingsPart.prototype.evenAndOddHeaders = function () {
|
|
191
|
+
var child = this.findOnOff('evenAndOddHeaders');
|
|
192
|
+
return child === undefined ? undefined : child.read();
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* Set or clear `w:evenAndOddHeaders`. `undefined` removes the element.
|
|
196
|
+
*
|
|
197
|
+
* @public
|
|
198
|
+
*/
|
|
199
|
+
SettingsPart.prototype.setEvenAndOddHeaders = function (value) {
|
|
200
|
+
this.setOnOff('evenAndOddHeaders', value);
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* `w:trackRevisions` as a boolean, or `undefined` when the element is absent.
|
|
204
|
+
*
|
|
205
|
+
* @public
|
|
206
|
+
*/
|
|
207
|
+
SettingsPart.prototype.trackRevisions = function () {
|
|
208
|
+
var child = this.findOnOff('trackRevisions');
|
|
209
|
+
return child === undefined ? undefined : child.read();
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Set or clear `w:trackRevisions`. `undefined` removes the element.
|
|
213
|
+
*
|
|
214
|
+
* @public
|
|
215
|
+
*/
|
|
216
|
+
SettingsPart.prototype.setTrackRevisions = function (value) {
|
|
217
|
+
this.setOnOff('trackRevisions', value);
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Modeled `w:documentProtection` flags snapshot. Password/hash attributes are omitted.
|
|
221
|
+
*
|
|
222
|
+
* Prefer {@link documentProtectionNode} when the typed class is needed.
|
|
223
|
+
*
|
|
224
|
+
* @public
|
|
225
|
+
*/
|
|
226
|
+
SettingsPart.prototype.documentProtection = function () {
|
|
227
|
+
var node = this.documentProtectionNode();
|
|
228
|
+
return node === undefined ? undefined : node.flags();
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* First-class `w:documentProtection` node, or `undefined` when absent.
|
|
232
|
+
*
|
|
233
|
+
* @public
|
|
234
|
+
*/
|
|
235
|
+
SettingsPart.prototype.documentProtectionNode = function () {
|
|
236
|
+
var index = findChildIndex(this.children, 'documentProtection');
|
|
237
|
+
if (index < 0) {
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
var child = this.children[index];
|
|
241
|
+
return child instanceof SettingsDocumentProtectionChild ? child.protection() : undefined;
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Replace or remove `w:documentProtection`. Clearing the element also drops preserved
|
|
245
|
+
* password/hash attributes. Flag-only updates keep leftover attributes on the existing node.
|
|
246
|
+
*
|
|
247
|
+
* @public
|
|
248
|
+
*/
|
|
249
|
+
SettingsPart.prototype.setDocumentProtection = function (flags) {
|
|
250
|
+
if (flags === undefined) {
|
|
251
|
+
replaceOrInsertChild(this.children, 'documentProtection', undefined);
|
|
252
|
+
this.dirty = true;
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
var existing = this.documentProtectionNode();
|
|
256
|
+
if (existing !== undefined) {
|
|
257
|
+
existing.applyFlags(flags);
|
|
258
|
+
this.dirty = true;
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
replaceOrInsertChild(this.children, 'documentProtection', new SettingsDocumentProtectionChild(DocumentProtection.fromFlags(flags)));
|
|
262
|
+
this.dirty = true;
|
|
263
|
+
};
|
|
264
|
+
/**
|
|
265
|
+
* Whether `w:attachedTemplate` is present in settings.
|
|
266
|
+
*
|
|
267
|
+
* @public
|
|
268
|
+
*/
|
|
269
|
+
SettingsPart.prototype.hasAttachedTemplate = function () {
|
|
270
|
+
return this.attachedTemplate() !== undefined;
|
|
271
|
+
};
|
|
272
|
+
/**
|
|
273
|
+
* First-class `w:attachedTemplate` node, or `undefined` when absent.
|
|
274
|
+
*
|
|
275
|
+
* @public
|
|
276
|
+
*/
|
|
277
|
+
SettingsPart.prototype.attachedTemplate = function () {
|
|
278
|
+
var index = findChildIndex(this.children, 'attachedTemplate');
|
|
279
|
+
if (index < 0) {
|
|
280
|
+
return undefined;
|
|
281
|
+
}
|
|
282
|
+
var child = this.children[index];
|
|
283
|
+
return child instanceof SettingsAttachedTemplateChild ? child.template() : undefined;
|
|
284
|
+
};
|
|
285
|
+
/**
|
|
286
|
+
* `r:id` on `w:attachedTemplate`, or `undefined` when absent.
|
|
287
|
+
*
|
|
288
|
+
* @public
|
|
289
|
+
*/
|
|
290
|
+
SettingsPart.prototype.attachedTemplateRelationshipId = function () {
|
|
291
|
+
var template = this.attachedTemplate();
|
|
292
|
+
return template === undefined ? undefined : template.id();
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* First-class `w:compat` node, or `undefined` when absent.
|
|
296
|
+
*
|
|
297
|
+
* Mutations on the returned node (for example {@link CompatSettings.setNoColumnBalance})
|
|
298
|
+
* mark the settings part dirty.
|
|
299
|
+
*
|
|
300
|
+
* @public
|
|
301
|
+
*/
|
|
302
|
+
SettingsPart.prototype.compat = function () {
|
|
303
|
+
var _this = this;
|
|
304
|
+
var index = findChildIndex(this.children, 'compat');
|
|
305
|
+
if (index < 0) {
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
308
|
+
var child = this.children[index];
|
|
309
|
+
if (!(child instanceof SettingsCompatChild)) {
|
|
310
|
+
return undefined;
|
|
311
|
+
}
|
|
312
|
+
var compat = child.compat();
|
|
313
|
+
compat.bindDirty(function () {
|
|
314
|
+
_this.dirty = true;
|
|
315
|
+
});
|
|
316
|
+
return compat;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* Ensure a `w:compat` node exists and return it.
|
|
320
|
+
*
|
|
321
|
+
* @private
|
|
322
|
+
*/
|
|
323
|
+
SettingsPart.prototype.ensureCompat = function () {
|
|
324
|
+
var _this = this;
|
|
325
|
+
var existing = this.compat();
|
|
326
|
+
if (existing !== undefined) {
|
|
327
|
+
return existing;
|
|
328
|
+
}
|
|
329
|
+
var created = CompatSettings.createEmpty(function () {
|
|
330
|
+
_this.dirty = true;
|
|
331
|
+
});
|
|
332
|
+
replaceOrInsertChild(this.children, 'compat', new SettingsCompatChild(created));
|
|
333
|
+
this.dirty = true;
|
|
334
|
+
return created;
|
|
335
|
+
};
|
|
336
|
+
/**
|
|
337
|
+
* Names from `w:compat/w:compatSetting/@w:name`, in document order.
|
|
338
|
+
*
|
|
339
|
+
* @public
|
|
340
|
+
*/
|
|
341
|
+
SettingsPart.prototype.compatSettingNames = function () {
|
|
342
|
+
var compat = this.compat();
|
|
343
|
+
return compat === undefined ? [] : compat.settingNames();
|
|
344
|
+
};
|
|
345
|
+
/**
|
|
346
|
+
* Count of `w:compatSetting` children under `w:compat`.
|
|
347
|
+
*
|
|
348
|
+
* @public
|
|
349
|
+
*/
|
|
350
|
+
SettingsPart.prototype.compatSettingCount = function () {
|
|
351
|
+
var compat = this.compat();
|
|
352
|
+
return compat === undefined ? 0 : compat.settingCount();
|
|
353
|
+
};
|
|
354
|
+
/**
|
|
355
|
+
* `w:displayBackgroundShape` as a boolean, or `undefined` when the element is absent.
|
|
356
|
+
*
|
|
357
|
+
* @public
|
|
358
|
+
*/
|
|
359
|
+
SettingsPart.prototype.displayBackgroundShape = function () {
|
|
360
|
+
var child = this.findOnOff('displayBackgroundShape');
|
|
361
|
+
return child === undefined ? undefined : child.read();
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* Set or clear `w:displayBackgroundShape`. `undefined` removes the element.
|
|
365
|
+
*
|
|
366
|
+
* @private
|
|
367
|
+
*/
|
|
368
|
+
SettingsPart.prototype.setDisplayBackgroundShape = function (value) {
|
|
369
|
+
this.setOnOff('displayBackgroundShape', value);
|
|
370
|
+
};
|
|
371
|
+
// ── View ────────────────────────────────────────────────────────────────────
|
|
372
|
+
/**
|
|
373
|
+
* First-class `w:view` child, or `undefined` when absent.
|
|
374
|
+
*
|
|
375
|
+
* @private
|
|
376
|
+
*/
|
|
377
|
+
SettingsPart.prototype.view = function () {
|
|
378
|
+
var index = findChildIndex(this.children, 'view');
|
|
379
|
+
if (index < 0) {
|
|
380
|
+
return undefined;
|
|
381
|
+
}
|
|
382
|
+
var child = this.children[index];
|
|
383
|
+
return child instanceof SettingsViewChild ? child : undefined;
|
|
384
|
+
};
|
|
385
|
+
/**
|
|
386
|
+
* Set or clear `w:view`. `undefined` removes the element.
|
|
387
|
+
*
|
|
388
|
+
* Accepts a known {@link DocumentViewType}, wire string, or modeled child.
|
|
389
|
+
*
|
|
390
|
+
* @private
|
|
391
|
+
*/
|
|
392
|
+
SettingsPart.prototype.setView = function (value) {
|
|
393
|
+
if (value === undefined) {
|
|
394
|
+
replaceOrInsertChild(this.children, 'view', undefined);
|
|
395
|
+
this.dirty = true;
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
if (value instanceof SettingsViewChild) {
|
|
399
|
+
replaceOrInsertChild(this.children, 'view', value);
|
|
400
|
+
this.dirty = true;
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
var wire = typeof value === 'string' ? value : value;
|
|
404
|
+
replaceOrInsertChild(this.children, 'view', new SettingsViewChild(wire));
|
|
405
|
+
this.dirty = true;
|
|
406
|
+
};
|
|
407
|
+
// ── Zoom ────────────────────────────────────────────────────────────────────
|
|
408
|
+
/**
|
|
409
|
+
* First-class `w:zoom` node, or `undefined` when absent.
|
|
410
|
+
*
|
|
411
|
+
* @public
|
|
412
|
+
*/
|
|
413
|
+
SettingsPart.prototype.zoom = function () {
|
|
414
|
+
var index = findChildIndex(this.children, 'zoom');
|
|
415
|
+
if (index < 0)
|
|
416
|
+
return undefined;
|
|
417
|
+
var child = this.children[index];
|
|
418
|
+
return child instanceof SettingsZoomChild ? child.zoom() : undefined;
|
|
419
|
+
};
|
|
420
|
+
/**
|
|
421
|
+
* Set `w:zoom` from a {@link ZoomSettings} instance, or remove it when `undefined`.
|
|
422
|
+
*
|
|
423
|
+
* @public
|
|
424
|
+
*/
|
|
425
|
+
SettingsPart.prototype.setZoom = function (value) {
|
|
426
|
+
replaceOrInsertChild(this.children, 'zoom', value === undefined ? undefined : new SettingsZoomChild(value));
|
|
427
|
+
this.dirty = true;
|
|
428
|
+
};
|
|
429
|
+
// ── Footnote / endnote properties (document-level) ──────────────────────────
|
|
430
|
+
/**
|
|
431
|
+
* First-class `w:footnotePr` node, or `undefined` when absent.
|
|
432
|
+
*
|
|
433
|
+
* Mutations on the returned node mark the settings part dirty.
|
|
434
|
+
*
|
|
435
|
+
* @public
|
|
436
|
+
*/
|
|
437
|
+
SettingsPart.prototype.footnoteProperties = function () {
|
|
438
|
+
var _this = this;
|
|
439
|
+
var index = findChildIndex(this.children, 'footnotePr');
|
|
440
|
+
if (index < 0) {
|
|
441
|
+
return undefined;
|
|
442
|
+
}
|
|
443
|
+
var child = this.children[index];
|
|
444
|
+
if (!(child instanceof SettingsFootnotePrChild)) {
|
|
445
|
+
return undefined;
|
|
446
|
+
}
|
|
447
|
+
var props = child.props();
|
|
448
|
+
props.bindDirty(function () {
|
|
449
|
+
_this.dirty = true;
|
|
450
|
+
});
|
|
451
|
+
return props;
|
|
452
|
+
};
|
|
453
|
+
/**
|
|
454
|
+
* Ensure a `w:footnotePr` node exists and return it.
|
|
455
|
+
*
|
|
456
|
+
* @public
|
|
457
|
+
*/
|
|
458
|
+
SettingsPart.prototype.ensureFootnoteProperties = function () {
|
|
459
|
+
var _this = this;
|
|
460
|
+
var existing = this.footnoteProperties();
|
|
461
|
+
if (existing !== undefined) {
|
|
462
|
+
return existing;
|
|
463
|
+
}
|
|
464
|
+
var props = FootnoteProperties.create();
|
|
465
|
+
props.bindDirty(function () {
|
|
466
|
+
_this.dirty = true;
|
|
467
|
+
});
|
|
468
|
+
replaceOrInsertChild(this.children, 'footnotePr', new SettingsFootnotePrChild(props));
|
|
469
|
+
this.dirty = true;
|
|
470
|
+
return props;
|
|
471
|
+
};
|
|
472
|
+
/**
|
|
473
|
+
* Replace or clear `w:footnotePr`. `undefined` removes the element.
|
|
474
|
+
*
|
|
475
|
+
* @public
|
|
476
|
+
*/
|
|
477
|
+
SettingsPart.prototype.setFootnoteProperties = function (value) {
|
|
478
|
+
var _this = this;
|
|
479
|
+
if (value === undefined) {
|
|
480
|
+
replaceOrInsertChild(this.children, 'footnotePr', undefined);
|
|
481
|
+
this.dirty = true;
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
value.bindDirty(function () {
|
|
485
|
+
_this.dirty = true;
|
|
486
|
+
});
|
|
487
|
+
replaceOrInsertChild(this.children, 'footnotePr', new SettingsFootnotePrChild(value));
|
|
488
|
+
this.dirty = true;
|
|
489
|
+
};
|
|
490
|
+
/**
|
|
491
|
+
* First-class `w:endnotePr` node, or `undefined` when absent.
|
|
492
|
+
*
|
|
493
|
+
* Mutations on the returned node mark the settings part dirty.
|
|
494
|
+
*
|
|
495
|
+
* @public
|
|
496
|
+
*/
|
|
497
|
+
SettingsPart.prototype.endnoteProperties = function () {
|
|
498
|
+
var _this = this;
|
|
499
|
+
var index = findChildIndex(this.children, 'endnotePr');
|
|
500
|
+
if (index < 0) {
|
|
501
|
+
return undefined;
|
|
502
|
+
}
|
|
503
|
+
var child = this.children[index];
|
|
504
|
+
if (!(child instanceof SettingsEndnotePrChild)) {
|
|
505
|
+
return undefined;
|
|
506
|
+
}
|
|
507
|
+
var props = child.props();
|
|
508
|
+
props.bindDirty(function () {
|
|
509
|
+
_this.dirty = true;
|
|
510
|
+
});
|
|
511
|
+
return props;
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* Ensure a `w:endnotePr` node exists and return it.
|
|
515
|
+
*
|
|
516
|
+
* @public
|
|
517
|
+
*/
|
|
518
|
+
SettingsPart.prototype.ensureEndnoteProperties = function () {
|
|
519
|
+
var _this = this;
|
|
520
|
+
var existing = this.endnoteProperties();
|
|
521
|
+
if (existing !== undefined) {
|
|
522
|
+
return existing;
|
|
523
|
+
}
|
|
524
|
+
var props = EndnoteProperties.create();
|
|
525
|
+
props.bindDirty(function () {
|
|
526
|
+
_this.dirty = true;
|
|
527
|
+
});
|
|
528
|
+
replaceOrInsertChild(this.children, 'endnotePr', new SettingsEndnotePrChild(props));
|
|
529
|
+
this.dirty = true;
|
|
530
|
+
return props;
|
|
531
|
+
};
|
|
532
|
+
/**
|
|
533
|
+
* Replace or clear `w:endnotePr`. `undefined` removes the element.
|
|
534
|
+
*
|
|
535
|
+
* @public
|
|
536
|
+
*/
|
|
537
|
+
SettingsPart.prototype.setEndnoteProperties = function (value) {
|
|
538
|
+
var _this = this;
|
|
539
|
+
if (value === undefined) {
|
|
540
|
+
replaceOrInsertChild(this.children, 'endnotePr', undefined);
|
|
541
|
+
this.dirty = true;
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
544
|
+
value.bindDirty(function () {
|
|
545
|
+
_this.dirty = true;
|
|
546
|
+
});
|
|
547
|
+
replaceOrInsertChild(this.children, 'endnotePr', new SettingsEndnotePrChild(value));
|
|
548
|
+
this.dirty = true;
|
|
549
|
+
};
|
|
550
|
+
// ── Default tab stop ────────────────────────────────────────────────────────
|
|
551
|
+
/**
|
|
552
|
+
* `w:defaultTabStop/@w:val` in plain points, or `undefined` when the element is absent.
|
|
553
|
+
* Wire unit is twips (`ST_TwipsMeasure`); conversion is at the parse/serialize boundary.
|
|
554
|
+
*
|
|
555
|
+
* The default value in Word is half an inch (`720` twips → `36` points).
|
|
556
|
+
*
|
|
557
|
+
* @public
|
|
558
|
+
*/
|
|
559
|
+
SettingsPart.prototype.defaultTabStop = function () {
|
|
560
|
+
var index = findChildIndex(this.children, 'defaultTabStop');
|
|
561
|
+
if (index < 0)
|
|
562
|
+
return undefined;
|
|
563
|
+
var child = this.children[index];
|
|
564
|
+
return child instanceof SettingsDefaultTabStopChild ? child.read() : undefined;
|
|
565
|
+
};
|
|
566
|
+
/**
|
|
567
|
+
* Set or clear `w:defaultTabStop`. `undefined` removes the element.
|
|
568
|
+
*
|
|
569
|
+
* @param value - Plain points (e.g. `36` = 0.5 inch). Serialized as twips on the wire.
|
|
570
|
+
*
|
|
571
|
+
* @public
|
|
572
|
+
*/
|
|
573
|
+
SettingsPart.prototype.setDefaultTabStop = function (value) {
|
|
574
|
+
replaceOrInsertChild(this.children, 'defaultTabStop', value === undefined ? undefined : new SettingsDefaultTabStopChild(value));
|
|
575
|
+
this.dirty = true;
|
|
576
|
+
};
|
|
577
|
+
// ── Character spacing control ───────────────────────────────────────────────
|
|
578
|
+
/**
|
|
579
|
+
* `w:characterSpacingControl/@w:val`, or `undefined` when the element is absent.
|
|
580
|
+
*
|
|
581
|
+
* @public
|
|
582
|
+
*/
|
|
583
|
+
SettingsPart.prototype.characterSpacingControl = function () {
|
|
584
|
+
var index = findChildIndex(this.children, 'characterSpacingControl');
|
|
585
|
+
if (index < 0)
|
|
586
|
+
return undefined;
|
|
587
|
+
var child = this.children[index];
|
|
588
|
+
return child instanceof SettingsCharacterSpacingControlChild ? child.read() : undefined;
|
|
589
|
+
};
|
|
590
|
+
/**
|
|
591
|
+
* Set or clear `w:characterSpacingControl`. `undefined` removes the element.
|
|
592
|
+
*
|
|
593
|
+
* @public
|
|
594
|
+
*/
|
|
595
|
+
SettingsPart.prototype.setCharacterSpacingControl = function (value) {
|
|
596
|
+
replaceOrInsertChild(this.children, 'characterSpacingControl', value === undefined ? undefined : new SettingsCharacterSpacingControlChild(value));
|
|
597
|
+
this.dirty = true;
|
|
598
|
+
};
|
|
599
|
+
// ── compat convenience ──────────────────────────────────────────────────────
|
|
600
|
+
/**
|
|
601
|
+
* `compatibilityMode` from `w:compat/w:compatSetting[@w:name='compatibilityMode']/@w:val`.
|
|
602
|
+
*
|
|
603
|
+
* Common values: `"15"` = Word 2013+, `"14"` = Word 2010, `"12"` = Word 2007.
|
|
604
|
+
* Returns `undefined` when the `w:compat` element or the named setting is absent.
|
|
605
|
+
*
|
|
606
|
+
* @public
|
|
607
|
+
*/
|
|
608
|
+
SettingsPart.prototype.compatibilityMode = function () {
|
|
609
|
+
var compat = this.compat();
|
|
610
|
+
return compat === undefined ? undefined : compat.compatibilityMode();
|
|
611
|
+
};
|
|
612
|
+
/**
|
|
613
|
+
* Set Word `compatibilityMode` on `w:compat`, creating the compat block when needed.
|
|
614
|
+
*
|
|
615
|
+
* @param value Wire token or {@link CompatibilityMode}.
|
|
616
|
+
* @private
|
|
617
|
+
*/
|
|
618
|
+
SettingsPart.prototype.setCompatibilityMode = function (value) {
|
|
619
|
+
this.ensureCompat().setCompatibilityMode(value);
|
|
620
|
+
this.dirty = true;
|
|
621
|
+
};
|
|
622
|
+
/**
|
|
623
|
+
* `w:compat/w:noColumnBalance` (`CT_OnOff`) — do not balance multi-column section
|
|
624
|
+
* content. See {@link CompatSettings.noColumnBalance}.
|
|
625
|
+
*
|
|
626
|
+
* Returns `undefined` when `w:compat` or the element is absent (Word default:
|
|
627
|
+
* balance columns). Layout engines are out of scope for this library.
|
|
628
|
+
*
|
|
629
|
+
* @private
|
|
630
|
+
*/
|
|
631
|
+
SettingsPart.prototype.noColumnBalance = function () {
|
|
632
|
+
var compat = this.compat();
|
|
633
|
+
return compat === undefined ? undefined : compat.noColumnBalance();
|
|
634
|
+
};
|
|
635
|
+
/**
|
|
636
|
+
* Set or clear `w:compat/w:noColumnBalance`. Creates `w:compat` when needed.
|
|
637
|
+
* Pass `undefined` to remove the element. Marks the settings part dirty.
|
|
638
|
+
*
|
|
639
|
+
* @private
|
|
640
|
+
*/
|
|
641
|
+
SettingsPart.prototype.setNoColumnBalance = function (value) {
|
|
642
|
+
if (value === undefined) {
|
|
643
|
+
var compat = this.compat();
|
|
644
|
+
if (compat === undefined) {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
compat.setNoColumnBalance(undefined);
|
|
648
|
+
this.dirty = true;
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
this.ensureCompat().setNoColumnBalance(value);
|
|
652
|
+
this.dirty = true;
|
|
653
|
+
};
|
|
654
|
+
/**
|
|
655
|
+
* @private
|
|
656
|
+
*/
|
|
657
|
+
SettingsPart.prototype.isDirty = function () {
|
|
658
|
+
return this.dirty;
|
|
659
|
+
};
|
|
660
|
+
/**
|
|
661
|
+
* @private
|
|
662
|
+
*/
|
|
663
|
+
SettingsPart.prototype.serialize = function () {
|
|
664
|
+
var root = wmlElement('settings', {
|
|
665
|
+
attributes: this.rootAttributes,
|
|
666
|
+
namespaceDeclarations: this.rootNamespaceDeclarations.length > 0
|
|
667
|
+
? this.rootNamespaceDeclarations
|
|
668
|
+
: [{ prefix: 'w', namespaceUri: WML_TRANSITIONAL_NAMESPACE }],
|
|
669
|
+
children: serializeSettingsChildren(this.children),
|
|
670
|
+
});
|
|
671
|
+
return utf8.encode(serializeXml(root));
|
|
672
|
+
};
|
|
673
|
+
return SettingsPart;
|
|
674
|
+
}());
|
|
675
|
+
export { SettingsPart };
|
|
676
|
+
function loadSettingsPart(part) {
|
|
677
|
+
if (part === undefined) {
|
|
678
|
+
// Absent settings part (WordDocument.create scaffold, or package without
|
|
679
|
+
// settings.xml): attach Word-2013 defaults and mark dirty so the next save
|
|
680
|
+
// always emits settings.xml (TASK-8026 / settings-preserve-basic).
|
|
681
|
+
return createDefaultSettingsPart();
|
|
682
|
+
}
|
|
683
|
+
var root = parseXml(utf8Decoder.decode(part.data));
|
|
684
|
+
if (!isWml(root, 'settings')) {
|
|
685
|
+
return new SettingsPart([], [], [], false);
|
|
686
|
+
}
|
|
687
|
+
var children = elementChildren(root).map(function (child) { return parseSettingsChild(child); });
|
|
688
|
+
return new SettingsPart(root.attributes, root.namespaceDeclarations, children, false);
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Build the canonical default `CT_Settings` children that Microsoft Word emits
|
|
692
|
+
* for a new document containing only a "Hello World" paragraph.
|
|
693
|
+
*
|
|
694
|
+
* - `w:zoom val="none" percent="100"`
|
|
695
|
+
* - `w:defaultTabStop val="720"` (0.5 inch / 36 points; stored as points, wire twips)
|
|
696
|
+
* - `w:characterSpacingControl val="doNotCompress"`
|
|
697
|
+
* - `w:compat` with five Word-2013 compat settings
|
|
698
|
+
* - `w:clrSchemeMapping` (empty element)
|
|
699
|
+
*/
|
|
700
|
+
function buildDefaultSettingsChildren() {
|
|
701
|
+
return __spread([
|
|
702
|
+
new SettingsZoomChild(ZoomSettings.create(100, 'none')),
|
|
703
|
+
new SettingsDefaultTabStopChild(36),
|
|
704
|
+
new SettingsCharacterSpacingControlChild('doNotCompress'),
|
|
705
|
+
new SettingsCompatChild(CompatSettings.createDefault())
|
|
706
|
+
], elementChildren(parseXml('<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:clrSchemeMapping/></w:settings>')).map(function (child) { return parseSettingsChild(child); }));
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Creates a new {@link SettingsPart} pre-populated with the canonical Word-2013
|
|
710
|
+
* default settings and marked **dirty** so `WordDocument.saveSync` always writes
|
|
711
|
+
* `settings.xml` — even when no further mutation is made.
|
|
712
|
+
*
|
|
713
|
+
* Emitted children (matching Microsoft Word for a minimal new document):
|
|
714
|
+
* - `w:zoom val="none" percent="100"`
|
|
715
|
+
* - `w:defaultTabStop val="720"` (wire twips; DOM value is `36` points)
|
|
716
|
+
* - `w:characterSpacingControl val="doNotCompress"`
|
|
717
|
+
* - `w:compat` with five Word-2013 compat settings
|
|
718
|
+
* - `w:clrSchemeMapping`
|
|
719
|
+
*
|
|
720
|
+
* @private
|
|
721
|
+
*/
|
|
722
|
+
export function createDefaultSettingsPart() {
|
|
723
|
+
return new SettingsPart([], [], buildDefaultSettingsChildren(), true);
|
|
724
|
+
}
|
|
725
|
+
var registered = false;
|
|
726
|
+
/**
|
|
727
|
+
* @private
|
|
728
|
+
* Test hook */
|
|
729
|
+
export function resetSettingsFeatureForTests() {
|
|
730
|
+
registered = false;
|
|
731
|
+
resetWebSettingsFeatureForTests();
|
|
732
|
+
}
|
|
733
|
+
/**
|
|
734
|
+
* @private
|
|
735
|
+
* Register the document-settings package-part handler. Idempotent. */
|
|
736
|
+
export function registerSettingsFeature() {
|
|
737
|
+
if (registered) {
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
740
|
+
registered = true;
|
|
741
|
+
registerWebSettingsFeature();
|
|
742
|
+
registerFeature({ id: SETTINGS });
|
|
743
|
+
registerFeaturePartHandler({
|
|
744
|
+
featureId: SETTINGS,
|
|
745
|
+
relationshipTypes: [SETTINGS_RELATIONSHIP_TYPE, STRICT_SETTINGS_RELATIONSHIP_TYPE],
|
|
746
|
+
defaultRelativeTarget: 'settings.xml',
|
|
747
|
+
partName: SETTINGS_PART_NAME,
|
|
748
|
+
contentType: SETTINGS_CONTENT_TYPE,
|
|
749
|
+
loadPart: function (part, ctx) {
|
|
750
|
+
void ctx;
|
|
751
|
+
return loadSettingsPart(part);
|
|
752
|
+
},
|
|
753
|
+
});
|
|
754
|
+
// Materialize handler: ensure a default settings part is attached before every
|
|
755
|
+
// save — even when the caller never explicitly invoked `settingsFor()`.
|
|
756
|
+
// This guarantees settings.xml is always emitted (OOXML conformance requirement).
|
|
757
|
+
registerFeatureMaterializeHandler({
|
|
758
|
+
featureId: SETTINGS,
|
|
759
|
+
materialize: function (document) {
|
|
760
|
+
var existing = document.featurePart(SETTINGS);
|
|
761
|
+
// Attach Word-2013 defaults only when no settings part is present.
|
|
762
|
+
// A loaded empty `<w:settings/>` is a real part and must not be replaced.
|
|
763
|
+
if (!(existing instanceof SettingsPart)) {
|
|
764
|
+
document.setFeaturePart(SETTINGS, createDefaultSettingsPart());
|
|
765
|
+
}
|
|
766
|
+
},
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
/**
|
|
770
|
+
* Settings catalog for a document. Requires {@link registerSettingsFeature}.
|
|
771
|
+
*
|
|
772
|
+
* On {@link WordDocument.create} (and any document that has no settings state yet), the first
|
|
773
|
+
* access attaches a default {@link SettingsPart} pre-populated with canonical Word-2013
|
|
774
|
+
* settings (zoom, defaultTabStop, characterSpacingControl, compat, clrSchemeMapping) and
|
|
775
|
+
* marked dirty so that `WordDocument.saveSync` **always** materializes `/word/settings.xml`,
|
|
776
|
+
* its content-type override, and its Main Document relationship — even when no further
|
|
777
|
+
* mutation is made. This matches the OOXML conformance requirement that a DOCX file
|
|
778
|
+
* contains a settings part by default.
|
|
779
|
+
*
|
|
780
|
+
* @throws DocxError `UNKNOWN_FEATURE` when the module was not registered.
|
|
781
|
+
*
|
|
782
|
+
* @private
|
|
783
|
+
*/
|
|
784
|
+
export function settingsFor(document) {
|
|
785
|
+
var existing = document.featurePart(SETTINGS);
|
|
786
|
+
if (existing instanceof SettingsPart) {
|
|
787
|
+
return existing;
|
|
788
|
+
}
|
|
789
|
+
if (!registered) {
|
|
790
|
+
throw new DocxError('feature/not-registered', 'Settings part was not loaded; call registerSettingsFeature() before WordDocument.open or WordDocument.create');
|
|
791
|
+
}
|
|
792
|
+
// Absent part only: attach Word-2013 defaults so save always emits settings.xml.
|
|
793
|
+
// WordDocument.create loads via loadSettingsPart(undefined), which already attaches defaults.
|
|
794
|
+
var part = createDefaultSettingsPart();
|
|
795
|
+
document.setFeaturePart(SETTINGS, part);
|
|
796
|
+
return part;
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* Attached template relationship target from the settings part, without fetching.
|
|
800
|
+
*
|
|
801
|
+
* @private
|
|
802
|
+
*/
|
|
803
|
+
export function attachedTemplateTarget(document) {
|
|
804
|
+
var settings = settingsFor(document);
|
|
805
|
+
var id = settings.attachedTemplateRelationshipId();
|
|
806
|
+
if (id === undefined) {
|
|
807
|
+
return undefined;
|
|
808
|
+
}
|
|
809
|
+
var settingsPart = resolveSettingsPartName(document.opcPackage());
|
|
810
|
+
if (settingsPart === undefined) {
|
|
811
|
+
return undefined;
|
|
812
|
+
}
|
|
813
|
+
return resolveAttachedTemplateTarget(document.opcPackage(), settingsPart, id);
|
|
814
|
+
}
|
|
815
|
+
/**
|
|
816
|
+
* Main Document page background metadata. Requires {@link registerSettingsFeature}.
|
|
817
|
+
*
|
|
818
|
+
* @private
|
|
819
|
+
*/
|
|
820
|
+
export function backgroundFor(document) {
|
|
821
|
+
return createBackground(document, settingsFor(document).displayBackgroundShape());
|
|
822
|
+
}
|
|
823
|
+
registerSettingsFeature();
|
|
824
|
+
bindDocumentSettingsFacades({
|
|
825
|
+
settingsFor: settingsFor,
|
|
826
|
+
registerSettingsFeature: registerSettingsFeature,
|
|
827
|
+
attachedTemplateTarget: attachedTemplateTarget,
|
|
828
|
+
});
|
|
829
|
+
registerDocumentSettingsFacades();
|