@syncfusion/ej2-docx 0.0.0-stage → 35.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -2
- package/core.js +4 -0
- package/dist/ej2-docx.umd.min.js +2 -0
- package/dist/ej2-docx.umd.min.js.map +1 -0
- package/dist/es6/ej2-docx.es2015.js +66697 -0
- package/dist/es6/ej2-docx.es2015.js.map +1 -0
- package/dist/es6/ej2-docx.es5.js +77568 -0
- package/dist/es6/ej2-docx.es5.js.map +1 -0
- package/dist/global/ej2-docx.min.js +2 -0
- package/dist/global/ej2-docx.min.js.map +1 -0
- package/dist/global/index.d.ts +5 -0
- package/features.js +4 -0
- package/index.js +4 -0
- package/license +10 -0
- package/package.json +31 -4
- package/src/all.d.ts +50 -0
- package/src/all.js +147 -0
- package/src/core/compat/base64.d.ts +13 -0
- package/src/core/compat/base64.js +90 -0
- package/src/core/compat/object-compat.d.ts +30 -0
- package/src/core/compat/object-compat.js +40 -0
- package/src/core/compat/sha256.d.ts +9 -0
- package/src/core/compat/sha256.js +98 -0
- package/src/core/errors/docx-error.d.ts +89 -0
- package/src/core/errors/docx-error.js +138 -0
- package/src/core/errors/error-codes.d.ts +8 -0
- package/src/core/errors/error-codes.js +0 -0
- package/src/core/errors/index.d.ts +10 -0
- package/src/core/errors/index.js +9 -0
- package/src/core/index.d.ts +12 -0
- package/src/core/index.js +12 -0
- package/src/core/mc/alternate-content.d.ts +7 -0
- package/src/core/mc/alternate-content.js +67 -0
- package/src/core/mc/attributes.d.ts +24 -0
- package/src/core/mc/attributes.js +82 -0
- package/src/core/mc/index.d.ts +7 -0
- package/src/core/mc/index.js +5 -0
- package/src/core/mc/inspect.d.ts +16 -0
- package/src/core/mc/inspect.js +148 -0
- package/src/core/mc/namespaces.d.ts +4 -0
- package/src/core/mc/namespaces.js +4 -0
- package/src/core/mc/scope.d.ts +6 -0
- package/src/core/mc/scope.js +47 -0
- package/src/core/opc/content-types.d.ts +34 -0
- package/src/core/opc/content-types.js +162 -0
- package/src/core/opc/index.d.ts +8 -0
- package/src/core/opc/index.js +4 -0
- package/src/core/opc/package.d.ts +49 -0
- package/src/core/opc/package.js +324 -0
- package/src/core/opc/part-name.d.ts +47 -0
- package/src/core/opc/part-name.js +205 -0
- package/src/core/opc/relationships.d.ts +46 -0
- package/src/core/opc/relationships.js +212 -0
- package/src/core/preservation/index.d.ts +2 -0
- package/src/core/preservation/index.js +1 -0
- package/src/core/preservation/opaque-body.d.ts +16 -0
- package/src/core/preservation/opaque-body.js +69 -0
- package/src/core/registry/block-handlers.d.ts +30 -0
- package/src/core/registry/block-handlers.js +36 -0
- package/src/core/registry/create-defaults.d.ts +39 -0
- package/src/core/registry/create-defaults.js +42 -0
- package/src/core/registry/feature-registry.d.ts +20 -0
- package/src/core/registry/feature-registry.js +29 -0
- package/src/core/registry/index.d.ts +9 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/inline-handlers.d.ts +20 -0
- package/src/core/registry/inline-handlers.js +30 -0
- package/src/core/registry/materialize-handlers.d.ts +35 -0
- package/src/core/registry/materialize-handlers.js +75 -0
- package/src/core/registry/multi-part-handlers.d.ts +37 -0
- package/src/core/registry/multi-part-handlers.js +206 -0
- package/src/core/registry/package-part-handlers.d.ts +28 -0
- package/src/core/registry/package-part-handlers.js +190 -0
- package/src/core/registry/part-handlers.d.ts +24 -0
- package/src/core/registry/part-handlers.js +172 -0
- package/src/core/registry/run-leaf-handlers.d.ts +26 -0
- package/src/core/registry/run-leaf-handlers.js +72 -0
- package/src/core/security/limits.d.ts +40 -0
- package/src/core/security/limits.js +26 -0
- package/src/core/xml/index.d.ts +7 -0
- package/src/core/xml/index.js +3 -0
- package/src/core/xml/model.d.ts +66 -0
- package/src/core/xml/model.js +17 -0
- package/src/core/xml/parse.d.ts +12 -0
- package/src/core/xml/parse.js +382 -0
- package/src/core/xml/serialize.d.ts +6 -0
- package/src/core/xml/serialize.js +93 -0
- package/src/core/zip/crc32.d.ts +2 -0
- package/src/core/zip/crc32.js +25 -0
- package/src/core/zip/deflate.d.ts +6 -0
- package/src/core/zip/deflate.js +6 -0
- package/src/core/zip/index.d.ts +10 -0
- package/src/core/zip/index.js +4 -0
- package/src/core/zip/inflate-raw.d.ts +17 -0
- package/src/core/zip/inflate-raw.js +450 -0
- package/src/core/zip/names.d.ts +6 -0
- package/src/core/zip/names.js +52 -0
- package/src/core/zip/read.d.ts +8 -0
- package/src/core/zip/read.js +262 -0
- package/src/core/zip/write.d.ts +7 -0
- package/src/core/zip/write.js +189 -0
- package/src/core/zip/zip-entry.d.ts +4 -0
- package/src/core/zip/zip-entry.js +0 -0
- package/src/features/bibliography/index.d.ts +100 -0
- package/src/features/bibliography/index.js +290 -0
- package/src/features/bookmarks/index.d.ts +331 -0
- package/src/features/bookmarks/index.js +1009 -0
- package/src/features/comments/comment-extensions.d.ts +157 -0
- package/src/features/comments/comment-extensions.js +356 -0
- package/src/features/comments/index.d.ts +579 -0
- package/src/features/comments/index.js +1727 -0
- package/src/features/content-controls/index.d.ts +821 -0
- package/src/features/content-controls/index.js +2857 -0
- package/src/features/custom-xml/index.d.ts +236 -0
- package/src/features/custom-xml/index.js +661 -0
- package/src/features/document/alignment.d.ts +23 -0
- package/src/features/document/alignment.js +36 -0
- package/src/features/document/alt-chunk.d.ts +103 -0
- package/src/features/document/alt-chunk.js +221 -0
- package/src/features/document/assert-never.d.ts +1 -0
- package/src/features/document/assert-never.js +4 -0
- package/src/features/document/augmentations.d.ts +578 -0
- package/src/features/document/augmentations.js +0 -0
- package/src/features/document/body-always-on.d.ts +36 -0
- package/src/features/document/body-always-on.js +66 -0
- package/src/features/document/body-blocks.d.ts +7 -0
- package/src/features/document/body-blocks.js +78 -0
- package/src/features/document/body-item-adapters.d.ts +62 -0
- package/src/features/document/body-item-adapters.js +97 -0
- package/src/features/document/body-item-collection.d.ts +151 -0
- package/src/features/document/body-item-collection.js +440 -0
- package/src/features/document/body-item.d.ts +35 -0
- package/src/features/document/body-item.js +8 -0
- package/src/features/document/body.d.ts +150 -0
- package/src/features/document/body.js +263 -0
- package/src/features/document/character-format.d.ts +413 -0
- package/src/features/document/character-format.js +2054 -0
- package/src/features/document/color.d.ts +178 -0
- package/src/features/document/color.js +495 -0
- package/src/features/document/document.d.ts +410 -0
- package/src/features/document/document.js +1049 -0
- package/src/features/document/element-type.d.ts +68 -0
- package/src/features/document/element-type.js +133 -0
- package/src/features/document/entity-type.d.ts +92 -0
- package/src/features/document/entity-type.js +93 -0
- package/src/features/document/feature-block.d.ts +16 -0
- package/src/features/document/feature-block.js +0 -0
- package/src/features/document/feature-inline.d.ts +13 -0
- package/src/features/document/feature-inline.js +0 -0
- package/src/features/document/feature-multi-package-part.d.ts +19 -0
- package/src/features/document/feature-multi-package-part.js +8 -0
- package/src/features/document/feature-package-level-part.d.ts +18 -0
- package/src/features/document/feature-package-level-part.js +8 -0
- package/src/features/document/feature-package-part.d.ts +14 -0
- package/src/features/document/feature-package-part.js +0 -0
- package/src/features/document/feature-run-leaf.d.ts +9 -0
- package/src/features/document/feature-run-leaf.js +0 -0
- package/src/features/document/headers-footers.d.ts +206 -0
- package/src/features/document/headers-footers.js +384 -0
- package/src/features/document/index.d.ts +41 -0
- package/src/features/document/index.js +34 -0
- package/src/features/document/length.d.ts +152 -0
- package/src/features/document/length.js +245 -0
- package/src/features/document/load-options.d.ts +14 -0
- package/src/features/document/load-options.js +0 -0
- package/src/features/document/locale-ids.d.ts +227 -0
- package/src/features/document/locale-ids.js +485 -0
- package/src/features/document/on-off.d.ts +9 -0
- package/src/features/document/on-off.js +27 -0
- package/src/features/document/page-setup.d.ts +339 -0
- package/src/features/document/page-setup.js +244 -0
- package/src/features/document/paragraph-format.d.ts +880 -0
- package/src/features/document/paragraph-format.js +2807 -0
- package/src/features/document/paragraph-item-collection.d.ts +162 -0
- package/src/features/document/paragraph-item-collection.js +363 -0
- package/src/features/document/paragraph-item.d.ts +83 -0
- package/src/features/document/paragraph-item.js +103 -0
- package/src/features/document/paragraph.d.ts +435 -0
- package/src/features/document/paragraph.js +888 -0
- package/src/features/document/run.d.ts +1 -0
- package/src/features/document/run.js +768 -0
- package/src/features/document/section-partition-flatten.d.ts +124 -0
- package/src/features/document/section-partition-flatten.js +217 -0
- package/src/features/document/section-properties-model.d.ts +13 -0
- package/src/features/document/section-properties-model.js +0 -0
- package/src/features/document/section.d.ts +93 -0
- package/src/features/document/section.js +178 -0
- package/src/features/document/sections.d.ts +103 -0
- package/src/features/document/sections.js +217 -0
- package/src/features/document/sub-super-script.d.ts +23 -0
- package/src/features/document/sub-super-script.js +43 -0
- package/src/features/document/text-range.d.ts +445 -0
- package/src/features/document/text-range.js +1156 -0
- package/src/features/document/typed-body-collections.d.ts +162 -0
- package/src/features/document/typed-body-collections.js +371 -0
- package/src/features/document/underline-style.d.ts +38 -0
- package/src/features/document/underline-style.js +126 -0
- package/src/features/document/units.d.ts +8 -0
- package/src/features/document/units.js +7 -0
- package/src/features/document/wml.d.ts +16 -0
- package/src/features/document/wml.js +67 -0
- package/src/features/drawing/authoring.d.ts +27 -0
- package/src/features/drawing/authoring.js +271 -0
- package/src/features/drawing/body-pr.d.ts +271 -0
- package/src/features/drawing/body-pr.js +663 -0
- package/src/features/drawing/drawing-shape.d.ts +1192 -0
- package/src/features/drawing/drawing-shape.js +3239 -0
- package/src/features/drawing/encode-builders.d.ts +176 -0
- package/src/features/drawing/encode-builders.js +390 -0
- package/src/features/drawing/fill-format.d.ts +52 -0
- package/src/features/drawing/fill-format.js +124 -0
- package/src/features/drawing/host-codec.d.ts +632 -0
- package/src/features/drawing/host-codec.js +2595 -0
- package/src/features/drawing/index.d.ts +13 -0
- package/src/features/drawing/index.js +33 -0
- package/src/features/drawing/line-format.d.ts +76 -0
- package/src/features/drawing/line-format.js +343 -0
- package/src/features/drawing/parse-register.d.ts +50 -0
- package/src/features/drawing/parse-register.js +257 -0
- package/src/features/drawing/residual-utils.d.ts +47 -0
- package/src/features/drawing/residual-utils.js +290 -0
- package/src/features/drawing/shape-types.d.ts +433 -0
- package/src/features/drawing/shape-types.js +437 -0
- package/src/features/drawing/sp-pr.d.ts +396 -0
- package/src/features/drawing/sp-pr.js +610 -0
- package/src/features/drawing/text-frame.d.ts +90 -0
- package/src/features/drawing/text-frame.js +152 -0
- package/src/features/drawing/types.d.ts +352 -0
- package/src/features/drawing/types.js +60 -0
- package/src/features/drawing/wrap-format.d.ts +62 -0
- package/src/features/drawing/wrap-format.js +114 -0
- package/src/features/editable-ranges/index.d.ts +494 -0
- package/src/features/editable-ranges/index.js +1348 -0
- package/src/features/fields/index.d.ts +428 -0
- package/src/features/fields/index.js +2148 -0
- package/src/features/fields/paragraph-field.d.ts +187 -0
- package/src/features/fields/paragraph-field.js +692 -0
- package/src/features/font-table/font-substitution-table.d.ts +75 -0
- package/src/features/font-table/font-substitution-table.js +257 -0
- package/src/features/font-table/font-table-entry.d.ts +255 -0
- package/src/features/font-table/font-table-entry.js +823 -0
- package/src/features/font-table/font-table.d.ts +128 -0
- package/src/features/font-table/font-table.js +313 -0
- package/src/features/font-table/index.d.ts +27 -0
- package/src/features/font-table/index.js +48 -0
- package/src/features/glossary/index.d.ts +97 -0
- package/src/features/glossary/index.js +286 -0
- package/src/features/headers-footers/index.d.ts +506 -0
- package/src/features/headers-footers/index.js +1666 -0
- package/src/features/hyperlinks/index.d.ts +230 -0
- package/src/features/hyperlinks/index.js +685 -0
- package/src/features/images/caption-authoring-api.d.ts +33 -0
- package/src/features/images/caption-authoring-api.js +33 -0
- package/src/features/images/caption-enums.d.ts +52 -0
- package/src/features/images/caption-enums.js +141 -0
- package/src/features/images/caption-host.d.ts +10 -0
- package/src/features/images/caption-host.js +21 -0
- package/src/features/images/captions.d.ts +13 -0
- package/src/features/images/captions.js +142 -0
- package/src/features/images/host-codec.d.ts +103 -0
- package/src/features/images/host-codec.js +720 -0
- package/src/features/images/image-sniff.d.ts +21 -0
- package/src/features/images/image-sniff.js +71 -0
- package/src/features/images/index.d.ts +506 -0
- package/src/features/images/index.js +1429 -0
- package/src/features/images/layout-types.d.ts +232 -0
- package/src/features/images/layout-types.js +294 -0
- package/src/features/images/public-entry.d.ts +9 -0
- package/src/features/images/public-entry.js +9 -0
- package/src/features/index.d.ts +35 -0
- package/src/features/index.js +36 -0
- package/src/features/mail-merge/index.d.ts +113 -0
- package/src/features/mail-merge/index.js +315 -0
- package/src/features/notes/index.d.ts +573 -0
- package/src/features/notes/index.js +1725 -0
- package/src/features/numbering/abstract-numbering.d.ts +90 -0
- package/src/features/numbering/abstract-numbering.js +292 -0
- package/src/features/numbering/index.d.ts +182 -0
- package/src/features/numbering/index.js +668 -0
- package/src/features/numbering/list-format.d.ts +158 -0
- package/src/features/numbering/list-format.js +590 -0
- package/src/features/numbering/list-string.d.ts +7 -0
- package/src/features/numbering/list-string.js +423 -0
- package/src/features/numbering/list-style.d.ts +204 -0
- package/src/features/numbering/list-style.js +1084 -0
- package/src/features/numbering/numbering-instance.d.ts +101 -0
- package/src/features/numbering/numbering-instance.js +329 -0
- package/src/features/numbering/numbering-level.d.ts +118 -0
- package/src/features/numbering/numbering-level.js +501 -0
- package/src/features/numbering/picture-bullet.d.ts +34 -0
- package/src/features/numbering/picture-bullet.js +88 -0
- package/src/features/ole-object/catalog.d.ts +300 -0
- package/src/features/ole-object/catalog.js +908 -0
- package/src/features/ole-object/index.d.ts +526 -0
- package/src/features/ole-object/index.js +1421 -0
- package/src/features/ole-object/relationship.d.ts +27 -0
- package/src/features/ole-object/relationship.js +27 -0
- package/src/features/ole-object/typed-dom.d.ts +186 -0
- package/src/features/ole-object/typed-dom.js +595 -0
- package/src/features/properties/index.d.ts +205 -0
- package/src/features/properties/index.js +549 -0
- package/src/features/revisions/index.d.ts +204 -0
- package/src/features/revisions/index.js +695 -0
- package/src/features/sections/column-collection.d.ts +119 -0
- package/src/features/sections/column-collection.js +478 -0
- package/src/features/sections/column.d.ts +15 -0
- package/src/features/sections/column.js +37 -0
- package/src/features/sections/index.d.ts +91 -0
- package/src/features/sections/index.js +1096 -0
- package/src/features/sections/margins.d.ts +40 -0
- package/src/features/sections/margins.js +105 -0
- package/src/features/sections/page-number-style.d.ts +21 -0
- package/src/features/sections/page-number-style.js +62 -0
- package/src/features/sections/page-orientation.d.ts +10 -0
- package/src/features/sections/page-orientation.js +10 -0
- package/src/features/sections/page-setup.d.ts +435 -0
- package/src/features/sections/page-setup.js +1479 -0
- package/src/features/sections/page-size.d.ts +59 -0
- package/src/features/sections/page-size.js +68 -0
- package/src/features/sections/section-break-code.d.ts +27 -0
- package/src/features/sections/section-break-code.js +60 -0
- package/src/features/sections/section-document-association.d.ts +18 -0
- package/src/features/sections/section-document-association.js +31 -0
- package/src/features/sections/section-validation.d.ts +43 -0
- package/src/features/sections/section-validation.js +97 -0
- package/src/features/settings/attached-template.d.ts +35 -0
- package/src/features/settings/attached-template.js +98 -0
- package/src/features/settings/compat-settings.d.ts +216 -0
- package/src/features/settings/compat-settings.js +508 -0
- package/src/features/settings/document-background.d.ts +59 -0
- package/src/features/settings/document-background.js +131 -0
- package/src/features/settings/document-protection.d.ts +65 -0
- package/src/features/settings/document-protection.js +157 -0
- package/src/features/settings/document-settings-facades.d.ts +108 -0
- package/src/features/settings/document-settings-facades.js +312 -0
- package/src/features/settings/document-settings-values.d.ts +43 -0
- package/src/features/settings/document-settings-values.js +60 -0
- package/src/features/settings/footnote-properties.d.ts +211 -0
- package/src/features/settings/footnote-properties.js +591 -0
- package/src/features/settings/index.d.ts +356 -0
- package/src/features/settings/index.js +829 -0
- package/src/features/settings/settings-children.d.ts +151 -0
- package/src/features/settings/settings-children.js +505 -0
- package/src/features/settings/web-settings.d.ts +88 -0
- package/src/features/settings/web-settings.js +227 -0
- package/src/features/settings/zoom.d.ts +79 -0
- package/src/features/settings/zoom.js +147 -0
- package/src/features/styles/builtin-catalog.d.ts +159 -0
- package/src/features/styles/builtin-catalog.js +963 -0
- package/src/features/styles/builtin-resolver.d.ts +49 -0
- package/src/features/styles/builtin-resolver.js +165 -0
- package/src/features/styles/default-styles.d.ts +37 -0
- package/src/features/styles/default-styles.js +186 -0
- package/src/features/styles/default-theme.d.ts +13 -0
- package/src/features/styles/default-theme.js +13 -0
- package/src/features/styles/doc-defaults.d.ts +58 -0
- package/src/features/styles/doc-defaults.js +178 -0
- package/src/features/styles/formatting-resolver.d.ts +27 -0
- package/src/features/styles/formatting-resolver.js +72 -0
- package/src/features/styles/index.d.ts +256 -0
- package/src/features/styles/index.js +1325 -0
- package/src/features/styles/latent-styles.d.ts +68 -0
- package/src/features/styles/latent-styles.js +305 -0
- package/src/features/styles/paragraph-properties.d.ts +71 -0
- package/src/features/styles/paragraph-properties.js +237 -0
- package/src/features/styles/run-properties.d.ts +93 -0
- package/src/features/styles/run-properties.js +516 -0
- package/src/features/styles/style-base.d.ts +402 -0
- package/src/features/styles/style-base.js +1026 -0
- package/src/features/styles/style-collection.d.ts +264 -0
- package/src/features/styles/style-collection.js +714 -0
- package/src/features/styles/style-format-bridge.d.ts +64 -0
- package/src/features/styles/style-format-bridge.js +100 -0
- package/src/features/styles/style.d.ts +84 -0
- package/src/features/styles/style.js +375 -0
- package/src/features/styles/styles-with-effects.d.ts +71 -0
- package/src/features/styles/styles-with-effects.js +180 -0
- package/src/features/styles/table-style.d.ts +272 -0
- package/src/features/styles/table-style.js +1226 -0
- package/src/features/styles/theme.d.ts +126 -0
- package/src/features/styles/theme.js +377 -0
- package/src/features/tables/border-style-map.d.ts +24 -0
- package/src/features/tables/border-style-map.js +81 -0
- package/src/features/tables/borders.d.ts +126 -0
- package/src/features/tables/borders.js +527 -0
- package/src/features/tables/collections.d.ts +113 -0
- package/src/features/tables/collections.js +261 -0
- package/src/features/tables/format.d.ts +208 -0
- package/src/features/tables/format.js +716 -0
- package/src/features/tables/index.d.ts +597 -0
- package/src/features/tables/index.js +2386 -0
- package/src/features/tables/paddings.d.ts +41 -0
- package/src/features/tables/paddings.js +97 -0
- package/src/features/tables/tbl-pr-positioning.d.ts +27 -0
- package/src/features/tables/tbl-pr-positioning.js +178 -0
- package/src/features/tables/tbl-pr.d.ts +528 -0
- package/src/features/tables/tbl-pr.js +1208 -0
- package/src/features/tables/tc-pr.d.ts +168 -0
- package/src/features/tables/tc-pr.js +553 -0
- package/src/features/tables/tr-pr.d.ts +60 -0
- package/src/features/tables/tr-pr.js +215 -0
- package/src/features/watermark/detect.d.ts +76 -0
- package/src/features/watermark/detect.js +219 -0
- package/src/features/watermark/index.d.ts +28 -0
- package/src/features/watermark/index.js +91 -0
- package/src/features/watermark/logical-store.d.ts +29 -0
- package/src/features/watermark/logical-store.js +31 -0
- package/src/features/watermark/model.d.ts +285 -0
- package/src/features/watermark/model.js +597 -0
- package/src/features/watermark/parse.d.ts +84 -0
- package/src/features/watermark/parse.js +815 -0
- package/src/features/watermark/serialize.d.ts +98 -0
- package/src/features/watermark/serialize.js +1517 -0
- package/src/global.js +1 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
|
@@ -0,0 +1,1026 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
/**
|
|
15
|
+
* Live typed Styles DOM: Style, ParagraphStyle, CharacterStyle.
|
|
16
|
+
*
|
|
17
|
+
* Single mutable source of truth for paragraph and character style definitions.
|
|
18
|
+
* Table and numbering styles use {@link OpaqueStyle} (not public API).
|
|
19
|
+
*
|
|
20
|
+
* Style_Architecture_change.txt §§4–9.
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
import { DetachedObjectError, DocxError, InvalidArgumentError } from '../../core/errors/docx-error';
|
|
25
|
+
import { CharacterFormat, } from '../document/character-format';
|
|
26
|
+
import { ParagraphFormat, } from '../document/paragraph-format';
|
|
27
|
+
import { parseOnOff, serializeOnOff } from '../document/on-off';
|
|
28
|
+
import { elementChildren, isWml, wmlAttr, wmlElement, wValAttribute, WML } from '../document/wml';
|
|
29
|
+
import { normalizeStyleName } from './builtin-catalog';
|
|
30
|
+
import { characterSnapshotFromRPr, paragraphSnapshotFromPPr, } from './style-format-bridge';
|
|
31
|
+
import { DocxStyle, parseDocxStyle } from './style';
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Metadata helpers
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/** CT_Style children emitted from typed fields (schema preamble). */
|
|
36
|
+
var MODELED_META_NAMES = new Set([
|
|
37
|
+
'name',
|
|
38
|
+
'aliases',
|
|
39
|
+
'basedOn',
|
|
40
|
+
'next',
|
|
41
|
+
'link',
|
|
42
|
+
'autoRedefine',
|
|
43
|
+
'hidden',
|
|
44
|
+
'uiPriority',
|
|
45
|
+
'semiHidden',
|
|
46
|
+
'unhideWhenUsed',
|
|
47
|
+
'qFormat',
|
|
48
|
+
'locked',
|
|
49
|
+
]);
|
|
50
|
+
function firstWmlChild(children, localName) {
|
|
51
|
+
for (var i = 0; i < children.length; i += 1) {
|
|
52
|
+
var child = children[i];
|
|
53
|
+
if (child !== undefined && isWml(child, localName)) {
|
|
54
|
+
return child;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
function readStringVal(children, localName) {
|
|
60
|
+
var el = firstWmlChild(children, localName);
|
|
61
|
+
if (el === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
return wValAttribute(el);
|
|
65
|
+
}
|
|
66
|
+
function readOnOffChild(children, localName) {
|
|
67
|
+
var el = firstWmlChild(children, localName);
|
|
68
|
+
if (el === undefined) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return parseOnOff(el);
|
|
72
|
+
}
|
|
73
|
+
function parseDecimalChild(el) {
|
|
74
|
+
if (el === undefined) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
var raw = wValAttribute(el);
|
|
78
|
+
if (raw === undefined || !/^-?\d+$/.test(raw.trim())) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
return parseInt(raw.trim(), 10);
|
|
82
|
+
}
|
|
83
|
+
function pushOnOff(out, localName, value) {
|
|
84
|
+
if (value === undefined) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
out.push(serializeOnOff(localName, value));
|
|
88
|
+
}
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// Style
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
/**
|
|
93
|
+
* Base live style definition (`w:style`).
|
|
94
|
+
*
|
|
95
|
+
* Paragraph and character styles are {@link ParagraphStyle} / {@link CharacterStyle}.
|
|
96
|
+
* Table and numbering styles are internal opaque instances.
|
|
97
|
+
*
|
|
98
|
+
* @public
|
|
99
|
+
*/
|
|
100
|
+
var Style = /** @class */ (function () {
|
|
101
|
+
/**
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
function Style(styleId, type, defaultFlag, customStyle) {
|
|
105
|
+
if (styleId.length === 0) {
|
|
106
|
+
throw new InvalidArgumentError('Style id must not be empty');
|
|
107
|
+
}
|
|
108
|
+
this.styleIdValue = styleId;
|
|
109
|
+
this.typeValue = type;
|
|
110
|
+
this.defaultValue = defaultFlag;
|
|
111
|
+
this.customStyleValue = customStyle;
|
|
112
|
+
this.nameValue = undefined;
|
|
113
|
+
this.aliasesValue = undefined;
|
|
114
|
+
this.basedOnIdValue = undefined;
|
|
115
|
+
this.nextIdValue = undefined;
|
|
116
|
+
this.linkIdValue = undefined;
|
|
117
|
+
this.uiPriorityValue = undefined;
|
|
118
|
+
this.autoRedefineValue = undefined;
|
|
119
|
+
this.hiddenValue = undefined;
|
|
120
|
+
this.semiHiddenValue = undefined;
|
|
121
|
+
this.unhideWhenUsedValue = undefined;
|
|
122
|
+
this.qFormatValue = undefined;
|
|
123
|
+
this.lockedValue = undefined;
|
|
124
|
+
this.extraAttributesValue = [];
|
|
125
|
+
this.opaqueChildrenValue = [];
|
|
126
|
+
this.ownerValue = undefined;
|
|
127
|
+
this.attachedValue = false;
|
|
128
|
+
this.suppressDirty = false;
|
|
129
|
+
this.characterFormatValue = new CharacterFormat(this);
|
|
130
|
+
}
|
|
131
|
+
Object.defineProperty(Style.prototype, "styleId", {
|
|
132
|
+
// ---- Identity ----
|
|
133
|
+
/**
|
|
134
|
+
* Stable OOXML style identity (`w:style/@w:styleId`).
|
|
135
|
+
*
|
|
136
|
+
* @public
|
|
137
|
+
*/
|
|
138
|
+
get: function () {
|
|
139
|
+
return this.styleIdValue;
|
|
140
|
+
},
|
|
141
|
+
enumerable: true,
|
|
142
|
+
configurable: true
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(Style.prototype, "type", {
|
|
145
|
+
/**
|
|
146
|
+
* Style type (`w:style/@w:type`), when present.
|
|
147
|
+
*
|
|
148
|
+
* @public
|
|
149
|
+
*/
|
|
150
|
+
get: function () {
|
|
151
|
+
return this.typeValue;
|
|
152
|
+
},
|
|
153
|
+
enumerable: true,
|
|
154
|
+
configurable: true
|
|
155
|
+
});
|
|
156
|
+
Object.defineProperty(Style.prototype, "isDefault", {
|
|
157
|
+
/**
|
|
158
|
+
* Whether this is the default style of its type (`@w:default`).
|
|
159
|
+
*
|
|
160
|
+
* @public
|
|
161
|
+
*/
|
|
162
|
+
get: function () {
|
|
163
|
+
return this.defaultValue;
|
|
164
|
+
},
|
|
165
|
+
enumerable: true,
|
|
166
|
+
configurable: true
|
|
167
|
+
});
|
|
168
|
+
Object.defineProperty(Style.prototype, "customStyle", {
|
|
169
|
+
/**
|
|
170
|
+
* Customer-defined style flag (`@w:customStyle`).
|
|
171
|
+
*
|
|
172
|
+
* @public
|
|
173
|
+
*/
|
|
174
|
+
get: function () {
|
|
175
|
+
return this.customStyleValue;
|
|
176
|
+
},
|
|
177
|
+
enumerable: true,
|
|
178
|
+
configurable: true
|
|
179
|
+
});
|
|
180
|
+
Object.defineProperty(Style.prototype, "name", {
|
|
181
|
+
/**
|
|
182
|
+
* Display name (`w:name/@w:val`). Mutable; does not change {@link styleId}.
|
|
183
|
+
*
|
|
184
|
+
* @public
|
|
185
|
+
*/
|
|
186
|
+
get: function () {
|
|
187
|
+
return this.nameValue;
|
|
188
|
+
},
|
|
189
|
+
set: function (value) {
|
|
190
|
+
this.ensureAttached();
|
|
191
|
+
this.nameValue = value;
|
|
192
|
+
this.markDirty();
|
|
193
|
+
},
|
|
194
|
+
enumerable: true,
|
|
195
|
+
configurable: true
|
|
196
|
+
});
|
|
197
|
+
Object.defineProperty(Style.prototype, "characterFormat", {
|
|
198
|
+
/**
|
|
199
|
+
* Style-level character formatting (`w:rPr`). Stable facade identity.
|
|
200
|
+
*
|
|
201
|
+
* @public
|
|
202
|
+
*/
|
|
203
|
+
get: function () {
|
|
204
|
+
return this.characterFormatValue;
|
|
205
|
+
},
|
|
206
|
+
enumerable: true,
|
|
207
|
+
configurable: true
|
|
208
|
+
});
|
|
209
|
+
Object.defineProperty(Style.prototype, "owner", {
|
|
210
|
+
/**
|
|
211
|
+
* Owning collection infrastructure, when attached.
|
|
212
|
+
*
|
|
213
|
+
* @private
|
|
214
|
+
*/
|
|
215
|
+
get: function () {
|
|
216
|
+
return this.ownerValue;
|
|
217
|
+
},
|
|
218
|
+
enumerable: true,
|
|
219
|
+
configurable: true
|
|
220
|
+
});
|
|
221
|
+
Object.defineProperty(Style.prototype, "isAttached", {
|
|
222
|
+
/**
|
|
223
|
+
* Whether this style is attached to a document styles collection.
|
|
224
|
+
*
|
|
225
|
+
* @private
|
|
226
|
+
*/
|
|
227
|
+
get: function () {
|
|
228
|
+
return this.attachedValue && this.ownerValue !== undefined;
|
|
229
|
+
},
|
|
230
|
+
enumerable: true,
|
|
231
|
+
configurable: true
|
|
232
|
+
});
|
|
233
|
+
Object.defineProperty(Style.prototype, "basedOnId", {
|
|
234
|
+
// ---- Base style (Option A) ----
|
|
235
|
+
/**
|
|
236
|
+
* Raw `w:basedOn/@w:val` (may be unresolved).
|
|
237
|
+
*
|
|
238
|
+
* @private
|
|
239
|
+
*/
|
|
240
|
+
get: function () {
|
|
241
|
+
return this.basedOnIdValue;
|
|
242
|
+
},
|
|
243
|
+
enumerable: true,
|
|
244
|
+
configurable: true
|
|
245
|
+
});
|
|
246
|
+
Object.defineProperty(Style.prototype, "baseStyle", {
|
|
247
|
+
/**
|
|
248
|
+
* Resolved base style of the same public kind, when present and attached.
|
|
249
|
+
*
|
|
250
|
+
* @public
|
|
251
|
+
*/
|
|
252
|
+
get: function () {
|
|
253
|
+
if (this.basedOnIdValue === undefined || this.basedOnIdValue.length === 0) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
if (this.ownerValue === undefined) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
var resolved = this.ownerValue.lookupStyle(this.basedOnIdValue);
|
|
260
|
+
if (resolved === undefined) {
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
if (this.typeValue !== undefined && resolved.type !== undefined && resolved.type !== this.typeValue) {
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
return resolved;
|
|
267
|
+
},
|
|
268
|
+
enumerable: true,
|
|
269
|
+
configurable: true
|
|
270
|
+
});
|
|
271
|
+
/**
|
|
272
|
+
* Set base style by instance or style id (same-type, same-document).
|
|
273
|
+
*
|
|
274
|
+
* Pass `undefined` to clear the relationship.
|
|
275
|
+
*
|
|
276
|
+
* @public
|
|
277
|
+
*/
|
|
278
|
+
Style.prototype.applyBaseStyle = function (styleOrId) {
|
|
279
|
+
this.ensureAttached();
|
|
280
|
+
if (styleOrId === undefined) {
|
|
281
|
+
this.basedOnIdValue = undefined;
|
|
282
|
+
this.markDirty();
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
var target;
|
|
286
|
+
if (typeof styleOrId === 'string') {
|
|
287
|
+
if (styleOrId.length === 0) {
|
|
288
|
+
throw new InvalidArgumentError('Base style id must not be empty');
|
|
289
|
+
}
|
|
290
|
+
if (this.ownerValue === undefined) {
|
|
291
|
+
throw new DetachedObjectError('Cannot resolve base style on a detached style');
|
|
292
|
+
}
|
|
293
|
+
target = this.ownerValue.lookupStyle(styleOrId);
|
|
294
|
+
if (target === undefined) {
|
|
295
|
+
// Preserve raw id (dangling basedOn is valid OOXML).
|
|
296
|
+
this.basedOnIdValue = styleOrId;
|
|
297
|
+
this.markDirty();
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
target = styleOrId;
|
|
303
|
+
}
|
|
304
|
+
if (target === this) {
|
|
305
|
+
throw new DocxError('styles/circular-based-on', "Style \"" + this.styleIdValue + "\" cannot be based on itself");
|
|
306
|
+
}
|
|
307
|
+
if (!target.isAttached || target.owner !== this.ownerValue) {
|
|
308
|
+
throw new DocxError('argument/invalid', 'Base style must belong to the same document styles collection');
|
|
309
|
+
}
|
|
310
|
+
if (this.typeValue !== undefined && target.type !== undefined && target.type !== this.typeValue) {
|
|
311
|
+
throw new DocxError('styles/invalid-based-on', "Style \"" + this.styleIdValue + "\" basedOn \"" + target.styleId + "\" is a " + String(target.type) + " style; expected " + this.typeValue);
|
|
312
|
+
}
|
|
313
|
+
// Indirect cycle: walk target's chain.
|
|
314
|
+
var cursor = target;
|
|
315
|
+
var seen = new Set();
|
|
316
|
+
seen.add(this.styleIdValue);
|
|
317
|
+
while (cursor !== undefined) {
|
|
318
|
+
if (seen.has(cursor.styleId)) {
|
|
319
|
+
throw new DocxError('styles/circular-based-on', "Circular basedOn relationship on style \"" + this.styleIdValue + "\"");
|
|
320
|
+
}
|
|
321
|
+
seen.add(cursor.styleId);
|
|
322
|
+
var nextId = cursor.basedOnId;
|
|
323
|
+
if (nextId === undefined || this.ownerValue === undefined) {
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
cursor = this.ownerValue.lookupStyle(nextId);
|
|
327
|
+
}
|
|
328
|
+
this.basedOnIdValue = target.styleId;
|
|
329
|
+
this.markDirty();
|
|
330
|
+
};
|
|
331
|
+
Object.defineProperty(Style.prototype, "nextStyleId", {
|
|
332
|
+
// ---- Other metadata (public where useful) ----
|
|
333
|
+
/** `w:next/@w:val`. @public */
|
|
334
|
+
get: function () {
|
|
335
|
+
return this.nextIdValue;
|
|
336
|
+
},
|
|
337
|
+
set: function (value) {
|
|
338
|
+
this.ensureAttached();
|
|
339
|
+
this.nextIdValue = value;
|
|
340
|
+
this.markDirty();
|
|
341
|
+
},
|
|
342
|
+
enumerable: true,
|
|
343
|
+
configurable: true
|
|
344
|
+
});
|
|
345
|
+
Object.defineProperty(Style.prototype, "linkStyleId", {
|
|
346
|
+
/** `w:link/@w:val`. @public */
|
|
347
|
+
get: function () {
|
|
348
|
+
return this.linkIdValue;
|
|
349
|
+
},
|
|
350
|
+
set: function (value) {
|
|
351
|
+
this.ensureAttached();
|
|
352
|
+
this.linkIdValue = value;
|
|
353
|
+
this.markDirty();
|
|
354
|
+
},
|
|
355
|
+
enumerable: true,
|
|
356
|
+
configurable: true
|
|
357
|
+
});
|
|
358
|
+
Object.defineProperty(Style.prototype, "uiPriority", {
|
|
359
|
+
/** `w:uiPriority/@w:val`. @public */
|
|
360
|
+
get: function () {
|
|
361
|
+
return this.uiPriorityValue;
|
|
362
|
+
},
|
|
363
|
+
set: function (value) {
|
|
364
|
+
this.ensureAttached();
|
|
365
|
+
this.uiPriorityValue = value;
|
|
366
|
+
this.markDirty();
|
|
367
|
+
},
|
|
368
|
+
enumerable: true,
|
|
369
|
+
configurable: true
|
|
370
|
+
});
|
|
371
|
+
Object.defineProperty(Style.prototype, "isQuickStyle", {
|
|
372
|
+
/** `w:qFormat`. @public */
|
|
373
|
+
get: function () {
|
|
374
|
+
return this.qFormatValue;
|
|
375
|
+
},
|
|
376
|
+
set: function (value) {
|
|
377
|
+
this.ensureAttached();
|
|
378
|
+
this.qFormatValue = value;
|
|
379
|
+
this.markDirty();
|
|
380
|
+
},
|
|
381
|
+
enumerable: true,
|
|
382
|
+
configurable: true
|
|
383
|
+
});
|
|
384
|
+
Object.defineProperty(Style.prototype, "isSemiHidden", {
|
|
385
|
+
/** `w:semiHidden`. @public */
|
|
386
|
+
get: function () {
|
|
387
|
+
return this.semiHiddenValue;
|
|
388
|
+
},
|
|
389
|
+
set: function (value) {
|
|
390
|
+
this.ensureAttached();
|
|
391
|
+
this.semiHiddenValue = value;
|
|
392
|
+
this.markDirty();
|
|
393
|
+
},
|
|
394
|
+
enumerable: true,
|
|
395
|
+
configurable: true
|
|
396
|
+
});
|
|
397
|
+
// ---- Host ----
|
|
398
|
+
/**
|
|
399
|
+
* @private
|
|
400
|
+
*/
|
|
401
|
+
Style.prototype.notifyCharacterFormatMutation = function () {
|
|
402
|
+
this.ensureAttached();
|
|
403
|
+
this.markDirty();
|
|
404
|
+
};
|
|
405
|
+
// ---- Lifecycle ----
|
|
406
|
+
/**
|
|
407
|
+
* Attach to a document styles owner. Idempotent when already attached to the same owner.
|
|
408
|
+
*
|
|
409
|
+
* @private
|
|
410
|
+
*/
|
|
411
|
+
Style.prototype.attach = function (owner) {
|
|
412
|
+
if (this.attachedValue && this.ownerValue === owner) {
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
if (this.attachedValue && this.ownerValue !== undefined && this.ownerValue !== owner) {
|
|
416
|
+
throw new DocxError('argument/invalid', "Style \"" + this.styleIdValue + "\" is already owned by another document");
|
|
417
|
+
}
|
|
418
|
+
this.ownerValue = owner;
|
|
419
|
+
this.attachedValue = true;
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Detach from the owning collection. Further mutations throw {@link DetachedObjectError}.
|
|
423
|
+
*
|
|
424
|
+
* @private
|
|
425
|
+
*/
|
|
426
|
+
Style.prototype.detach = function () {
|
|
427
|
+
this.attachedValue = false;
|
|
428
|
+
this.ownerValue = undefined;
|
|
429
|
+
};
|
|
430
|
+
/**
|
|
431
|
+
* Remove this style from the document styles collection: drop the `w:style`
|
|
432
|
+
* definition, detach this instance, and clear content/catalog references to
|
|
433
|
+
* its style id so save does not re-materialize a stub. After removal the
|
|
434
|
+
* instance is detached; a second call throws {@link DetachedObjectError}.
|
|
435
|
+
*
|
|
436
|
+
* @public
|
|
437
|
+
*/
|
|
438
|
+
Style.prototype.remove = function () {
|
|
439
|
+
this.ensureAttached();
|
|
440
|
+
var owner = this.ownerValue;
|
|
441
|
+
if (owner === undefined) {
|
|
442
|
+
throw new DetachedObjectError("Style \"" + this.styleIdValue + "\" is detached from its document");
|
|
443
|
+
}
|
|
444
|
+
// StyleOwner is the lookup/dirty surface; collection owns private remove.
|
|
445
|
+
var collection = owner;
|
|
446
|
+
if (typeof collection.remove !== 'function') {
|
|
447
|
+
throw new InvalidArgumentError("Style \"" + this.styleIdValue + "\" owner does not support removal");
|
|
448
|
+
}
|
|
449
|
+
collection.remove(this);
|
|
450
|
+
};
|
|
451
|
+
/**
|
|
452
|
+
* Clear basedOn / next / link edges that point at `removedStyleId`.
|
|
453
|
+
* Used by StyleCollection.remove (no dirty — caller marks once).
|
|
454
|
+
*
|
|
455
|
+
* @private
|
|
456
|
+
*/
|
|
457
|
+
Style.prototype.clearReferencesToStyleId = function (removedStyleId) {
|
|
458
|
+
if (this.basedOnIdValue === removedStyleId) {
|
|
459
|
+
this.basedOnIdValue = undefined;
|
|
460
|
+
}
|
|
461
|
+
if (this.nextIdValue === removedStyleId) {
|
|
462
|
+
this.nextIdValue = undefined;
|
|
463
|
+
}
|
|
464
|
+
if (this.linkIdValue === removedStyleId) {
|
|
465
|
+
this.linkIdValue = undefined;
|
|
466
|
+
}
|
|
467
|
+
};
|
|
468
|
+
/**
|
|
469
|
+
* Hydrate modeled fields and format facades from a parsed {@link DocxStyle}
|
|
470
|
+
* without marking dirty or running authoring exclusivity.
|
|
471
|
+
*
|
|
472
|
+
* @private
|
|
473
|
+
*/
|
|
474
|
+
Style.prototype.hydrateFromDocxStyle = function (source) {
|
|
475
|
+
this.suppressDirty = true;
|
|
476
|
+
try {
|
|
477
|
+
var shell = source.serialize();
|
|
478
|
+
var children = elementChildren(shell);
|
|
479
|
+
this.nameValue = readStringVal(children, 'name');
|
|
480
|
+
this.aliasesValue = readStringVal(children, 'aliases');
|
|
481
|
+
this.basedOnIdValue = readStringVal(children, 'basedOn');
|
|
482
|
+
this.nextIdValue = readStringVal(children, 'next');
|
|
483
|
+
this.linkIdValue = readStringVal(children, 'link');
|
|
484
|
+
this.uiPriorityValue = parseDecimalChild(firstWmlChild(children, 'uiPriority'));
|
|
485
|
+
this.autoRedefineValue = readOnOffChild(children, 'autoRedefine');
|
|
486
|
+
this.hiddenValue = readOnOffChild(children, 'hidden');
|
|
487
|
+
this.semiHiddenValue = readOnOffChild(children, 'semiHidden');
|
|
488
|
+
this.unhideWhenUsedValue = readOnOffChild(children, 'unhideWhenUsed');
|
|
489
|
+
this.qFormatValue = readOnOffChild(children, 'qFormat');
|
|
490
|
+
this.lockedValue = readOnOffChild(children, 'locked');
|
|
491
|
+
this.customStyleValue = source.customStyle;
|
|
492
|
+
var rPr = firstWmlChild(children, 'rPr');
|
|
493
|
+
this.characterFormatValue.hydrate(characterSnapshotFromRPr(rPr));
|
|
494
|
+
var pPr = firstWmlChild(children, 'pPr');
|
|
495
|
+
this.hydrateParagraphFormat(paragraphSnapshotFromPPr(pPr));
|
|
496
|
+
var opaque = [];
|
|
497
|
+
for (var i = 0; i < children.length; i += 1) {
|
|
498
|
+
var child = children[i];
|
|
499
|
+
if (child === undefined) {
|
|
500
|
+
continue;
|
|
501
|
+
}
|
|
502
|
+
if (isWml(child, child.localName)) {
|
|
503
|
+
if (MODELED_META_NAMES.has(child.localName)) {
|
|
504
|
+
continue;
|
|
505
|
+
}
|
|
506
|
+
if (child.localName === 'pPr' || child.localName === 'rPr') {
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
opaque.push(child);
|
|
511
|
+
}
|
|
512
|
+
this.opaqueChildrenValue = opaque;
|
|
513
|
+
// Extra attributes from the style element (unknown attrs).
|
|
514
|
+
var knownAttr_1 = new Set(['styleId', 'type', 'default', 'customStyle']);
|
|
515
|
+
this.extraAttributesValue = shell.attributes.filter(function (a) {
|
|
516
|
+
return !(knownAttr_1.has(a.localName) && (a.namespaceUri === WML || a.namespaceUri === ''));
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
finally {
|
|
520
|
+
this.suppressDirty = false;
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
/**
|
|
524
|
+
* Subclasses with paragraph format hydrate here; default no-op.
|
|
525
|
+
*
|
|
526
|
+
* @private
|
|
527
|
+
*/
|
|
528
|
+
Style.prototype.hydrateParagraphFormat = function (_snapshot) {
|
|
529
|
+
// CharacterStyle / OpaqueStyle without PF: ignore pPr snapshot (Opaque may override).
|
|
530
|
+
};
|
|
531
|
+
/**
|
|
532
|
+
* Subclasses contribute `w:pPr` during serialize.
|
|
533
|
+
*
|
|
534
|
+
* @private
|
|
535
|
+
*/
|
|
536
|
+
Style.prototype.serializeParagraphProperties = function (_out) {
|
|
537
|
+
// default none
|
|
538
|
+
};
|
|
539
|
+
/**
|
|
540
|
+
* Serialize this live style to a `w:style` element.
|
|
541
|
+
*
|
|
542
|
+
* @private
|
|
543
|
+
*/
|
|
544
|
+
Style.prototype.serialize = function () {
|
|
545
|
+
var attributes = [];
|
|
546
|
+
if (this.typeValue !== undefined) {
|
|
547
|
+
attributes.push(wmlAttr('type', this.typeValue));
|
|
548
|
+
}
|
|
549
|
+
attributes.push(wmlAttr('styleId', this.styleIdValue));
|
|
550
|
+
if (this.defaultValue !== undefined) {
|
|
551
|
+
attributes.push(wmlAttr('default', this.defaultValue ? '1' : '0'));
|
|
552
|
+
}
|
|
553
|
+
if (this.customStyleValue !== undefined) {
|
|
554
|
+
attributes.push(wmlAttr('customStyle', this.customStyleValue ? '1' : '0'));
|
|
555
|
+
}
|
|
556
|
+
for (var i = 0; i < this.extraAttributesValue.length; i += 1) {
|
|
557
|
+
attributes.push(this.extraAttributesValue[i]);
|
|
558
|
+
}
|
|
559
|
+
var out = [];
|
|
560
|
+
var nameVal = this.nameValue != null ? this.nameValue : this.styleIdValue;
|
|
561
|
+
out.push(wmlElement('name', { attributes: [wmlAttr('val', nameVal)] }));
|
|
562
|
+
if (this.aliasesValue !== undefined) {
|
|
563
|
+
out.push(wmlElement('aliases', { attributes: [wmlAttr('val', this.aliasesValue)] }));
|
|
564
|
+
}
|
|
565
|
+
if (this.basedOnIdValue !== undefined) {
|
|
566
|
+
out.push(wmlElement('basedOn', { attributes: [wmlAttr('val', this.basedOnIdValue)] }));
|
|
567
|
+
}
|
|
568
|
+
if (this.nextIdValue !== undefined) {
|
|
569
|
+
out.push(wmlElement('next', { attributes: [wmlAttr('val', this.nextIdValue)] }));
|
|
570
|
+
}
|
|
571
|
+
if (this.linkIdValue !== undefined) {
|
|
572
|
+
out.push(wmlElement('link', { attributes: [wmlAttr('val', this.linkIdValue)] }));
|
|
573
|
+
}
|
|
574
|
+
pushOnOff(out, 'autoRedefine', this.autoRedefineValue);
|
|
575
|
+
pushOnOff(out, 'hidden', this.hiddenValue);
|
|
576
|
+
if (this.uiPriorityValue !== undefined) {
|
|
577
|
+
out.push(wmlElement('uiPriority', { attributes: [wmlAttr('val', String(this.uiPriorityValue))] }));
|
|
578
|
+
}
|
|
579
|
+
pushOnOff(out, 'semiHidden', this.semiHiddenValue);
|
|
580
|
+
pushOnOff(out, 'unhideWhenUsed', this.unhideWhenUsedValue);
|
|
581
|
+
pushOnOff(out, 'qFormat', this.qFormatValue);
|
|
582
|
+
pushOnOff(out, 'locked', this.lockedValue);
|
|
583
|
+
// Opaque children (tblPr, tblStylePr, personal*, rsid, …) before pPr/rPr
|
|
584
|
+
// keeps table style structure intact; modeled pPr/rPr append after.
|
|
585
|
+
for (var i = 0; i < this.opaqueChildrenValue.length; i += 1) {
|
|
586
|
+
out.push(this.opaqueChildrenValue[i]);
|
|
587
|
+
}
|
|
588
|
+
this.serializeParagraphProperties(out);
|
|
589
|
+
var rPrChildren = this.characterFormatValue.buildRPrChildren();
|
|
590
|
+
// Style-level rPr must not emit nested rStyle (styleIdValue on CF).
|
|
591
|
+
var filteredRPr = [];
|
|
592
|
+
for (var i = 0; i < rPrChildren.length; i += 1) {
|
|
593
|
+
var child = rPrChildren[i];
|
|
594
|
+
if (isWml(child, 'rStyle')) {
|
|
595
|
+
continue;
|
|
596
|
+
}
|
|
597
|
+
filteredRPr.push(child);
|
|
598
|
+
}
|
|
599
|
+
if (filteredRPr.length > 0) {
|
|
600
|
+
out.push(wmlElement('rPr', { children: filteredRPr }));
|
|
601
|
+
}
|
|
602
|
+
return wmlElement('style', { attributes: attributes, children: out });
|
|
603
|
+
};
|
|
604
|
+
/**
|
|
605
|
+
* Character-format snapshot for the effective-format resolver.
|
|
606
|
+
*
|
|
607
|
+
* @private
|
|
608
|
+
*/
|
|
609
|
+
Style.prototype.characterFormatSnapshot = function () {
|
|
610
|
+
return this.characterFormatValue.snapshot();
|
|
611
|
+
};
|
|
612
|
+
/**
|
|
613
|
+
* Project this live style to a temporary DocxStyle shell (resolver / TableStyle).
|
|
614
|
+
*
|
|
615
|
+
* @private
|
|
616
|
+
*/
|
|
617
|
+
Style.prototype.toDocxStyle = function () {
|
|
618
|
+
var parsed = parseDocxStyle(this.serialize());
|
|
619
|
+
if (parsed !== undefined) {
|
|
620
|
+
return parsed;
|
|
621
|
+
}
|
|
622
|
+
return new DocxStyle(this.styleIdValue, this.typeValue, this.defaultValue, this.customStyleValue, elementChildren(this.serialize()).slice());
|
|
623
|
+
};
|
|
624
|
+
/**
|
|
625
|
+
* Replace live fields from a DocxStyle shell (TableStyle mutation path).
|
|
626
|
+
* Does not require attach; used while the style remains document-owned.
|
|
627
|
+
*
|
|
628
|
+
* @private
|
|
629
|
+
*/
|
|
630
|
+
Style.prototype.replaceShell = function (shell) {
|
|
631
|
+
if (shell.styleId !== this.styleIdValue) {
|
|
632
|
+
throw new DocxError('argument/invalid', "Cannot replace style shell: styleId \"" + shell.styleId + "\" does not match \"" + this.styleIdValue + "\"");
|
|
633
|
+
}
|
|
634
|
+
this.hydrateFromDocxStyle(shell);
|
|
635
|
+
this.markDirty();
|
|
636
|
+
};
|
|
637
|
+
/**
|
|
638
|
+
* Normalized display name for catalog lookup.
|
|
639
|
+
*
|
|
640
|
+
* @private
|
|
641
|
+
*/
|
|
642
|
+
Style.prototype.normalizedName = function () {
|
|
643
|
+
var n = this.nameValue;
|
|
644
|
+
if (n !== undefined && n.length > 0) {
|
|
645
|
+
return normalizeStyleName(n);
|
|
646
|
+
}
|
|
647
|
+
return normalizeStyleName(this.styleIdValue);
|
|
648
|
+
};
|
|
649
|
+
/**
|
|
650
|
+
* Opaque children retained for package fidelity (table props, conditionals, …).
|
|
651
|
+
*
|
|
652
|
+
* @private
|
|
653
|
+
*/
|
|
654
|
+
Style.prototype.getOpaqueChildren = function () {
|
|
655
|
+
return this.opaqueChildrenValue;
|
|
656
|
+
};
|
|
657
|
+
/**
|
|
658
|
+
* Replace opaque children (TableStyle base props / tblStylePr).
|
|
659
|
+
*
|
|
660
|
+
* @private
|
|
661
|
+
*/
|
|
662
|
+
Style.prototype.setOpaqueChildren = function (children) {
|
|
663
|
+
this.opaqueChildrenValue = children.slice();
|
|
664
|
+
this.markDirty();
|
|
665
|
+
};
|
|
666
|
+
/**
|
|
667
|
+
* @private
|
|
668
|
+
*/
|
|
669
|
+
Style.prototype.ensureAttached = function () {
|
|
670
|
+
if (!this.attachedValue || this.ownerValue === undefined) {
|
|
671
|
+
throw new DetachedObjectError("Style \"" + this.styleIdValue + "\" is detached from its document");
|
|
672
|
+
}
|
|
673
|
+
};
|
|
674
|
+
/**
|
|
675
|
+
* @private
|
|
676
|
+
*/
|
|
677
|
+
Style.prototype.markDirty = function () {
|
|
678
|
+
if (this.suppressDirty) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
if (this.ownerValue !== undefined) {
|
|
682
|
+
this.ownerValue.markStylesDirty();
|
|
683
|
+
}
|
|
684
|
+
};
|
|
685
|
+
/**
|
|
686
|
+
* Set metadata used when creating a minimal / seed style (no dirty).
|
|
687
|
+
*
|
|
688
|
+
* @private
|
|
689
|
+
*/
|
|
690
|
+
Style.prototype.seedIdentity = function (name, basedOnId) {
|
|
691
|
+
this.suppressDirty = true;
|
|
692
|
+
try {
|
|
693
|
+
this.nameValue = name;
|
|
694
|
+
this.basedOnIdValue = basedOnId;
|
|
695
|
+
}
|
|
696
|
+
finally {
|
|
697
|
+
this.suppressDirty = false;
|
|
698
|
+
}
|
|
699
|
+
};
|
|
700
|
+
/**
|
|
701
|
+
* Hydrate CF from snapshot without dirty (catalog / seed).
|
|
702
|
+
*
|
|
703
|
+
* @private
|
|
704
|
+
*/
|
|
705
|
+
Style.prototype.hydrateCharacterSnapshot = function (snapshot) {
|
|
706
|
+
this.suppressDirty = true;
|
|
707
|
+
try {
|
|
708
|
+
this.characterFormatValue.hydrate(snapshot);
|
|
709
|
+
}
|
|
710
|
+
finally {
|
|
711
|
+
this.suppressDirty = false;
|
|
712
|
+
}
|
|
713
|
+
};
|
|
714
|
+
/**
|
|
715
|
+
* Internal write of basedOn id during hydrate/seed (no dirty, no attach check).
|
|
716
|
+
*
|
|
717
|
+
* @private
|
|
718
|
+
*/
|
|
719
|
+
Style.prototype.setBasedOnIdInternal = function (value) {
|
|
720
|
+
this.basedOnIdValue = value;
|
|
721
|
+
};
|
|
722
|
+
/**
|
|
723
|
+
* Internal next/link/ui flags during hydrate/seed.
|
|
724
|
+
*
|
|
725
|
+
* @private
|
|
726
|
+
*/
|
|
727
|
+
Style.prototype.setMetaInternal = function (meta) {
|
|
728
|
+
if (meta.nextId !== undefined) {
|
|
729
|
+
this.nextIdValue = meta.nextId;
|
|
730
|
+
}
|
|
731
|
+
if (meta.linkId !== undefined) {
|
|
732
|
+
this.linkIdValue = meta.linkId;
|
|
733
|
+
}
|
|
734
|
+
if (meta.uiPriority !== undefined) {
|
|
735
|
+
this.uiPriorityValue = meta.uiPriority;
|
|
736
|
+
}
|
|
737
|
+
if (meta.semiHidden !== undefined) {
|
|
738
|
+
this.semiHiddenValue = meta.semiHidden;
|
|
739
|
+
}
|
|
740
|
+
if (meta.unhideWhenUsed !== undefined) {
|
|
741
|
+
this.unhideWhenUsedValue = meta.unhideWhenUsed;
|
|
742
|
+
}
|
|
743
|
+
if (meta.qFormat !== undefined) {
|
|
744
|
+
this.qFormatValue = meta.qFormat;
|
|
745
|
+
}
|
|
746
|
+
if (meta.aliases !== undefined) {
|
|
747
|
+
this.aliasesValue = meta.aliases;
|
|
748
|
+
}
|
|
749
|
+
if (meta.autoRedefine !== undefined) {
|
|
750
|
+
this.autoRedefineValue = meta.autoRedefine;
|
|
751
|
+
}
|
|
752
|
+
if (meta.hidden !== undefined) {
|
|
753
|
+
this.hiddenValue = meta.hidden;
|
|
754
|
+
}
|
|
755
|
+
if (meta.locked !== undefined) {
|
|
756
|
+
this.lockedValue = meta.locked;
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
Object.defineProperty(Style.prototype, "nextIdInternal", {
|
|
760
|
+
/** @private */
|
|
761
|
+
get: function () {
|
|
762
|
+
return this.nextIdValue;
|
|
763
|
+
},
|
|
764
|
+
enumerable: true,
|
|
765
|
+
configurable: true
|
|
766
|
+
});
|
|
767
|
+
Object.defineProperty(Style.prototype, "linkIdInternal", {
|
|
768
|
+
/** @private */
|
|
769
|
+
get: function () {
|
|
770
|
+
return this.linkIdValue;
|
|
771
|
+
},
|
|
772
|
+
enumerable: true,
|
|
773
|
+
configurable: true
|
|
774
|
+
});
|
|
775
|
+
return Style;
|
|
776
|
+
}());
|
|
777
|
+
export { Style };
|
|
778
|
+
// ---------------------------------------------------------------------------
|
|
779
|
+
// ParagraphStyle
|
|
780
|
+
// ---------------------------------------------------------------------------
|
|
781
|
+
/**
|
|
782
|
+
* Paragraph style (`w:type="paragraph"`) with paragraph and character format facades.
|
|
783
|
+
*
|
|
784
|
+
* @public
|
|
785
|
+
*/
|
|
786
|
+
var ParagraphStyle = /** @class */ (function (_super) {
|
|
787
|
+
__extends(ParagraphStyle, _super);
|
|
788
|
+
/**
|
|
789
|
+
* @private
|
|
790
|
+
*/
|
|
791
|
+
function ParagraphStyle(styleId, defaultFlag, customStyle) {
|
|
792
|
+
var _this = _super.call(this, styleId, 'paragraph', defaultFlag, customStyle) || this;
|
|
793
|
+
_this.paragraphFormatValue = new ParagraphFormat(_this);
|
|
794
|
+
return _this;
|
|
795
|
+
}
|
|
796
|
+
Object.defineProperty(ParagraphStyle.prototype, "paragraphFormat", {
|
|
797
|
+
/**
|
|
798
|
+
* Style-level paragraph formatting (`w:pPr`). Stable facade identity.
|
|
799
|
+
*
|
|
800
|
+
* @public
|
|
801
|
+
*/
|
|
802
|
+
get: function () {
|
|
803
|
+
return this.paragraphFormatValue;
|
|
804
|
+
},
|
|
805
|
+
enumerable: true,
|
|
806
|
+
configurable: true
|
|
807
|
+
});
|
|
808
|
+
Object.defineProperty(ParagraphStyle.prototype, "baseParagraphStyle", {
|
|
809
|
+
/**
|
|
810
|
+
* Resolved paragraph base style, when present.
|
|
811
|
+
*
|
|
812
|
+
* @public
|
|
813
|
+
*/
|
|
814
|
+
get: function () {
|
|
815
|
+
var base = this.baseStyle;
|
|
816
|
+
if (base instanceof ParagraphStyle) {
|
|
817
|
+
return base;
|
|
818
|
+
}
|
|
819
|
+
return undefined;
|
|
820
|
+
},
|
|
821
|
+
enumerable: true,
|
|
822
|
+
configurable: true
|
|
823
|
+
});
|
|
824
|
+
/**
|
|
825
|
+
* @private
|
|
826
|
+
*/
|
|
827
|
+
ParagraphStyle.prototype.notifyParagraphFormatMutation = function () {
|
|
828
|
+
this.ensureAttached();
|
|
829
|
+
this.markDirty();
|
|
830
|
+
};
|
|
831
|
+
/**
|
|
832
|
+
* @private
|
|
833
|
+
*/
|
|
834
|
+
ParagraphStyle.prototype.hydrateParagraphFormat = function (snapshot) {
|
|
835
|
+
// Called only from Style.hydrateFromDocxStyle (suppressDirty already true).
|
|
836
|
+
// hydrate() does not notify the host.
|
|
837
|
+
this.paragraphFormatValue.hydrate(snapshot);
|
|
838
|
+
};
|
|
839
|
+
/**
|
|
840
|
+
* @private
|
|
841
|
+
*/
|
|
842
|
+
ParagraphStyle.prototype.serializeParagraphProperties = function (out) {
|
|
843
|
+
var children = this.paragraphFormatValue.buildPPrChildren();
|
|
844
|
+
if (children.length > 0) {
|
|
845
|
+
out.push(wmlElement('pPr', { children: children }));
|
|
846
|
+
}
|
|
847
|
+
};
|
|
848
|
+
/**
|
|
849
|
+
* @private
|
|
850
|
+
*/
|
|
851
|
+
ParagraphStyle.prototype.paragraphFormatSnapshot = function () {
|
|
852
|
+
return this.paragraphFormatValue.snapshot();
|
|
853
|
+
};
|
|
854
|
+
/**
|
|
855
|
+
* Create a minimal paragraph style (ensure / authoring).
|
|
856
|
+
*
|
|
857
|
+
* @private
|
|
858
|
+
*/
|
|
859
|
+
ParagraphStyle.createMinimal = function (styleId) {
|
|
860
|
+
var style = new ParagraphStyle(styleId, undefined, true);
|
|
861
|
+
style.seedIdentity(styleId, undefined);
|
|
862
|
+
return style;
|
|
863
|
+
};
|
|
864
|
+
/**
|
|
865
|
+
* Hydrate a paragraph style from a parsed DocxStyle shell.
|
|
866
|
+
*
|
|
867
|
+
* @private
|
|
868
|
+
*/
|
|
869
|
+
ParagraphStyle.fromDocxStyle = function (source) {
|
|
870
|
+
var style = new ParagraphStyle(source.styleId, source.default, source.customStyle);
|
|
871
|
+
style.hydrateFromDocxStyle(source);
|
|
872
|
+
return style;
|
|
873
|
+
};
|
|
874
|
+
return ParagraphStyle;
|
|
875
|
+
}(Style));
|
|
876
|
+
export { ParagraphStyle };
|
|
877
|
+
// ---------------------------------------------------------------------------
|
|
878
|
+
// CharacterStyle
|
|
879
|
+
// ---------------------------------------------------------------------------
|
|
880
|
+
/**
|
|
881
|
+
* Character style (`w:type="character"`) with a character format facade only.
|
|
882
|
+
*
|
|
883
|
+
* @public
|
|
884
|
+
*/
|
|
885
|
+
var CharacterStyle = /** @class */ (function (_super) {
|
|
886
|
+
__extends(CharacterStyle, _super);
|
|
887
|
+
/**
|
|
888
|
+
* @private
|
|
889
|
+
*/
|
|
890
|
+
function CharacterStyle(styleId, defaultFlag, customStyle) {
|
|
891
|
+
return _super.call(this, styleId, 'character', defaultFlag, customStyle) || this;
|
|
892
|
+
}
|
|
893
|
+
Object.defineProperty(CharacterStyle.prototype, "baseCharacterStyle", {
|
|
894
|
+
/**
|
|
895
|
+
* Resolved character base style, when present.
|
|
896
|
+
*
|
|
897
|
+
* @public
|
|
898
|
+
*/
|
|
899
|
+
get: function () {
|
|
900
|
+
var base = this.baseStyle;
|
|
901
|
+
if (base instanceof CharacterStyle) {
|
|
902
|
+
return base;
|
|
903
|
+
}
|
|
904
|
+
return undefined;
|
|
905
|
+
},
|
|
906
|
+
enumerable: true,
|
|
907
|
+
configurable: true
|
|
908
|
+
});
|
|
909
|
+
/**
|
|
910
|
+
* Create a minimal character style (ensure / authoring).
|
|
911
|
+
*
|
|
912
|
+
* @private
|
|
913
|
+
*/
|
|
914
|
+
CharacterStyle.createMinimal = function (styleId) {
|
|
915
|
+
var style = new CharacterStyle(styleId, undefined, true);
|
|
916
|
+
style.seedIdentity(styleId, undefined);
|
|
917
|
+
return style;
|
|
918
|
+
};
|
|
919
|
+
/**
|
|
920
|
+
* Hydrate a character style from a parsed DocxStyle shell.
|
|
921
|
+
*
|
|
922
|
+
* @private
|
|
923
|
+
*/
|
|
924
|
+
CharacterStyle.fromDocxStyle = function (source) {
|
|
925
|
+
var style = new CharacterStyle(source.styleId, source.default, source.customStyle);
|
|
926
|
+
style.hydrateFromDocxStyle(source);
|
|
927
|
+
return style;
|
|
928
|
+
};
|
|
929
|
+
return CharacterStyle;
|
|
930
|
+
}(Style));
|
|
931
|
+
export { CharacterStyle };
|
|
932
|
+
// ---------------------------------------------------------------------------
|
|
933
|
+
// OpaqueStyle (table / numbering / unknown) — not a public API type
|
|
934
|
+
// ---------------------------------------------------------------------------
|
|
935
|
+
/**
|
|
936
|
+
* Non-paragraph, non-character style retained for package fidelity.
|
|
937
|
+
* Not part of the public Styles DOM surface.
|
|
938
|
+
*
|
|
939
|
+
* @private
|
|
940
|
+
*/
|
|
941
|
+
var OpaqueStyle = /** @class */ (function (_super) {
|
|
942
|
+
__extends(OpaqueStyle, _super);
|
|
943
|
+
/**
|
|
944
|
+
* @private
|
|
945
|
+
*/
|
|
946
|
+
function OpaqueStyle(styleId, type, defaultFlag, customStyle) {
|
|
947
|
+
return _super.call(this, styleId, type, defaultFlag, customStyle) || this;
|
|
948
|
+
}
|
|
949
|
+
/**
|
|
950
|
+
* @private
|
|
951
|
+
*/
|
|
952
|
+
OpaqueStyle.prototype.hydrateParagraphFormat = function (snapshot) {
|
|
953
|
+
if (this.paragraphFormatValue === undefined) {
|
|
954
|
+
// Lazy PF only when pPr present — OpaqueStyle implements host inline.
|
|
955
|
+
var self_1 = this;
|
|
956
|
+
this.paragraphFormatValue = new ParagraphFormat({
|
|
957
|
+
notifyParagraphFormatMutation: function () {
|
|
958
|
+
self_1.ensureAttached();
|
|
959
|
+
self_1.markDirty();
|
|
960
|
+
},
|
|
961
|
+
});
|
|
962
|
+
}
|
|
963
|
+
this.paragraphFormatValue.hydrate(snapshot);
|
|
964
|
+
};
|
|
965
|
+
/**
|
|
966
|
+
* @private
|
|
967
|
+
*/
|
|
968
|
+
OpaqueStyle.prototype.serializeParagraphProperties = function (out) {
|
|
969
|
+
if (this.paragraphFormatValue === undefined) {
|
|
970
|
+
return;
|
|
971
|
+
}
|
|
972
|
+
var children = this.paragraphFormatValue.buildPPrChildren();
|
|
973
|
+
if (children.length > 0) {
|
|
974
|
+
out.push(wmlElement('pPr', { children: children }));
|
|
975
|
+
}
|
|
976
|
+
};
|
|
977
|
+
/**
|
|
978
|
+
* @private
|
|
979
|
+
*/
|
|
980
|
+
OpaqueStyle.fromDocxStyle = function (source) {
|
|
981
|
+
var style = new OpaqueStyle(source.styleId, source.type, source.default, source.customStyle);
|
|
982
|
+
style.hydrateFromDocxStyle(source);
|
|
983
|
+
return style;
|
|
984
|
+
};
|
|
985
|
+
return OpaqueStyle;
|
|
986
|
+
}(Style));
|
|
987
|
+
export { OpaqueStyle };
|
|
988
|
+
// ---------------------------------------------------------------------------
|
|
989
|
+
// Factories
|
|
990
|
+
// ---------------------------------------------------------------------------
|
|
991
|
+
/**
|
|
992
|
+
* Build a live Style from a temporary {@link DocxStyle} parse/catalog shell.
|
|
993
|
+
* Does not attach; caller attaches via the collection.
|
|
994
|
+
* Table styles are created as {@link OpaqueStyle} here — the collection upgrades
|
|
995
|
+
* `type === 'table'` shells to {@link TableStyle}.
|
|
996
|
+
*
|
|
997
|
+
* @private
|
|
998
|
+
*/
|
|
999
|
+
export function createStyleFromDocxStyle(source) {
|
|
1000
|
+
if (source.type === 'paragraph') {
|
|
1001
|
+
return ParagraphStyle.fromDocxStyle(source);
|
|
1002
|
+
}
|
|
1003
|
+
if (source.type === 'character') {
|
|
1004
|
+
return CharacterStyle.fromDocxStyle(source);
|
|
1005
|
+
}
|
|
1006
|
+
return OpaqueStyle.fromDocxStyle(source);
|
|
1007
|
+
}
|
|
1008
|
+
/**
|
|
1009
|
+
* Alias for {@link createStyleFromDocxStyle} (legacy shell projection name).
|
|
1010
|
+
*
|
|
1011
|
+
* @private
|
|
1012
|
+
*/
|
|
1013
|
+
export function styleFromDocxShell(shell) {
|
|
1014
|
+
return createStyleFromDocxStyle(shell);
|
|
1015
|
+
}
|
|
1016
|
+
/**
|
|
1017
|
+
* Minimal paragraph or character style for ensure / pending materialize.
|
|
1018
|
+
*
|
|
1019
|
+
* @private
|
|
1020
|
+
*/
|
|
1021
|
+
export function createMinimalStyle(styleId, type) {
|
|
1022
|
+
if (type === 'paragraph') {
|
|
1023
|
+
return ParagraphStyle.createMinimal(styleId);
|
|
1024
|
+
}
|
|
1025
|
+
return CharacterStyle.createMinimal(styleId);
|
|
1026
|
+
}
|