docxmlater 10.4.1 → 11.0.4
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 +3 -3
- package/dist/constants/legacyCompatFlags.d.ts +1 -1
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/core/Document.d.ts +74 -67
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +605 -414
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +11 -10
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +19 -19
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentEvents.d.ts +39 -0
- package/dist/core/DocumentEvents.d.ts.map +1 -0
- package/dist/core/DocumentEvents.js +51 -0
- package/dist/core/DocumentEvents.js.map +1 -0
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +72 -52
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2056 -1073
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts +3 -3
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +31 -31
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/ElementRegistry.d.ts +22 -0
- package/dist/core/ElementRegistry.d.ts.map +1 -0
- package/dist/core/ElementRegistry.js +27 -0
- package/dist/core/ElementRegistry.js.map +1 -0
- package/dist/core/Relationship.js +4 -4
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +32 -32
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.d.ts +1 -1
- package/dist/elements/AlternateContent.d.ts.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts +6 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +19 -3
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js +7 -7
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts +2 -2
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +4 -4
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts +2 -2
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +9 -9
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +9 -4
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -0
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.d.ts +1 -1
- package/dist/elements/CustomXml.d.ts.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts +2 -2
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +9 -9
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +11 -11
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts +9 -5
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +21 -9
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +10 -10
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/Footer.d.ts +3 -3
- package/dist/elements/Footer.d.ts.map +1 -1
- package/dist/elements/Footer.js +5 -5
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts +2 -2
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +9 -9
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +11 -11
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.d.ts +3 -3
- package/dist/elements/Header.d.ts.map +1 -1
- package/dist/elements/Header.js +5 -5
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.d.ts +2 -2
- package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -5
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +29 -29
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +67 -67
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +4 -4
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.d.ts +3 -3
- package/dist/elements/ImageRun.d.ts.map +1 -1
- package/dist/elements/ImageRun.js +2 -2
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.d.ts +1 -1
- package/dist/elements/MathElement.d.ts.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +34 -19
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +286 -231
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.d.ts +1 -1
- package/dist/elements/PreservedElement.d.ts.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts +2 -2
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts +14 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js +46 -8
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/RegisteredBodyElement.d.ts +15 -0
- package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
- package/dist/elements/RegisteredBodyElement.js +44 -0
- package/dist/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/elements/Revision.d.ts +8 -8
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +12 -12
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.d.ts +3 -3
- package/dist/elements/RevisionContent.d.ts.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts +2 -2
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +2 -2
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -10
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +199 -173
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts +4 -2
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +152 -145
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts +3 -3
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +12 -12
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +3 -3
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +39 -39
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +16 -10
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +118 -89
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +11 -11
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +108 -78
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js +3 -3
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +2 -2
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.d.ts +2 -2
- package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
- package/dist/elements/TableOfContentsElement.js +5 -5
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts +18 -7
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +127 -74
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts +4 -4
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +6 -6
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/esm/constants/legacyCompatFlags.js +97 -0
- package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
- package/dist/esm/constants/limits.js +36 -0
- package/dist/esm/constants/limits.js.map +1 -0
- package/dist/esm/core/Document.js +8498 -0
- package/dist/esm/core/Document.js.map +1 -0
- package/dist/esm/core/DocumentContent.js +190 -0
- package/dist/esm/core/DocumentContent.js.map +1 -0
- package/dist/esm/core/DocumentEvents.js +47 -0
- package/dist/esm/core/DocumentEvents.js.map +1 -0
- package/dist/esm/core/DocumentGenerator.js +764 -0
- package/dist/esm/core/DocumentGenerator.js.map +1 -0
- package/dist/esm/core/DocumentIdManager.js +67 -0
- package/dist/esm/core/DocumentIdManager.js.map +1 -0
- package/dist/esm/core/DocumentParser.js +8760 -0
- package/dist/esm/core/DocumentParser.js.map +1 -0
- package/dist/esm/core/DocumentValidator.js +222 -0
- package/dist/esm/core/DocumentValidator.js.map +1 -0
- package/dist/esm/core/ElementRegistry.js +24 -0
- package/dist/esm/core/ElementRegistry.js.map +1 -0
- package/dist/esm/core/Relationship.js +177 -0
- package/dist/esm/core/Relationship.js.map +1 -0
- package/dist/esm/core/RelationshipManager.js +202 -0
- package/dist/esm/core/RelationshipManager.js.map +1 -0
- package/dist/esm/elements/AlternateContent.js +19 -0
- package/dist/esm/elements/AlternateContent.js.map +1 -0
- package/dist/esm/elements/Bookmark.js +115 -0
- package/dist/esm/elements/Bookmark.js.map +1 -0
- package/dist/esm/elements/BookmarkManager.js +99 -0
- package/dist/esm/elements/BookmarkManager.js.map +1 -0
- package/dist/esm/elements/Comment.js +181 -0
- package/dist/esm/elements/Comment.js.map +1 -0
- package/dist/esm/elements/CommentManager.js +233 -0
- package/dist/esm/elements/CommentManager.js.map +1 -0
- package/dist/esm/elements/CommonTypes.js +106 -0
- package/dist/esm/elements/CommonTypes.js.map +1 -0
- package/dist/esm/elements/CustomXml.js +19 -0
- package/dist/esm/elements/CustomXml.js.map +1 -0
- package/dist/esm/elements/Endnote.js +107 -0
- package/dist/esm/elements/Endnote.js.map +1 -0
- package/dist/esm/elements/EndnoteManager.js +119 -0
- package/dist/esm/elements/EndnoteManager.js.map +1 -0
- package/dist/esm/elements/Field.js +856 -0
- package/dist/esm/elements/Field.js.map +1 -0
- package/dist/esm/elements/FieldHelpers.js +134 -0
- package/dist/esm/elements/FieldHelpers.js.map +1 -0
- package/dist/esm/elements/FontManager.js +158 -0
- package/dist/esm/elements/FontManager.js.map +1 -0
- package/dist/esm/elements/Footer.js +141 -0
- package/dist/esm/elements/Footer.js.map +1 -0
- package/dist/esm/elements/Footnote.js +107 -0
- package/dist/esm/elements/Footnote.js.map +1 -0
- package/dist/esm/elements/FootnoteManager.js +119 -0
- package/dist/esm/elements/FootnoteManager.js.map +1 -0
- package/dist/esm/elements/Header.js +141 -0
- package/dist/esm/elements/Header.js.map +1 -0
- package/dist/esm/elements/HeaderFooterManager.js +87 -0
- package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
- package/dist/esm/elements/Hyperlink.js +586 -0
- package/dist/esm/elements/Hyperlink.js.map +1 -0
- package/dist/esm/elements/Image.js +1288 -0
- package/dist/esm/elements/Image.js.map +1 -0
- package/dist/esm/elements/ImageManager.js +223 -0
- package/dist/esm/elements/ImageManager.js.map +1 -0
- package/dist/esm/elements/ImageRun.js +29 -0
- package/dist/esm/elements/ImageRun.js.map +1 -0
- package/dist/esm/elements/MathElement.js +37 -0
- package/dist/esm/elements/MathElement.js.map +1 -0
- package/dist/esm/elements/Paragraph.js +2308 -0
- package/dist/esm/elements/Paragraph.js.map +1 -0
- package/dist/esm/elements/PreservedElement.js +29 -0
- package/dist/esm/elements/PreservedElement.js.map +1 -0
- package/dist/esm/elements/PropertyChangeTypes.js +53 -0
- package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
- package/dist/esm/elements/RangeMarker.js +219 -0
- package/dist/esm/elements/RangeMarker.js.map +1 -0
- package/dist/esm/elements/RegisteredBodyElement.js +40 -0
- package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/esm/elements/Revision.js +498 -0
- package/dist/esm/elements/Revision.js.map +1 -0
- package/dist/esm/elements/RevisionContent.js +18 -0
- package/dist/esm/elements/RevisionContent.js.map +1 -0
- package/dist/esm/elements/RevisionManager.js +486 -0
- package/dist/esm/elements/RevisionManager.js.map +1 -0
- package/dist/esm/elements/Run.js +1465 -0
- package/dist/esm/elements/Run.js.map +1 -0
- package/dist/esm/elements/Section.js +978 -0
- package/dist/esm/elements/Section.js.map +1 -0
- package/dist/esm/elements/Shape.js +493 -0
- package/dist/esm/elements/Shape.js.map +1 -0
- package/dist/esm/elements/StructuredDocumentTag.js +471 -0
- package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
- package/dist/esm/elements/Table.js +1456 -0
- package/dist/esm/elements/Table.js.map +1 -0
- package/dist/esm/elements/TableCell.js +835 -0
- package/dist/esm/elements/TableCell.js.map +1 -0
- package/dist/esm/elements/TableGridChange.js +52 -0
- package/dist/esm/elements/TableGridChange.js.map +1 -0
- package/dist/esm/elements/TableOfContents.js +389 -0
- package/dist/esm/elements/TableOfContents.js.map +1 -0
- package/dist/esm/elements/TableOfContentsElement.js +29 -0
- package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
- package/dist/esm/elements/TableRow.js +555 -0
- package/dist/esm/elements/TableRow.js.map +1 -0
- package/dist/esm/elements/TextBox.js +459 -0
- package/dist/esm/elements/TextBox.js.map +1 -0
- package/dist/esm/formatting/AbstractNumbering.js +325 -0
- package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
- package/dist/esm/formatting/NumberingInstance.js +150 -0
- package/dist/esm/formatting/NumberingInstance.js.map +1 -0
- package/dist/esm/formatting/NumberingLevel.js +608 -0
- package/dist/esm/formatting/NumberingLevel.js.map +1 -0
- package/dist/esm/formatting/NumberingManager.js +423 -0
- package/dist/esm/formatting/NumberingManager.js.map +1 -0
- package/dist/esm/formatting/Style.js +1151 -0
- package/dist/esm/formatting/Style.js.map +1 -0
- package/dist/esm/formatting/StylesManager.js +557 -0
- package/dist/esm/formatting/StylesManager.js.map +1 -0
- package/dist/esm/helpers/CleanupHelper.js +350 -0
- package/dist/esm/helpers/CleanupHelper.js.map +1 -0
- package/dist/esm/images/ImageOptimizer.js +161 -0
- package/dist/esm/images/ImageOptimizer.js.map +1 -0
- package/dist/esm/index.js +75 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.js +16 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/managers/DrawingManager.js +163 -0
- package/dist/esm/managers/DrawingManager.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/processors/ChangelogGenerator.js +970 -0
- package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
- package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
- package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/MoveOperationHelper.js +57 -0
- package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
- package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
- package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/esm/processors/RevisionWalker.js +278 -0
- package/dist/esm/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
- package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/ShadingResolver.js +66 -0
- package/dist/esm/processors/ShadingResolver.js.map +1 -0
- package/dist/esm/processors/acceptRevisions.js +416 -0
- package/dist/esm/processors/acceptRevisions.js.map +1 -0
- package/dist/esm/processors/cnfStyleDecoder.js +89 -0
- package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/esm/processors/stripTrackedChanges.js +201 -0
- package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
- package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
- package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
- package/dist/esm/tracking/TrackingContext.js +2 -0
- package/dist/esm/tracking/TrackingContext.js.map +1 -0
- package/dist/esm/types/compatibility-types.js +8 -0
- package/dist/esm/types/compatibility-types.js.map +1 -0
- package/dist/esm/types/document-types.js +2 -0
- package/dist/esm/types/document-types.js.map +1 -0
- package/dist/esm/types/formatting.js +2 -0
- package/dist/esm/types/formatting.js.map +1 -0
- package/dist/esm/types/list-types.js +2 -0
- package/dist/esm/types/list-types.js.map +1 -0
- package/dist/esm/types/settings-types.js +2 -0
- package/dist/esm/types/settings-types.js.map +1 -0
- package/dist/esm/types/styleConfig.js +2 -0
- package/dist/esm/types/styleConfig.js.map +1 -0
- package/dist/esm/utils/KeyedRegistry.js +32 -0
- package/dist/esm/utils/KeyedRegistry.js.map +1 -0
- package/dist/esm/utils/corruptionDetection.js +155 -0
- package/dist/esm/utils/corruptionDetection.js.map +1 -0
- package/dist/esm/utils/dateFormatting.js +4 -0
- package/dist/esm/utils/dateFormatting.js.map +1 -0
- package/dist/esm/utils/deepClone.js +40 -0
- package/dist/esm/utils/deepClone.js.map +1 -0
- package/dist/esm/utils/deepEqual.js +47 -0
- package/dist/esm/utils/deepEqual.js.map +1 -0
- package/dist/esm/utils/diagnostics.js +69 -0
- package/dist/esm/utils/diagnostics.js.map +1 -0
- package/dist/esm/utils/errorHandling.js +36 -0
- package/dist/esm/utils/errorHandling.js.map +1 -0
- package/dist/esm/utils/formatting.js +93 -0
- package/dist/esm/utils/formatting.js.map +1 -0
- package/dist/esm/utils/list-detection.js +148 -0
- package/dist/esm/utils/list-detection.js.map +1 -0
- package/dist/esm/utils/logger.js +205 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/parsingHelpers.js +56 -0
- package/dist/esm/utils/parsingHelpers.js.map +1 -0
- package/dist/esm/utils/textDiff.js +42 -0
- package/dist/esm/utils/textDiff.js.map +1 -0
- package/dist/esm/utils/units.js +152 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.js +285 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/esm/utils/xmlSanitization.js +54 -0
- package/dist/esm/utils/xmlSanitization.js.map +1 -0
- package/dist/esm/validation/RevisionAutoFixer.js +340 -0
- package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
- package/dist/esm/validation/RevisionValidator.js +240 -0
- package/dist/esm/validation/RevisionValidator.js.map +1 -0
- package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
- package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/esm/validation/ValidationRules.js +92 -0
- package/dist/esm/validation/ValidationRules.js.map +1 -0
- package/dist/esm/validation/index.js +4 -0
- package/dist/esm/validation/index.js.map +1 -0
- package/dist/esm/xml/XMLBuilder.js +434 -0
- package/dist/esm/xml/XMLBuilder.js.map +1 -0
- package/dist/esm/xml/XMLParser.js +486 -0
- package/dist/esm/xml/XMLParser.js.map +1 -0
- package/dist/esm/zip/ZipHandler.js +298 -0
- package/dist/esm/zip/ZipHandler.js.map +1 -0
- package/dist/esm/zip/ZipReader.js +147 -0
- package/dist/esm/zip/ZipReader.js.map +1 -0
- package/dist/esm/zip/ZipWriter.js +199 -0
- package/dist/esm/zip/ZipWriter.js.map +1 -0
- package/dist/esm/zip/errors.js +43 -0
- package/dist/esm/zip/errors.js.map +1 -0
- package/dist/esm/zip/types.js +31 -0
- package/dist/esm/zip/types.js.map +1 -0
- package/dist/formatting/AbstractNumbering.d.ts +2 -2
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +33 -33
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts +2 -2
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +7 -7
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +11 -2
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +111 -25
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +4 -4
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +28 -28
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +14 -7
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +309 -112
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +52 -52
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +15 -15
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/index.d.ts +81 -90
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +286 -317
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +16 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +42 -0
- package/dist/internal.js.map +1 -0
- package/dist/managers/DrawingManager.d.ts +3 -3
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js +12 -12
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
- package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
- package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
- package/dist/processors/ChangelogGenerator.js.map +1 -0
- package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
- package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
- package/dist/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
- package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
- package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
- package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
- package/dist/processors/MoveOperationHelper.js.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
- package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
- package/dist/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
- package/dist/processors/RevisionWalker.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.js +28 -0
- package/dist/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
- package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
- package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
- package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/processors/ShadingResolver.d.ts +6 -0
- package/dist/processors/ShadingResolver.d.ts.map +1 -0
- package/dist/{utils → processors}/ShadingResolver.js +2 -2
- package/dist/processors/ShadingResolver.js.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
- package/dist/processors/acceptRevisions.d.ts.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.js +24 -4
- package/dist/processors/acceptRevisions.js.map +1 -0
- package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
- package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
- package/dist/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/processors/stripTrackedChanges.d.ts +3 -0
- package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
- package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
- package/dist/processors/stripTrackedChanges.js.map +1 -0
- package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +38 -43
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts +8 -8
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/document-types.d.ts +28 -0
- package/dist/types/document-types.d.ts.map +1 -0
- package/dist/types/document-types.js +3 -0
- package/dist/types/document-types.js.map +1 -0
- package/dist/types/formatting.d.ts +4 -4
- package/dist/types/formatting.d.ts.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/settings-types.d.ts +6 -0
- package/dist/types/settings-types.d.ts.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/utils/KeyedRegistry.d.ts +13 -0
- package/dist/utils/KeyedRegistry.d.ts.map +1 -0
- package/dist/utils/KeyedRegistry.js +36 -0
- package/dist/utils/KeyedRegistry.js.map +1 -0
- package/dist/utils/corruptionDetection.d.ts +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js +4 -4
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/deepEqual.d.ts +2 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +50 -0
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/parsingHelpers.d.ts +1 -1
- package/dist/utils/parsingHelpers.d.ts.map +1 -1
- package/dist/utils/parsingHelpers.js +2 -2
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/validation.js +7 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js +2 -2
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts +4 -4
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +11 -11
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts +5 -4
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +29 -30
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
- package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
- package/dist/validation/ValidationRuleRegistry.js +43 -0
- package/dist/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/validation/index.d.ts +3 -3
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +10 -10
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +6 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +11 -6
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.js +6 -6
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js +8 -8
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +14 -14
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +10 -10
- package/dist/zip/ZipWriter.js.map +1 -1
- package/package.json +20 -4
- package/src/constants/legacyCompatFlags.ts +1 -1
- package/src/core/Document.ts +461 -167
- package/src/core/DocumentContent.ts +14 -11
- package/src/core/DocumentEvents.ts +90 -0
- package/src/core/DocumentGenerator.ts +49 -22
- package/src/core/DocumentParser.ts +2180 -617
- package/src/core/DocumentValidator.ts +7 -7
- package/src/core/ElementRegistry.ts +69 -0
- package/src/core/Relationship.ts +1 -1
- package/src/core/RelationshipManager.ts +4 -4
- package/src/elements/AlternateContent.ts +1 -1
- package/src/elements/Bookmark.ts +52 -4
- package/src/elements/BookmarkManager.ts +2 -2
- package/src/elements/Comment.ts +3 -3
- package/src/elements/CommentManager.ts +4 -4
- package/src/elements/CommonTypes.ts +45 -7
- package/src/elements/CustomXml.ts +1 -1
- package/src/elements/Endnote.ts +2 -2
- package/src/elements/EndnoteManager.ts +3 -3
- package/src/elements/Field.ts +44 -10
- package/src/elements/FieldHelpers.ts +2 -2
- package/src/elements/Footer.ts +4 -4
- package/src/elements/Footnote.ts +2 -2
- package/src/elements/FootnoteManager.ts +3 -3
- package/src/elements/Header.ts +4 -4
- package/src/elements/HeaderFooterManager.ts +2 -2
- package/src/elements/Hyperlink.ts +16 -12
- package/src/elements/Image.ts +3 -3
- package/src/elements/ImageManager.ts +2 -2
- package/src/elements/ImageRun.ts +3 -3
- package/src/elements/MathElement.ts +1 -1
- package/src/elements/Paragraph.ts +221 -88
- package/src/elements/PreservedElement.ts +1 -1
- package/src/elements/PropertyChangeTypes.ts +2 -2
- package/src/elements/RangeMarker.ts +153 -12
- package/src/elements/RegisteredBodyElement.ts +52 -0
- package/src/elements/Revision.ts +14 -14
- package/src/elements/RevisionContent.ts +3 -3
- package/src/elements/RevisionManager.ts +3 -3
- package/src/elements/Run.ts +221 -94
- package/src/elements/Section.ts +136 -69
- package/src/elements/Shape.ts +4 -4
- package/src/elements/StructuredDocumentTag.ts +3 -3
- package/src/elements/Table.ts +91 -27
- package/src/elements/TableCell.ts +62 -34
- package/src/elements/TableGridChange.ts +1 -1
- package/src/elements/TableOfContents.ts +1 -1
- package/src/elements/TableOfContentsElement.ts +2 -2
- package/src/elements/TableRow.ts +192 -48
- package/src/elements/TextBox.ts +5 -5
- package/src/formatting/AbstractNumbering.ts +3 -3
- package/src/formatting/NumberingInstance.ts +2 -2
- package/src/formatting/NumberingLevel.ts +201 -10
- package/src/formatting/NumberingManager.ts +5 -5
- package/src/formatting/Style.ts +382 -86
- package/src/formatting/StylesManager.ts +4 -4
- package/src/helpers/CleanupHelper.ts +6 -6
- package/src/index.ts +118 -127
- package/src/internal.ts +79 -0
- package/src/managers/DrawingManager.ts +3 -3
- package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
- package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
- package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
- package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
- package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
- package/src/{utils → processors}/RevisionWalker.ts +42 -1
- package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
- package/src/{utils → processors}/ShadingResolver.ts +5 -5
- package/src/{utils → processors}/acceptRevisions.ts +77 -9
- package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
- package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
- package/src/tracking/DocumentTrackingContext.ts +12 -14
- package/src/tracking/TrackingContext.ts +8 -8
- package/src/types/document-types.ts +53 -0
- package/src/types/formatting.ts +4 -4
- package/src/types/settings-types.ts +32 -0
- package/src/utils/KeyedRegistry.ts +41 -0
- package/src/utils/corruptionDetection.ts +2 -2
- package/src/utils/deepEqual.ts +58 -0
- package/src/utils/list-detection.ts +2 -2
- package/src/utils/parsingHelpers.ts +11 -3
- package/src/utils/validation.ts +3 -3
- package/src/utils/xmlSanitization.ts +1 -1
- package/src/validation/RevisionAutoFixer.ts +5 -5
- package/src/validation/RevisionValidator.ts +39 -28
- package/src/validation/ValidationRuleRegistry.ts +86 -0
- package/src/validation/index.ts +3 -3
- package/src/xml/XMLBuilder.ts +13 -3
- package/src/xml/XMLParser.ts +2 -2
- package/src/zip/ZipHandler.ts +4 -4
- package/src/zip/ZipReader.ts +3 -3
- package/src/zip/ZipWriter.ts +3 -3
- package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
- package/dist/utils/ChangelogGenerator.js.map +0 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
- package/dist/utils/CompatibilityUpgrader.js.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
- package/dist/utils/MoveOperationHelper.js.map +0 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
- package/dist/utils/RevisionAwareProcessor.js.map +0 -1
- package/dist/utils/RevisionWalker.d.ts.map +0 -1
- package/dist/utils/RevisionWalker.js.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
- package/dist/utils/ShadingResolver.d.ts +0 -6
- package/dist/utils/ShadingResolver.d.ts.map +0 -1
- package/dist/utils/ShadingResolver.js.map +0 -1
- package/dist/utils/acceptRevisions.d.ts.map +0 -1
- package/dist/utils/acceptRevisions.js.map +0 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
- package/dist/utils/cnfStyleDecoder.js.map +0 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -3
- package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
- package/dist/utils/stripTrackedChanges.js.map +0 -1
- package/src/__tests__/helper-methods.test.ts +0 -512
- package/src/constants/CLAUDE.md +0 -28
- package/src/core/CLAUDE.md +0 -113
- package/src/elements/CLAUDE.md +0 -142
- package/src/formatting/CLAUDE.md +0 -78
- package/src/managers/CLAUDE.md +0 -47
- package/src/tracking/CLAUDE.md +0 -30
- package/src/types/CLAUDE.md +0 -39
- package/src/utils/CLAUDE.md +0 -168
- package/src/validation/CLAUDE.md +0 -40
- package/src/xml/CLAUDE.md +0 -65
- package/src/zip/CLAUDE.md +0 -55
- /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
- /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
* @see {@link https://www.ecma-international.org/publications-and-standards/standards/ecma-376/ | ECMA-376 Part 1 §17.16.22}
|
|
49
49
|
*/
|
|
50
50
|
|
|
51
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
52
|
-
import { Run, RunFormatting } from './Run';
|
|
53
|
-
import { Revision } from './Revision';
|
|
54
|
-
import { validateRunText, sanitizeHyperlinkUrl } from '../utils/validation';
|
|
55
|
-
import { defaultLogger } from '../utils/logger';
|
|
51
|
+
import { XMLElement } from '../xml/XMLBuilder.js';
|
|
52
|
+
import { Run, RunFormatting } from './Run.js';
|
|
53
|
+
import { Revision } from './Revision.js';
|
|
54
|
+
import { validateRunText, sanitizeHyperlinkUrl } from '../utils/validation.js';
|
|
55
|
+
import { defaultLogger } from '../utils/logger.js';
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* Hyperlink properties
|
|
@@ -100,9 +100,9 @@ export class Hyperlink {
|
|
|
100
100
|
/** Document location for within-document navigation in external files */
|
|
101
101
|
private docLocation?: string;
|
|
102
102
|
/** Tracking context for automatic change tracking */
|
|
103
|
-
private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
|
|
103
|
+
private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
|
|
104
104
|
/** Parent paragraph reference for automatic tracking */
|
|
105
|
-
private _parentParagraph?: import('./Paragraph').Paragraph;
|
|
105
|
+
private _parentParagraph?: import('./Paragraph.js').Paragraph;
|
|
106
106
|
/** Baseline formatting captured before first tracked formatting change */
|
|
107
107
|
private _preTrackingFormatting?: RunFormatting;
|
|
108
108
|
|
|
@@ -176,7 +176,7 @@ export class Hyperlink {
|
|
|
176
176
|
* Called by Document when track changes is enabled.
|
|
177
177
|
* @internal
|
|
178
178
|
*/
|
|
179
|
-
_setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
|
|
179
|
+
_setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
|
|
180
180
|
this.trackingContext = context;
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -185,7 +185,7 @@ export class Hyperlink {
|
|
|
185
185
|
* Called by Paragraph when hyperlink is added.
|
|
186
186
|
* @internal
|
|
187
187
|
*/
|
|
188
|
-
_setParentParagraph(paragraph: import('./Paragraph').Paragraph): void {
|
|
188
|
+
_setParentParagraph(paragraph: import('./Paragraph.js').Paragraph): void {
|
|
189
189
|
this._parentParagraph = paragraph;
|
|
190
190
|
}
|
|
191
191
|
|
|
@@ -193,7 +193,7 @@ export class Hyperlink {
|
|
|
193
193
|
* Gets the parent paragraph reference.
|
|
194
194
|
* @internal
|
|
195
195
|
*/
|
|
196
|
-
_getParentParagraph(): import('./Paragraph').Paragraph | undefined {
|
|
196
|
+
_getParentParagraph(): import('./Paragraph.js').Paragraph | undefined {
|
|
197
197
|
return this._parentParagraph;
|
|
198
198
|
}
|
|
199
199
|
|
|
@@ -1208,8 +1208,12 @@ export class Hyperlink {
|
|
|
1208
1208
|
attributes['w:tgtFrame'] = this.tgtFrame;
|
|
1209
1209
|
}
|
|
1210
1210
|
|
|
1211
|
-
// History tracking attribute
|
|
1212
|
-
|
|
1211
|
+
// History tracking attribute (CT_OnOff per ECMA-376 §17.16.22).
|
|
1212
|
+
// Use `!== undefined` rather than a truthy check so explicit "0" /
|
|
1213
|
+
// "false" / "off" overrides survive round-trip — the parser
|
|
1214
|
+
// normalises to "1"/"0", but external callers may still set any
|
|
1215
|
+
// ST_OnOff literal.
|
|
1216
|
+
if (this.history !== undefined) {
|
|
1213
1217
|
attributes['w:history'] = this.history;
|
|
1214
1218
|
}
|
|
1215
1219
|
|
package/src/elements/Image.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { promises as fs } from 'fs';
|
|
9
|
-
import { defaultLogger } from '../utils/logger';
|
|
10
|
-
import { inchesToEmus, UNITS } from '../utils/units';
|
|
11
|
-
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
|
|
9
|
+
import { defaultLogger } from '../utils/logger.js';
|
|
10
|
+
import { inchesToEmus, UNITS } from '../utils/units.js';
|
|
11
|
+
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Supported image formats
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* with the RelationshipManager for image relationships.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Image } from './Image';
|
|
9
|
-
import { defaultLogger } from '../utils/logger';
|
|
8
|
+
import { Image } from './Image.js';
|
|
9
|
+
import { defaultLogger } from '../utils/logger.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Image file entry
|
package/src/elements/ImageRun.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* It generates proper w:r (run) XML with w:drawing child element.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { Run } from './Run';
|
|
10
|
-
import { Image } from './Image';
|
|
11
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
9
|
+
import { Run } from './Run.js';
|
|
10
|
+
import { Image } from './Image.js';
|
|
11
|
+
import { XMLElement } from '../xml/XMLBuilder.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* ImageRun - A run containing an embedded image
|
|
@@ -3,18 +3,20 @@
|
|
|
3
3
|
* Contains one or more runs of formatted text
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { deepClone } from '../utils/deepClone';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
6
|
+
import { deepClone } from '../utils/deepClone.js';
|
|
7
|
+
import { deepEqual } from '../utils/deepEqual.js';
|
|
8
|
+
import { formatDateForXml } from '../utils/dateFormatting.js';
|
|
9
|
+
import { logParagraphContent, logTextDirection } from '../utils/diagnostics.js';
|
|
10
|
+
import { isEqualFormatting } from '../utils/formatting.js';
|
|
11
|
+
import { defaultLogger } from '../utils/logger.js';
|
|
12
|
+
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
|
|
13
|
+
import { Bookmark } from './Bookmark.js';
|
|
14
|
+
import type { Comment } from './Comment.js';
|
|
14
15
|
import {
|
|
15
16
|
// Import common types
|
|
16
17
|
ParagraphAlignment as CommonParagraphAlignment,
|
|
17
18
|
BorderStyle as CommonBorderStyle,
|
|
19
|
+
FullBorderStyle as CommonFullBorderStyle,
|
|
18
20
|
BasicShadingPattern,
|
|
19
21
|
TabAlignment as CommonTabAlignment,
|
|
20
22
|
TabLeader as CommonTabLeader,
|
|
@@ -22,15 +24,15 @@ import {
|
|
|
22
24
|
TextVerticalAlignment,
|
|
23
25
|
ShadingConfig,
|
|
24
26
|
buildShadingAttributes,
|
|
25
|
-
} from './CommonTypes';
|
|
26
|
-
import { ComplexField, Field } from './Field';
|
|
27
|
-
import { Hyperlink } from './Hyperlink';
|
|
28
|
-
import { RangeMarker } from './RangeMarker';
|
|
29
|
-
import { Revision } from './Revision';
|
|
30
|
-
import { Run, RunFormatting } from './Run';
|
|
31
|
-
import { Shape } from './Shape';
|
|
32
|
-
import { TextBox } from './TextBox';
|
|
33
|
-
import { PreservedElement } from './PreservedElement';
|
|
27
|
+
} from './CommonTypes.js';
|
|
28
|
+
import { ComplexField, Field } from './Field.js';
|
|
29
|
+
import { Hyperlink } from './Hyperlink.js';
|
|
30
|
+
import { RangeMarker } from './RangeMarker.js';
|
|
31
|
+
import { Revision } from './Revision.js';
|
|
32
|
+
import { Run, RunFormatting } from './Run.js';
|
|
33
|
+
import { Shape } from './Shape.js';
|
|
34
|
+
import { TextBox } from './TextBox.js';
|
|
35
|
+
import { PreservedElement } from './PreservedElement.js';
|
|
34
36
|
|
|
35
37
|
// ============================================================================
|
|
36
38
|
// RE-EXPORTED TYPES (for backward compatibility)
|
|
@@ -126,8 +128,12 @@ export interface FrameProperties {
|
|
|
126
128
|
y?: number;
|
|
127
129
|
/** Relative horizontal alignment */
|
|
128
130
|
xAlign?: 'left' | 'center' | 'right' | 'inside' | 'outside';
|
|
129
|
-
/**
|
|
130
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Relative vertical alignment per ECMA-376 Part 1 §17.18.110 ST_YAlign.
|
|
133
|
+
* `inline` anchors the frame in line with the surrounding text rather
|
|
134
|
+
* than offsetting it vertically.
|
|
135
|
+
*/
|
|
136
|
+
yAlign?: 'top' | 'center' | 'bottom' | 'inline' | 'inside' | 'outside';
|
|
131
137
|
/** Horizontal anchor/positioning base */
|
|
132
138
|
hAnchor?: 'page' | 'margin' | 'text';
|
|
133
139
|
/** Vertical anchor/positioning base */
|
|
@@ -147,17 +153,30 @@ export interface FrameProperties {
|
|
|
147
153
|
}
|
|
148
154
|
|
|
149
155
|
/**
|
|
150
|
-
* Single border definition
|
|
156
|
+
* Single paragraph-border definition. `style` uses FullBorderStyle (25+
|
|
157
|
+
* ST_Border values per ECMA-376 §17.18.2) — paragraph borders support
|
|
158
|
+
* the full multi-line-gap / triple / inset / outset set, not just the
|
|
159
|
+
* narrow 6-value BorderStyle subset that this field previously used.
|
|
151
160
|
*/
|
|
152
161
|
export interface BorderDefinition {
|
|
153
|
-
/** Border style */
|
|
154
|
-
style?:
|
|
162
|
+
/** Border style (full ST_Border enumeration) */
|
|
163
|
+
style?: CommonFullBorderStyle;
|
|
155
164
|
/** Border width in eighths of a point (1-96) */
|
|
156
165
|
size?: number;
|
|
157
166
|
/** Border color (hex without #) */
|
|
158
167
|
color?: string;
|
|
159
168
|
/** Space between border and text in points (0-31) */
|
|
160
169
|
space?: number;
|
|
170
|
+
/** Theme color reference (ST_ThemeColor per §17.18.97) */
|
|
171
|
+
themeColor?: string;
|
|
172
|
+
/** Theme tint (2-hex-digit string) */
|
|
173
|
+
themeTint?: string;
|
|
174
|
+
/** Theme shade (2-hex-digit string) */
|
|
175
|
+
themeShade?: string;
|
|
176
|
+
/** Border casts a shadow (ST_OnOff attribute on CT_Border §17.18.2) */
|
|
177
|
+
shadow?: boolean;
|
|
178
|
+
/** Border is part of a frame around the content (ST_OnOff) */
|
|
179
|
+
frame?: boolean;
|
|
161
180
|
}
|
|
162
181
|
|
|
163
182
|
/**
|
|
@@ -184,6 +203,18 @@ export interface ParagraphFormatting {
|
|
|
184
203
|
right?: number;
|
|
185
204
|
firstLine?: number;
|
|
186
205
|
hanging?: number;
|
|
206
|
+
/**
|
|
207
|
+
* CJK character-unit indentation attributes per ECMA-376 §17.3.1.12.
|
|
208
|
+
* Values are in hundredths of a character unit (200 = 2 character widths).
|
|
209
|
+
* Used alongside (not instead of) the twips attributes: Word authors
|
|
210
|
+
* specify one or the other based on document language, and both are
|
|
211
|
+
* preserved on round-trip so downstream consumers keep the author's
|
|
212
|
+
* original intent.
|
|
213
|
+
*/
|
|
214
|
+
leftChars?: number;
|
|
215
|
+
rightChars?: number;
|
|
216
|
+
firstLineChars?: number;
|
|
217
|
+
hangingChars?: number;
|
|
187
218
|
};
|
|
188
219
|
/** Spacing per ECMA-376 §17.3.1.33 (CT_Spacing) */
|
|
189
220
|
spacing?: {
|
|
@@ -278,6 +309,19 @@ export interface ParagraphFormatting {
|
|
|
278
309
|
pPrChange?: ParagraphPropertiesChange;
|
|
279
310
|
/** Run properties for the paragraph mark (¶ symbol formatting) */
|
|
280
311
|
paragraphMarkRunProperties?: RunFormatting;
|
|
312
|
+
/**
|
|
313
|
+
* Paragraph mark run-properties change tracking (w:rPrChange inside
|
|
314
|
+
* <w:pPr><w:rPr>), per ECMA-376 Part 1 §17.3.1.30 / CT_ParaRPrChange.
|
|
315
|
+
* Stores the previous rPr of the pilcrow glyph when its formatting has
|
|
316
|
+
* been modified under track changes. Emitted as the LAST child of the
|
|
317
|
+
* paragraph-mark <w:rPr> per CT_ParaRPr schema.
|
|
318
|
+
*/
|
|
319
|
+
paragraphMarkRunPropertiesChange?: {
|
|
320
|
+
id: number;
|
|
321
|
+
author: string;
|
|
322
|
+
date: Date;
|
|
323
|
+
previousProperties: Partial<RunFormatting>;
|
|
324
|
+
};
|
|
281
325
|
/** Paragraph mark deletion tracking (for deleted ¶ symbols) */
|
|
282
326
|
paragraphMarkDeletion?: {
|
|
283
327
|
/** Unique revision ID */
|
|
@@ -412,11 +456,11 @@ export class Paragraph {
|
|
|
412
456
|
/** Internal flag to mark paragraph as preserved from removal operations */
|
|
413
457
|
private _isPreserved = false;
|
|
414
458
|
/** Tracking context for automatic change tracking */
|
|
415
|
-
private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
|
|
459
|
+
private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
|
|
416
460
|
/** Parent table cell reference (if paragraph is inside a table cell) */
|
|
417
|
-
private _parentCell?: import('./TableCell').TableCell;
|
|
461
|
+
private _parentCell?: import('./TableCell.js').TableCell;
|
|
418
462
|
/** StylesManager reference for conditional formatting resolution */
|
|
419
|
-
private _stylesManager?: import('../formatting/StylesManager').StylesManager;
|
|
463
|
+
private _stylesManager?: import('../formatting/StylesManager.js').StylesManager;
|
|
420
464
|
/**
|
|
421
465
|
* Internal flag to mark paragraph as part of a multi-paragraph field (e.g., TOC)
|
|
422
466
|
* When true, assembleComplexFields() will skip processing this paragraph
|
|
@@ -438,7 +482,7 @@ export class Paragraph {
|
|
|
438
482
|
* Called by Document when track changes is enabled.
|
|
439
483
|
* @internal
|
|
440
484
|
*/
|
|
441
|
-
_setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
|
|
485
|
+
_setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
|
|
442
486
|
this.trackingContext = context;
|
|
443
487
|
}
|
|
444
488
|
|
|
@@ -447,7 +491,7 @@ export class Paragraph {
|
|
|
447
491
|
* Called by TableCell when adding paragraphs.
|
|
448
492
|
* @internal
|
|
449
493
|
*/
|
|
450
|
-
_setParentCell(cell: import('./TableCell').TableCell | undefined): void {
|
|
494
|
+
_setParentCell(cell: import('./TableCell.js').TableCell | undefined): void {
|
|
451
495
|
this._parentCell = cell;
|
|
452
496
|
}
|
|
453
497
|
|
|
@@ -455,7 +499,7 @@ export class Paragraph {
|
|
|
455
499
|
* Gets the parent cell reference for this paragraph.
|
|
456
500
|
* @internal
|
|
457
501
|
*/
|
|
458
|
-
_getParentCell(): import('./TableCell').TableCell | undefined {
|
|
502
|
+
_getParentCell(): import('./TableCell.js').TableCell | undefined {
|
|
459
503
|
return this._parentCell;
|
|
460
504
|
}
|
|
461
505
|
|
|
@@ -489,7 +533,7 @@ export class Paragraph {
|
|
|
489
533
|
* Called by Document/Table when adding paragraphs.
|
|
490
534
|
* @internal
|
|
491
535
|
*/
|
|
492
|
-
_setStylesManager(manager: import('../formatting/StylesManager').StylesManager): void {
|
|
536
|
+
_setStylesManager(manager: import('../formatting/StylesManager.js').StylesManager): void {
|
|
493
537
|
this._stylesManager = manager;
|
|
494
538
|
}
|
|
495
539
|
|
|
@@ -497,7 +541,7 @@ export class Paragraph {
|
|
|
497
541
|
* Gets the StylesManager reference for conditional formatting resolution.
|
|
498
542
|
* @internal
|
|
499
543
|
*/
|
|
500
|
-
_getStylesManager(): import('../formatting/StylesManager').StylesManager | undefined {
|
|
544
|
+
_getStylesManager(): import('../formatting/StylesManager.js').StylesManager | undefined {
|
|
501
545
|
return this._stylesManager;
|
|
502
546
|
}
|
|
503
547
|
|
|
@@ -3169,15 +3213,25 @@ export class Paragraph {
|
|
|
3169
3213
|
border: BorderDefinition | undefined
|
|
3170
3214
|
): XMLElement | null => {
|
|
3171
3215
|
if (!border) return null;
|
|
3172
|
-
|
|
3173
|
-
|
|
3216
|
+
// CT_Border §17.18.2: `w:val` (ST_Border) is REQUIRED. Default to
|
|
3217
|
+
// "nil" (the "no visible border" sentinel) when the consumer set
|
|
3218
|
+
// only size/color/space — otherwise strict OOXML validators reject
|
|
3219
|
+
// the document with "The required attribute 'val' is missing".
|
|
3220
|
+
const attributes: Record<string, string | number> = {
|
|
3221
|
+
'w:val': border.style ?? 'nil',
|
|
3222
|
+
};
|
|
3174
3223
|
if (border.size !== undefined) attributes['w:sz'] = border.size;
|
|
3175
3224
|
if (border.color) attributes['w:color'] = border.color;
|
|
3176
3225
|
if (border.space !== undefined) attributes['w:space'] = border.space;
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3226
|
+
// Full CT_Border attribute set (§17.18.2): themeColor / themeTint /
|
|
3227
|
+
// themeShade / shadow / frame. Round-trips themed paragraph borders
|
|
3228
|
+
// authored by Word — previously all five were silently stripped.
|
|
3229
|
+
if (border.themeColor) attributes['w:themeColor'] = border.themeColor;
|
|
3230
|
+
if (border.themeTint) attributes['w:themeTint'] = border.themeTint;
|
|
3231
|
+
if (border.themeShade) attributes['w:themeShade'] = border.themeShade;
|
|
3232
|
+
if (border.shadow !== undefined) attributes['w:shadow'] = border.shadow ? '1' : '0';
|
|
3233
|
+
if (border.frame !== undefined) attributes['w:frame'] = border.frame ? '1' : '0';
|
|
3234
|
+
return XMLBuilder.wSelf(borderType, attributes);
|
|
3181
3235
|
};
|
|
3182
3236
|
|
|
3183
3237
|
// Add borders in order: top, left, bottom, right, between, bar
|
|
@@ -3212,13 +3266,18 @@ export class Paragraph {
|
|
|
3212
3266
|
}
|
|
3213
3267
|
}
|
|
3214
3268
|
|
|
3215
|
-
// 11. Tab stops
|
|
3269
|
+
// 11. Tab stops. CT_TabStop §17.3.1.37 declares BOTH `w:val` (ST_TabJc)
|
|
3270
|
+
// and `w:pos` (ST_SignedTwipsMeasure) as REQUIRED attributes. Default
|
|
3271
|
+
// `w:val` to "left" (ST_TabJc default and Word's authored default) when
|
|
3272
|
+
// caller didn't specify — otherwise strict OOXML validation rejects
|
|
3273
|
+
// the output with "The required attribute 'val' is missing".
|
|
3216
3274
|
if (this.formatting.tabs && this.formatting.tabs.length > 0) {
|
|
3217
3275
|
const tabChildren: XMLElement[] = [];
|
|
3218
3276
|
for (const tab of this.formatting.tabs) {
|
|
3219
|
-
const attributes: Record<string, string | number> = {
|
|
3220
|
-
|
|
3221
|
-
|
|
3277
|
+
const attributes: Record<string, string | number> = {
|
|
3278
|
+
'w:val': tab.val ?? 'left',
|
|
3279
|
+
'w:pos': tab.position,
|
|
3280
|
+
};
|
|
3222
3281
|
if (tab.leader) attributes['w:leader'] = tab.leader;
|
|
3223
3282
|
tabChildren.push(XMLBuilder.wSelf('tab', attributes));
|
|
3224
3283
|
}
|
|
@@ -3301,8 +3360,11 @@ export class Paragraph {
|
|
|
3301
3360
|
}
|
|
3302
3361
|
}
|
|
3303
3362
|
|
|
3304
|
-
// 17. Indentation (left/right/firstLine/hanging)
|
|
3305
|
-
// Per ECMA-376 §17.3.1.12, firstLine and hanging are mutually exclusive —
|
|
3363
|
+
// 17. Indentation (left/right/firstLine/hanging + CJK character-unit variants)
|
|
3364
|
+
// Per ECMA-376 §17.3.1.12, firstLine and hanging are mutually exclusive —
|
|
3365
|
+
// hanging takes precedence. The *Chars attributes (ST_DecimalNumber, in
|
|
3366
|
+
// hundredths of a character unit) are independent of the twips variants;
|
|
3367
|
+
// Word authors in CJK locales emit them alongside — preserve both on save.
|
|
3306
3368
|
if (this.formatting.indentation) {
|
|
3307
3369
|
const ind = this.formatting.indentation;
|
|
3308
3370
|
const attributes: Record<string, number> = {};
|
|
@@ -3313,6 +3375,15 @@ export class Paragraph {
|
|
|
3313
3375
|
} else if (ind.firstLine !== undefined) {
|
|
3314
3376
|
attributes['w:firstLine'] = ind.firstLine;
|
|
3315
3377
|
}
|
|
3378
|
+
if (ind.leftChars !== undefined) attributes['w:leftChars'] = ind.leftChars;
|
|
3379
|
+
if (ind.rightChars !== undefined) attributes['w:rightChars'] = ind.rightChars;
|
|
3380
|
+
// Same mutual-exclusive treatment: hangingChars wins over firstLineChars
|
|
3381
|
+
// when both are set, mirroring the twips behaviour above.
|
|
3382
|
+
if (ind.hangingChars !== undefined) {
|
|
3383
|
+
attributes['w:hangingChars'] = ind.hangingChars;
|
|
3384
|
+
} else if (ind.firstLineChars !== undefined) {
|
|
3385
|
+
attributes['w:firstLineChars'] = ind.firstLineChars;
|
|
3386
|
+
}
|
|
3316
3387
|
if (Object.keys(attributes).length > 0) {
|
|
3317
3388
|
pPrChildren.push(XMLBuilder.wSelf('ind', attributes));
|
|
3318
3389
|
}
|
|
@@ -3397,30 +3468,29 @@ export class Paragraph {
|
|
|
3397
3468
|
}
|
|
3398
3469
|
|
|
3399
3470
|
// 19. Paragraph mark run properties per ECMA-376 Part 1 §17.3.1.29
|
|
3400
|
-
// Per CT_PPr, w:rPr comes after all CT_PPrBase elements and before w:sectPr/w:pPrChange
|
|
3471
|
+
// Per CT_PPr, w:rPr comes after all CT_PPrBase elements and before w:sectPr/w:pPrChange.
|
|
3472
|
+
//
|
|
3473
|
+
// CT_ParaRPr content model (ECMA-376 Part 1, Annex A / wml.xsd):
|
|
3474
|
+
// <xsd:sequence>
|
|
3475
|
+
// <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/> <!-- ins, del, moveFrom, moveTo -->
|
|
3476
|
+
// <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> <!-- rStyle, rFonts, b, bCs, i, ... -->
|
|
3477
|
+
// <xsd:element name="rPrChange" type="CT_ParaRPrChange" minOccurs="0"/>
|
|
3478
|
+
// </xsd:sequence>
|
|
3479
|
+
//
|
|
3480
|
+
// The track-change markers (w:ins / w:del) must precede the EG_RPrBase
|
|
3481
|
+
// run-property children. Earlier revisions of this code emitted run
|
|
3482
|
+
// properties first and then ins/del, which is a schema violation — strict
|
|
3483
|
+
// validators reject the inverted order, and tracked-change-aware tools
|
|
3484
|
+
// may misinterpret the revision state of the paragraph mark.
|
|
3401
3485
|
if (
|
|
3402
3486
|
this.formatting.paragraphMarkRunProperties ||
|
|
3403
3487
|
this.formatting.paragraphMarkDeletion ||
|
|
3404
|
-
this.formatting.paragraphMarkInsertion
|
|
3488
|
+
this.formatting.paragraphMarkInsertion ||
|
|
3489
|
+
this.formatting.paragraphMarkRunPropertiesChange
|
|
3405
3490
|
) {
|
|
3406
3491
|
const rPrChildren: XMLElement[] = [];
|
|
3407
3492
|
|
|
3408
|
-
//
|
|
3409
|
-
if (this.formatting.paragraphMarkRunProperties) {
|
|
3410
|
-
const rPr = Run.generateRunPropertiesXML(this.formatting.paragraphMarkRunProperties);
|
|
3411
|
-
if (rPr?.children) {
|
|
3412
|
-
// Filter to only XMLElement types (children can be XMLElement or string)
|
|
3413
|
-
for (const child of rPr.children) {
|
|
3414
|
-
if (typeof child !== 'string') {
|
|
3415
|
-
rPrChildren.push(child);
|
|
3416
|
-
}
|
|
3417
|
-
}
|
|
3418
|
-
}
|
|
3419
|
-
}
|
|
3420
|
-
|
|
3421
|
-
// Per CT_ParaRPr schema, w:ins precedes w:del in the sequence
|
|
3422
|
-
// Add insertion marker if the paragraph mark is inserted (w:ins)
|
|
3423
|
-
// Per ECMA-376 Part 1 §17.13.5.18 - tracks insertion of paragraph mark
|
|
3493
|
+
// EG_ParaRPrTrackChanges (ins → del → moveFrom → moveTo) — FIRST per CT_ParaRPr.
|
|
3424
3494
|
if (this.formatting.paragraphMarkInsertion) {
|
|
3425
3495
|
const ins = this.formatting.paragraphMarkInsertion;
|
|
3426
3496
|
rPrChildren.push(
|
|
@@ -3432,8 +3502,6 @@ export class Paragraph {
|
|
|
3432
3502
|
);
|
|
3433
3503
|
}
|
|
3434
3504
|
|
|
3435
|
-
// Add deletion marker if the paragraph mark is deleted (w:del)
|
|
3436
|
-
// Per ECMA-376 Part 1 §17.13.5.14 - tracks deletion of paragraph mark
|
|
3437
3505
|
if (this.formatting.paragraphMarkDeletion) {
|
|
3438
3506
|
const del = this.formatting.paragraphMarkDeletion;
|
|
3439
3507
|
rPrChildren.push(
|
|
@@ -3445,6 +3513,44 @@ export class Paragraph {
|
|
|
3445
3513
|
);
|
|
3446
3514
|
}
|
|
3447
3515
|
|
|
3516
|
+
// EG_RPrBase run properties — AFTER the track-change markers.
|
|
3517
|
+
if (this.formatting.paragraphMarkRunProperties) {
|
|
3518
|
+
const rPr = Run.generateRunPropertiesXML(this.formatting.paragraphMarkRunProperties);
|
|
3519
|
+
if (rPr?.children) {
|
|
3520
|
+
// Filter to only XMLElement types (children can be XMLElement or string)
|
|
3521
|
+
for (const child of rPr.children) {
|
|
3522
|
+
if (typeof child !== 'string') {
|
|
3523
|
+
rPrChildren.push(child);
|
|
3524
|
+
}
|
|
3525
|
+
}
|
|
3526
|
+
}
|
|
3527
|
+
}
|
|
3528
|
+
|
|
3529
|
+
// <w:rPrChange> (CT_ParaRPrChange, §17.3.1.30) — LAST per CT_ParaRPr.
|
|
3530
|
+
// Contains a single <w:rPr> child with the previous run properties of
|
|
3531
|
+
// the paragraph mark. Reuses Run.generateRunPropertiesXML for full
|
|
3532
|
+
// CT_RPr coverage in the previous-properties block.
|
|
3533
|
+
const paraRPrChange = this.formatting.paragraphMarkRunPropertiesChange;
|
|
3534
|
+
if (paraRPrChange) {
|
|
3535
|
+
const prevRPr = Run.generateRunPropertiesXML(
|
|
3536
|
+
paraRPrChange.previousProperties as RunFormatting
|
|
3537
|
+
);
|
|
3538
|
+
const prevRPrElement: XMLElement = prevRPr ?? {
|
|
3539
|
+
name: 'w:rPr',
|
|
3540
|
+
attributes: {},
|
|
3541
|
+
children: [],
|
|
3542
|
+
};
|
|
3543
|
+
rPrChildren.push({
|
|
3544
|
+
name: 'w:rPrChange',
|
|
3545
|
+
attributes: {
|
|
3546
|
+
'w:id': paraRPrChange.id.toString(),
|
|
3547
|
+
'w:author': paraRPrChange.author,
|
|
3548
|
+
'w:date': formatDateForXml(paraRPrChange.date),
|
|
3549
|
+
},
|
|
3550
|
+
children: [prevRPrElement],
|
|
3551
|
+
});
|
|
3552
|
+
}
|
|
3553
|
+
|
|
3448
3554
|
// Add w:rPr element if there are any run properties
|
|
3449
3555
|
if (rPrChildren.length > 0) {
|
|
3450
3556
|
pPrChildren.push(XMLBuilder.w('rPr', undefined, rPrChildren));
|
|
@@ -3583,28 +3689,37 @@ export class Paragraph {
|
|
|
3583
3689
|
);
|
|
3584
3690
|
}
|
|
3585
3691
|
|
|
3586
|
-
// 7. suppressLineNumbers
|
|
3692
|
+
// 7. suppressLineNumbers — CT_OnOff. Emit w:val="0" for explicit false so the
|
|
3693
|
+
// tracked "previous" value round-trips losslessly (see main generator line ~3154).
|
|
3587
3694
|
if (prev.suppressLineNumbers !== undefined) {
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3695
|
+
prevPPrChildren.push(
|
|
3696
|
+
XMLBuilder.wSelf('suppressLineNumbers', {
|
|
3697
|
+
'w:val': prev.suppressLineNumbers ? '1' : '0',
|
|
3698
|
+
})
|
|
3699
|
+
);
|
|
3591
3700
|
}
|
|
3592
3701
|
|
|
3593
|
-
// 8. pBdr (paragraph borders)
|
|
3702
|
+
// 8. pBdr (paragraph borders) — CT_Border §17.18.2 requires w:val.
|
|
3703
|
+
// Default to "nil" when style undefined so pPrChange's previous
|
|
3704
|
+
// border set round-trips through strict validation. Full CT_Border
|
|
3705
|
+
// attribute set (themeColor/themeTint/themeShade/shadow/frame) is
|
|
3706
|
+
// preserved so Word's themed borders survive tracked-change history.
|
|
3594
3707
|
if (prev.borders) {
|
|
3595
3708
|
const borderChildren: XMLElement[] = [];
|
|
3596
3709
|
const borderSides = ['top', 'left', 'bottom', 'right', 'between', 'bar'] as const;
|
|
3597
3710
|
for (const side of borderSides) {
|
|
3598
3711
|
const border = prev.borders[side];
|
|
3599
3712
|
if (border) {
|
|
3600
|
-
const attrs: Record<string, string> = {};
|
|
3601
|
-
if (border.style) attrs['w:val'] = border.style;
|
|
3713
|
+
const attrs: Record<string, string> = { 'w:val': border.style ?? 'nil' };
|
|
3602
3714
|
if (border.size !== undefined) attrs['w:sz'] = border.size.toString();
|
|
3603
3715
|
if (border.color) attrs['w:color'] = border.color;
|
|
3604
3716
|
if (border.space !== undefined) attrs['w:space'] = border.space.toString();
|
|
3605
|
-
if (
|
|
3606
|
-
|
|
3607
|
-
|
|
3717
|
+
if (border.themeColor) attrs['w:themeColor'] = border.themeColor;
|
|
3718
|
+
if (border.themeTint) attrs['w:themeTint'] = border.themeTint;
|
|
3719
|
+
if (border.themeShade) attrs['w:themeShade'] = border.themeShade;
|
|
3720
|
+
if (border.shadow !== undefined) attrs['w:shadow'] = border.shadow ? '1' : '0';
|
|
3721
|
+
if (border.frame !== undefined) attrs['w:frame'] = border.frame ? '1' : '0';
|
|
3722
|
+
borderChildren.push(XMLBuilder.wSelf(side, attrs));
|
|
3608
3723
|
}
|
|
3609
3724
|
}
|
|
3610
3725
|
if (borderChildren.length > 0) {
|
|
@@ -3620,24 +3735,28 @@ export class Paragraph {
|
|
|
3620
3735
|
}
|
|
3621
3736
|
}
|
|
3622
3737
|
|
|
3623
|
-
// 10. tabs
|
|
3738
|
+
// 10. tabs — CT_TabStop §17.3.1.37 requires w:val AND w:pos. Default
|
|
3739
|
+
// w:val to "left" when pPrChange's previous state didn't record one.
|
|
3624
3740
|
if (prev.tabs && prev.tabs.length > 0) {
|
|
3625
3741
|
const tabChildren: XMLElement[] = prev.tabs.map((tab) => {
|
|
3626
3742
|
const tabAttrs: Record<string, string> = {
|
|
3743
|
+
'w:val': tab.val ?? 'left',
|
|
3627
3744
|
'w:pos': tab.position.toString(),
|
|
3628
3745
|
};
|
|
3629
|
-
if (tab.val) tabAttrs['w:val'] = tab.val;
|
|
3630
3746
|
if (tab.leader) tabAttrs['w:leader'] = tab.leader;
|
|
3631
3747
|
return XMLBuilder.wSelf('tab', tabAttrs);
|
|
3632
3748
|
});
|
|
3633
3749
|
prevPPrChildren.push(XMLBuilder.w('tabs', undefined, tabChildren));
|
|
3634
3750
|
}
|
|
3635
3751
|
|
|
3636
|
-
// 11. suppressAutoHyphens
|
|
3752
|
+
// 11. suppressAutoHyphens — CT_OnOff. Emit w:val="0" for explicit false so the
|
|
3753
|
+
// tracked "previous" value round-trips losslessly (see main generator line ~3231).
|
|
3637
3754
|
if (prev.suppressAutoHyphens !== undefined) {
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3755
|
+
prevPPrChildren.push(
|
|
3756
|
+
XMLBuilder.wSelf('suppressAutoHyphens', {
|
|
3757
|
+
'w:val': prev.suppressAutoHyphens ? '1' : '0',
|
|
3758
|
+
})
|
|
3759
|
+
);
|
|
3641
3760
|
}
|
|
3642
3761
|
|
|
3643
3762
|
// 12. CJK paragraph properties
|
|
@@ -3707,17 +3826,31 @@ export class Paragraph {
|
|
|
3707
3826
|
}
|
|
3708
3827
|
}
|
|
3709
3828
|
|
|
3710
|
-
// 15. ind (indentation)
|
|
3829
|
+
// 15. ind (indentation + CJK character-unit variants per ECMA-376 §17.3.1.12)
|
|
3830
|
+
// hanging / firstLine are conceptually mutually exclusive (opposite-
|
|
3831
|
+
// direction first-line indents). Mirror the direct paragraph generator's
|
|
3832
|
+
// precedence: hanging wins when both are set. Previously this path emitted
|
|
3833
|
+
// BOTH attributes, producing ambiguous tracked-change history that Word
|
|
3834
|
+
// renders inconsistently across versions.
|
|
3711
3835
|
if (prev.indentation) {
|
|
3712
3836
|
const indAttrs: Record<string, string> = {};
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
if (
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3837
|
+
const indentation = prev.indentation as Record<string, number | undefined>;
|
|
3838
|
+
if (indentation.left !== undefined) indAttrs['w:left'] = indentation.left.toString();
|
|
3839
|
+
if (indentation.right !== undefined) indAttrs['w:right'] = indentation.right.toString();
|
|
3840
|
+
if (indentation.hanging !== undefined) {
|
|
3841
|
+
indAttrs['w:hanging'] = indentation.hanging.toString();
|
|
3842
|
+
} else if (indentation.firstLine !== undefined) {
|
|
3843
|
+
indAttrs['w:firstLine'] = indentation.firstLine.toString();
|
|
3844
|
+
}
|
|
3845
|
+
if (indentation.leftChars !== undefined)
|
|
3846
|
+
indAttrs['w:leftChars'] = indentation.leftChars.toString();
|
|
3847
|
+
if (indentation.rightChars !== undefined)
|
|
3848
|
+
indAttrs['w:rightChars'] = indentation.rightChars.toString();
|
|
3849
|
+
if (indentation.hangingChars !== undefined) {
|
|
3850
|
+
indAttrs['w:hangingChars'] = indentation.hangingChars.toString();
|
|
3851
|
+
} else if (indentation.firstLineChars !== undefined) {
|
|
3852
|
+
indAttrs['w:firstLineChars'] = indentation.firstLineChars.toString();
|
|
3853
|
+
}
|
|
3721
3854
|
prevPPrChildren.push(XMLBuilder.wSelf('ind', indAttrs));
|
|
3722
3855
|
}
|
|
3723
3856
|
|
|
@@ -5313,7 +5446,7 @@ export class Paragraph {
|
|
|
5313
5446
|
const paraValue = this.formatting[propKey];
|
|
5314
5447
|
const styleValue = styleParagraphFormatting[propKey];
|
|
5315
5448
|
|
|
5316
|
-
if (
|
|
5449
|
+
if (!deepEqual(paraValue, styleValue)) {
|
|
5317
5450
|
conflictingParaProps.push(propKey);
|
|
5318
5451
|
}
|
|
5319
5452
|
} else {
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
* @module PropertyChangeTypes
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import type { RunFormatting } from './Run';
|
|
19
|
-
import type { ShadingConfig } from './CommonTypes';
|
|
18
|
+
import type { RunFormatting } from './Run.js';
|
|
19
|
+
import type { ShadingConfig } from './CommonTypes.js';
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Common base for all property change types
|