@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,692 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview
|
|
3
|
+
*
|
|
4
|
+
* New ParagraphItem-based field model (Phase 1 of field DOM refactor).
|
|
5
|
+
*
|
|
6
|
+
* This module provides the refactored Field and FieldMark classes that extend
|
|
7
|
+
* ParagraphItem directly and appear in Paragraph.items without feature wrappers.
|
|
8
|
+
*
|
|
9
|
+
* The old facade Field (currently in index.ts) wraps SimpleField/ComplexField.
|
|
10
|
+
* The new Field (this module) represents a begin marker in the paragraph item stream.
|
|
11
|
+
*
|
|
12
|
+
* Migration path:
|
|
13
|
+
* 1. Add these new classes alongside existing Field facade
|
|
14
|
+
* 2. New code uses ParagraphItem-based classes directly from paragraph.items
|
|
15
|
+
* 3. Eventually deprecate and remove old facade in Phase 2+
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
var __extends = (this && this.__extends) || (function () {
|
|
20
|
+
var extendStatics = function (d, b) {
|
|
21
|
+
extendStatics = Object.setPrototypeOf ||
|
|
22
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
23
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
24
|
+
return extendStatics(d, b);
|
|
25
|
+
};
|
|
26
|
+
return function (d, b) {
|
|
27
|
+
extendStatics(d, b);
|
|
28
|
+
function __() { this.constructor = d; }
|
|
29
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
30
|
+
};
|
|
31
|
+
})();
|
|
32
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
33
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
34
|
+
if (!m) return o;
|
|
35
|
+
var i = m.call(o), r, ar = [], e;
|
|
36
|
+
try {
|
|
37
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
38
|
+
}
|
|
39
|
+
catch (error) { e = { error: error }; }
|
|
40
|
+
finally {
|
|
41
|
+
try {
|
|
42
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
43
|
+
}
|
|
44
|
+
finally { if (e) throw e.error; }
|
|
45
|
+
}
|
|
46
|
+
return ar;
|
|
47
|
+
};
|
|
48
|
+
var __spread = (this && this.__spread) || function () {
|
|
49
|
+
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
var __values = (this && this.__values) || function (o) {
|
|
53
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
|
54
|
+
if (m) return m.call(o);
|
|
55
|
+
return {
|
|
56
|
+
next: function () {
|
|
57
|
+
if (o && i >= o.length) o = void 0;
|
|
58
|
+
return { value: o && o[i++], done: !o };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
import { DocxError } from '../../core/errors/docx-error';
|
|
63
|
+
import { ParagraphItem } from '../document/paragraph-item';
|
|
64
|
+
import { TextRange, WireRunGroup } from '../document/text-range';
|
|
65
|
+
import { wmlAttr, wmlElement } from '../document/wml';
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// FieldMarkType and FieldMark
|
|
68
|
+
// ============================================================================
|
|
69
|
+
/**
|
|
70
|
+
* Marker type for field boundaries.
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
export var FieldMarkType = {
|
|
74
|
+
Separator: 'separate',
|
|
75
|
+
End: 'end',
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Field boundary marker (separator or end position).
|
|
79
|
+
*
|
|
80
|
+
* Represents `w:fldChar` with `fldCharType="separate"` or `"end"`.
|
|
81
|
+
* The begin marker is represented by the Field class itself.
|
|
82
|
+
*
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
var FieldMark = /** @class */ (function (_super) {
|
|
86
|
+
__extends(FieldMark, _super);
|
|
87
|
+
/**
|
|
88
|
+
* Create a field mark (separator or end).
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
function FieldMark(type, fldLock, dirty, extras, wireGroup) {
|
|
92
|
+
var _this = _super.call(this) || this;
|
|
93
|
+
_this.typeValue = type;
|
|
94
|
+
_this.fldLockValue = fldLock;
|
|
95
|
+
_this.dirtyValue = dirty;
|
|
96
|
+
_this.extrasValue = extras;
|
|
97
|
+
_this.wireGroupValue = wireGroup != null ? wireGroup : new WireRunGroup();
|
|
98
|
+
return _this;
|
|
99
|
+
}
|
|
100
|
+
Object.defineProperty(FieldMark.prototype, "wireGroup", {
|
|
101
|
+
/**
|
|
102
|
+
* @private Shared `w:r` identity so fldChar serializes under `w:r`.
|
|
103
|
+
*/
|
|
104
|
+
get: function () {
|
|
105
|
+
return this.wireGroupValue;
|
|
106
|
+
},
|
|
107
|
+
enumerable: true,
|
|
108
|
+
configurable: true
|
|
109
|
+
});
|
|
110
|
+
Object.defineProperty(FieldMark.prototype, "fieldMarkType", {
|
|
111
|
+
/**
|
|
112
|
+
* The marker type (Separator or End).
|
|
113
|
+
*/
|
|
114
|
+
get: function () {
|
|
115
|
+
return this.typeValue;
|
|
116
|
+
},
|
|
117
|
+
enumerable: true,
|
|
118
|
+
configurable: true
|
|
119
|
+
});
|
|
120
|
+
/**
|
|
121
|
+
* Unmodeled child elements (includes w:ffData, etc).
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
FieldMark.prototype.childElements = function () {
|
|
125
|
+
return this.extrasValue;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* @private
|
|
129
|
+
*/
|
|
130
|
+
FieldMark.prototype.toOpenXml = function () {
|
|
131
|
+
var attributes = [
|
|
132
|
+
wmlAttr('fldCharType', this.typeValue)
|
|
133
|
+
];
|
|
134
|
+
if (this.fldLockValue !== undefined) {
|
|
135
|
+
attributes.push(wmlAttr('fldLock', this.fldLockValue ? '1' : '0'));
|
|
136
|
+
}
|
|
137
|
+
if (this.dirtyValue !== undefined) {
|
|
138
|
+
attributes.push(wmlAttr('dirty', this.dirtyValue ? '1' : '0'));
|
|
139
|
+
}
|
|
140
|
+
return wmlElement('fldChar', {
|
|
141
|
+
attributes: attributes,
|
|
142
|
+
children: __spread(this.extrasValue)
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
return FieldMark;
|
|
146
|
+
}(ParagraphItem));
|
|
147
|
+
export { FieldMark };
|
|
148
|
+
/**
|
|
149
|
+
* Field begin marker (ParagraphItem-based).
|
|
150
|
+
*
|
|
151
|
+
* Represents `w:fldChar` with `fldCharType="begin"` and acts as a
|
|
152
|
+
* paragraph item itself, providing public field APIs.
|
|
153
|
+
*
|
|
154
|
+
* Structural model:
|
|
155
|
+
* - Field (begin) → instruction TextRange(s) → FieldMark(separate) → result → FieldMark(end)
|
|
156
|
+
*
|
|
157
|
+
* @private
|
|
158
|
+
*/
|
|
159
|
+
var Field = /** @class */ (function (_super) {
|
|
160
|
+
__extends(Field, _super);
|
|
161
|
+
/**
|
|
162
|
+
* Create a field begin marker.
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
function Field(type, fldLock, dirty, extras, wireGroup) {
|
|
166
|
+
var _this = _super.call(this) || this;
|
|
167
|
+
_this.typeValue = type;
|
|
168
|
+
_this.fldLockValue = fldLock;
|
|
169
|
+
_this.dirtyValue = dirty;
|
|
170
|
+
_this.extrasValue = extras;
|
|
171
|
+
_this.wireGroupValue = wireGroup != null ? wireGroup : new WireRunGroup();
|
|
172
|
+
return _this;
|
|
173
|
+
}
|
|
174
|
+
Object.defineProperty(Field.prototype, "wireGroup", {
|
|
175
|
+
/**
|
|
176
|
+
* @private Shared `w:r` identity so begin fldChar serializes under `w:r`.
|
|
177
|
+
*/
|
|
178
|
+
get: function () {
|
|
179
|
+
return this.wireGroupValue;
|
|
180
|
+
},
|
|
181
|
+
enumerable: true,
|
|
182
|
+
configurable: true
|
|
183
|
+
});
|
|
184
|
+
Object.defineProperty(Field.prototype, "fieldType", {
|
|
185
|
+
/**
|
|
186
|
+
* The field type (PAGE, NUMPAGES, IF, MERGEFIELD, HYPERLINK).
|
|
187
|
+
*/
|
|
188
|
+
get: function () {
|
|
189
|
+
return this.typeValue;
|
|
190
|
+
},
|
|
191
|
+
enumerable: true,
|
|
192
|
+
configurable: true
|
|
193
|
+
});
|
|
194
|
+
Object.defineProperty(Field.prototype, "fieldCode", {
|
|
195
|
+
/**
|
|
196
|
+
* Complete field instruction (e.g., " PAGE ", " MERGEFIELD Name ").
|
|
197
|
+
*
|
|
198
|
+
* Getter: Concatenates all directly owned instruction TextRanges.
|
|
199
|
+
* Setter: Updates first instruction TextRange, clears others.
|
|
200
|
+
*/
|
|
201
|
+
get: function () {
|
|
202
|
+
var paragraph = this.findParagraph();
|
|
203
|
+
if (paragraph === undefined) {
|
|
204
|
+
return '';
|
|
205
|
+
}
|
|
206
|
+
var ranges = collectFieldInstructionRanges(paragraph, this);
|
|
207
|
+
return concatenateTextRanges(ranges);
|
|
208
|
+
},
|
|
209
|
+
set: function (value) {
|
|
210
|
+
if (value.trim().length === 0) {
|
|
211
|
+
throw new DocxError('content/invalid-field', 'Field instruction must not be empty');
|
|
212
|
+
}
|
|
213
|
+
var keywordMatch = /^\s*(\S+)/.exec(value);
|
|
214
|
+
var keyword = keywordMatch !== null ? keywordMatch[1].toUpperCase() : '';
|
|
215
|
+
if (keyword !== this.typeValue) {
|
|
216
|
+
throw new DocxError('content/invalid-field', 'Field instruction keyword must match fieldType ' + this.typeValue);
|
|
217
|
+
}
|
|
218
|
+
var paragraph = this.findParagraph();
|
|
219
|
+
if (paragraph === undefined) {
|
|
220
|
+
throw new DocxError('content/invalid-field', 'Field is not attached to a paragraph');
|
|
221
|
+
}
|
|
222
|
+
var ranges = collectFieldInstructionRanges(paragraph, this);
|
|
223
|
+
if (ranges.length > 0) {
|
|
224
|
+
var first = ranges[0];
|
|
225
|
+
if (first !== undefined) {
|
|
226
|
+
var trimmed = value.trim();
|
|
227
|
+
var padded = ' ' + trimmed + ' ';
|
|
228
|
+
first.text = padded;
|
|
229
|
+
// Clear remaining ranges
|
|
230
|
+
for (var i = 1; i < ranges.length; i += 1) {
|
|
231
|
+
var r = ranges[i];
|
|
232
|
+
if (r !== undefined) {
|
|
233
|
+
r.text = '';
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
enumerable: true,
|
|
240
|
+
configurable: true
|
|
241
|
+
});
|
|
242
|
+
Object.defineProperty(Field.prototype, "fieldValue", {
|
|
243
|
+
/**
|
|
244
|
+
* Cached field result text (read-only).
|
|
245
|
+
*/
|
|
246
|
+
get: function () {
|
|
247
|
+
return this.text;
|
|
248
|
+
},
|
|
249
|
+
enumerable: true,
|
|
250
|
+
configurable: true
|
|
251
|
+
});
|
|
252
|
+
Object.defineProperty(Field.prototype, "text", {
|
|
253
|
+
/**
|
|
254
|
+
* Visible field result text.
|
|
255
|
+
*/
|
|
256
|
+
get: function () {
|
|
257
|
+
var paragraph = this.findParagraph();
|
|
258
|
+
if (paragraph === undefined) {
|
|
259
|
+
return '';
|
|
260
|
+
}
|
|
261
|
+
var ranges = collectFieldResultTextRanges(paragraph, this);
|
|
262
|
+
return concatenateTextRanges(ranges);
|
|
263
|
+
},
|
|
264
|
+
set: function (value) {
|
|
265
|
+
var paragraph = this.findParagraph();
|
|
266
|
+
if (paragraph === undefined) {
|
|
267
|
+
throw new DocxError('content/invalid-field', 'Field is not attached to a paragraph');
|
|
268
|
+
}
|
|
269
|
+
var ranges = collectFieldResultTextRanges(paragraph, this);
|
|
270
|
+
if (ranges.length === 0) {
|
|
271
|
+
throw new DocxError('content/invalid-field', 'Field has no text result');
|
|
272
|
+
}
|
|
273
|
+
var first = ranges[0];
|
|
274
|
+
if (first !== undefined) {
|
|
275
|
+
first.text = value;
|
|
276
|
+
for (var i = 1; i < ranges.length; i += 1) {
|
|
277
|
+
var r = ranges[i];
|
|
278
|
+
if (r !== undefined) {
|
|
279
|
+
r.text = '';
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
enumerable: true,
|
|
285
|
+
configurable: true
|
|
286
|
+
});
|
|
287
|
+
Object.defineProperty(Field.prototype, "characterFormat", {
|
|
288
|
+
/**
|
|
289
|
+
* Character formatting of the first result TextRange.
|
|
290
|
+
*/
|
|
291
|
+
get: function () {
|
|
292
|
+
var paragraph = this.findParagraph();
|
|
293
|
+
if (paragraph === undefined) {
|
|
294
|
+
throw new DocxError('content/invalid-field', 'Field is not attached to a paragraph');
|
|
295
|
+
}
|
|
296
|
+
var range = this.firstResultTextRange(paragraph);
|
|
297
|
+
if (range === undefined) {
|
|
298
|
+
throw new DocxError('content/invalid-field', 'Field does not contain a text result');
|
|
299
|
+
}
|
|
300
|
+
return range.characterFormat;
|
|
301
|
+
},
|
|
302
|
+
enumerable: true,
|
|
303
|
+
configurable: true
|
|
304
|
+
});
|
|
305
|
+
/**
|
|
306
|
+
* @private
|
|
307
|
+
* Begin marker: `w:fldChar` with `w:fldCharType="begin"` (ECMA-376-1 §17.16.18).
|
|
308
|
+
*/
|
|
309
|
+
Field.prototype.toOpenXml = function () {
|
|
310
|
+
var attributes = [
|
|
311
|
+
wmlAttr('fldCharType', 'begin'),
|
|
312
|
+
];
|
|
313
|
+
if (this.fldLockValue !== undefined) {
|
|
314
|
+
attributes.push(wmlAttr('fldLock', this.fldLockValue ? '1' : '0'));
|
|
315
|
+
}
|
|
316
|
+
if (this.dirtyValue !== undefined) {
|
|
317
|
+
attributes.push(wmlAttr('dirty', this.dirtyValue ? '1' : '0'));
|
|
318
|
+
}
|
|
319
|
+
return wmlElement('fldChar', {
|
|
320
|
+
attributes: attributes,
|
|
321
|
+
children: __spread(this.extrasValue)
|
|
322
|
+
});
|
|
323
|
+
};
|
|
324
|
+
// Private helpers
|
|
325
|
+
Field.prototype.findParagraph = function () {
|
|
326
|
+
var owner = this.owner;
|
|
327
|
+
// Check if owner is a Paragraph by duck-typing
|
|
328
|
+
if (owner === undefined || typeof owner !== 'object') {
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
// If it has items (ParagraphItemCollection), it's likely a Paragraph
|
|
332
|
+
if ('items' in owner) {
|
|
333
|
+
return owner;
|
|
334
|
+
}
|
|
335
|
+
return undefined;
|
|
336
|
+
};
|
|
337
|
+
Field.prototype.firstResultTextRange = function (paragraph) {
|
|
338
|
+
var ranges = collectFieldResultTextRanges(paragraph, this);
|
|
339
|
+
return ranges.length > 0 ? ranges[0] : undefined;
|
|
340
|
+
};
|
|
341
|
+
return Field;
|
|
342
|
+
}(ParagraphItem));
|
|
343
|
+
export { Field };
|
|
344
|
+
/**
|
|
345
|
+
* IF field (conditional).
|
|
346
|
+
* @private
|
|
347
|
+
*/
|
|
348
|
+
var IfField = /** @class */ (function (_super) {
|
|
349
|
+
__extends(IfField, _super);
|
|
350
|
+
function IfField() {
|
|
351
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
352
|
+
}
|
|
353
|
+
return IfField;
|
|
354
|
+
}(Field));
|
|
355
|
+
export { IfField };
|
|
356
|
+
/**
|
|
357
|
+
* MERGEFIELD (mail merge).
|
|
358
|
+
* @private
|
|
359
|
+
*/
|
|
360
|
+
var MergeField = /** @class */ (function (_super) {
|
|
361
|
+
__extends(MergeField, _super);
|
|
362
|
+
function MergeField() {
|
|
363
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
364
|
+
}
|
|
365
|
+
Object.defineProperty(MergeField.prototype, "fieldName", {
|
|
366
|
+
/**
|
|
367
|
+
* Field name (first operand of MERGEFIELD instruction).
|
|
368
|
+
*/
|
|
369
|
+
get: function () {
|
|
370
|
+
var parsed = parseMergeFieldInstruction(this.fieldCode);
|
|
371
|
+
return parsed.fieldName;
|
|
372
|
+
},
|
|
373
|
+
set: function (value) {
|
|
374
|
+
var name = value.trim();
|
|
375
|
+
if (name.length === 0) {
|
|
376
|
+
throw new DocxError('content/invalid-field', 'MergeField fieldName must not be empty');
|
|
377
|
+
}
|
|
378
|
+
var parsed = parseMergeFieldInstruction(this.fieldCode);
|
|
379
|
+
parsed.fieldName = name;
|
|
380
|
+
this.fieldCode = formatMergeFieldInstruction(parsed);
|
|
381
|
+
},
|
|
382
|
+
enumerable: true,
|
|
383
|
+
configurable: true
|
|
384
|
+
});
|
|
385
|
+
return MergeField;
|
|
386
|
+
}(Field));
|
|
387
|
+
export { MergeField };
|
|
388
|
+
/**
|
|
389
|
+
* @private
|
|
390
|
+
* Determine if a TextRange is in field instruction region.
|
|
391
|
+
*/
|
|
392
|
+
export function isFieldInstructionTextRange(paragraph, target) {
|
|
393
|
+
var stack = [];
|
|
394
|
+
var items = paragraph.items.snapshot();
|
|
395
|
+
for (var index = 0; index < items.length; index += 1) {
|
|
396
|
+
var item = items[index];
|
|
397
|
+
if (item instanceof Field) {
|
|
398
|
+
stack.push({
|
|
399
|
+
field: item,
|
|
400
|
+
phase: 'instruction'
|
|
401
|
+
});
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
if (item instanceof FieldMark) {
|
|
405
|
+
if (item.fieldMarkType === FieldMarkType.Separator) {
|
|
406
|
+
var current = stack.length > 0
|
|
407
|
+
? stack[stack.length - 1]
|
|
408
|
+
: undefined;
|
|
409
|
+
if (current !== undefined) {
|
|
410
|
+
current.phase = 'result';
|
|
411
|
+
}
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
if (item.fieldMarkType === FieldMarkType.End) {
|
|
415
|
+
if (stack.length > 0) {
|
|
416
|
+
stack.pop();
|
|
417
|
+
}
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
if (item === target) {
|
|
422
|
+
if (!(item instanceof TextRange)) {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
if (stack.length === 0) {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
return stack[stack.length - 1].phase === 'instruction';
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* @private
|
|
435
|
+
* Depth-aware: collect instruction TextRanges owned directly by `field`
|
|
436
|
+
* (nested fields' instruction/result ranges are excluded).
|
|
437
|
+
*/
|
|
438
|
+
export function collectFieldInstructionRanges(paragraph, field) {
|
|
439
|
+
var ranges = [];
|
|
440
|
+
var items = paragraph.items.snapshot();
|
|
441
|
+
var depth = 0;
|
|
442
|
+
var active = false;
|
|
443
|
+
var phase = 'instruction';
|
|
444
|
+
for (var index = 0; index < items.length; index += 1) {
|
|
445
|
+
var item = items[index];
|
|
446
|
+
if (item === field) {
|
|
447
|
+
active = true;
|
|
448
|
+
depth = 0;
|
|
449
|
+
phase = 'instruction';
|
|
450
|
+
continue;
|
|
451
|
+
}
|
|
452
|
+
if (!active) {
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
if (item instanceof Field) {
|
|
456
|
+
depth += 1;
|
|
457
|
+
continue;
|
|
458
|
+
}
|
|
459
|
+
if (item instanceof FieldMark) {
|
|
460
|
+
if (item.fieldMarkType === FieldMarkType.Separator) {
|
|
461
|
+
if (depth === 0) {
|
|
462
|
+
phase = 'result';
|
|
463
|
+
}
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
if (item.fieldMarkType === FieldMarkType.End) {
|
|
467
|
+
if (depth === 0) {
|
|
468
|
+
phase = 'done';
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
depth -= 1;
|
|
472
|
+
continue;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
if (phase === 'instruction' && depth === 0 && item instanceof TextRange) {
|
|
476
|
+
ranges.push(item);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
return ranges;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* @private
|
|
483
|
+
* Depth-aware: collect result TextRanges owned directly by `field`.
|
|
484
|
+
*/
|
|
485
|
+
export function collectFieldResultTextRanges(paragraph, field) {
|
|
486
|
+
var ranges = [];
|
|
487
|
+
var items = paragraph.items.snapshot();
|
|
488
|
+
var depth = 0;
|
|
489
|
+
var active = false;
|
|
490
|
+
var phase = 'instruction';
|
|
491
|
+
for (var index = 0; index < items.length; index += 1) {
|
|
492
|
+
var item = items[index];
|
|
493
|
+
if (item === field) {
|
|
494
|
+
active = true;
|
|
495
|
+
depth = 0;
|
|
496
|
+
phase = 'instruction';
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
if (!active) {
|
|
500
|
+
continue;
|
|
501
|
+
}
|
|
502
|
+
if (item instanceof Field) {
|
|
503
|
+
depth += 1;
|
|
504
|
+
continue;
|
|
505
|
+
}
|
|
506
|
+
if (item instanceof FieldMark) {
|
|
507
|
+
if (item.fieldMarkType === FieldMarkType.Separator) {
|
|
508
|
+
if (depth === 0) {
|
|
509
|
+
phase = 'result';
|
|
510
|
+
}
|
|
511
|
+
continue;
|
|
512
|
+
}
|
|
513
|
+
if (item.fieldMarkType === FieldMarkType.End) {
|
|
514
|
+
if (depth === 0) {
|
|
515
|
+
phase = 'done';
|
|
516
|
+
break;
|
|
517
|
+
}
|
|
518
|
+
depth -= 1;
|
|
519
|
+
continue;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (phase === 'result' && depth === 0 && item instanceof TextRange) {
|
|
523
|
+
ranges.push(item);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return ranges;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* @private
|
|
530
|
+
* Depth-aware: collect direct result paragraph items for `field`.
|
|
531
|
+
*/
|
|
532
|
+
export function collectFieldResultItems(paragraph, field) {
|
|
533
|
+
var result = [];
|
|
534
|
+
var allItems = paragraph.items.snapshot();
|
|
535
|
+
var depth = 0;
|
|
536
|
+
var active = false;
|
|
537
|
+
var phase = 'instruction';
|
|
538
|
+
for (var index = 0; index < allItems.length; index += 1) {
|
|
539
|
+
var item = allItems[index];
|
|
540
|
+
if (item === field) {
|
|
541
|
+
active = true;
|
|
542
|
+
depth = 0;
|
|
543
|
+
phase = 'instruction';
|
|
544
|
+
continue;
|
|
545
|
+
}
|
|
546
|
+
if (!active) {
|
|
547
|
+
continue;
|
|
548
|
+
}
|
|
549
|
+
if (item instanceof Field) {
|
|
550
|
+
if (phase === 'result' && depth === 0) {
|
|
551
|
+
result.push(item);
|
|
552
|
+
}
|
|
553
|
+
depth += 1;
|
|
554
|
+
continue;
|
|
555
|
+
}
|
|
556
|
+
if (item instanceof FieldMark) {
|
|
557
|
+
if (item.fieldMarkType === FieldMarkType.Separator) {
|
|
558
|
+
if (depth === 0) {
|
|
559
|
+
phase = 'result';
|
|
560
|
+
}
|
|
561
|
+
continue;
|
|
562
|
+
}
|
|
563
|
+
if (item.fieldMarkType === FieldMarkType.End) {
|
|
564
|
+
if (depth === 0) {
|
|
565
|
+
phase = 'done';
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
depth -= 1;
|
|
569
|
+
continue;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
if (phase === 'result' && depth === 0) {
|
|
573
|
+
result.push(item);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return result;
|
|
577
|
+
}
|
|
578
|
+
// ============================================================================
|
|
579
|
+
// Serialization Helpers
|
|
580
|
+
// ============================================================================
|
|
581
|
+
/**
|
|
582
|
+
* @private
|
|
583
|
+
* Concatenate text from TextRanges.
|
|
584
|
+
*/
|
|
585
|
+
export function concatenateTextRanges(ranges) {
|
|
586
|
+
var e_1, _a;
|
|
587
|
+
var result = '';
|
|
588
|
+
try {
|
|
589
|
+
for (var ranges_1 = __values(ranges), ranges_1_1 = ranges_1.next(); !ranges_1_1.done; ranges_1_1 = ranges_1.next()) {
|
|
590
|
+
var range = ranges_1_1.value;
|
|
591
|
+
result += range.text;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
595
|
+
finally {
|
|
596
|
+
try {
|
|
597
|
+
if (ranges_1_1 && !ranges_1_1.done && (_a = ranges_1.return)) _a.call(ranges_1);
|
|
598
|
+
}
|
|
599
|
+
finally { if (e_1) throw e_1.error; }
|
|
600
|
+
}
|
|
601
|
+
return result;
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* @private
|
|
605
|
+
* Parse MERGEFIELD instruction to extract field name.
|
|
606
|
+
*/
|
|
607
|
+
function parseMergeFieldInstruction(instruction) {
|
|
608
|
+
var tokens = tokenizeFieldInstruction(instruction);
|
|
609
|
+
var keyword = tokens[0];
|
|
610
|
+
var fieldName = tokens[1] || '';
|
|
611
|
+
return {
|
|
612
|
+
fieldName: fieldName,
|
|
613
|
+
tokens: tokens,
|
|
614
|
+
keyword: keyword
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* @private
|
|
619
|
+
* Format MERGEFIELD instruction from parsed state.
|
|
620
|
+
*/
|
|
621
|
+
function formatMergeFieldInstruction(parsed) {
|
|
622
|
+
var tokens = __spread((parsed.tokens || []));
|
|
623
|
+
if (tokens.length > 0) {
|
|
624
|
+
tokens[0] = 'MERGEFIELD';
|
|
625
|
+
}
|
|
626
|
+
else {
|
|
627
|
+
tokens.push('MERGEFIELD');
|
|
628
|
+
}
|
|
629
|
+
if (tokens.length > 1) {
|
|
630
|
+
tokens[1] = parsed.fieldName;
|
|
631
|
+
}
|
|
632
|
+
else {
|
|
633
|
+
tokens.push(parsed.fieldName);
|
|
634
|
+
}
|
|
635
|
+
// Reconstruct instruction with proper spacing
|
|
636
|
+
return " " + tokens.join(' ') + " ";
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* @private
|
|
640
|
+
* Tokenize field instruction into whitespace- and quote-delimited tokens.
|
|
641
|
+
*/
|
|
642
|
+
function tokenizeFieldInstruction(instruction) {
|
|
643
|
+
var tokens = [];
|
|
644
|
+
var source = instruction.trim();
|
|
645
|
+
var index = 0;
|
|
646
|
+
while (index < source.length) {
|
|
647
|
+
// Skip whitespace
|
|
648
|
+
while (index < source.length) {
|
|
649
|
+
var ch = source[index];
|
|
650
|
+
if (ch === undefined || !/\s/.test(ch)) {
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
index += 1;
|
|
654
|
+
}
|
|
655
|
+
if (index >= source.length) {
|
|
656
|
+
break;
|
|
657
|
+
}
|
|
658
|
+
var startChar = source[index];
|
|
659
|
+
if (startChar === '"') {
|
|
660
|
+
// Quoted token
|
|
661
|
+
index += 1;
|
|
662
|
+
var value = '';
|
|
663
|
+
while (index < source.length) {
|
|
664
|
+
var ch = source[index];
|
|
665
|
+
if (ch === undefined || ch === '"') {
|
|
666
|
+
break;
|
|
667
|
+
}
|
|
668
|
+
value += ch;
|
|
669
|
+
index += 1;
|
|
670
|
+
}
|
|
671
|
+
if (index < source.length && source[index] === '"') {
|
|
672
|
+
index += 1;
|
|
673
|
+
}
|
|
674
|
+
tokens.push(value);
|
|
675
|
+
continue;
|
|
676
|
+
}
|
|
677
|
+
// Unquoted token
|
|
678
|
+
var token = '';
|
|
679
|
+
while (index < source.length) {
|
|
680
|
+
var ch = source[index];
|
|
681
|
+
if (ch === undefined || /\s/.test(ch) || ch === '"') {
|
|
682
|
+
break;
|
|
683
|
+
}
|
|
684
|
+
token += ch;
|
|
685
|
+
index += 1;
|
|
686
|
+
}
|
|
687
|
+
if (token.length > 0) {
|
|
688
|
+
tokens.push(token);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
return tokens;
|
|
692
|
+
}
|