docxmlater 10.4.0 → 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 +75 -67
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +618 -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 +2100 -1076
- 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 +478 -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 +2235 -620
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreservedElement.d.ts","sourceRoot":"","sources":["../../src/elements/PreservedElement.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"PreservedElement.d.ts","sourceRoot":"","sources":["../../src/elements/PreservedElement.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKlD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAKzD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA0B;gBAE7B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,uBAAkC;IAM5F,KAAK,IAAI,UAAU;IAOnB,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,uBAAuB;IAIrC,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreservedElement.js","sourceRoot":"","sources":["../../src/elements/PreservedElement.ts"],"names":[],"mappings":";;;AAmBA,MAAa,gBAAgB;IACnB,MAAM,CAAS;IACf,WAAW,CAAS;IACpB,OAAO,CAA0B;IAEzC,YAAY,MAAc,EAAE,WAAmB,EAAE,UAAmC,QAAQ;QAC1F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;SACN,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAjCD,4CAiCC","sourcesContent":["/**\n * PreservedElement - Represents XML elements preserved as raw XML for round-trip fidelity\n *\n * Used for elements that don't need full object model support but must be\n * preserved during round-trip (load → save) to avoid data loss.\n *\n * Examples: w:proofErr, w:permStart, w:permEnd, w:altChunk, w:ruby\n */\n\nimport { XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Element context where it can appear\n */\nexport type PreservedElementContext = 'inline' | 'block';\n\n/**\n * Represents an XML element preserved as raw XML\n */\nexport class PreservedElement {\n private rawXml: string;\n private elementType: string;\n private context: PreservedElementContext;\n\n constructor(rawXml: string, elementType: string, context: PreservedElementContext = 'inline') {\n this.rawXml = rawXml;\n this.elementType = elementType;\n this.context = context;\n }\n\n toXML(): XMLElement {\n return {\n name: '__rawXml',\n rawXml: this.rawXml,\n } as XMLElement;\n }\n\n getRawXml(): string {\n return this.rawXml;\n }\n\n getElementType(): string {\n return this.elementType;\n }\n\n getContext(): PreservedElementContext {\n return this.context;\n }\n\n getType(): string {\n return 'preservedElement';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PreservedElement.js","sourceRoot":"","sources":["../../src/elements/PreservedElement.ts"],"names":[],"mappings":";;;AAmBA,MAAa,gBAAgB;IACnB,MAAM,CAAS;IACf,WAAW,CAAS;IACpB,OAAO,CAA0B;IAEzC,YAAY,MAAc,EAAE,WAAmB,EAAE,UAAmC,QAAQ;QAC1F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;SACN,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAjCD,4CAiCC","sourcesContent":["/**\n * PreservedElement - Represents XML elements preserved as raw XML for round-trip fidelity\n *\n * Used for elements that don't need full object model support but must be\n * preserved during round-trip (load → save) to avoid data loss.\n *\n * Examples: w:proofErr, w:permStart, w:permEnd, w:altChunk, w:ruby\n */\n\nimport { XMLElement } from '../xml/XMLBuilder.js';\n\n/**\n * Element context where it can appear\n */\nexport type PreservedElementContext = 'inline' | 'block';\n\n/**\n * Represents an XML element preserved as raw XML\n */\nexport class PreservedElement {\n private rawXml: string;\n private elementType: string;\n private context: PreservedElementContext;\n\n constructor(rawXml: string, elementType: string, context: PreservedElementContext = 'inline') {\n this.rawXml = rawXml;\n this.elementType = elementType;\n this.context = context;\n }\n\n toXML(): XMLElement {\n return {\n name: '__rawXml',\n rawXml: this.rawXml,\n } as XMLElement;\n }\n\n getRawXml(): string {\n return this.rawXml;\n }\n\n getElementType(): string {\n return this.elementType;\n }\n\n getContext(): PreservedElementContext {\n return this.context;\n }\n\n getType(): string {\n return 'preservedElement';\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RunFormatting } from './Run';
|
|
2
|
-
import type { ShadingConfig } from './CommonTypes';
|
|
1
|
+
import type { RunFormatting } from './Run.js';
|
|
2
|
+
import type { ShadingConfig } from './CommonTypes.js';
|
|
3
3
|
export interface PropertyChangeBase {
|
|
4
4
|
id: number;
|
|
5
5
|
author: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyChangeTypes.d.ts","sourceRoot":"","sources":["../../src/elements/PropertyChangeTypes.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"PropertyChangeTypes.d.ts","sourceRoot":"","sources":["../../src/elements/PropertyChangeTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyChangeTypes.js","sourceRoot":"","sources":["../../src/elements/PropertyChangeTypes.ts"],"names":[],"mappings":";;AAsXA,kDAoBC;AAKD,8DAaC;AAKD,sDAEC;AAQD,0DAuBC;AAKD,8CAEC;AAnFD,SAAgB,mBAAmB,CAAC,MAAyB;IAC3D,IAAI,CAAC,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,aAAa,IAAI,MAAM,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,kBAA4C,CAAC;IAClE,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,KAAK,KAAK,SAAS;QACzB,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,WAAW,KAAK,SAAS,CAChC,CAAC;AACJ,CAAC;AAKD,SAAgB,yBAAyB,CACvC,MAAyB;IAEzB,OAAO,CACL,oBAAoB,IAAI,MAAM;QAC9B,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;QAC1B,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC;QAE5B,CAAE,MAAM,CAAC,kBAAiD,CAAC,SAAS,KAAK,SAAS;YAC/E,MAAM,CAAC,kBAAiD,CAAC,UAAU,KAAK,SAAS;YACjF,MAAM,CAAC,kBAAiD,CAAC,WAAW,KAAK,SAAS;YAClF,MAAM,CAAC,kBAAiD,CAAC,KAAK,KAAK,SAAS,CAAC,CACjF,CAAC;AACJ,CAAC;AAKD,SAAgB,qBAAqB,CAAC,MAAyB;IAC7D,OAAO,aAAa,IAAI,MAAM,CAAC;AACjC,CAAC;AAQD,SAAgB,uBAAuB,CACrC,MAAyB;IAEzB,IAAI,CAAC,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,aAAa,IAAI,MAAM,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAyC,CAAC;IAC/D,OAAO,CACL,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,YAAY,KAAK,SAAS;QAChC,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,cAAc,KAAK,SAAS;QAClC,KAAK,CAAC,cAAc,KAAK,SAAS;QAClC,KAAK,CAAC,YAAY,KAAK,SAAS;QAChC,KAAK,CAAC,eAAe,KAAK,SAAS;QACnC,KAAK,CAAC,WAAW,KAAK,SAAS,CAChC,CAAC;AACJ,CAAC;AAKD,SAAgB,iBAAiB,CAAC,MAAyB;IACzD,OAAO,eAAe,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;AACvF,CAAC","sourcesContent":["/**\n * PropertyChangeTypes - Type definitions for property change tracking in revisions\n *\n * These types represent the parsed data from OOXML property change elements:\n * - w:rPrChange (run property changes)\n * - w:pPrChange (paragraph property changes)\n * - w:tblPrChange, w:trPrChange, w:tcPrChange (table property changes)\n * - w:sectPrChange (section property changes)\n * - w:numberingChange (numbering property changes)\n *\n * Per ECMA-376, property change elements track the PREVIOUS state of properties\n * before a change was made, allowing Word to show what changed and enabling\n * accept/reject functionality.\n *\n * @module PropertyChangeTypes\n */\n\nimport type { RunFormatting } from './Run';\nimport type { ShadingConfig } from './CommonTypes';\n\n/**\n * Common base for all property change types\n */\nexport interface PropertyChangeBase {\n /** Unique revision ID (ST_DecimalNumber) */\n id: number;\n /** Author who made the change (required) */\n author: string;\n /** Date when the change was made (ISO 8601) */\n date: Date;\n}\n\n/**\n * Run property change (w:rPrChange)\n *\n * Tracks changes to run-level formatting such as:\n * - Bold, italic, underline\n * - Font name, size, color\n * - Highlight, strikethrough\n * - Character spacing, subscript/superscript\n *\n * @example\n * ```xml\n * <w:rPrChange w:id=\"1\" w:author=\"John\" w:date=\"2024-01-15T10:30:00Z\">\n * <w:rPr>\n * <w:b/> <!-- Was bold before change -->\n * </w:rPr>\n * </w:rPrChange>\n * ```\n */\nexport interface RunPropertyChange extends PropertyChangeBase {\n /** Previous run formatting properties before the change */\n previousProperties: Partial<RunFormatting>;\n}\n\n/**\n * Border definition for paragraph borders\n * Per ECMA-376 Part 1 Section 17.3.1.24\n */\nexport interface ParagraphBorderDef {\n /** Border style (single, double, dotted, dashed, etc.) */\n val?: string;\n /** Border width in eighths of a point */\n sz?: number;\n /** Space between border and content in points */\n space?: number;\n /** Border color (hex RGB without #) */\n color?: string;\n /** Theme color reference */\n themeColor?: string;\n}\n\n/**\n * Paragraph borders (w:pBdr)\n * Per ECMA-376 Part 1 Section 17.3.1.24\n */\nexport interface ParagraphBorders {\n /** Top border */\n top?: ParagraphBorderDef;\n /** Bottom border */\n bottom?: ParagraphBorderDef;\n /** Left border */\n left?: ParagraphBorderDef;\n /** Right border */\n right?: ParagraphBorderDef;\n /** Border between paragraphs with same borders */\n between?: ParagraphBorderDef;\n /** Bar border (vertical line) */\n bar?: ParagraphBorderDef;\n}\n\n/**\n * Paragraph shading (w:shd)\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type ParagraphShading = ShadingConfig;\n\n/**\n * Tab stop definition\n * Per ECMA-376 Part 1 Section 17.3.1.38\n */\nexport interface TabStopDef {\n /** Tab stop type (left, right, center, decimal, bar, clear) */\n val?: string;\n /** Tab position in twips */\n pos?: number;\n /** Leader character (none, dot, hyphen, underscore, middleDot) */\n leader?: string;\n}\n\n/**\n * Paragraph formatting options (subset for type safety)\n * Full ParagraphFormatting is in Paragraph.ts but we need a partial here\n *\n * Per ECMA-376 Part 1 Section 17.3.1, this covers all paragraph properties\n * that can be tracked in w:pPrChange revision elements.\n */\nexport interface ParagraphFormattingPartial {\n /** Text alignment: left, center, right, justify */\n alignment?: 'left' | 'center' | 'right' | 'justify';\n /** Left indentation in twips */\n leftIndent?: number;\n /** Right indentation in twips */\n rightIndent?: number;\n /** First line indentation in twips */\n firstLineIndent?: number;\n /** Hanging indentation in twips */\n hangingIndent?: number;\n /** Spacing before paragraph in twips */\n spaceBefore?: number;\n /** Spacing after paragraph in twips */\n spaceAfter?: number;\n /** Line spacing in twips */\n lineSpacing?: number;\n /** Line spacing rule */\n lineSpacingRule?: 'auto' | 'exact' | 'atLeast';\n /** Paragraph style ID */\n style?: string;\n /** Keep with next paragraph */\n keepNext?: boolean;\n /** Keep lines together */\n keepLines?: boolean;\n /** Page break before */\n pageBreakBefore?: boolean;\n /** Widow/orphan control */\n widowControl?: boolean;\n /** Suppress auto-hyphenation */\n suppressAutoHyphens?: boolean;\n /** Contextual spacing */\n contextualSpacing?: boolean;\n /** Mirror indents */\n mirrorIndents?: boolean;\n /** Outline level (for headings) */\n outlineLevel?: number;\n /** Right-to-left paragraph */\n bidi?: boolean;\n /** Numbering properties (list formatting) */\n numbering?: {\n numId?: number;\n level?: number;\n };\n\n // === Extended properties for full ECMA-376 compliance ===\n\n /**\n * Paragraph borders (w:pBdr)\n * Per ECMA-376 Part 1 Section 17.3.1.24\n */\n borders?: ParagraphBorders;\n\n /**\n * Paragraph shading/background (w:shd)\n * Per ECMA-376 Part 1 Section 17.3.1.32\n */\n shading?: ParagraphShading;\n\n /**\n * Custom tab stops (w:tabs)\n * Per ECMA-376 Part 1 Section 17.3.1.38\n */\n tabs?: TabStopDef[];\n\n /**\n * Text direction (w:textDirection)\n * Per ECMA-376 Part 1 Section 17.3.1.40\n * Values: lrTb, tbRl, btLr, lrTbV, tbRlV, tbLrV\n */\n textDirection?: string;\n\n /**\n * Text alignment (w:textAlignment)\n * Per ECMA-376 Part 1 Section 17.3.1.39\n * Values: auto, top, center, baseline, bottom\n */\n textAlignment?: string;\n\n /**\n * Suppress line numbers (w:suppressLineNumbers)\n * Per ECMA-376 Part 1 Section 17.3.1.35\n */\n suppressLineNumbers?: boolean;\n\n /**\n * Adjust right indent (w:adjustRightInd)\n * Per ECMA-376 Part 1 Section 17.3.1.1\n */\n adjustRightInd?: boolean;\n\n /**\n * Snap to grid (w:snapToGrid)\n * Per ECMA-376 Part 1 Section 17.3.1.33\n */\n snapToGrid?: boolean;\n\n /**\n * Word wrap (w:wordWrap)\n * Per ECMA-376 Part 1 Section 17.3.1.44\n */\n wordWrap?: boolean;\n\n /**\n * Auto space between East Asian and numeric (w:autoSpaceDE)\n */\n autoSpaceDE?: boolean;\n\n /**\n * Auto space between East Asian and Western (w:autoSpaceDN)\n */\n autoSpaceDN?: boolean;\n}\n\n/**\n * Paragraph property change (w:pPrChange)\n *\n * Tracks changes to paragraph-level formatting such as:\n * - Alignment (left, center, right, justify)\n * - Indentation (left, right, first line, hanging)\n * - Spacing (before, after, line)\n * - Keep with next, keep lines together\n * - Paragraph style\n * - Numbering/list formatting (numId, ilvl)\n *\n * @example\n * ```xml\n * <w:pPrChange w:id=\"2\" w:author=\"Jane\" w:date=\"2024-01-15T11:00:00Z\">\n * <w:pPr>\n * <w:jc w:val=\"left\"/> <!-- Was left-aligned before change -->\n * </w:pPr>\n * </w:pPrChange>\n * ```\n */\nexport interface ParagraphPropertyChange extends PropertyChangeBase {\n /** Previous paragraph formatting properties before the change */\n previousProperties: Partial<ParagraphFormattingPartial>;\n}\n\n/**\n * Table property change types\n */\nexport type TablePropertyChangeType = 'table' | 'row' | 'cell';\n\n/**\n * Table property change (w:tblPrChange, w:trPrChange, w:tcPrChange)\n *\n * Tracks changes to table-level properties including:\n * - Table: width, alignment, borders, shading\n * - Row: height, header row, can't split\n * - Cell: width, vertical alignment, borders, shading, merge\n *\n * @example\n * ```xml\n * <w:tblPrChange w:id=\"3\" w:author=\"John\" w:date=\"2024-01-15T12:00:00Z\">\n * <w:tblPr>\n * <w:tblW w:w=\"5000\" w:type=\"pct\"/>\n * </w:tblPr>\n * </w:tblPrChange>\n * ```\n */\nexport interface TablePropertyChange extends PropertyChangeBase {\n /** Type of table element (table, row, or cell) */\n elementType: TablePropertyChangeType;\n /** Previous table properties before the change */\n previousProperties: Record<string, any>;\n}\n\n/**\n * Section property change (w:sectPrChange)\n *\n * Tracks changes to section-level properties such as:\n * - Page size (width, height)\n * - Page margins (top, bottom, left, right, header, footer, gutter)\n * - Page orientation (portrait, landscape)\n * - Columns configuration\n * - Page numbering\n *\n * @example\n * ```xml\n * <w:sectPrChange w:id=\"4\" w:author=\"Jane\" w:date=\"2024-01-15T13:00:00Z\">\n * <w:sectPr>\n * <w:pgSz w:w=\"12240\" w:h=\"15840\"/>\n * <w:pgMar w:top=\"1440\" w:right=\"1440\" w:bottom=\"1440\" w:left=\"1440\"/>\n * </w:sectPr>\n * </w:sectPrChange>\n * ```\n */\nexport interface SectionPropertyChange extends PropertyChangeBase {\n /** Previous section properties before the change */\n previousProperties: Record<string, any>;\n}\n\n/**\n * Numbering change (w:numberingChange)\n *\n * Tracks changes to list numbering properties:\n * - Numbering definition ID\n * - Indentation level\n * - Starting number\n *\n * @example\n * ```xml\n * <w:numberingChange w:id=\"5\" w:author=\"John\" w:date=\"2024-01-15T14:00:00Z\"\n * w:original=\"1\" />\n * ```\n */\nexport interface NumberingChange extends PropertyChangeBase {\n /** Previous numbering definition ID */\n previousNumId?: number;\n /** Previous indentation level */\n previousIlvl?: number;\n /** Original numbering format string */\n original?: string;\n}\n\n/**\n * Location of a revision within the document structure\n * Used for precise change tracking and changelog generation\n */\nexport interface RevisionLocation {\n /** Paragraph index within the document body (0-based) */\n paragraphIndex?: number;\n /** Run index within the paragraph (0-based) */\n runIndex?: number;\n /** Table row index (0-based) - only for table revisions */\n tableRow?: number;\n /** Table cell index within row (0-based) - only for table revisions */\n tableCell?: number;\n /** Section index (0-based) - only for section revisions */\n sectionIndex?: number;\n /** Header/footer type if revision is in header/footer */\n headerFooterType?:\n | 'header'\n | 'footer'\n | 'firstHeader'\n | 'firstFooter'\n | 'evenHeader'\n | 'evenFooter';\n}\n\n/**\n * Union type for all property change types\n */\nexport type AnyPropertyChange =\n | RunPropertyChange\n | ParagraphPropertyChange\n | TablePropertyChange\n | SectionPropertyChange\n | NumberingChange;\n\n/**\n * Type guard to check if a property change is a RunPropertyChange\n *\n * Note: Empty previousProperties cannot be reliably typed - this guard returns\n * false for empty objects. Use context-aware typing when the source is known.\n */\nexport function isRunPropertyChange(change: AnyPropertyChange): change is RunPropertyChange {\n if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {\n return false;\n }\n // Check for typical run properties - must have at least one identifiable property\n const props = change.previousProperties as Partial<RunFormatting>;\n return (\n props.bold !== undefined ||\n props.italic !== undefined ||\n props.font !== undefined ||\n props.size !== undefined ||\n props.color !== undefined ||\n props.underline !== undefined ||\n props.strike !== undefined ||\n props.highlight !== undefined ||\n props.smallCaps !== undefined ||\n props.allCaps !== undefined ||\n props.subscript !== undefined ||\n props.superscript !== undefined\n );\n}\n\n/**\n * Type guard to check if a property change is a ParagraphPropertyChange\n */\nexport function isParagraphPropertyChange(\n change: AnyPropertyChange\n): change is ParagraphPropertyChange {\n return (\n 'previousProperties' in change &&\n !('elementType' in change) &&\n !('previousNumId' in change) &&\n // Check for typical paragraph properties\n ((change.previousProperties as ParagraphFormattingPartial).alignment !== undefined ||\n (change.previousProperties as ParagraphFormattingPartial).leftIndent !== undefined ||\n (change.previousProperties as ParagraphFormattingPartial).spaceBefore !== undefined ||\n (change.previousProperties as ParagraphFormattingPartial).style !== undefined)\n );\n}\n\n/**\n * Type guard to check if a property change is a TablePropertyChange\n */\nexport function isTablePropertyChange(change: AnyPropertyChange): change is TablePropertyChange {\n return 'elementType' in change;\n}\n\n/**\n * Type guard to check if a property change is a SectionPropertyChange\n *\n * Checks for section-specific properties: page size, margins, orientation, columns, etc.\n * Per ECMA-376, section properties are distinct from run/paragraph properties.\n */\nexport function isSectionPropertyChange(\n change: AnyPropertyChange\n): change is SectionPropertyChange {\n if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {\n return false;\n }\n // Check for section-specific properties\n const props = change.previousProperties as Record<string, any>;\n return (\n props.pageWidth !== undefined ||\n props.pageHeight !== undefined ||\n props.orientation !== undefined ||\n props.marginTop !== undefined ||\n props.marginBottom !== undefined ||\n props.marginLeft !== undefined ||\n props.marginRight !== undefined ||\n props.columns !== undefined ||\n props.headerDistance !== undefined ||\n props.footerDistance !== undefined ||\n props.gutterMargin !== undefined ||\n props.pageNumberStart !== undefined ||\n props.sectionType !== undefined\n );\n}\n\n/**\n * Type guard to check if a property change is a NumberingChange\n */\nexport function isNumberingChange(change: AnyPropertyChange): change is NumberingChange {\n return 'previousNumId' in change || 'previousIlvl' in change || 'original' in change;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PropertyChangeTypes.js","sourceRoot":"","sources":["../../src/elements/PropertyChangeTypes.ts"],"names":[],"mappings":";;AAsXA,kDAoBC;AAKD,8DAaC;AAKD,sDAEC;AAQD,0DAuBC;AAKD,8CAEC;AAnFD,SAAgB,mBAAmB,CAAC,MAAyB;IAC3D,IAAI,CAAC,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,aAAa,IAAI,MAAM,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,kBAA4C,CAAC;IAClE,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,KAAK,KAAK,SAAS;QACzB,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,WAAW,KAAK,SAAS,CAChC,CAAC;AACJ,CAAC;AAKD,SAAgB,yBAAyB,CACvC,MAAyB;IAEzB,OAAO,CACL,oBAAoB,IAAI,MAAM;QAC9B,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;QAC1B,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC;QAE5B,CAAE,MAAM,CAAC,kBAAiD,CAAC,SAAS,KAAK,SAAS;YAC/E,MAAM,CAAC,kBAAiD,CAAC,UAAU,KAAK,SAAS;YACjF,MAAM,CAAC,kBAAiD,CAAC,WAAW,KAAK,SAAS;YAClF,MAAM,CAAC,kBAAiD,CAAC,KAAK,KAAK,SAAS,CAAC,CACjF,CAAC;AACJ,CAAC;AAKD,SAAgB,qBAAqB,CAAC,MAAyB;IAC7D,OAAO,aAAa,IAAI,MAAM,CAAC;AACjC,CAAC;AAQD,SAAgB,uBAAuB,CACrC,MAAyB;IAEzB,IAAI,CAAC,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,aAAa,IAAI,MAAM,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAyC,CAAC;IAC/D,OAAO,CACL,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,KAAK,CAAC,YAAY,KAAK,SAAS;QAChC,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,cAAc,KAAK,SAAS;QAClC,KAAK,CAAC,cAAc,KAAK,SAAS;QAClC,KAAK,CAAC,YAAY,KAAK,SAAS;QAChC,KAAK,CAAC,eAAe,KAAK,SAAS;QACnC,KAAK,CAAC,WAAW,KAAK,SAAS,CAChC,CAAC;AACJ,CAAC;AAKD,SAAgB,iBAAiB,CAAC,MAAyB;IACzD,OAAO,eAAe,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;AACvF,CAAC","sourcesContent":["/**\n * PropertyChangeTypes - Type definitions for property change tracking in revisions\n *\n * These types represent the parsed data from OOXML property change elements:\n * - w:rPrChange (run property changes)\n * - w:pPrChange (paragraph property changes)\n * - w:tblPrChange, w:trPrChange, w:tcPrChange (table property changes)\n * - w:sectPrChange (section property changes)\n * - w:numberingChange (numbering property changes)\n *\n * Per ECMA-376, property change elements track the PREVIOUS state of properties\n * before a change was made, allowing Word to show what changed and enabling\n * accept/reject functionality.\n *\n * @module PropertyChangeTypes\n */\n\nimport type { RunFormatting } from './Run.js';\nimport type { ShadingConfig } from './CommonTypes.js';\n\n/**\n * Common base for all property change types\n */\nexport interface PropertyChangeBase {\n /** Unique revision ID (ST_DecimalNumber) */\n id: number;\n /** Author who made the change (required) */\n author: string;\n /** Date when the change was made (ISO 8601) */\n date: Date;\n}\n\n/**\n * Run property change (w:rPrChange)\n *\n * Tracks changes to run-level formatting such as:\n * - Bold, italic, underline\n * - Font name, size, color\n * - Highlight, strikethrough\n * - Character spacing, subscript/superscript\n *\n * @example\n * ```xml\n * <w:rPrChange w:id=\"1\" w:author=\"John\" w:date=\"2024-01-15T10:30:00Z\">\n * <w:rPr>\n * <w:b/> <!-- Was bold before change -->\n * </w:rPr>\n * </w:rPrChange>\n * ```\n */\nexport interface RunPropertyChange extends PropertyChangeBase {\n /** Previous run formatting properties before the change */\n previousProperties: Partial<RunFormatting>;\n}\n\n/**\n * Border definition for paragraph borders\n * Per ECMA-376 Part 1 Section 17.3.1.24\n */\nexport interface ParagraphBorderDef {\n /** Border style (single, double, dotted, dashed, etc.) */\n val?: string;\n /** Border width in eighths of a point */\n sz?: number;\n /** Space between border and content in points */\n space?: number;\n /** Border color (hex RGB without #) */\n color?: string;\n /** Theme color reference */\n themeColor?: string;\n}\n\n/**\n * Paragraph borders (w:pBdr)\n * Per ECMA-376 Part 1 Section 17.3.1.24\n */\nexport interface ParagraphBorders {\n /** Top border */\n top?: ParagraphBorderDef;\n /** Bottom border */\n bottom?: ParagraphBorderDef;\n /** Left border */\n left?: ParagraphBorderDef;\n /** Right border */\n right?: ParagraphBorderDef;\n /** Border between paragraphs with same borders */\n between?: ParagraphBorderDef;\n /** Bar border (vertical line) */\n bar?: ParagraphBorderDef;\n}\n\n/**\n * Paragraph shading (w:shd)\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type ParagraphShading = ShadingConfig;\n\n/**\n * Tab stop definition\n * Per ECMA-376 Part 1 Section 17.3.1.38\n */\nexport interface TabStopDef {\n /** Tab stop type (left, right, center, decimal, bar, clear) */\n val?: string;\n /** Tab position in twips */\n pos?: number;\n /** Leader character (none, dot, hyphen, underscore, middleDot) */\n leader?: string;\n}\n\n/**\n * Paragraph formatting options (subset for type safety)\n * Full ParagraphFormatting is in Paragraph.ts but we need a partial here\n *\n * Per ECMA-376 Part 1 Section 17.3.1, this covers all paragraph properties\n * that can be tracked in w:pPrChange revision elements.\n */\nexport interface ParagraphFormattingPartial {\n /** Text alignment: left, center, right, justify */\n alignment?: 'left' | 'center' | 'right' | 'justify';\n /** Left indentation in twips */\n leftIndent?: number;\n /** Right indentation in twips */\n rightIndent?: number;\n /** First line indentation in twips */\n firstLineIndent?: number;\n /** Hanging indentation in twips */\n hangingIndent?: number;\n /** Spacing before paragraph in twips */\n spaceBefore?: number;\n /** Spacing after paragraph in twips */\n spaceAfter?: number;\n /** Line spacing in twips */\n lineSpacing?: number;\n /** Line spacing rule */\n lineSpacingRule?: 'auto' | 'exact' | 'atLeast';\n /** Paragraph style ID */\n style?: string;\n /** Keep with next paragraph */\n keepNext?: boolean;\n /** Keep lines together */\n keepLines?: boolean;\n /** Page break before */\n pageBreakBefore?: boolean;\n /** Widow/orphan control */\n widowControl?: boolean;\n /** Suppress auto-hyphenation */\n suppressAutoHyphens?: boolean;\n /** Contextual spacing */\n contextualSpacing?: boolean;\n /** Mirror indents */\n mirrorIndents?: boolean;\n /** Outline level (for headings) */\n outlineLevel?: number;\n /** Right-to-left paragraph */\n bidi?: boolean;\n /** Numbering properties (list formatting) */\n numbering?: {\n numId?: number;\n level?: number;\n };\n\n // === Extended properties for full ECMA-376 compliance ===\n\n /**\n * Paragraph borders (w:pBdr)\n * Per ECMA-376 Part 1 Section 17.3.1.24\n */\n borders?: ParagraphBorders;\n\n /**\n * Paragraph shading/background (w:shd)\n * Per ECMA-376 Part 1 Section 17.3.1.32\n */\n shading?: ParagraphShading;\n\n /**\n * Custom tab stops (w:tabs)\n * Per ECMA-376 Part 1 Section 17.3.1.38\n */\n tabs?: TabStopDef[];\n\n /**\n * Text direction (w:textDirection)\n * Per ECMA-376 Part 1 Section 17.3.1.40\n * Values: lrTb, tbRl, btLr, lrTbV, tbRlV, tbLrV\n */\n textDirection?: string;\n\n /**\n * Text alignment (w:textAlignment)\n * Per ECMA-376 Part 1 Section 17.3.1.39\n * Values: auto, top, center, baseline, bottom\n */\n textAlignment?: string;\n\n /**\n * Suppress line numbers (w:suppressLineNumbers)\n * Per ECMA-376 Part 1 Section 17.3.1.35\n */\n suppressLineNumbers?: boolean;\n\n /**\n * Adjust right indent (w:adjustRightInd)\n * Per ECMA-376 Part 1 Section 17.3.1.1\n */\n adjustRightInd?: boolean;\n\n /**\n * Snap to grid (w:snapToGrid)\n * Per ECMA-376 Part 1 Section 17.3.1.33\n */\n snapToGrid?: boolean;\n\n /**\n * Word wrap (w:wordWrap)\n * Per ECMA-376 Part 1 Section 17.3.1.44\n */\n wordWrap?: boolean;\n\n /**\n * Auto space between East Asian and numeric (w:autoSpaceDE)\n */\n autoSpaceDE?: boolean;\n\n /**\n * Auto space between East Asian and Western (w:autoSpaceDN)\n */\n autoSpaceDN?: boolean;\n}\n\n/**\n * Paragraph property change (w:pPrChange)\n *\n * Tracks changes to paragraph-level formatting such as:\n * - Alignment (left, center, right, justify)\n * - Indentation (left, right, first line, hanging)\n * - Spacing (before, after, line)\n * - Keep with next, keep lines together\n * - Paragraph style\n * - Numbering/list formatting (numId, ilvl)\n *\n * @example\n * ```xml\n * <w:pPrChange w:id=\"2\" w:author=\"Jane\" w:date=\"2024-01-15T11:00:00Z\">\n * <w:pPr>\n * <w:jc w:val=\"left\"/> <!-- Was left-aligned before change -->\n * </w:pPr>\n * </w:pPrChange>\n * ```\n */\nexport interface ParagraphPropertyChange extends PropertyChangeBase {\n /** Previous paragraph formatting properties before the change */\n previousProperties: Partial<ParagraphFormattingPartial>;\n}\n\n/**\n * Table property change types\n */\nexport type TablePropertyChangeType = 'table' | 'row' | 'cell';\n\n/**\n * Table property change (w:tblPrChange, w:trPrChange, w:tcPrChange)\n *\n * Tracks changes to table-level properties including:\n * - Table: width, alignment, borders, shading\n * - Row: height, header row, can't split\n * - Cell: width, vertical alignment, borders, shading, merge\n *\n * @example\n * ```xml\n * <w:tblPrChange w:id=\"3\" w:author=\"John\" w:date=\"2024-01-15T12:00:00Z\">\n * <w:tblPr>\n * <w:tblW w:w=\"5000\" w:type=\"pct\"/>\n * </w:tblPr>\n * </w:tblPrChange>\n * ```\n */\nexport interface TablePropertyChange extends PropertyChangeBase {\n /** Type of table element (table, row, or cell) */\n elementType: TablePropertyChangeType;\n /** Previous table properties before the change */\n previousProperties: Record<string, any>;\n}\n\n/**\n * Section property change (w:sectPrChange)\n *\n * Tracks changes to section-level properties such as:\n * - Page size (width, height)\n * - Page margins (top, bottom, left, right, header, footer, gutter)\n * - Page orientation (portrait, landscape)\n * - Columns configuration\n * - Page numbering\n *\n * @example\n * ```xml\n * <w:sectPrChange w:id=\"4\" w:author=\"Jane\" w:date=\"2024-01-15T13:00:00Z\">\n * <w:sectPr>\n * <w:pgSz w:w=\"12240\" w:h=\"15840\"/>\n * <w:pgMar w:top=\"1440\" w:right=\"1440\" w:bottom=\"1440\" w:left=\"1440\"/>\n * </w:sectPr>\n * </w:sectPrChange>\n * ```\n */\nexport interface SectionPropertyChange extends PropertyChangeBase {\n /** Previous section properties before the change */\n previousProperties: Record<string, any>;\n}\n\n/**\n * Numbering change (w:numberingChange)\n *\n * Tracks changes to list numbering properties:\n * - Numbering definition ID\n * - Indentation level\n * - Starting number\n *\n * @example\n * ```xml\n * <w:numberingChange w:id=\"5\" w:author=\"John\" w:date=\"2024-01-15T14:00:00Z\"\n * w:original=\"1\" />\n * ```\n */\nexport interface NumberingChange extends PropertyChangeBase {\n /** Previous numbering definition ID */\n previousNumId?: number;\n /** Previous indentation level */\n previousIlvl?: number;\n /** Original numbering format string */\n original?: string;\n}\n\n/**\n * Location of a revision within the document structure\n * Used for precise change tracking and changelog generation\n */\nexport interface RevisionLocation {\n /** Paragraph index within the document body (0-based) */\n paragraphIndex?: number;\n /** Run index within the paragraph (0-based) */\n runIndex?: number;\n /** Table row index (0-based) - only for table revisions */\n tableRow?: number;\n /** Table cell index within row (0-based) - only for table revisions */\n tableCell?: number;\n /** Section index (0-based) - only for section revisions */\n sectionIndex?: number;\n /** Header/footer type if revision is in header/footer */\n headerFooterType?:\n | 'header'\n | 'footer'\n | 'firstHeader'\n | 'firstFooter'\n | 'evenHeader'\n | 'evenFooter';\n}\n\n/**\n * Union type for all property change types\n */\nexport type AnyPropertyChange =\n | RunPropertyChange\n | ParagraphPropertyChange\n | TablePropertyChange\n | SectionPropertyChange\n | NumberingChange;\n\n/**\n * Type guard to check if a property change is a RunPropertyChange\n *\n * Note: Empty previousProperties cannot be reliably typed - this guard returns\n * false for empty objects. Use context-aware typing when the source is known.\n */\nexport function isRunPropertyChange(change: AnyPropertyChange): change is RunPropertyChange {\n if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {\n return false;\n }\n // Check for typical run properties - must have at least one identifiable property\n const props = change.previousProperties as Partial<RunFormatting>;\n return (\n props.bold !== undefined ||\n props.italic !== undefined ||\n props.font !== undefined ||\n props.size !== undefined ||\n props.color !== undefined ||\n props.underline !== undefined ||\n props.strike !== undefined ||\n props.highlight !== undefined ||\n props.smallCaps !== undefined ||\n props.allCaps !== undefined ||\n props.subscript !== undefined ||\n props.superscript !== undefined\n );\n}\n\n/**\n * Type guard to check if a property change is a ParagraphPropertyChange\n */\nexport function isParagraphPropertyChange(\n change: AnyPropertyChange\n): change is ParagraphPropertyChange {\n return (\n 'previousProperties' in change &&\n !('elementType' in change) &&\n !('previousNumId' in change) &&\n // Check for typical paragraph properties\n ((change.previousProperties as ParagraphFormattingPartial).alignment !== undefined ||\n (change.previousProperties as ParagraphFormattingPartial).leftIndent !== undefined ||\n (change.previousProperties as ParagraphFormattingPartial).spaceBefore !== undefined ||\n (change.previousProperties as ParagraphFormattingPartial).style !== undefined)\n );\n}\n\n/**\n * Type guard to check if a property change is a TablePropertyChange\n */\nexport function isTablePropertyChange(change: AnyPropertyChange): change is TablePropertyChange {\n return 'elementType' in change;\n}\n\n/**\n * Type guard to check if a property change is a SectionPropertyChange\n *\n * Checks for section-specific properties: page size, margins, orientation, columns, etc.\n * Per ECMA-376, section properties are distinct from run/paragraph properties.\n */\nexport function isSectionPropertyChange(\n change: AnyPropertyChange\n): change is SectionPropertyChange {\n if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {\n return false;\n }\n // Check for section-specific properties\n const props = change.previousProperties as Record<string, any>;\n return (\n props.pageWidth !== undefined ||\n props.pageHeight !== undefined ||\n props.orientation !== undefined ||\n props.marginTop !== undefined ||\n props.marginBottom !== undefined ||\n props.marginLeft !== undefined ||\n props.marginRight !== undefined ||\n props.columns !== undefined ||\n props.headerDistance !== undefined ||\n props.footerDistance !== undefined ||\n props.gutterMargin !== undefined ||\n props.pageNumberStart !== undefined ||\n props.sectionType !== undefined\n );\n}\n\n/**\n * Type guard to check if a property change is a NumberingChange\n */\nexport function isNumberingChange(change: AnyPropertyChange): change is NumberingChange {\n return 'previousNumId' in change || 'previousIlvl' in change || 'original' in change;\n}\n"]}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
1
|
+
import { XMLElement } from '../xml/XMLBuilder.js';
|
|
2
2
|
export type RangeMarkerType = 'moveFromRangeStart' | 'moveFromRangeEnd' | 'moveToRangeStart' | 'moveToRangeEnd' | 'customXmlMoveFromRangeStart' | 'customXmlMoveFromRangeEnd' | 'customXmlMoveToRangeStart' | 'customXmlMoveToRangeEnd' | 'customXmlInsRangeStart' | 'customXmlInsRangeEnd' | 'customXmlDelRangeStart' | 'customXmlDelRangeEnd';
|
|
3
|
+
export type DisplacedByCustomXml = 'next' | 'prev';
|
|
3
4
|
export interface RangeMarkerProperties {
|
|
4
5
|
id: number;
|
|
5
6
|
type: RangeMarkerType;
|
|
6
7
|
name?: string;
|
|
7
8
|
author?: string;
|
|
8
9
|
date?: Date;
|
|
10
|
+
displacedByCustomXml?: DisplacedByCustomXml;
|
|
11
|
+
colFirst?: number;
|
|
12
|
+
colLast?: number;
|
|
9
13
|
}
|
|
10
14
|
export declare class RangeMarker {
|
|
11
15
|
private id;
|
|
@@ -13,6 +17,9 @@ export declare class RangeMarker {
|
|
|
13
17
|
private name?;
|
|
14
18
|
private author?;
|
|
15
19
|
private date?;
|
|
20
|
+
private displacedByCustomXml?;
|
|
21
|
+
private colFirst?;
|
|
22
|
+
private colLast?;
|
|
16
23
|
constructor(properties: RangeMarkerProperties);
|
|
17
24
|
getId(): number;
|
|
18
25
|
setId(id: number): void;
|
|
@@ -20,10 +27,16 @@ export declare class RangeMarker {
|
|
|
20
27
|
getName(): string | undefined;
|
|
21
28
|
getAuthor(): string | undefined;
|
|
22
29
|
getDate(): Date | undefined;
|
|
30
|
+
getDisplacedByCustomXml(): DisplacedByCustomXml | undefined;
|
|
31
|
+
getColFirst(): number | undefined;
|
|
32
|
+
getColLast(): number | undefined;
|
|
23
33
|
isStartMarker(): boolean;
|
|
24
34
|
isEndMarker(): boolean;
|
|
25
35
|
private getElementName;
|
|
26
36
|
private formatDate;
|
|
37
|
+
private supportsName;
|
|
38
|
+
private supportsDisplacedByCustomXml;
|
|
39
|
+
private supportsColumnRange;
|
|
27
40
|
toXML(): XMLElement;
|
|
28
41
|
static createMoveFromStart(id: number, name: string, author: string, date?: Date): RangeMarker;
|
|
29
42
|
static createMoveFromEnd(id: number): RangeMarker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeMarker.d.ts","sourceRoot":"","sources":["../../src/elements/RangeMarker.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RangeMarker.d.ts","sourceRoot":"","sources":["../../src/elements/RangeMarker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RangeMarker = void 0;
|
|
4
|
-
const
|
|
4
|
+
const dateFormatting_js_1 = require("../utils/dateFormatting.js");
|
|
5
5
|
class RangeMarker {
|
|
6
6
|
id;
|
|
7
7
|
type;
|
|
8
8
|
name;
|
|
9
9
|
author;
|
|
10
10
|
date;
|
|
11
|
+
displacedByCustomXml;
|
|
12
|
+
colFirst;
|
|
13
|
+
colLast;
|
|
11
14
|
constructor(properties) {
|
|
12
15
|
this.id = properties.id;
|
|
13
16
|
this.type = properties.type;
|
|
14
17
|
this.name = properties.name;
|
|
15
18
|
this.author = properties.author;
|
|
16
19
|
this.date = properties.date;
|
|
20
|
+
this.displacedByCustomXml = properties.displacedByCustomXml;
|
|
21
|
+
this.colFirst = properties.colFirst;
|
|
22
|
+
this.colLast = properties.colLast;
|
|
17
23
|
}
|
|
18
24
|
getId() {
|
|
19
25
|
return this.id;
|
|
@@ -33,6 +39,15 @@ class RangeMarker {
|
|
|
33
39
|
getDate() {
|
|
34
40
|
return this.date;
|
|
35
41
|
}
|
|
42
|
+
getDisplacedByCustomXml() {
|
|
43
|
+
return this.displacedByCustomXml;
|
|
44
|
+
}
|
|
45
|
+
getColFirst() {
|
|
46
|
+
return this.colFirst;
|
|
47
|
+
}
|
|
48
|
+
getColLast() {
|
|
49
|
+
return this.colLast;
|
|
50
|
+
}
|
|
36
51
|
isStartMarker() {
|
|
37
52
|
return this.type.endsWith('RangeStart');
|
|
38
53
|
}
|
|
@@ -70,19 +85,42 @@ class RangeMarker {
|
|
|
70
85
|
}
|
|
71
86
|
}
|
|
72
87
|
formatDate(date) {
|
|
73
|
-
return (0,
|
|
88
|
+
return (0, dateFormatting_js_1.formatDateForXml)(date);
|
|
89
|
+
}
|
|
90
|
+
supportsName() {
|
|
91
|
+
return this.type === 'moveFromRangeStart' || this.type === 'moveToRangeStart';
|
|
92
|
+
}
|
|
93
|
+
supportsDisplacedByCustomXml() {
|
|
94
|
+
return (this.type === 'moveFromRangeStart' ||
|
|
95
|
+
this.type === 'moveToRangeStart' ||
|
|
96
|
+
this.type === 'moveFromRangeEnd' ||
|
|
97
|
+
this.type === 'moveToRangeEnd');
|
|
98
|
+
}
|
|
99
|
+
supportsColumnRange() {
|
|
100
|
+
return this.type === 'moveFromRangeStart' || this.type === 'moveToRangeStart';
|
|
74
101
|
}
|
|
75
102
|
toXML() {
|
|
76
103
|
const attributes = {
|
|
77
104
|
'w:id': this.id.toString(),
|
|
78
105
|
};
|
|
79
|
-
|
|
80
|
-
|
|
106
|
+
const isStart = this.isStartMarker();
|
|
107
|
+
const isMoveBookmark = this.supportsName();
|
|
108
|
+
if (isMoveBookmark) {
|
|
109
|
+
attributes['w:name'] = this.name || `_move_${this.id}`;
|
|
110
|
+
}
|
|
111
|
+
if (isStart) {
|
|
112
|
+
attributes['w:author'] = this.author || 'Unknown';
|
|
113
|
+
attributes['w:date'] = this.formatDate(this.date ?? new Date());
|
|
81
114
|
}
|
|
82
|
-
if (this.
|
|
83
|
-
attributes['w:
|
|
84
|
-
|
|
85
|
-
|
|
115
|
+
if (this.displacedByCustomXml && this.supportsDisplacedByCustomXml()) {
|
|
116
|
+
attributes['w:displacedByCustomXml'] = this.displacedByCustomXml;
|
|
117
|
+
}
|
|
118
|
+
if (this.supportsColumnRange()) {
|
|
119
|
+
if (this.colFirst !== undefined) {
|
|
120
|
+
attributes['w:colFirst'] = this.colFirst.toString();
|
|
121
|
+
}
|
|
122
|
+
if (this.colLast !== undefined) {
|
|
123
|
+
attributes['w:colLast'] = this.colLast.toString();
|
|
86
124
|
}
|
|
87
125
|
}
|
|
88
126
|
const elementName = this.getElementName();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeMarker.js","sourceRoot":"","sources":["../../src/elements/RangeMarker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * RangeMarker - Represents range markers for tracked changes\n *\n * Range markers are used to mark the boundaries of moved or deleted content spans.\n * They enable Word to properly display and manage complex revision regions.\n */\n\nimport { XMLElement } from '../xml/XMLBuilder';\nimport { formatDateForXml } from '../utils/dateFormatting';\n\n/**\n * Range marker type\n */\nexport type RangeMarkerType =\n | 'moveFromRangeStart'\n | 'moveFromRangeEnd'\n | 'moveToRangeStart'\n | 'moveToRangeEnd'\n | 'customXmlMoveFromRangeStart'\n | 'customXmlMoveFromRangeEnd'\n | 'customXmlMoveToRangeStart'\n | 'customXmlMoveToRangeEnd'\n | 'customXmlInsRangeStart'\n | 'customXmlInsRangeEnd'\n | 'customXmlDelRangeStart'\n | 'customXmlDelRangeEnd';\n\n/**\n * Range marker properties\n */\nexport interface RangeMarkerProperties {\n /** Unique ID for this range marker */\n id: number;\n /** Type of range marker */\n type: RangeMarkerType;\n /** Name linking start and end markers (for move operations) */\n name?: string;\n /** Author who made the change (for start markers only) */\n author?: string;\n /** Date when the change was made (for start markers only) */\n date?: Date;\n}\n\n/**\n * Represents a range marker for tracked changes\n * Range markers mark the boundaries of moved, inserted, or deleted content\n */\nexport class RangeMarker {\n private id: number;\n private type: RangeMarkerType;\n private name?: string;\n private author?: string;\n private date?: Date;\n\n /**\n * Creates a new RangeMarker\n * @param properties - Range marker properties\n */\n constructor(properties: RangeMarkerProperties) {\n this.id = properties.id;\n this.type = properties.type;\n this.name = properties.name;\n this.author = properties.author;\n this.date = properties.date;\n }\n\n /**\n * Gets the range marker ID\n */\n getId(): number {\n return this.id;\n }\n\n /**\n * Sets the range marker ID (used by RevisionManager)\n * @internal\n */\n setId(id: number): void {\n this.id = id;\n }\n\n /**\n * Gets the range marker type\n */\n getType(): RangeMarkerType {\n return this.type;\n }\n\n /**\n * Gets the range marker name\n */\n getName(): string | undefined {\n return this.name;\n }\n\n /**\n * Gets the author\n */\n getAuthor(): string | undefined {\n return this.author;\n }\n\n /**\n * Gets the date\n */\n getDate(): Date | undefined {\n return this.date;\n }\n\n /**\n * Checks if this is a start marker\n */\n isStartMarker(): boolean {\n return this.type.endsWith('RangeStart');\n }\n\n /**\n * Checks if this is an end marker\n */\n isEndMarker(): boolean {\n return this.type.endsWith('RangeEnd');\n }\n\n /**\n * Gets the XML element name for this range marker type\n */\n private getElementName(): string {\n switch (this.type) {\n case 'moveFromRangeStart':\n return 'w:moveFromRangeStart';\n case 'moveFromRangeEnd':\n return 'w:moveFromRangeEnd';\n case 'moveToRangeStart':\n return 'w:moveToRangeStart';\n case 'moveToRangeEnd':\n return 'w:moveToRangeEnd';\n case 'customXmlMoveFromRangeStart':\n return 'w:customXmlMoveFromRangeStart';\n case 'customXmlMoveFromRangeEnd':\n return 'w:customXmlMoveFromRangeEnd';\n case 'customXmlMoveToRangeStart':\n return 'w:customXmlMoveToRangeStart';\n case 'customXmlMoveToRangeEnd':\n return 'w:customXmlMoveToRangeEnd';\n case 'customXmlInsRangeStart':\n return 'w:customXmlInsRangeStart';\n case 'customXmlInsRangeEnd':\n return 'w:customXmlInsRangeEnd';\n case 'customXmlDelRangeStart':\n return 'w:customXmlDelRangeStart';\n case 'customXmlDelRangeEnd':\n return 'w:customXmlDelRangeEnd';\n default:\n return 'w:moveFromRangeStart';\n }\n }\n\n /**\n * Formats a date to ISO 8601 format for XML\n * Uses formatDateForXml() to strip milliseconds which Word does not accept.\n */\n private formatDate(date: Date): string {\n return formatDateForXml(date);\n }\n\n /**\n * Generates XML for this range marker\n * @returns XMLElement representing the range marker\n */\n toXML(): XMLElement {\n const attributes: Record<string, string> = {\n 'w:id': this.id.toString(),\n };\n\n // Add name attribute for move operations\n if (this.name) {\n attributes['w:name'] = this.name;\n }\n\n // Add author and date for start markers\n if (this.isStartMarker() && this.author) {\n attributes['w:author'] = this.author;\n if (this.date) {\n attributes['w:date'] = this.formatDate(this.date);\n }\n }\n\n const elementName = this.getElementName();\n\n return {\n name: elementName,\n attributes,\n children: [], // Range markers are self-closing\n };\n }\n\n /**\n * Creates a moveFromRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name (links start/end markers)\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createMoveFromStart(id: number, name: string, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveFromRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a moveFromRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createMoveFromEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveFromRangeEnd',\n });\n }\n\n /**\n * Creates a moveToRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name (links to moveFrom markers)\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createMoveToStart(id: number, name: string, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveToRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a moveToRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createMoveToEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveToRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlInsRangeStart marker\n * @param id - Unique ID\n * @param author - Author who made the insertion\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlInsStart(id: number, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlInsRangeStart',\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlInsRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlInsEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlInsRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlDelRangeStart marker\n * @param id - Unique ID\n * @param author - Author who made the deletion\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlDelStart(id: number, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlDelRangeStart',\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlDelRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlDelEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlDelRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlMoveFromRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveFromStart(\n id: number,\n name: string,\n author: string,\n date?: Date\n ): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveFromRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlMoveFromRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveFromEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveFromRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlMoveToRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveToStart(\n id: number,\n name: string,\n author: string,\n date?: Date\n ): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveToRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlMoveToRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveToEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveToRangeEnd',\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RangeMarker.js","sourceRoot":"","sources":["../../src/elements/RangeMarker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * RangeMarker - Represents range markers for tracked changes\n *\n * Range markers are used to mark the boundaries of moved or deleted content spans.\n * They enable Word to properly display and manage complex revision regions.\n */\n\nimport { XMLElement } from '../xml/XMLBuilder.js';\nimport { formatDateForXml } from '../utils/dateFormatting.js';\n\n/**\n * Range marker type\n */\nexport type RangeMarkerType =\n | 'moveFromRangeStart'\n | 'moveFromRangeEnd'\n | 'moveToRangeStart'\n | 'moveToRangeEnd'\n | 'customXmlMoveFromRangeStart'\n | 'customXmlMoveFromRangeEnd'\n | 'customXmlMoveToRangeStart'\n | 'customXmlMoveToRangeEnd'\n | 'customXmlInsRangeStart'\n | 'customXmlInsRangeEnd'\n | 'customXmlDelRangeStart'\n | 'customXmlDelRangeEnd';\n\n/**\n * `w:displacedByCustomXml` attribute value per ECMA-376 §17.13.5 — ST_DisplacedByCustomXml.\n * Indicates which side of a custom-XML boundary a displaced range marker\n * semantically belongs to.\n */\nexport type DisplacedByCustomXml = 'next' | 'prev';\n\n/**\n * Range marker properties\n */\nexport interface RangeMarkerProperties {\n /** Unique ID for this range marker */\n id: number;\n /** Type of range marker */\n type: RangeMarkerType;\n /** Name linking start and end markers (for move operations) */\n name?: string;\n /** Author who made the change (for start markers only) */\n author?: string;\n /** Date when the change was made (for start markers only) */\n date?: Date;\n /**\n * `w:displacedByCustomXml` per ECMA-376 CT_MarkupRange / CT_MoveBookmark.\n * Only valid on moveFromRangeStart, moveToRangeStart, moveFromRangeEnd,\n * and moveToRangeEnd (the CT_MarkupRange-derived marker types).\n * Ignored on serialize for other types. \"next\" / \"prev\".\n */\n displacedByCustomXml?: DisplacedByCustomXml;\n /**\n * `w:colFirst` per ECMA-376 CT_BookmarkRange — first column index for\n * table-column-scoped moves. Only valid on moveFromRangeStart /\n * moveToRangeStart (CT_MoveBookmark-derived). Ignored on serialize for\n * other types. 0-based, inclusive.\n */\n colFirst?: number;\n /**\n * `w:colLast` per ECMA-376 CT_BookmarkRange — last column index for\n * table-column-scoped moves. Only valid on moveFromRangeStart /\n * moveToRangeStart. 0-based, inclusive.\n */\n colLast?: number;\n}\n\n/**\n * Represents a range marker for tracked changes\n * Range markers mark the boundaries of moved, inserted, or deleted content\n */\nexport class RangeMarker {\n private id: number;\n private type: RangeMarkerType;\n private name?: string;\n private author?: string;\n private date?: Date;\n private displacedByCustomXml?: DisplacedByCustomXml;\n private colFirst?: number;\n private colLast?: number;\n\n /**\n * Creates a new RangeMarker\n * @param properties - Range marker properties\n */\n constructor(properties: RangeMarkerProperties) {\n this.id = properties.id;\n this.type = properties.type;\n this.name = properties.name;\n this.author = properties.author;\n this.date = properties.date;\n this.displacedByCustomXml = properties.displacedByCustomXml;\n this.colFirst = properties.colFirst;\n this.colLast = properties.colLast;\n }\n\n /**\n * Gets the range marker ID\n */\n getId(): number {\n return this.id;\n }\n\n /**\n * Sets the range marker ID (used by RevisionManager)\n * @internal\n */\n setId(id: number): void {\n this.id = id;\n }\n\n /**\n * Gets the range marker type\n */\n getType(): RangeMarkerType {\n return this.type;\n }\n\n /**\n * Gets the range marker name\n */\n getName(): string | undefined {\n return this.name;\n }\n\n /**\n * Gets the author\n */\n getAuthor(): string | undefined {\n return this.author;\n }\n\n /**\n * Gets the date\n */\n getDate(): Date | undefined {\n return this.date;\n }\n\n /**\n * Gets the w:displacedByCustomXml attribute value. Only meaningful on\n * moveFrom/moveTo range start/end markers; undefined on all other types.\n */\n getDisplacedByCustomXml(): DisplacedByCustomXml | undefined {\n return this.displacedByCustomXml;\n }\n\n /**\n * Gets the w:colFirst column index. Only meaningful on CT_MoveBookmark-\n * derived start markers; undefined otherwise.\n */\n getColFirst(): number | undefined {\n return this.colFirst;\n }\n\n /**\n * Gets the w:colLast column index. Only meaningful on CT_MoveBookmark-\n * derived start markers; undefined otherwise.\n */\n getColLast(): number | undefined {\n return this.colLast;\n }\n\n /**\n * Checks if this is a start marker\n */\n isStartMarker(): boolean {\n return this.type.endsWith('RangeStart');\n }\n\n /**\n * Checks if this is an end marker\n */\n isEndMarker(): boolean {\n return this.type.endsWith('RangeEnd');\n }\n\n /**\n * Gets the XML element name for this range marker type\n */\n private getElementName(): string {\n switch (this.type) {\n case 'moveFromRangeStart':\n return 'w:moveFromRangeStart';\n case 'moveFromRangeEnd':\n return 'w:moveFromRangeEnd';\n case 'moveToRangeStart':\n return 'w:moveToRangeStart';\n case 'moveToRangeEnd':\n return 'w:moveToRangeEnd';\n case 'customXmlMoveFromRangeStart':\n return 'w:customXmlMoveFromRangeStart';\n case 'customXmlMoveFromRangeEnd':\n return 'w:customXmlMoveFromRangeEnd';\n case 'customXmlMoveToRangeStart':\n return 'w:customXmlMoveToRangeStart';\n case 'customXmlMoveToRangeEnd':\n return 'w:customXmlMoveToRangeEnd';\n case 'customXmlInsRangeStart':\n return 'w:customXmlInsRangeStart';\n case 'customXmlInsRangeEnd':\n return 'w:customXmlInsRangeEnd';\n case 'customXmlDelRangeStart':\n return 'w:customXmlDelRangeStart';\n case 'customXmlDelRangeEnd':\n return 'w:customXmlDelRangeEnd';\n default:\n return 'w:moveFromRangeStart';\n }\n }\n\n /**\n * Formats a date to ISO 8601 format for XML\n * Uses formatDateForXml() to strip milliseconds which Word does not accept.\n */\n private formatDate(date: Date): string {\n return formatDateForXml(date);\n }\n\n /**\n * Returns true for marker types whose OOXML schema base is CT_MoveBookmark\n * (ECMA-376 §17.13.5.15 / 19). Only these carry a w:name attribute.\n * moveFromRangeEnd/moveToRangeEnd derive from CT_MarkupRange, and all\n * customXml* markers derive from CT_TrackChange or CT_Markup — none of\n * those have w:name in the schema, so emitting it produces invalid XML\n * that fails Open XML SDK validation.\n */\n private supportsName(): boolean {\n return this.type === 'moveFromRangeStart' || this.type === 'moveToRangeStart';\n }\n\n /**\n * Returns true for marker types derived from CT_MarkupRange, which are the\n * only ones whose schema permits `w:displacedByCustomXml` (ECMA-376 §17.13.5).\n * customXml* markers (CT_TrackChange / CT_Markup) do NOT have this attribute,\n * so emitting it there would fail schema validation.\n */\n private supportsDisplacedByCustomXml(): boolean {\n return (\n this.type === 'moveFromRangeStart' ||\n this.type === 'moveToRangeStart' ||\n this.type === 'moveFromRangeEnd' ||\n this.type === 'moveToRangeEnd'\n );\n }\n\n /**\n * Returns true for marker types derived from CT_BookmarkRange, the only\n * ones whose schema permits `w:colFirst` / `w:colLast` (ECMA-376 §17.13.5).\n * The end markers and customXml* markers do NOT have these attributes.\n */\n private supportsColumnRange(): boolean {\n return this.type === 'moveFromRangeStart' || this.type === 'moveToRangeStart';\n }\n\n /**\n * Generates XML for this range marker.\n *\n * Required-attribute compliance per ECMA-376:\n * - moveFromRangeStart / moveToRangeStart (CT_MoveBookmark §17.13.5.24):\n * REQUIRE w:id, w:author, w:date, w:name. If any is missing, supply a\n * sentinel default so the emitted XML stays schema-valid:\n * - author → \"Unknown\" (matches CT_TrackChange fallback elsewhere)\n * - date → new Date() (best-effort; the revision couldn't be\n * recorded without any time information)\n * - name → \"_move_${id}\" (synthesized link name; both halves of a\n * move operation must use the same name,\n * so construct it deterministically from\n * the id)\n * - customXml*RangeStart (CT_TrackChangeRange §17.13.5.5): REQUIRE\n * w:id, w:author, w:date. Same defaults for author/date.\n * - End markers (CT_MarkupRange §17.13.5.4): only w:id required.\n *\n * Defaults are preferred over throwing or returning null because they\n * keep the surrounding tracked-change context intact and leave the\n * document openable. Factory methods (`createMoveFromStart`, etc.)\n * already enforce the required fields at construction, so the defaults\n * only fire when a caller directly invokes the public constructor with\n * incomplete properties.\n *\n * @returns XMLElement representing the range marker.\n */\n toXML(): XMLElement {\n const attributes: Record<string, string> = {\n 'w:id': this.id.toString(),\n };\n\n const isStart = this.isStartMarker();\n const isMoveBookmark = this.supportsName();\n\n // Emit w:name only on CT_MoveBookmark-derived elements (moveFromRangeStart /\n // moveToRangeStart). CT_MoveBookmark requires w:name (§17.13.5.24); supply a\n // synthesized fallback if the caller constructed the marker without one.\n // Other range markers — customXml*Range* (CT_TrackChange / CT_Markup) and\n // moveFrom/ToRangeEnd (CT_MarkupRange) — have no w:name in their schema.\n if (isMoveBookmark) {\n attributes['w:name'] = this.name || `_move_${this.id}`;\n }\n\n // Author and date are required on both CT_MoveBookmark and CT_TrackChange\n // start markers. Supply defaults if missing so the emission stays valid.\n if (isStart) {\n attributes['w:author'] = this.author || 'Unknown';\n attributes['w:date'] = this.formatDate(this.date ?? new Date());\n }\n\n // Emit w:displacedByCustomXml only on CT_MarkupRange-derived types\n // (move*RangeStart / move*RangeEnd). On CT_TrackChange and CT_Markup\n // elements the attribute is not defined by the schema.\n if (this.displacedByCustomXml && this.supportsDisplacedByCustomXml()) {\n attributes['w:displacedByCustomXml'] = this.displacedByCustomXml;\n }\n\n // Emit w:colFirst / w:colLast only on CT_BookmarkRange-derived start\n // markers (moveFromRangeStart / moveToRangeStart). Explicit-undefined\n // check so valid column index 0 is not dropped.\n if (this.supportsColumnRange()) {\n if (this.colFirst !== undefined) {\n attributes['w:colFirst'] = this.colFirst.toString();\n }\n if (this.colLast !== undefined) {\n attributes['w:colLast'] = this.colLast.toString();\n }\n }\n\n const elementName = this.getElementName();\n\n return {\n name: elementName,\n attributes,\n children: [], // Range markers are self-closing\n };\n }\n\n /**\n * Creates a moveFromRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name (links start/end markers)\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createMoveFromStart(id: number, name: string, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveFromRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a moveFromRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createMoveFromEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveFromRangeEnd',\n });\n }\n\n /**\n * Creates a moveToRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name (links to moveFrom markers)\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createMoveToStart(id: number, name: string, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveToRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a moveToRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createMoveToEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'moveToRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlInsRangeStart marker\n * @param id - Unique ID\n * @param author - Author who made the insertion\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlInsStart(id: number, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlInsRangeStart',\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlInsRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlInsEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlInsRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlDelRangeStart marker\n * @param id - Unique ID\n * @param author - Author who made the deletion\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlDelStart(id: number, author: string, date?: Date): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlDelRangeStart',\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlDelRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlDelEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlDelRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlMoveFromRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveFromStart(\n id: number,\n name: string,\n author: string,\n date?: Date\n ): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveFromRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlMoveFromRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveFromEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveFromRangeEnd',\n });\n }\n\n /**\n * Creates a customXmlMoveToRangeStart marker\n * @param id - Unique ID\n * @param name - Move operation name\n * @param author - Author who made the move\n * @param date - Optional date (defaults to now)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveToStart(\n id: number,\n name: string,\n author: string,\n date?: Date\n ): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveToRangeStart',\n name,\n author,\n date: date || new Date(),\n });\n }\n\n /**\n * Creates a customXmlMoveToRangeEnd marker\n * @param id - Unique ID (must match the start marker)\n * @returns New RangeMarker instance\n */\n static createCustomXmlMoveToEnd(id: number): RangeMarker {\n return new RangeMarker({\n id,\n type: 'customXmlMoveToRangeEnd',\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ElementHandler } from '../core/ElementRegistry.js';
|
|
2
|
+
import type { XMLElement } from '../xml/XMLBuilder.js';
|
|
3
|
+
export declare class RegisteredBodyElement<E = unknown> {
|
|
4
|
+
private readonly tag;
|
|
5
|
+
private readonly model;
|
|
6
|
+
private readonly handler;
|
|
7
|
+
private readonly originalXml;
|
|
8
|
+
constructor(tag: string, model: E, handler: ElementHandler<E>, originalXml: string);
|
|
9
|
+
getTag(): string;
|
|
10
|
+
getModel(): E;
|
|
11
|
+
getRawXml(): string;
|
|
12
|
+
getType(): string;
|
|
13
|
+
toXML(): XMLElement;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=RegisteredBodyElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisteredBodyElement.d.ts","sourceRoot":"","sources":["../../src/elements/RegisteredBodyElement.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAE1C,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,WAAW,EAAE,MAAM;IAGtC,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,CAAC;IAIb,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,MAAM;IAIjB,KAAK,IAAI,UAAU;CAapB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegisteredBodyElement = void 0;
|
|
4
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
5
|
+
class RegisteredBodyElement {
|
|
6
|
+
tag;
|
|
7
|
+
model;
|
|
8
|
+
handler;
|
|
9
|
+
originalXml;
|
|
10
|
+
constructor(tag, model, handler, originalXml) {
|
|
11
|
+
this.tag = tag;
|
|
12
|
+
this.model = model;
|
|
13
|
+
this.handler = handler;
|
|
14
|
+
this.originalXml = originalXml;
|
|
15
|
+
}
|
|
16
|
+
getTag() {
|
|
17
|
+
return this.tag;
|
|
18
|
+
}
|
|
19
|
+
getModel() {
|
|
20
|
+
return this.model;
|
|
21
|
+
}
|
|
22
|
+
getRawXml() {
|
|
23
|
+
return this.originalXml;
|
|
24
|
+
}
|
|
25
|
+
getType() {
|
|
26
|
+
return 'registeredBodyElement';
|
|
27
|
+
}
|
|
28
|
+
toXML() {
|
|
29
|
+
let xml;
|
|
30
|
+
try {
|
|
31
|
+
xml = this.handler.serialize(this.model);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
(0, logger_js_1.getGlobalLogger)().warn('ElementRegistry serializer threw; emitting original XML', {
|
|
35
|
+
tag: this.tag,
|
|
36
|
+
error: String(err),
|
|
37
|
+
});
|
|
38
|
+
xml = this.originalXml;
|
|
39
|
+
}
|
|
40
|
+
return { name: '__rawXml', rawXml: xml };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.RegisteredBodyElement = RegisteredBodyElement;
|
|
44
|
+
//# sourceMappingURL=RegisteredBodyElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisteredBodyElement.js","sourceRoot":"","sources":["../../src/elements/RegisteredBodyElement.ts"],"names":[],"mappings":";;;AAYA,kDAAqD;AAErD,MAAa,qBAAqB;IAEb;IACA;IACA;IACA;IAJnB,YACmB,GAAW,EACX,KAAQ,EACR,OAA0B,EAC1B,WAAmB;QAHnB,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAG;QACR,YAAO,GAAP,OAAO,CAAmB;QAC1B,gBAAW,GAAX,WAAW,CAAQ;IACnC,CAAC;IAEJ,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,KAAK;QACH,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,2BAAe,GAAE,CAAC,IAAI,CAAC,yDAAyD,EAAE;gBAChF,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;aACnB,CAAC,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAgB,CAAC;IACzD,CAAC;CACF;AArCD,sDAqCC","sourcesContent":["/**\n * Body element produced by an `ElementRegistry` handler. Carries the\n * consumer's parsed model object together with the handler reference so\n * the document save flow can call `handler.serialize(model)` to round\n * the element back to XML — letting consumers mutate their own model and\n * have changes survive `doc.save()`.\n *\n * If the handler's `serialize()` throws, the original raw XML is emitted\n * unchanged so a buggy custom serializer cannot corrupt the document.\n */\nimport type { ElementHandler } from '../core/ElementRegistry.js';\nimport type { XMLElement } from '../xml/XMLBuilder.js';\nimport { getGlobalLogger } from '../utils/logger.js';\n\nexport class RegisteredBodyElement<E = unknown> {\n constructor(\n private readonly tag: string,\n private readonly model: E,\n private readonly handler: ElementHandler<E>,\n private readonly originalXml: string\n ) {}\n\n getTag(): string {\n return this.tag;\n }\n\n getModel(): E {\n return this.model;\n }\n\n getRawXml(): string {\n return this.originalXml;\n }\n\n getType(): string {\n return 'registeredBodyElement';\n }\n\n toXML(): XMLElement {\n let xml: string;\n try {\n xml = this.handler.serialize(this.model);\n } catch (err) {\n getGlobalLogger().warn('ElementRegistry serializer threw; emitting original XML', {\n tag: this.tag,\n error: String(err),\n });\n xml = this.originalXml;\n }\n return { name: '__rawXml', rawXml: xml } as XMLElement;\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Run } from './Run';
|
|
2
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
3
|
-
import type { RevisionLocation } from './PropertyChangeTypes';
|
|
4
|
-
import type { RevisionContent } from './RevisionContent';
|
|
1
|
+
import { Run } from './Run.js';
|
|
2
|
+
import { XMLElement } from '../xml/XMLBuilder.js';
|
|
3
|
+
import type { RevisionLocation } from './PropertyChangeTypes.js';
|
|
4
|
+
import type { RevisionContent } from './RevisionContent.js';
|
|
5
5
|
export type RevisionType = 'insert' | 'delete' | 'runPropertiesChange' | 'paragraphPropertiesChange' | 'tablePropertiesChange' | 'tableExceptionPropertiesChange' | 'tableRowPropertiesChange' | 'tableCellPropertiesChange' | 'sectionPropertiesChange' | 'moveFrom' | 'moveTo' | 'tableCellInsert' | 'tableCellDelete' | 'tableCellMerge' | 'numberingChange' | 'hyperlinkChange' | 'imageChange' | 'fieldChange' | 'commentChange' | 'bookmarkChange' | 'contentControlChange';
|
|
6
6
|
export interface FieldContext {
|
|
7
|
-
field?: import('./Field').ComplexField;
|
|
7
|
+
field?: import('./Field.js').ComplexField;
|
|
8
8
|
instruction?: string;
|
|
9
9
|
position: 'instruction' | 'result';
|
|
10
10
|
}
|
|
@@ -44,9 +44,9 @@ export declare class Revision {
|
|
|
44
44
|
getType(): RevisionType;
|
|
45
45
|
getContent(): RevisionContent[];
|
|
46
46
|
getRuns(): Run[];
|
|
47
|
-
getHyperlinks(): import('./Hyperlink').Hyperlink[];
|
|
47
|
+
getHyperlinks(): import('./Hyperlink.js').Hyperlink[];
|
|
48
48
|
addRun(run: Run): this;
|
|
49
|
-
addHyperlink(hyperlink: import('./Hyperlink').Hyperlink): this;
|
|
49
|
+
addHyperlink(hyperlink: import('./Hyperlink.js').Hyperlink): this;
|
|
50
50
|
addContent(item: RevisionContent): this;
|
|
51
51
|
getText(): string;
|
|
52
52
|
getPreviousProperties(): Record<string, any> | undefined;
|
|
@@ -60,7 +60,7 @@ export declare class Revision {
|
|
|
60
60
|
isInsideField(): boolean;
|
|
61
61
|
isInsideFieldResult(): boolean;
|
|
62
62
|
isInsideFieldInstruction(): boolean;
|
|
63
|
-
getParentField(): import('./Field').ComplexField | undefined;
|
|
63
|
+
getParentField(): import('./Field.js').ComplexField | undefined;
|
|
64
64
|
setAsFieldInstruction(): this;
|
|
65
65
|
isFieldInstructionDeletion(): boolean;
|
|
66
66
|
private formatDate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Revision.d.ts","sourceRoot":"","sources":["../../src/elements/Revision.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Revision.d.ts","sourceRoot":"","sources":["../../src/elements/Revision.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Revision = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const Run_js_1 = require("./Run.js");
|
|
5
|
+
const RevisionContent_js_1 = require("./RevisionContent.js");
|
|
6
|
+
const dateFormatting_js_1 = require("../utils/dateFormatting.js");
|
|
7
7
|
class Revision {
|
|
8
8
|
id;
|
|
9
9
|
author;
|
|
@@ -57,10 +57,10 @@ class Revision {
|
|
|
57
57
|
return [...this.content];
|
|
58
58
|
}
|
|
59
59
|
getRuns() {
|
|
60
|
-
return this.content.filter((item) => (0,
|
|
60
|
+
return this.content.filter((item) => (0, RevisionContent_js_1.isRunContent)(item));
|
|
61
61
|
}
|
|
62
62
|
getHyperlinks() {
|
|
63
|
-
return this.content.filter((item) => (0,
|
|
63
|
+
return this.content.filter((item) => (0, RevisionContent_js_1.isHyperlinkContent)(item));
|
|
64
64
|
}
|
|
65
65
|
addRun(run) {
|
|
66
66
|
this.content.push(run);
|
|
@@ -76,7 +76,7 @@ class Revision {
|
|
|
76
76
|
}
|
|
77
77
|
getText() {
|
|
78
78
|
return this.content
|
|
79
|
-
.filter((item) => (0,
|
|
79
|
+
.filter((item) => (0, RevisionContent_js_1.isRunContent)(item) || (0, RevisionContent_js_1.isHyperlinkContent)(item))
|
|
80
80
|
.map((item) => item.getText())
|
|
81
81
|
.join('');
|
|
82
82
|
}
|
|
@@ -126,7 +126,7 @@ class Revision {
|
|
|
126
126
|
return this.isFieldInstruction;
|
|
127
127
|
}
|
|
128
128
|
formatDate(date) {
|
|
129
|
-
return (0,
|
|
129
|
+
return (0, dateFormatting_js_1.formatDateForXml)(date);
|
|
130
130
|
}
|
|
131
131
|
getElementName() {
|
|
132
132
|
switch (this.type) {
|
|
@@ -202,12 +202,12 @@ class Revision {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
const firstItem = this.content[0];
|
|
205
|
-
const singleHyperlink = this.content.length === 1 && firstItem && (0,
|
|
205
|
+
const singleHyperlink = this.content.length === 1 && firstItem && (0, RevisionContent_js_1.isHyperlinkContent)(firstItem) ? firstItem : null;
|
|
206
206
|
if (singleHyperlink && !this.isPropertyChangeType()) {
|
|
207
207
|
return this.createHyperlinkWrappedRevisionXml(singleHyperlink, elementName, attributes);
|
|
208
208
|
}
|
|
209
209
|
for (const item of this.content) {
|
|
210
|
-
if ((0,
|
|
210
|
+
if ((0, RevisionContent_js_1.isHyperlinkContent)(item)) {
|
|
211
211
|
const hyperlinkXml = item.toXML();
|
|
212
212
|
if (hyperlinkXml.children) {
|
|
213
213
|
for (const child of hyperlinkXml.children) {
|
|
@@ -222,7 +222,7 @@ class Revision {
|
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
|
-
else if ((0,
|
|
225
|
+
else if ((0, RevisionContent_js_1.isRunContent)(item)) {
|
|
226
226
|
if (this.type === 'delete' || this.type === 'moveFrom') {
|
|
227
227
|
const runXml = this.createDeletedRunXml(item);
|
|
228
228
|
children.push(runXml);
|
|
@@ -252,7 +252,7 @@ class Revision {
|
|
|
252
252
|
}
|
|
253
253
|
createPropertiesElement() {
|
|
254
254
|
if (this.type === 'runPropertiesChange' && this.previousProperties) {
|
|
255
|
-
const rPr =
|
|
255
|
+
const rPr = Run_js_1.Run.generateRunPropertiesXML(this.previousProperties);
|
|
256
256
|
return rPr || { name: 'w:rPr', attributes: {}, children: [] };
|
|
257
257
|
}
|
|
258
258
|
let propElementName = 'w:rPr';
|
|
@@ -402,7 +402,7 @@ class Revision {
|
|
|
402
402
|
return revision;
|
|
403
403
|
}
|
|
404
404
|
static fromText(type, author, text, date) {
|
|
405
|
-
const run = new
|
|
405
|
+
const run = new Run_js_1.Run(text);
|
|
406
406
|
return new Revision({
|
|
407
407
|
author,
|
|
408
408
|
type,
|