@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,162 @@
|
|
|
1
|
+
import { ParagraphItem, ParagraphItemOwner } from './paragraph-item';
|
|
2
|
+
import { ConcreteParagraphItem } from './text-range';
|
|
3
|
+
/**
|
|
4
|
+
* Host for {@link ParagraphItemCollection}: owns mutation gates and document link.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
*/
|
|
8
|
+
export interface ParagraphItemCollectionHost extends ParagraphItemOwner {
|
|
9
|
+
/** Gate paragraph-level authoring (detached paragraph throws). */
|
|
10
|
+
assertMutable(): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Stable mutable collection of {@link ParagraphItem} children on a paragraph.
|
|
14
|
+
*
|
|
15
|
+
* Single source of truth for order, ownership, insert/remove, hydrate, and the
|
|
16
|
+
* serialize snapshot. Indexers are own properties refreshed after each mutation
|
|
17
|
+
* (no `Proxy` — TypeScript 3.3 / ES5 target).
|
|
18
|
+
*
|
|
19
|
+
* Array-like surface mirrors {@link BodyItemCollection}: {@link count}/{@link length},
|
|
20
|
+
* numeric index, {@link add}/{@link insert}/{@link remove}/{@link removeAt}/{@link clear},
|
|
21
|
+
* {@link toArray}, iterators, and common query helpers.
|
|
22
|
+
*
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export declare class ParagraphItemCollection implements Iterable<ConcreteParagraphItem> {
|
|
26
|
+
private readonly host;
|
|
27
|
+
private readonly items;
|
|
28
|
+
private cachedCount;
|
|
29
|
+
/**
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
constructor(host: ParagraphItemCollectionHost);
|
|
33
|
+
/**
|
|
34
|
+
* Number of paragraph items in document order.
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
readonly count: number;
|
|
38
|
+
/**
|
|
39
|
+
* Alias of {@link count} for array-like consumers (`items.length`).
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
readonly length: number;
|
|
43
|
+
/**
|
|
44
|
+
* Append `item` at the end. Transfers ownership to this paragraph.
|
|
45
|
+
*
|
|
46
|
+
* @throws DetachedObjectError if the paragraph is detached, or `item` is
|
|
47
|
+
* already attached elsewhere.
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
add(item: ConcreteParagraphItem): void;
|
|
51
|
+
/**
|
|
52
|
+
* Insert `item` at `index` (`0…count` inclusive).
|
|
53
|
+
*
|
|
54
|
+
* @throws RangeError if `index` is out of range.
|
|
55
|
+
* @throws DetachedObjectError if the paragraph is detached or `item` is owned.
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
insert(index: number, item: ConcreteParagraphItem): void;
|
|
59
|
+
/**
|
|
60
|
+
* Remove `item` by identity and detach it.
|
|
61
|
+
*
|
|
62
|
+
* @throws DetachedObjectError if `item` is not in this collection.
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
remove(item: ConcreteParagraphItem): void;
|
|
66
|
+
/**
|
|
67
|
+
* Remove the item at `index` (`0…count-1`) and detach it.
|
|
68
|
+
*
|
|
69
|
+
* @throws RangeError if `index` is out of range.
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
removeAt(index: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Remove and detach every item.
|
|
75
|
+
* @public
|
|
76
|
+
*/
|
|
77
|
+
clear(): void;
|
|
78
|
+
/**
|
|
79
|
+
* @private Identity membership (reference equality).
|
|
80
|
+
*/
|
|
81
|
+
containsIdentity(item: ParagraphItem): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Index of `item` by reference, or `-1`.
|
|
84
|
+
* @public
|
|
85
|
+
*/
|
|
86
|
+
indexOf(item: ConcreteParagraphItem): number;
|
|
87
|
+
/**
|
|
88
|
+
* @private Index of `item` by reference, or `-1`.
|
|
89
|
+
*/
|
|
90
|
+
indexOfIdentity(item: ParagraphItem): number;
|
|
91
|
+
/**
|
|
92
|
+
* Ordered public items (projects feature wrappers to leaf entities).
|
|
93
|
+
* @public
|
|
94
|
+
*/
|
|
95
|
+
toArray(): ConcreteParagraphItem[];
|
|
96
|
+
/**
|
|
97
|
+
* @private Ordered storage snapshot for serialize (wrappers retained).
|
|
98
|
+
*/
|
|
99
|
+
snapshot(): ConcreteParagraphItem[];
|
|
100
|
+
/**
|
|
101
|
+
* Invoke `fn` for each item in document order.
|
|
102
|
+
* @public
|
|
103
|
+
*/
|
|
104
|
+
forEach(fn: (item: ConcreteParagraphItem, index: number) => void): void;
|
|
105
|
+
/**
|
|
106
|
+
* True when at least one item satisfies `predicate`.
|
|
107
|
+
* @public
|
|
108
|
+
*/
|
|
109
|
+
some(predicate: (item: ConcreteParagraphItem, index: number) => boolean): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* True when every item satisfies `predicate` (empty collection is true).
|
|
112
|
+
* @public
|
|
113
|
+
*/
|
|
114
|
+
every(predicate: (item: ConcreteParagraphItem, index: number) => boolean): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Items that satisfy `predicate`.
|
|
117
|
+
* @public
|
|
118
|
+
*/
|
|
119
|
+
filter(predicate: (item: ConcreteParagraphItem, index: number) => boolean): ConcreteParagraphItem[];
|
|
120
|
+
/**
|
|
121
|
+
* First item that satisfies `predicate`, or `undefined`.
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
find(predicate: (item: ConcreteParagraphItem, index: number) => boolean): ConcreteParagraphItem | undefined;
|
|
125
|
+
/**
|
|
126
|
+
* Index of the first item that satisfies `predicate`, or `-1`.
|
|
127
|
+
* @public
|
|
128
|
+
*/
|
|
129
|
+
findIndex(predicate: (item: ConcreteParagraphItem, index: number) => boolean): number;
|
|
130
|
+
/**
|
|
131
|
+
* Map items with `fn`.
|
|
132
|
+
* @public
|
|
133
|
+
*/
|
|
134
|
+
map<U>(fn: (item: ConcreteParagraphItem, index: number) => U): U[];
|
|
135
|
+
/**
|
|
136
|
+
* Iterate items in document order.
|
|
137
|
+
* @public
|
|
138
|
+
*/
|
|
139
|
+
[Symbol.iterator](): Iterator<ConcreteParagraphItem>;
|
|
140
|
+
/**
|
|
141
|
+
* @private Replace contents during parse/hydrate without authoring mutate.
|
|
142
|
+
* Detaches prior items, attaches incoming items to this host.
|
|
143
|
+
*/
|
|
144
|
+
hydrate(items: ReadonlyArray<ConcreteParagraphItem>): void;
|
|
145
|
+
/**
|
|
146
|
+
* @private Append during parse without assertMutable (owner may still be wiring).
|
|
147
|
+
*/
|
|
148
|
+
addFromParse(item: ConcreteParagraphItem): void;
|
|
149
|
+
/**
|
|
150
|
+
* @private Detach every item without clearing the array (paragraph detach).
|
|
151
|
+
*/
|
|
152
|
+
detachAll(): void;
|
|
153
|
+
/**
|
|
154
|
+
* @private Re-attach every item to this host (paragraph attach).
|
|
155
|
+
*/
|
|
156
|
+
reattachAll(): void;
|
|
157
|
+
private assertNotOwned;
|
|
158
|
+
private rebuildIndexProperties;
|
|
159
|
+
}
|
|
160
|
+
export interface ParagraphItemCollection {
|
|
161
|
+
readonly [index: number]: ConcreteParagraphItem;
|
|
162
|
+
}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { DetachedObjectError } from '../../core/errors/docx-error';
|
|
2
|
+
import { FeatureInlineParagraphItem, FeatureRunParagraphItem, } from './text-range';
|
|
3
|
+
/**
|
|
4
|
+
* Project internal feature wrappers to public leaf objects when the leaf
|
|
5
|
+
* exposes a numeric {@link EntityType} discriminant (e.g. Picture).
|
|
6
|
+
* Storage and serialize stay on the wrapper.
|
|
7
|
+
* @private
|
|
8
|
+
*/
|
|
9
|
+
function projectPublicItem(item) {
|
|
10
|
+
if (item instanceof FeatureRunParagraphItem) {
|
|
11
|
+
var value = item.value;
|
|
12
|
+
if (value != null && (typeof value.type === 'number' || typeof value.entityType === 'number')) {
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (item instanceof FeatureInlineParagraphItem) {
|
|
17
|
+
var value = item.value;
|
|
18
|
+
if (value != null && (typeof value.type === 'number' || typeof value.entityType === 'number')) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return item;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a public leaf back to the stored wrapper (identity if unprojected).
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
function resolveStoredItem(items, item) {
|
|
29
|
+
for (var i = 0; i < items.length; i += 1) {
|
|
30
|
+
var raw = items[i];
|
|
31
|
+
if (raw === item || projectPublicItem(raw) === item) {
|
|
32
|
+
return i;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return -1;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Stable mutable collection of {@link ParagraphItem} children on a paragraph.
|
|
39
|
+
*
|
|
40
|
+
* Single source of truth for order, ownership, insert/remove, hydrate, and the
|
|
41
|
+
* serialize snapshot. Indexers are own properties refreshed after each mutation
|
|
42
|
+
* (no `Proxy` — TypeScript 3.3 / ES5 target).
|
|
43
|
+
*
|
|
44
|
+
* Array-like surface mirrors {@link BodyItemCollection}: {@link count}/{@link length},
|
|
45
|
+
* numeric index, {@link add}/{@link insert}/{@link remove}/{@link removeAt}/{@link clear},
|
|
46
|
+
* {@link toArray}, iterators, and common query helpers.
|
|
47
|
+
*
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
var ParagraphItemCollection = /** @class */ (function () {
|
|
51
|
+
/**
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
function ParagraphItemCollection(host) {
|
|
55
|
+
this.host = host;
|
|
56
|
+
this.items = [];
|
|
57
|
+
this.cachedCount = 0;
|
|
58
|
+
this.rebuildIndexProperties();
|
|
59
|
+
}
|
|
60
|
+
Object.defineProperty(ParagraphItemCollection.prototype, "count", {
|
|
61
|
+
/**
|
|
62
|
+
* Number of paragraph items in document order.
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
get: function () {
|
|
66
|
+
return this.items.length;
|
|
67
|
+
},
|
|
68
|
+
enumerable: true,
|
|
69
|
+
configurable: true
|
|
70
|
+
});
|
|
71
|
+
Object.defineProperty(ParagraphItemCollection.prototype, "length", {
|
|
72
|
+
/**
|
|
73
|
+
* Alias of {@link count} for array-like consumers (`items.length`).
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
get: function () {
|
|
77
|
+
return this.count;
|
|
78
|
+
},
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Append `item` at the end. Transfers ownership to this paragraph.
|
|
84
|
+
*
|
|
85
|
+
* @throws DetachedObjectError if the paragraph is detached, or `item` is
|
|
86
|
+
* already attached elsewhere.
|
|
87
|
+
* @public
|
|
88
|
+
*/
|
|
89
|
+
ParagraphItemCollection.prototype.add = function (item) {
|
|
90
|
+
this.insert(this.items.length, item);
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Insert `item` at `index` (`0…count` inclusive).
|
|
94
|
+
*
|
|
95
|
+
* @throws RangeError if `index` is out of range.
|
|
96
|
+
* @throws DetachedObjectError if the paragraph is detached or `item` is owned.
|
|
97
|
+
* @public
|
|
98
|
+
*/
|
|
99
|
+
ParagraphItemCollection.prototype.insert = function (index, item) {
|
|
100
|
+
this.host.assertMutable();
|
|
101
|
+
if (index < 0 || index > this.items.length) {
|
|
102
|
+
throw new RangeError("Paragraph item index " + String(index) + " is out of range");
|
|
103
|
+
}
|
|
104
|
+
this.assertNotOwned(item);
|
|
105
|
+
this.items.splice(index, 0, item);
|
|
106
|
+
item.attach(this.host);
|
|
107
|
+
this.rebuildIndexProperties();
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Remove `item` by identity and detach it.
|
|
111
|
+
*
|
|
112
|
+
* @throws DetachedObjectError if `item` is not in this collection.
|
|
113
|
+
* @public
|
|
114
|
+
*/
|
|
115
|
+
ParagraphItemCollection.prototype.remove = function (item) {
|
|
116
|
+
this.host.assertMutable();
|
|
117
|
+
var at = resolveStoredItem(this.items, item);
|
|
118
|
+
if (at === -1) {
|
|
119
|
+
throw new DetachedObjectError('This paragraph item is no longer in its paragraph');
|
|
120
|
+
}
|
|
121
|
+
var raw = this.items[at];
|
|
122
|
+
this.items.splice(at, 1);
|
|
123
|
+
raw.detach();
|
|
124
|
+
this.rebuildIndexProperties();
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Remove the item at `index` (`0…count-1`) and detach it.
|
|
128
|
+
*
|
|
129
|
+
* @throws RangeError if `index` is out of range.
|
|
130
|
+
* @public
|
|
131
|
+
*/
|
|
132
|
+
ParagraphItemCollection.prototype.removeAt = function (index) {
|
|
133
|
+
this.host.assertMutable();
|
|
134
|
+
if (index < 0 || index >= this.items.length) {
|
|
135
|
+
throw new RangeError("Paragraph item index " + String(index) + " is out of range");
|
|
136
|
+
}
|
|
137
|
+
var item = this.items[index];
|
|
138
|
+
this.items.splice(index, 1);
|
|
139
|
+
item.detach();
|
|
140
|
+
this.rebuildIndexProperties();
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Remove and detach every item.
|
|
144
|
+
* @public
|
|
145
|
+
*/
|
|
146
|
+
ParagraphItemCollection.prototype.clear = function () {
|
|
147
|
+
this.host.assertMutable();
|
|
148
|
+
this.detachAll();
|
|
149
|
+
this.items.length = 0;
|
|
150
|
+
this.rebuildIndexProperties();
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* @private Identity membership (reference equality).
|
|
154
|
+
*/
|
|
155
|
+
ParagraphItemCollection.prototype.containsIdentity = function (item) {
|
|
156
|
+
return this.indexOfIdentity(item) !== -1;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Index of `item` by reference, or `-1`.
|
|
160
|
+
* @public
|
|
161
|
+
*/
|
|
162
|
+
ParagraphItemCollection.prototype.indexOf = function (item) {
|
|
163
|
+
return resolveStoredItem(this.items, item);
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* @private Index of `item` by reference, or `-1`.
|
|
167
|
+
*/
|
|
168
|
+
ParagraphItemCollection.prototype.indexOfIdentity = function (item) {
|
|
169
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
170
|
+
if (this.items[i] === item) {
|
|
171
|
+
return i;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return -1;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Ordered public items (projects feature wrappers to leaf entities).
|
|
178
|
+
* @public
|
|
179
|
+
*/
|
|
180
|
+
ParagraphItemCollection.prototype.toArray = function () {
|
|
181
|
+
var out = [];
|
|
182
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
183
|
+
out.push(projectPublicItem(this.items[i]));
|
|
184
|
+
}
|
|
185
|
+
return out;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* @private Ordered storage snapshot for serialize (wrappers retained).
|
|
189
|
+
*/
|
|
190
|
+
ParagraphItemCollection.prototype.snapshot = function () {
|
|
191
|
+
return this.items.slice();
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Invoke `fn` for each item in document order.
|
|
195
|
+
* @public
|
|
196
|
+
*/
|
|
197
|
+
ParagraphItemCollection.prototype.forEach = function (fn) {
|
|
198
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
199
|
+
fn(projectPublicItem(this.items[i]), i);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* True when at least one item satisfies `predicate`.
|
|
204
|
+
* @public
|
|
205
|
+
*/
|
|
206
|
+
ParagraphItemCollection.prototype.some = function (predicate) {
|
|
207
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
208
|
+
if (predicate(projectPublicItem(this.items[i]), i)) {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return false;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* True when every item satisfies `predicate` (empty collection is true).
|
|
216
|
+
* @public
|
|
217
|
+
*/
|
|
218
|
+
ParagraphItemCollection.prototype.every = function (predicate) {
|
|
219
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
220
|
+
if (!predicate(projectPublicItem(this.items[i]), i)) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return true;
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Items that satisfy `predicate`.
|
|
228
|
+
* @public
|
|
229
|
+
*/
|
|
230
|
+
ParagraphItemCollection.prototype.filter = function (predicate) {
|
|
231
|
+
var out = [];
|
|
232
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
233
|
+
var item = projectPublicItem(this.items[i]);
|
|
234
|
+
if (predicate(item, i)) {
|
|
235
|
+
out.push(item);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return out;
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* First item that satisfies `predicate`, or `undefined`.
|
|
242
|
+
* @public
|
|
243
|
+
*/
|
|
244
|
+
ParagraphItemCollection.prototype.find = function (predicate) {
|
|
245
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
246
|
+
var item = projectPublicItem(this.items[i]);
|
|
247
|
+
if (predicate(item, i)) {
|
|
248
|
+
return item;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return undefined;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Index of the first item that satisfies `predicate`, or `-1`.
|
|
255
|
+
* @public
|
|
256
|
+
*/
|
|
257
|
+
ParagraphItemCollection.prototype.findIndex = function (predicate) {
|
|
258
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
259
|
+
if (predicate(projectPublicItem(this.items[i]), i)) {
|
|
260
|
+
return i;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return -1;
|
|
264
|
+
};
|
|
265
|
+
/**
|
|
266
|
+
* Map items with `fn`.
|
|
267
|
+
* @public
|
|
268
|
+
*/
|
|
269
|
+
ParagraphItemCollection.prototype.map = function (fn) {
|
|
270
|
+
var out = [];
|
|
271
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
272
|
+
out.push(fn(projectPublicItem(this.items[i]), i));
|
|
273
|
+
}
|
|
274
|
+
return out;
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* Iterate items in document order.
|
|
278
|
+
* @public
|
|
279
|
+
*/
|
|
280
|
+
ParagraphItemCollection.prototype[Symbol.iterator] = function () {
|
|
281
|
+
var items = this.items.slice();
|
|
282
|
+
var i = 0;
|
|
283
|
+
return {
|
|
284
|
+
next: function () {
|
|
285
|
+
if (i >= items.length) {
|
|
286
|
+
return { done: true, value: undefined };
|
|
287
|
+
}
|
|
288
|
+
var value = projectPublicItem(items[i]);
|
|
289
|
+
i += 1;
|
|
290
|
+
return { done: false, value: value };
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* @private Replace contents during parse/hydrate without authoring mutate.
|
|
296
|
+
* Detaches prior items, attaches incoming items to this host.
|
|
297
|
+
*/
|
|
298
|
+
ParagraphItemCollection.prototype.hydrate = function (items) {
|
|
299
|
+
this.detachAll();
|
|
300
|
+
this.items.length = 0;
|
|
301
|
+
for (var i = 0; i < items.length; i += 1) {
|
|
302
|
+
var item = items[i];
|
|
303
|
+
this.items.push(item);
|
|
304
|
+
item.attach(this.host);
|
|
305
|
+
}
|
|
306
|
+
this.rebuildIndexProperties();
|
|
307
|
+
};
|
|
308
|
+
/**
|
|
309
|
+
* @private Append during parse without assertMutable (owner may still be wiring).
|
|
310
|
+
*/
|
|
311
|
+
ParagraphItemCollection.prototype.addFromParse = function (item) {
|
|
312
|
+
this.items.push(item);
|
|
313
|
+
item.attach(this.host);
|
|
314
|
+
this.rebuildIndexProperties();
|
|
315
|
+
};
|
|
316
|
+
/**
|
|
317
|
+
* @private Detach every item without clearing the array (paragraph detach).
|
|
318
|
+
*/
|
|
319
|
+
ParagraphItemCollection.prototype.detachAll = function () {
|
|
320
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
321
|
+
this.items[i].detach();
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* @private Re-attach every item to this host (paragraph attach).
|
|
326
|
+
*/
|
|
327
|
+
ParagraphItemCollection.prototype.reattachAll = function () {
|
|
328
|
+
for (var i = 0; i < this.items.length; i += 1) {
|
|
329
|
+
this.items[i].attach(this.host);
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
ParagraphItemCollection.prototype.assertNotOwned = function (item) {
|
|
333
|
+
if (item.owner !== undefined) {
|
|
334
|
+
if (item.owner === this.host && this.containsIdentity(item)) {
|
|
335
|
+
throw new DetachedObjectError('Paragraph item is already in this paragraph');
|
|
336
|
+
}
|
|
337
|
+
throw new DetachedObjectError('Paragraph item is already attached');
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
ParagraphItemCollection.prototype.rebuildIndexProperties = function () {
|
|
341
|
+
var nextLen = this.items.length;
|
|
342
|
+
var prevLen = this.cachedCount;
|
|
343
|
+
var limit = prevLen > nextLen ? prevLen : nextLen;
|
|
344
|
+
for (var i = 0; i < limit; i += 1) {
|
|
345
|
+
var key = String(i);
|
|
346
|
+
if (i < nextLen) {
|
|
347
|
+
var value = projectPublicItem(this.items[i]);
|
|
348
|
+
Object.defineProperty(this, key, {
|
|
349
|
+
value: value,
|
|
350
|
+
writable: false,
|
|
351
|
+
enumerable: true,
|
|
352
|
+
configurable: true,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
delete this[key];
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
this.cachedCount = nextLen;
|
|
360
|
+
};
|
|
361
|
+
return ParagraphItemCollection;
|
|
362
|
+
}());
|
|
363
|
+
export { ParagraphItemCollection };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner that validates {@link ParagraphItem} attachment for mutation.
|
|
3
|
+
*
|
|
4
|
+
* Implemented by {@link Paragraph} (and nested feature owners that host nested
|
|
5
|
+
* text ranges). Collection mutations go through the paragraph collection; this
|
|
6
|
+
* interface is the mutation gate for item property writes.
|
|
7
|
+
*
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export interface ParagraphItemOwner {
|
|
11
|
+
/**
|
|
12
|
+
* Assert that `target` is still attached to this owner and that the owner
|
|
13
|
+
* itself is mutable. Throws {@link DetachedObjectError} otherwise.
|
|
14
|
+
*/
|
|
15
|
+
assertAttachedItem(target: ParagraphItem): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Base class for every modeled child of {@link Paragraph.items}.
|
|
19
|
+
*
|
|
20
|
+
* Concrete subclasses include {@link TextRange}, breaks, symbols, tabs,
|
|
21
|
+
* feature-owned items, and opaque round-trip holders. Ownership is exclusive:
|
|
22
|
+
* an item is attached to at most one owner (normally a paragraph via its
|
|
23
|
+
* {@link ParagraphItemCollection}).
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export declare abstract class ParagraphItem {
|
|
28
|
+
private ownerValue;
|
|
29
|
+
/**
|
|
30
|
+
* Document context for never-attached authoring (`new TextRange(document)`).
|
|
31
|
+
* Cleared only when the item is removed after having been attached.
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private documentContextValue;
|
|
35
|
+
/**
|
|
36
|
+
* True once this item has been attached at least once and later detached.
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
private wasRemovedValue;
|
|
40
|
+
/**
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
constructor();
|
|
44
|
+
/**
|
|
45
|
+
* Owning paragraph/item host when attached; `undefined` when detached.
|
|
46
|
+
*
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
readonly owner: ParagraphItemOwner | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* @private Document context for unattached authoring.
|
|
52
|
+
*/
|
|
53
|
+
readonly documentContext: unknown | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* @private Bind document context without attaching to a paragraph.
|
|
56
|
+
*/
|
|
57
|
+
setDocumentContext(document: unknown | undefined): void;
|
|
58
|
+
/**
|
|
59
|
+
* @private Attach to an owner (collection / nested host only).
|
|
60
|
+
*/
|
|
61
|
+
attach(owner: ParagraphItemOwner): void;
|
|
62
|
+
/**
|
|
63
|
+
* @private Detach from the current owner. Further authoring mutates throw
|
|
64
|
+
* unless the item was never attached and still has document context.
|
|
65
|
+
*/
|
|
66
|
+
detach(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Hook for subclasses that hold nested content (feature inlines, …).
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
protected onDetached(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Ensure this item is still attached and the owner accepts mutation.
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
assertAttached(): void;
|
|
77
|
+
/**
|
|
78
|
+
* @private Convenience for property setters.
|
|
79
|
+
* Allows mutation when the item has document context and was never attached,
|
|
80
|
+
* or is currently attached. Throws after removal from a parent.
|
|
81
|
+
*/
|
|
82
|
+
protected mutate(): void;
|
|
83
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { DetachedObjectError } from '../../core/errors/docx-error';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for every modeled child of {@link Paragraph.items}.
|
|
4
|
+
*
|
|
5
|
+
* Concrete subclasses include {@link TextRange}, breaks, symbols, tabs,
|
|
6
|
+
* feature-owned items, and opaque round-trip holders. Ownership is exclusive:
|
|
7
|
+
* an item is attached to at most one owner (normally a paragraph via its
|
|
8
|
+
* {@link ParagraphItemCollection}).
|
|
9
|
+
*
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
var ParagraphItem = /** @class */ (function () {
|
|
13
|
+
/**
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
function ParagraphItem() {
|
|
17
|
+
this.ownerValue = undefined;
|
|
18
|
+
this.documentContextValue = undefined;
|
|
19
|
+
this.wasRemovedValue = false;
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(ParagraphItem.prototype, "owner", {
|
|
22
|
+
/**
|
|
23
|
+
* Owning paragraph/item host when attached; `undefined` when detached.
|
|
24
|
+
*
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
get: function () {
|
|
28
|
+
return this.ownerValue;
|
|
29
|
+
},
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(ParagraphItem.prototype, "documentContext", {
|
|
34
|
+
/**
|
|
35
|
+
* @private Document context for unattached authoring.
|
|
36
|
+
*/
|
|
37
|
+
get: function () {
|
|
38
|
+
return this.documentContextValue;
|
|
39
|
+
},
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* @private Bind document context without attaching to a paragraph.
|
|
45
|
+
*/
|
|
46
|
+
ParagraphItem.prototype.setDocumentContext = function (document) {
|
|
47
|
+
this.documentContextValue = document;
|
|
48
|
+
this.wasRemovedValue = false;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @private Attach to an owner (collection / nested host only).
|
|
52
|
+
*/
|
|
53
|
+
ParagraphItem.prototype.attach = function (owner) {
|
|
54
|
+
this.ownerValue = owner;
|
|
55
|
+
this.wasRemovedValue = false;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @private Detach from the current owner. Further authoring mutates throw
|
|
59
|
+
* unless the item was never attached and still has document context.
|
|
60
|
+
*/
|
|
61
|
+
ParagraphItem.prototype.detach = function () {
|
|
62
|
+
if (this.ownerValue !== undefined) {
|
|
63
|
+
this.wasRemovedValue = true;
|
|
64
|
+
this.documentContextValue = undefined;
|
|
65
|
+
}
|
|
66
|
+
this.ownerValue = undefined;
|
|
67
|
+
this.onDetached();
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Hook for subclasses that hold nested content (feature inlines, …).
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
ParagraphItem.prototype.onDetached = function () {
|
|
74
|
+
// default no-op
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Ensure this item is still attached and the owner accepts mutation.
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
ParagraphItem.prototype.assertAttached = function () {
|
|
81
|
+
if (this.ownerValue === undefined) {
|
|
82
|
+
throw new DetachedObjectError('This paragraph item is no longer attached');
|
|
83
|
+
}
|
|
84
|
+
this.ownerValue.assertAttachedItem(this);
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* @private Convenience for property setters.
|
|
88
|
+
* Allows mutation when the item has document context and was never attached,
|
|
89
|
+
* or is currently attached. Throws after removal from a parent.
|
|
90
|
+
*/
|
|
91
|
+
ParagraphItem.prototype.mutate = function () {
|
|
92
|
+
if (this.ownerValue !== undefined) {
|
|
93
|
+
this.ownerValue.assertAttachedItem(this);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (!this.wasRemovedValue && this.documentContextValue !== undefined) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
throw new DetachedObjectError('This paragraph item is no longer attached');
|
|
100
|
+
};
|
|
101
|
+
return ParagraphItem;
|
|
102
|
+
}());
|
|
103
|
+
export { ParagraphItem };
|