docxmlater 10.0.2 → 10.0.3
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 +2 -2
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.d.ts +0 -27
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +13 -13
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +23 -19
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +197 -63
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +59 -24
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.d.ts.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +6 -6
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +60 -54
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.d.ts.map +1 -1
- package/dist/core/Relationship.js +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.js +1 -1
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +8 -2
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -2
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +31 -28
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +6 -6
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +5 -5
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +2 -2
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +21 -5
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +2 -2
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +128 -117
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts +1 -0
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +44 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +1 -3
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +127 -118
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +21 -0
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +20 -8
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +2 -2
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +29 -35
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +2 -2
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +63 -67
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +6 -6
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +65 -47
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +1 -1
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +1 -1
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +11 -11
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +4 -4
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +26 -26
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +87 -95
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +3 -3
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +4 -4
- package/dist/types/list-types.d.ts.map +1 -1
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +7 -7
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts +0 -28
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +5 -7
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +1 -1
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.d.ts +0 -1
- package/dist/utils/deepClone.d.ts.map +1 -1
- package/dist/utils/deepClone.js +0 -7
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +2 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.js.map +1 -1
- 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 +3 -3
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -19
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +0 -2
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +10 -0
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +4 -5
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/errors.js.map +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +34 -4
- package/src/__tests__/helper-methods.test.ts +512 -0
- package/src/constants/legacyCompatFlags.ts +138 -0
- package/src/constants/limits.ts +50 -0
- package/src/core/CLAUDE.md +109 -0
- package/src/core/Document.ts +15569 -0
- package/src/core/DocumentContent.ts +467 -0
- package/src/core/DocumentGenerator.ts +1104 -0
- package/src/core/DocumentIdManager.ts +158 -0
- package/src/core/DocumentParser.ts +10107 -0
- package/src/core/DocumentValidator.ts +372 -0
- package/src/core/Relationship.ts +367 -0
- package/src/core/RelationshipManager.ts +428 -0
- package/src/elements/AlternateContent.ts +42 -0
- package/src/elements/Bookmark.ts +210 -0
- package/src/elements/BookmarkManager.ts +250 -0
- package/src/elements/CLAUDE.md +126 -0
- package/src/elements/Comment.ts +359 -0
- package/src/elements/CommentManager.ts +502 -0
- package/src/elements/CommonTypes.ts +549 -0
- package/src/elements/CustomXml.ts +36 -0
- package/src/elements/Endnote.ts +217 -0
- package/src/elements/EndnoteManager.ts +249 -0
- package/src/elements/Field.ts +1233 -0
- package/src/elements/FieldHelpers.ts +333 -0
- package/src/elements/FontManager.ts +339 -0
- package/src/elements/Footer.ts +269 -0
- package/src/elements/Footnote.ts +217 -0
- package/src/elements/FootnoteManager.ts +249 -0
- package/src/elements/Header.ts +269 -0
- package/src/elements/HeaderFooterManager.ts +219 -0
- package/src/elements/Hyperlink.ts +1146 -0
- package/src/elements/Image.ts +1756 -0
- package/src/elements/ImageManager.ts +432 -0
- package/src/elements/ImageRun.ts +59 -0
- package/src/elements/MathElement.ts +65 -0
- package/src/elements/Paragraph.ts +4227 -0
- package/src/elements/PreservedElement.ts +53 -0
- package/src/elements/PropertyChangeTypes.ts +442 -0
- package/src/elements/RangeMarker.ts +400 -0
- package/src/elements/Revision.ts +1217 -0
- package/src/elements/RevisionContent.ts +73 -0
- package/src/elements/RevisionManager.ts +1070 -0
- package/src/elements/Run.ts +3068 -0
- package/src/elements/Section.ts +1421 -0
- package/src/elements/Shape.ts +873 -0
- package/src/elements/StructuredDocumentTag.ts +978 -0
- package/src/elements/Table.ts +2524 -0
- package/src/elements/TableCell.ts +1586 -0
- package/src/elements/TableGridChange.ts +151 -0
- package/src/elements/TableOfContents.ts +691 -0
- package/src/elements/TableOfContentsElement.ts +89 -0
- package/src/elements/TableRow.ts +906 -0
- package/src/elements/TextBox.ts +768 -0
- package/src/formatting/AbstractNumbering.ts +548 -0
- package/src/formatting/CLAUDE.md +74 -0
- package/src/formatting/NumberingInstance.ts +212 -0
- package/src/formatting/NumberingLevel.ts +1006 -0
- package/src/formatting/NumberingManager.ts +827 -0
- package/src/formatting/Style.ts +1833 -0
- package/src/formatting/StylesManager.ts +1005 -0
- package/src/helpers/CleanupHelper.ts +524 -0
- package/src/images/ImageOptimizer.ts +274 -0
- package/src/index.ts +554 -0
- package/src/managers/CLAUDE.md +47 -0
- package/src/managers/DrawingManager.ts +319 -0
- package/src/tracking/DocumentTrackingContext.ts +643 -0
- package/src/tracking/TrackingContext.ts +173 -0
- package/src/types/compatibility-types.ts +49 -0
- package/src/types/formatting.ts +210 -0
- package/src/types/list-types.ts +152 -0
- package/src/types/settings-types.ts +59 -0
- package/src/types/styleConfig.ts +189 -0
- package/src/utils/CLAUDE.md +153 -0
- package/src/utils/ChangelogGenerator.ts +1581 -0
- package/src/utils/CompatibilityUpgrader.ts +237 -0
- package/src/utils/InMemoryRevisionAcceptor.ts +668 -0
- package/src/utils/MoveOperationHelper.ts +238 -0
- package/src/utils/RevisionAwareProcessor.ts +526 -0
- package/src/utils/RevisionWalker.ts +457 -0
- package/src/utils/SelectiveRevisionAcceptor.ts +613 -0
- package/src/utils/ShadingResolver.ts +107 -0
- package/src/utils/acceptRevisions.ts +714 -0
- package/src/utils/cnfStyleDecoder.ts +217 -0
- package/src/utils/corruptionDetection.ts +345 -0
- package/src/utils/dateFormatting.ts +20 -0
- package/src/utils/deepClone.ts +78 -0
- package/src/utils/diagnostics.ts +129 -0
- package/src/utils/errorHandling.ts +80 -0
- package/src/utils/formatting.ts +213 -0
- package/src/utils/list-detection.ts +274 -0
- package/src/utils/logger.ts +404 -0
- package/src/utils/parsingHelpers.ts +190 -0
- package/src/utils/stripTrackedChanges.ts +353 -0
- package/src/utils/textDiff.ts +100 -0
- package/src/utils/units.ts +421 -0
- package/src/utils/validation.ts +542 -0
- package/src/utils/xmlSanitization.ts +182 -0
- package/src/validation/RevisionAutoFixer.ts +542 -0
- package/src/validation/RevisionValidator.ts +460 -0
- package/src/validation/ValidationRules.ts +338 -0
- package/src/validation/index.ts +30 -0
- package/src/xml/CLAUDE.md +65 -0
- package/src/xml/XMLBuilder.ts +871 -0
- package/src/xml/XMLParser.ts +919 -0
- package/src/zip/CLAUDE.md +55 -0
- package/src/zip/ZipHandler.ts +637 -0
- package/src/zip/ZipReader.ts +299 -0
- package/src/zip/ZipWriter.ts +390 -0
- package/src/zip/errors.ts +69 -0
- package/src/zip/types.ts +116 -0
- package/dist/core/ListNormalizer.d.ts +0 -23
- package/dist/core/ListNormalizer.d.ts.map +0 -1
- package/dist/core/ListNormalizer.js +0 -624
- package/dist/core/ListNormalizer.js.map +0 -1
- package/dist/images/index.d.ts +0 -2
- package/dist/images/index.d.ts.map +0 -1
- package/dist/images/index.js +0 -8
- package/dist/images/index.js.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
- package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.js +0 -360
- package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
- package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
- package/dist/ms-doc/fib/FIB.d.ts +0 -18
- package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
- package/dist/ms-doc/fib/FIB.js +0 -342
- package/dist/ms-doc/fib/FIB.js.map +0 -1
- package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
- package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
- package/dist/ms-doc/fields/FieldParser.js +0 -266
- package/dist/ms-doc/fields/FieldParser.js.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
- package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.js +0 -233
- package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
- package/dist/ms-doc/index.d.ts +0 -20
- package/dist/ms-doc/index.d.ts.map +0 -1
- package/dist/ms-doc/index.js +0 -59
- package/dist/ms-doc/index.js.map +0 -1
- package/dist/ms-doc/properties/SPRM.d.ts +0 -210
- package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
- package/dist/ms-doc/properties/SPRM.js +0 -633
- package/dist/ms-doc/properties/SPRM.js.map +0 -1
- package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
- package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
- package/dist/ms-doc/sections/SectionParser.js +0 -214
- package/dist/ms-doc/sections/SectionParser.js.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
- package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.js +0 -268
- package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
- package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
- package/dist/ms-doc/tables/TableParser.d.ts +0 -29
- package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
- package/dist/ms-doc/tables/TableParser.js +0 -176
- package/dist/ms-doc/tables/TableParser.js.map +0 -1
- package/dist/ms-doc/text/PieceTable.d.ts +0 -21
- package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
- package/dist/ms-doc/text/PieceTable.js +0 -171
- package/dist/ms-doc/text/PieceTable.js.map +0 -1
- package/dist/ms-doc/types/Constants.d.ts +0 -99
- package/dist/ms-doc/types/Constants.d.ts.map +0 -1
- package/dist/ms-doc/types/Constants.js +0 -102
- package/dist/ms-doc/types/Constants.js.map +0 -1
- package/dist/ms-doc/types/DocTypes.d.ts +0 -368
- package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
- package/dist/ms-doc/types/DocTypes.js +0 -3
- package/dist/ms-doc/types/DocTypes.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -3
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -6
- package/dist/tracking/index.js.map +0 -1
|
@@ -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"}
|
|
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":["/**\r\n * PreservedElement - Represents XML elements preserved as raw XML for round-trip fidelity\r\n *\r\n * Used for elements that don't need full object model support but must be\r\n * preserved during round-trip (load → save) to avoid data loss.\r\n *\r\n * Examples: w:proofErr, w:permStart, w:permEnd, w:altChunk, w:ruby\r\n */\r\n\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Element context where it can appear\r\n */\r\nexport type PreservedElementContext = 'inline' | 'block';\r\n\r\n/**\r\n * Represents an XML element preserved as raw XML\r\n */\r\nexport class PreservedElement {\r\n private rawXml: string;\r\n private elementType: string;\r\n private context: PreservedElementContext;\r\n\r\n constructor(rawXml: string, elementType: string, context: PreservedElementContext = 'inline') {\r\n this.rawXml = rawXml;\r\n this.elementType = elementType;\r\n this.context = context;\r\n }\r\n\r\n toXML(): XMLElement {\r\n return {\r\n name: '__rawXml',\r\n rawXml: this.rawXml,\r\n } as XMLElement;\r\n }\r\n\r\n getRawXml(): string {\r\n return this.rawXml;\r\n }\r\n\r\n getElementType(): string {\r\n return this.elementType;\r\n }\r\n\r\n getContext(): PreservedElementContext {\r\n return this.context;\r\n }\r\n\r\n getType(): string {\r\n return 'preservedElement';\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyChangeTypes.js","sourceRoot":"","sources":["../../src/elements/PropertyChangeTypes.ts"],"names":[],"mappings":";;AAgXA,kDAkBC;AAKD,8DASC;AAKD,sDAEC;AAQD,0DAmBC;AAKD,8CAEC;AAzED,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,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,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,CAAC;AACpC,CAAC;AAKD,SAAgB,yBAAyB,CAAC,MAAyB;IACjE,OAAO,oBAAoB,IAAI,MAAM;QACnC,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;QAC1B,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC;QAE5B,CAAE,MAAM,CAAC,kBAAiD,CAAC,SAAS,KAAK,SAAS;YAChF,MAAM,CAAC,kBAAiD,CAAC,UAAU,KAAK,SAAS;YACjF,MAAM,CAAC,kBAAiD,CAAC,WAAW,KAAK,SAAS;YAClF,MAAM,CAAC,kBAAiD,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AACpF,CAAC;AAKD,SAAgB,qBAAqB,CAAC,MAAyB;IAC7D,OAAO,aAAa,IAAI,MAAM,CAAC;AACjC,CAAC;AAQD,SAAgB,uBAAuB,CAAC,MAAyB;IAC/D,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,KAAK,CAAC,SAAS,KAAK,SAAS;QAClC,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,CAAC;AACpC,CAAC;AAKD,SAAgB,iBAAiB,CAAC,MAAyB;IACzD,OAAO,eAAe,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;AACvF,CAAC"}
|
|
1
|
+
{"version":3,"file":"PropertyChangeTypes.js","sourceRoot":"","sources":["../../src/elements/PropertyChangeTypes.ts"],"names":[],"mappings":";;AAgXA,kDAkBC;AAKD,8DASC;AAKD,sDAEC;AAQD,0DAmBC;AAKD,8CAEC;AAzED,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,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,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,CAAC;AACpC,CAAC;AAKD,SAAgB,yBAAyB,CAAC,MAAyB;IACjE,OAAO,oBAAoB,IAAI,MAAM;QACnC,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;QAC1B,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC;QAE5B,CAAE,MAAM,CAAC,kBAAiD,CAAC,SAAS,KAAK,SAAS;YAChF,MAAM,CAAC,kBAAiD,CAAC,UAAU,KAAK,SAAS;YACjF,MAAM,CAAC,kBAAiD,CAAC,WAAW,KAAK,SAAS;YAClF,MAAM,CAAC,kBAAiD,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AACpF,CAAC;AAKD,SAAgB,qBAAqB,CAAC,MAAyB;IAC7D,OAAO,aAAa,IAAI,MAAM,CAAC;AACjC,CAAC;AAQD,SAAgB,uBAAuB,CAAC,MAAyB;IAC/D,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,KAAK,CAAC,SAAS,KAAK,SAAS;QAClC,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,CAAC;AACpC,CAAC;AAKD,SAAgB,iBAAiB,CAAC,MAAyB;IACzD,OAAO,eAAe,IAAI,MAAM,IAAI,cAAc,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;AACvF,CAAC","sourcesContent":["/**\r\n * PropertyChangeTypes - Type definitions for property change tracking in revisions\r\n *\r\n * These types represent the parsed data from OOXML property change elements:\r\n * - w:rPrChange (run property changes)\r\n * - w:pPrChange (paragraph property changes)\r\n * - w:tblPrChange, w:trPrChange, w:tcPrChange (table property changes)\r\n * - w:sectPrChange (section property changes)\r\n * - w:numberingChange (numbering property changes)\r\n *\r\n * Per ECMA-376, property change elements track the PREVIOUS state of properties\r\n * before a change was made, allowing Word to show what changed and enabling\r\n * accept/reject functionality.\r\n *\r\n * @module PropertyChangeTypes\r\n */\r\n\r\nimport type { RunFormatting } from './Run';\r\nimport type { ShadingConfig } from './CommonTypes';\r\n\r\n/**\r\n * Common base for all property change types\r\n */\r\nexport interface PropertyChangeBase {\r\n /** Unique revision ID (ST_DecimalNumber) */\r\n id: number;\r\n /** Author who made the change (required) */\r\n author: string;\r\n /** Date when the change was made (ISO 8601) */\r\n date: Date;\r\n}\r\n\r\n/**\r\n * Run property change (w:rPrChange)\r\n *\r\n * Tracks changes to run-level formatting such as:\r\n * - Bold, italic, underline\r\n * - Font name, size, color\r\n * - Highlight, strikethrough\r\n * - Character spacing, subscript/superscript\r\n *\r\n * @example\r\n * ```xml\r\n * <w:rPrChange w:id=\"1\" w:author=\"John\" w:date=\"2024-01-15T10:30:00Z\">\r\n * <w:rPr>\r\n * <w:b/> <!-- Was bold before change -->\r\n * </w:rPr>\r\n * </w:rPrChange>\r\n * ```\r\n */\r\nexport interface RunPropertyChange extends PropertyChangeBase {\r\n /** Previous run formatting properties before the change */\r\n previousProperties: Partial<RunFormatting>;\r\n}\r\n\r\n/**\r\n * Border definition for paragraph borders\r\n * Per ECMA-376 Part 1 Section 17.3.1.24\r\n */\r\nexport interface ParagraphBorderDef {\r\n /** Border style (single, double, dotted, dashed, etc.) */\r\n val?: string;\r\n /** Border width in eighths of a point */\r\n sz?: number;\r\n /** Space between border and content in points */\r\n space?: number;\r\n /** Border color (hex RGB without #) */\r\n color?: string;\r\n /** Theme color reference */\r\n themeColor?: string;\r\n}\r\n\r\n/**\r\n * Paragraph borders (w:pBdr)\r\n * Per ECMA-376 Part 1 Section 17.3.1.24\r\n */\r\nexport interface ParagraphBorders {\r\n /** Top border */\r\n top?: ParagraphBorderDef;\r\n /** Bottom border */\r\n bottom?: ParagraphBorderDef;\r\n /** Left border */\r\n left?: ParagraphBorderDef;\r\n /** Right border */\r\n right?: ParagraphBorderDef;\r\n /** Border between paragraphs with same borders */\r\n between?: ParagraphBorderDef;\r\n /** Bar border (vertical line) */\r\n bar?: ParagraphBorderDef;\r\n}\r\n\r\n/**\r\n * Paragraph shading (w:shd)\r\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\r\n */\r\nexport type ParagraphShading = ShadingConfig;\r\n\r\n/**\r\n * Tab stop definition\r\n * Per ECMA-376 Part 1 Section 17.3.1.38\r\n */\r\nexport interface TabStopDef {\r\n /** Tab stop type (left, right, center, decimal, bar, clear) */\r\n val?: string;\r\n /** Tab position in twips */\r\n pos?: number;\r\n /** Leader character (none, dot, hyphen, underscore, middleDot) */\r\n leader?: string;\r\n}\r\n\r\n/**\r\n * Paragraph formatting options (subset for type safety)\r\n * Full ParagraphFormatting is in Paragraph.ts but we need a partial here\r\n *\r\n * Per ECMA-376 Part 1 Section 17.3.1, this covers all paragraph properties\r\n * that can be tracked in w:pPrChange revision elements.\r\n */\r\nexport interface ParagraphFormattingPartial {\r\n /** Text alignment: left, center, right, justify */\r\n alignment?: 'left' | 'center' | 'right' | 'justify';\r\n /** Left indentation in twips */\r\n leftIndent?: number;\r\n /** Right indentation in twips */\r\n rightIndent?: number;\r\n /** First line indentation in twips */\r\n firstLineIndent?: number;\r\n /** Hanging indentation in twips */\r\n hangingIndent?: number;\r\n /** Spacing before paragraph in twips */\r\n spaceBefore?: number;\r\n /** Spacing after paragraph in twips */\r\n spaceAfter?: number;\r\n /** Line spacing in twips */\r\n lineSpacing?: number;\r\n /** Line spacing rule */\r\n lineSpacingRule?: 'auto' | 'exact' | 'atLeast';\r\n /** Paragraph style ID */\r\n style?: string;\r\n /** Keep with next paragraph */\r\n keepNext?: boolean;\r\n /** Keep lines together */\r\n keepLines?: boolean;\r\n /** Page break before */\r\n pageBreakBefore?: boolean;\r\n /** Widow/orphan control */\r\n widowControl?: boolean;\r\n /** Suppress auto-hyphenation */\r\n suppressAutoHyphens?: boolean;\r\n /** Contextual spacing */\r\n contextualSpacing?: boolean;\r\n /** Mirror indents */\r\n mirrorIndents?: boolean;\r\n /** Outline level (for headings) */\r\n outlineLevel?: number;\r\n /** Right-to-left paragraph */\r\n bidi?: boolean;\r\n /** Numbering properties (list formatting) */\r\n numbering?: {\r\n numId?: number;\r\n level?: number;\r\n };\r\n\r\n // === Extended properties for full ECMA-376 compliance ===\r\n\r\n /**\r\n * Paragraph borders (w:pBdr)\r\n * Per ECMA-376 Part 1 Section 17.3.1.24\r\n */\r\n borders?: ParagraphBorders;\r\n\r\n /**\r\n * Paragraph shading/background (w:shd)\r\n * Per ECMA-376 Part 1 Section 17.3.1.32\r\n */\r\n shading?: ParagraphShading;\r\n\r\n /**\r\n * Custom tab stops (w:tabs)\r\n * Per ECMA-376 Part 1 Section 17.3.1.38\r\n */\r\n tabs?: TabStopDef[];\r\n\r\n /**\r\n * Text direction (w:textDirection)\r\n * Per ECMA-376 Part 1 Section 17.3.1.40\r\n * Values: lrTb, tbRl, btLr, lrTbV, tbRlV, tbLrV\r\n */\r\n textDirection?: string;\r\n\r\n /**\r\n * Text alignment (w:textAlignment)\r\n * Per ECMA-376 Part 1 Section 17.3.1.39\r\n * Values: auto, top, center, baseline, bottom\r\n */\r\n textAlignment?: string;\r\n\r\n /**\r\n * Suppress line numbers (w:suppressLineNumbers)\r\n * Per ECMA-376 Part 1 Section 17.3.1.35\r\n */\r\n suppressLineNumbers?: boolean;\r\n\r\n /**\r\n * Adjust right indent (w:adjustRightInd)\r\n * Per ECMA-376 Part 1 Section 17.3.1.1\r\n */\r\n adjustRightInd?: boolean;\r\n\r\n /**\r\n * Snap to grid (w:snapToGrid)\r\n * Per ECMA-376 Part 1 Section 17.3.1.33\r\n */\r\n snapToGrid?: boolean;\r\n\r\n /**\r\n * Word wrap (w:wordWrap)\r\n * Per ECMA-376 Part 1 Section 17.3.1.44\r\n */\r\n wordWrap?: boolean;\r\n\r\n /**\r\n * Auto space between East Asian and numeric (w:autoSpaceDE)\r\n */\r\n autoSpaceDE?: boolean;\r\n\r\n /**\r\n * Auto space between East Asian and Western (w:autoSpaceDN)\r\n */\r\n autoSpaceDN?: boolean;\r\n}\r\n\r\n/**\r\n * Paragraph property change (w:pPrChange)\r\n *\r\n * Tracks changes to paragraph-level formatting such as:\r\n * - Alignment (left, center, right, justify)\r\n * - Indentation (left, right, first line, hanging)\r\n * - Spacing (before, after, line)\r\n * - Keep with next, keep lines together\r\n * - Paragraph style\r\n * - Numbering/list formatting (numId, ilvl)\r\n *\r\n * @example\r\n * ```xml\r\n * <w:pPrChange w:id=\"2\" w:author=\"Jane\" w:date=\"2024-01-15T11:00:00Z\">\r\n * <w:pPr>\r\n * <w:jc w:val=\"left\"/> <!-- Was left-aligned before change -->\r\n * </w:pPr>\r\n * </w:pPrChange>\r\n * ```\r\n */\r\nexport interface ParagraphPropertyChange extends PropertyChangeBase {\r\n /** Previous paragraph formatting properties before the change */\r\n previousProperties: Partial<ParagraphFormattingPartial>;\r\n}\r\n\r\n/**\r\n * Table property change types\r\n */\r\nexport type TablePropertyChangeType = 'table' | 'row' | 'cell';\r\n\r\n/**\r\n * Table property change (w:tblPrChange, w:trPrChange, w:tcPrChange)\r\n *\r\n * Tracks changes to table-level properties including:\r\n * - Table: width, alignment, borders, shading\r\n * - Row: height, header row, can't split\r\n * - Cell: width, vertical alignment, borders, shading, merge\r\n *\r\n * @example\r\n * ```xml\r\n * <w:tblPrChange w:id=\"3\" w:author=\"John\" w:date=\"2024-01-15T12:00:00Z\">\r\n * <w:tblPr>\r\n * <w:tblW w:w=\"5000\" w:type=\"pct\"/>\r\n * </w:tblPr>\r\n * </w:tblPrChange>\r\n * ```\r\n */\r\nexport interface TablePropertyChange extends PropertyChangeBase {\r\n /** Type of table element (table, row, or cell) */\r\n elementType: TablePropertyChangeType;\r\n /** Previous table properties before the change */\r\n previousProperties: Record<string, any>;\r\n}\r\n\r\n/**\r\n * Section property change (w:sectPrChange)\r\n *\r\n * Tracks changes to section-level properties such as:\r\n * - Page size (width, height)\r\n * - Page margins (top, bottom, left, right, header, footer, gutter)\r\n * - Page orientation (portrait, landscape)\r\n * - Columns configuration\r\n * - Page numbering\r\n *\r\n * @example\r\n * ```xml\r\n * <w:sectPrChange w:id=\"4\" w:author=\"Jane\" w:date=\"2024-01-15T13:00:00Z\">\r\n * <w:sectPr>\r\n * <w:pgSz w:w=\"12240\" w:h=\"15840\"/>\r\n * <w:pgMar w:top=\"1440\" w:right=\"1440\" w:bottom=\"1440\" w:left=\"1440\"/>\r\n * </w:sectPr>\r\n * </w:sectPrChange>\r\n * ```\r\n */\r\nexport interface SectionPropertyChange extends PropertyChangeBase {\r\n /** Previous section properties before the change */\r\n previousProperties: Record<string, any>;\r\n}\r\n\r\n/**\r\n * Numbering change (w:numberingChange)\r\n *\r\n * Tracks changes to list numbering properties:\r\n * - Numbering definition ID\r\n * - Indentation level\r\n * - Starting number\r\n *\r\n * @example\r\n * ```xml\r\n * <w:numberingChange w:id=\"5\" w:author=\"John\" w:date=\"2024-01-15T14:00:00Z\"\r\n * w:original=\"1\" />\r\n * ```\r\n */\r\nexport interface NumberingChange extends PropertyChangeBase {\r\n /** Previous numbering definition ID */\r\n previousNumId?: number;\r\n /** Previous indentation level */\r\n previousIlvl?: number;\r\n /** Original numbering format string */\r\n original?: string;\r\n}\r\n\r\n/**\r\n * Location of a revision within the document structure\r\n * Used for precise change tracking and changelog generation\r\n */\r\nexport interface RevisionLocation {\r\n /** Paragraph index within the document body (0-based) */\r\n paragraphIndex?: number;\r\n /** Run index within the paragraph (0-based) */\r\n runIndex?: number;\r\n /** Table row index (0-based) - only for table revisions */\r\n tableRow?: number;\r\n /** Table cell index within row (0-based) - only for table revisions */\r\n tableCell?: number;\r\n /** Section index (0-based) - only for section revisions */\r\n sectionIndex?: number;\r\n /** Header/footer type if revision is in header/footer */\r\n headerFooterType?: 'header' | 'footer' | 'firstHeader' | 'firstFooter' | 'evenHeader' | 'evenFooter';\r\n}\r\n\r\n/**\r\n * Union type for all property change types\r\n */\r\nexport type AnyPropertyChange =\r\n | RunPropertyChange\r\n | ParagraphPropertyChange\r\n | TablePropertyChange\r\n | SectionPropertyChange\r\n | NumberingChange;\r\n\r\n/**\r\n * Type guard to check if a property change is a RunPropertyChange\r\n *\r\n * Note: Empty previousProperties cannot be reliably typed - this guard returns\r\n * false for empty objects. Use context-aware typing when the source is known.\r\n */\r\nexport function isRunPropertyChange(change: AnyPropertyChange): change is RunPropertyChange {\r\n if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {\r\n return false;\r\n }\r\n // Check for typical run properties - must have at least one identifiable property\r\n const props = change.previousProperties as Partial<RunFormatting>;\r\n return props.bold !== undefined ||\r\n props.italic !== undefined ||\r\n props.font !== undefined ||\r\n props.size !== undefined ||\r\n props.color !== undefined ||\r\n props.underline !== undefined ||\r\n props.strike !== undefined ||\r\n props.highlight !== undefined ||\r\n props.smallCaps !== undefined ||\r\n props.allCaps !== undefined ||\r\n props.subscript !== undefined ||\r\n props.superscript !== undefined;\r\n}\r\n\r\n/**\r\n * Type guard to check if a property change is a ParagraphPropertyChange\r\n */\r\nexport function isParagraphPropertyChange(change: AnyPropertyChange): change is ParagraphPropertyChange {\r\n return 'previousProperties' in change &&\r\n !('elementType' in change) &&\r\n !('previousNumId' in change) &&\r\n // Check for typical paragraph properties\r\n ((change.previousProperties as ParagraphFormattingPartial).alignment !== undefined ||\r\n (change.previousProperties as ParagraphFormattingPartial).leftIndent !== undefined ||\r\n (change.previousProperties as ParagraphFormattingPartial).spaceBefore !== undefined ||\r\n (change.previousProperties as ParagraphFormattingPartial).style !== undefined);\r\n}\r\n\r\n/**\r\n * Type guard to check if a property change is a TablePropertyChange\r\n */\r\nexport function isTablePropertyChange(change: AnyPropertyChange): change is TablePropertyChange {\r\n return 'elementType' in change;\r\n}\r\n\r\n/**\r\n * Type guard to check if a property change is a SectionPropertyChange\r\n *\r\n * Checks for section-specific properties: page size, margins, orientation, columns, etc.\r\n * Per ECMA-376, section properties are distinct from run/paragraph properties.\r\n */\r\nexport function isSectionPropertyChange(change: AnyPropertyChange): change is SectionPropertyChange {\r\n if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {\r\n return false;\r\n }\r\n // Check for section-specific properties\r\n const props = change.previousProperties as Record<string, any>;\r\n return props.pageWidth !== undefined ||\r\n props.pageHeight !== undefined ||\r\n props.orientation !== undefined ||\r\n props.marginTop !== undefined ||\r\n props.marginBottom !== undefined ||\r\n props.marginLeft !== undefined ||\r\n props.marginRight !== undefined ||\r\n props.columns !== undefined ||\r\n props.headerDistance !== undefined ||\r\n props.footerDistance !== undefined ||\r\n props.gutterMargin !== undefined ||\r\n props.pageNumberStart !== undefined ||\r\n props.sectionType !== undefined;\r\n}\r\n\r\n/**\r\n * Type guard to check if a property change is a NumberingChange\r\n */\r\nexport function isNumberingChange(change: AnyPropertyChange): change is NumberingChange {\r\n return 'previousNumId' in change || 'previousIlvl' in change || 'original' in change;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeMarker.js","sourceRoot":"","sources":["../../src/elements/RangeMarker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RangeMarker.js","sourceRoot":"","sources":["../../src/elements/RangeMarker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RangeMarker - Represents range markers for tracked changes\r\n *\r\n * Range markers are used to mark the boundaries of moved or deleted content spans.\r\n * They enable Word to properly display and manage complex revision regions.\r\n */\r\n\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\nimport { formatDateForXml } from '../utils/dateFormatting';\r\n\r\n/**\r\n * Range marker type\r\n */\r\nexport type RangeMarkerType =\r\n | 'moveFromRangeStart'\r\n | 'moveFromRangeEnd'\r\n | 'moveToRangeStart'\r\n | 'moveToRangeEnd'\r\n | 'customXmlMoveFromRangeStart'\r\n | 'customXmlMoveFromRangeEnd'\r\n | 'customXmlMoveToRangeStart'\r\n | 'customXmlMoveToRangeEnd'\r\n | 'customXmlInsRangeStart'\r\n | 'customXmlInsRangeEnd'\r\n | 'customXmlDelRangeStart'\r\n | 'customXmlDelRangeEnd';\r\n\r\n/**\r\n * Range marker properties\r\n */\r\nexport interface RangeMarkerProperties {\r\n /** Unique ID for this range marker */\r\n id: number;\r\n /** Type of range marker */\r\n type: RangeMarkerType;\r\n /** Name linking start and end markers (for move operations) */\r\n name?: string;\r\n /** Author who made the change (for start markers only) */\r\n author?: string;\r\n /** Date when the change was made (for start markers only) */\r\n date?: Date;\r\n}\r\n\r\n/**\r\n * Represents a range marker for tracked changes\r\n * Range markers mark the boundaries of moved, inserted, or deleted content\r\n */\r\nexport class RangeMarker {\r\n private id: number;\r\n private type: RangeMarkerType;\r\n private name?: string;\r\n private author?: string;\r\n private date?: Date;\r\n\r\n /**\r\n * Creates a new RangeMarker\r\n * @param properties - Range marker properties\r\n */\r\n constructor(properties: RangeMarkerProperties) {\r\n this.id = properties.id;\r\n this.type = properties.type;\r\n this.name = properties.name;\r\n this.author = properties.author;\r\n this.date = properties.date;\r\n }\r\n\r\n /**\r\n * Gets the range marker ID\r\n */\r\n getId(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * Sets the range marker ID (used by RevisionManager)\r\n * @internal\r\n */\r\n setId(id: number): void {\r\n this.id = id;\r\n }\r\n\r\n /**\r\n * Gets the range marker type\r\n */\r\n getType(): RangeMarkerType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Gets the range marker name\r\n */\r\n getName(): string | undefined {\r\n return this.name;\r\n }\r\n\r\n /**\r\n * Gets the author\r\n */\r\n getAuthor(): string | undefined {\r\n return this.author;\r\n }\r\n\r\n /**\r\n * Gets the date\r\n */\r\n getDate(): Date | undefined {\r\n return this.date;\r\n }\r\n\r\n /**\r\n * Checks if this is a start marker\r\n */\r\n isStartMarker(): boolean {\r\n return this.type.endsWith('RangeStart');\r\n }\r\n\r\n /**\r\n * Checks if this is an end marker\r\n */\r\n isEndMarker(): boolean {\r\n return this.type.endsWith('RangeEnd');\r\n }\r\n\r\n /**\r\n * Gets the XML element name for this range marker type\r\n */\r\n private getElementName(): string {\r\n switch (this.type) {\r\n case 'moveFromRangeStart':\r\n return 'w:moveFromRangeStart';\r\n case 'moveFromRangeEnd':\r\n return 'w:moveFromRangeEnd';\r\n case 'moveToRangeStart':\r\n return 'w:moveToRangeStart';\r\n case 'moveToRangeEnd':\r\n return 'w:moveToRangeEnd';\r\n case 'customXmlMoveFromRangeStart':\r\n return 'w:customXmlMoveFromRangeStart';\r\n case 'customXmlMoveFromRangeEnd':\r\n return 'w:customXmlMoveFromRangeEnd';\r\n case 'customXmlMoveToRangeStart':\r\n return 'w:customXmlMoveToRangeStart';\r\n case 'customXmlMoveToRangeEnd':\r\n return 'w:customXmlMoveToRangeEnd';\r\n case 'customXmlInsRangeStart':\r\n return 'w:customXmlInsRangeStart';\r\n case 'customXmlInsRangeEnd':\r\n return 'w:customXmlInsRangeEnd';\r\n case 'customXmlDelRangeStart':\r\n return 'w:customXmlDelRangeStart';\r\n case 'customXmlDelRangeEnd':\r\n return 'w:customXmlDelRangeEnd';\r\n default:\r\n return 'w:moveFromRangeStart';\r\n }\r\n }\r\n\r\n /**\r\n * Formats a date to ISO 8601 format for XML\r\n * Uses formatDateForXml() to strip milliseconds which Word does not accept.\r\n */\r\n private formatDate(date: Date): string {\r\n return formatDateForXml(date);\r\n }\r\n\r\n /**\r\n * Generates XML for this range marker\r\n * @returns XMLElement representing the range marker\r\n */\r\n toXML(): XMLElement {\r\n const attributes: Record<string, string> = {\r\n 'w:id': this.id.toString(),\r\n };\r\n\r\n // Add name attribute for move operations\r\n if (this.name) {\r\n attributes['w:name'] = this.name;\r\n }\r\n\r\n // Add author and date for start markers\r\n if (this.isStartMarker() && this.author) {\r\n attributes['w:author'] = this.author;\r\n if (this.date) {\r\n attributes['w:date'] = this.formatDate(this.date);\r\n }\r\n }\r\n\r\n const elementName = this.getElementName();\r\n\r\n return {\r\n name: elementName,\r\n attributes,\r\n children: [], // Range markers are self-closing\r\n };\r\n }\r\n\r\n /**\r\n * Creates a moveFromRangeStart marker\r\n * @param id - Unique ID\r\n * @param name - Move operation name (links start/end markers)\r\n * @param author - Author who made the move\r\n * @param date - Optional date (defaults to now)\r\n * @returns New RangeMarker instance\r\n */\r\n static createMoveFromStart(\r\n id: number,\r\n name: string,\r\n author: string,\r\n date?: Date\r\n ): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'moveFromRangeStart',\r\n name,\r\n author,\r\n date: date || new Date(),\r\n });\r\n }\r\n\r\n /**\r\n * Creates a moveFromRangeEnd marker\r\n * @param id - Unique ID (must match the start marker)\r\n * @returns New RangeMarker instance\r\n */\r\n static createMoveFromEnd(id: number): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'moveFromRangeEnd',\r\n });\r\n }\r\n\r\n /**\r\n * Creates a moveToRangeStart marker\r\n * @param id - Unique ID\r\n * @param name - Move operation name (links to moveFrom markers)\r\n * @param author - Author who made the move\r\n * @param date - Optional date (defaults to now)\r\n * @returns New RangeMarker instance\r\n */\r\n static createMoveToStart(\r\n id: number,\r\n name: string,\r\n author: string,\r\n date?: Date\r\n ): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'moveToRangeStart',\r\n name,\r\n author,\r\n date: date || new Date(),\r\n });\r\n }\r\n\r\n /**\r\n * Creates a moveToRangeEnd marker\r\n * @param id - Unique ID (must match the start marker)\r\n * @returns New RangeMarker instance\r\n */\r\n static createMoveToEnd(id: number): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'moveToRangeEnd',\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlInsRangeStart marker\r\n * @param id - Unique ID\r\n * @param author - Author who made the insertion\r\n * @param date - Optional date (defaults to now)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlInsStart(\r\n id: number,\r\n author: string,\r\n date?: Date\r\n ): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlInsRangeStart',\r\n author,\r\n date: date || new Date(),\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlInsRangeEnd marker\r\n * @param id - Unique ID (must match the start marker)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlInsEnd(id: number): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlInsRangeEnd',\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlDelRangeStart marker\r\n * @param id - Unique ID\r\n * @param author - Author who made the deletion\r\n * @param date - Optional date (defaults to now)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlDelStart(\r\n id: number,\r\n author: string,\r\n date?: Date\r\n ): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlDelRangeStart',\r\n author,\r\n date: date || new Date(),\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlDelRangeEnd marker\r\n * @param id - Unique ID (must match the start marker)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlDelEnd(id: number): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlDelRangeEnd',\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlMoveFromRangeStart marker\r\n * @param id - Unique ID\r\n * @param name - Move operation name\r\n * @param author - Author who made the move\r\n * @param date - Optional date (defaults to now)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlMoveFromStart(\r\n id: number,\r\n name: string,\r\n author: string,\r\n date?: Date\r\n ): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlMoveFromRangeStart',\r\n name,\r\n author,\r\n date: date || new Date(),\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlMoveFromRangeEnd marker\r\n * @param id - Unique ID (must match the start marker)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlMoveFromEnd(id: number): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlMoveFromRangeEnd',\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlMoveToRangeStart marker\r\n * @param id - Unique ID\r\n * @param name - Move operation name\r\n * @param author - Author who made the move\r\n * @param date - Optional date (defaults to now)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlMoveToStart(\r\n id: number,\r\n name: string,\r\n author: string,\r\n date?: Date\r\n ): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlMoveToRangeStart',\r\n name,\r\n author,\r\n date: date || new Date(),\r\n });\r\n }\r\n\r\n /**\r\n * Creates a customXmlMoveToRangeEnd marker\r\n * @param id - Unique ID (must match the start marker)\r\n * @returns New RangeMarker instance\r\n */\r\n static createCustomXmlMoveToEnd(id: number): RangeMarker {\r\n return new RangeMarker({\r\n id,\r\n type: 'customXmlMoveToRangeEnd',\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -69,6 +69,7 @@ export declare class Revision {
|
|
|
69
69
|
private isPropertyChangeType;
|
|
70
70
|
private createPropertiesElement;
|
|
71
71
|
private createDeletedRunXml;
|
|
72
|
+
private createHyperlinkWrappedRevisionXml;
|
|
72
73
|
private createDeletedHyperlinkXml;
|
|
73
74
|
private convertRunXmlToDeleted;
|
|
74
75
|
static createInsertion(author: string, content: RevisionContent | RevisionContent[], date?: Date): Revision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Revision.d.ts","sourceRoot":"","sources":["../../src/elements/Revision.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOzD,MAAM,MAAM,YAAY,GAEpB,QAAQ,GACR,QAAQ,GAER,qBAAqB,GACrB,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,GAChC,0BAA0B,GAC1B,2BAA2B,GAC3B,yBAAyB,GAEzB,UAAU,GACV,QAAQ,GAER,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAEhB,iBAAiB,GAEjB,iBAAiB,GAEjB,aAAa,GACb,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,sBAAsB,CAAC;AAM3B,MAAM,WAAW,YAAY;IAE3B,KAAK,CAAC,EAAE,OAAO,SAAS,EAAE,YAAY,CAAC;IAEvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,aAAa,GAAG,QAAQ,CAAC;CACpC;AAKD,MAAM,WAAW,kBAAkB;IAEjC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,IAAI,EAAE,YAAY,CAAC;IAEnB,OAAO,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;IAE7C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAKD,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAsB;IACjD,OAAO,CAAC,aAAa,CAAC,CAAsB;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"Revision.d.ts","sourceRoot":"","sources":["../../src/elements/Revision.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,13 +201,26 @@ class Revision {
|
|
|
201
201
|
children.push(this.createPropertiesElement());
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
|
+
const firstItem = this.content[0];
|
|
205
|
+
const singleHyperlink = this.content.length === 1 && firstItem && (0, RevisionContent_1.isHyperlinkContent)(firstItem)
|
|
206
|
+
? firstItem : null;
|
|
207
|
+
if (singleHyperlink && !this.isPropertyChangeType()) {
|
|
208
|
+
return this.createHyperlinkWrappedRevisionXml(singleHyperlink, elementName, attributes);
|
|
209
|
+
}
|
|
204
210
|
for (const item of this.content) {
|
|
205
211
|
if ((0, RevisionContent_1.isHyperlinkContent)(item)) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
212
|
+
const hyperlinkXml = item.toXML();
|
|
213
|
+
if (hyperlinkXml.children) {
|
|
214
|
+
for (const child of hyperlinkXml.children) {
|
|
215
|
+
if (typeof child === 'object' && child.name === 'w:r') {
|
|
216
|
+
if (this.type === 'delete' || this.type === 'moveFrom') {
|
|
217
|
+
children.push(this.convertRunXmlToDeleted(child));
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
children.push(child);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
211
224
|
}
|
|
212
225
|
}
|
|
213
226
|
else if ((0, RevisionContent_1.isRunContent)(item)) {
|
|
@@ -319,6 +332,32 @@ class Revision {
|
|
|
319
332
|
}
|
|
320
333
|
return runXml;
|
|
321
334
|
}
|
|
335
|
+
createHyperlinkWrappedRevisionXml(hyperlink, revisionElementName, revisionAttributes) {
|
|
336
|
+
const hyperlinkXml = hyperlink.toXML();
|
|
337
|
+
const runs = [];
|
|
338
|
+
if (hyperlinkXml.children) {
|
|
339
|
+
for (const child of hyperlinkXml.children) {
|
|
340
|
+
if (typeof child === 'object' && child.name === 'w:r') {
|
|
341
|
+
if (this.type === 'delete' || this.type === 'moveFrom') {
|
|
342
|
+
runs.push(this.convertRunXmlToDeleted(child));
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
runs.push(child);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const revisionElement = {
|
|
351
|
+
name: revisionElementName,
|
|
352
|
+
attributes: revisionAttributes,
|
|
353
|
+
children: runs,
|
|
354
|
+
};
|
|
355
|
+
return {
|
|
356
|
+
name: hyperlinkXml.name,
|
|
357
|
+
attributes: hyperlinkXml.attributes,
|
|
358
|
+
children: [revisionElement],
|
|
359
|
+
};
|
|
360
|
+
}
|
|
322
361
|
createDeletedHyperlinkXml(hyperlink) {
|
|
323
362
|
const hyperlinkXml = hyperlink.toXML();
|
|
324
363
|
if (hyperlinkXml.children) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Revision.js","sourceRoot":"","sources":["../../src/elements/Revision.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Revision.js","sourceRoot":"","sources":["../../src/elements/Revision.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Revision - Represents tracked changes in a Word document\r\n *\r\n * Track changes allow tracking of insertions, deletions, and modifications\r\n * to document content, showing who made changes and when.\r\n */\r\n\r\nimport { Run } from './Run';\r\nimport type { RunFormatting } from './Run';\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\nimport type { RevisionLocation } from './PropertyChangeTypes';\r\nimport type { RevisionContent } from './RevisionContent';\r\nimport { isRunContent, isHyperlinkContent } from './RevisionContent';\r\nimport { formatDateForXml } from '../utils/dateFormatting';\r\n\r\n/**\r\n * Revision type - All OpenXML WordprocessingML revision types\r\n */\r\nexport type RevisionType =\r\n // Content changes\r\n | 'insert' // w:ins - Inserted content\r\n | 'delete' // w:del - Deleted content\r\n // Property changes\r\n | 'runPropertiesChange' // w:rPrChange - Run formatting change (bold, italic, font, etc.)\r\n | 'paragraphPropertiesChange' // w:pPrChange - Paragraph formatting change\r\n | 'tablePropertiesChange' // w:tblPrChange - Table formatting change\r\n | 'tableExceptionPropertiesChange' // w:tblPrExChange - Table exception properties change\r\n | 'tableRowPropertiesChange' // w:trPrChange - Table row properties change\r\n | 'tableCellPropertiesChange' // w:tcPrChange - Table cell properties change\r\n | 'sectionPropertiesChange' // w:sectPrChange - Section properties change\r\n // Move operations\r\n | 'moveFrom' // w:moveFrom - Content moved from this location\r\n | 'moveTo' // w:moveTo - Content moved to this location\r\n // Table operations\r\n | 'tableCellInsert' // w:cellIns - Table cell inserted\r\n | 'tableCellDelete' // w:cellDel - Table cell deleted\r\n | 'tableCellMerge' // w:cellMerge - Table cells merged\r\n // Numbering\r\n | 'numberingChange' // w:numberingChange - List numbering changed\r\n // Hyperlink changes\r\n | 'hyperlinkChange' // Hyperlink URL, text, or formatting change\r\n // Rich content changes (new tracking types)\r\n | 'imageChange' // Image insertion, deletion, or property change\r\n | 'fieldChange' // Field insertion, deletion, or value change\r\n | 'commentChange' // Comment insertion, deletion, or content change\r\n | 'bookmarkChange' // Bookmark creation, deletion, or range change\r\n | 'contentControlChange'; // Content control insertion, deletion, or property change\r\n\r\n/**\r\n * Field context for revisions inside complex fields\r\n * Provides information about the parent field when a revision appears in a field result\r\n */\r\nexport interface FieldContext {\r\n /** Reference to the parent ComplexField (if revision is in field result) */\r\n field?: import('./Field').ComplexField;\r\n /** Field instruction (e.g., \"HYPERLINK\", \"TOC\", \"MERGEFIELD\") */\r\n instruction?: string;\r\n /** Position within field: 'instruction' or 'result' */\r\n position: 'instruction' | 'result';\r\n}\r\n\r\n/**\r\n * Revision properties\r\n */\r\nexport interface RevisionProperties {\r\n /** Unique revision ID (assigned by RevisionManager) */\r\n id?: number;\r\n /** Author who made the change */\r\n author: string;\r\n /** Date when the change was made */\r\n date?: Date;\r\n /** Type of revision */\r\n type: RevisionType;\r\n /** Content affected by the revision (Run, Hyperlink, or arrays thereof) */\r\n content: RevisionContent | RevisionContent[];\r\n /** Previous properties (for property change revisions) */\r\n previousProperties?: Record<string, any>;\r\n /** New properties (for property change revisions) */\r\n newProperties?: Record<string, any>;\r\n /** Move ID (for moveFrom/moveTo operations) */\r\n moveId?: string;\r\n /** Destination location (for moveFrom) or source location (for moveTo) */\r\n moveLocation?: string;\r\n /** Location of this revision within the document structure */\r\n location?: RevisionLocation;\r\n /** Field context if revision is inside a complex field */\r\n fieldContext?: FieldContext;\r\n}\r\n\r\n/**\r\n * Represents a tracked change (revision) in a document\r\n */\r\nexport class Revision {\r\n private id: number;\r\n private author: string;\r\n private date: Date;\r\n private type: RevisionType;\r\n private content: RevisionContent[];\r\n private previousProperties?: Record<string, any>;\r\n private newProperties?: Record<string, any>;\r\n private moveId?: string;\r\n private moveLocation?: string;\r\n private isFieldInstruction = false;\r\n private location?: RevisionLocation;\r\n private fieldContext?: FieldContext;\r\n\r\n /**\r\n * Creates a new Revision\r\n * @param properties - Revision properties\r\n */\r\n constructor(properties: RevisionProperties) {\r\n this.id = properties.id ?? 0; // Will be assigned by RevisionManager\r\n this.author = properties.author;\r\n this.date = properties.date || new Date();\r\n this.type = properties.type;\r\n this.content = Array.isArray(properties.content) ? properties.content : [properties.content];\r\n this.previousProperties = properties.previousProperties;\r\n this.newProperties = properties.newProperties;\r\n this.moveId = properties.moveId;\r\n this.moveLocation = properties.moveLocation;\r\n this.location = properties.location;\r\n this.fieldContext = properties.fieldContext;\r\n }\r\n\r\n /**\r\n * Gets the revision ID\r\n */\r\n getId(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * Sets the revision ID (used by RevisionManager)\r\n * @internal\r\n */\r\n setId(id: number): void {\r\n this.id = id;\r\n }\r\n\r\n /**\r\n * Gets the author\r\n */\r\n getAuthor(): string {\r\n return this.author;\r\n }\r\n\r\n /**\r\n * Sets the author\r\n */\r\n setAuthor(author: string): this {\r\n this.author = author;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the revision date\r\n */\r\n getDate(): Date {\r\n return this.date;\r\n }\r\n\r\n /**\r\n * Sets the revision date\r\n */\r\n setDate(date: Date): this {\r\n this.date = date;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the revision type\r\n */\r\n getType(): RevisionType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Gets all content items in this revision\r\n * @returns Array of RevisionContent (Run or Hyperlink objects)\r\n */\r\n getContent(): RevisionContent[] {\r\n return [...this.content];\r\n }\r\n\r\n /**\r\n * Gets only the Run objects from this revision (backward compatible)\r\n * @returns Array of Run objects\r\n */\r\n getRuns(): Run[] {\r\n return this.content.filter((item): item is Run => isRunContent(item));\r\n }\r\n\r\n /**\r\n * Gets only the Hyperlink objects from this revision\r\n * @returns Array of Hyperlink objects\r\n */\r\n getHyperlinks(): import('./Hyperlink').Hyperlink[] {\r\n return this.content.filter((item): item is import('./Hyperlink').Hyperlink => isHyperlinkContent(item));\r\n }\r\n\r\n /**\r\n * Adds a run to this revision\r\n */\r\n addRun(run: Run): this {\r\n this.content.push(run);\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a hyperlink to this revision\r\n */\r\n addHyperlink(hyperlink: import('./Hyperlink').Hyperlink): this {\r\n this.content.push(hyperlink);\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds content (Run or Hyperlink) to this revision\r\n */\r\n addContent(item: RevisionContent): this {\r\n this.content.push(item);\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the combined text content from all Runs and Hyperlinks in this revision.\r\n * This is used by isParagraphBlank() to detect text inside revision elements.\r\n * @returns Combined text string from all content items\r\n */\r\n getText(): string {\r\n return this.content\r\n .filter((item): item is Run | import('./Hyperlink').Hyperlink =>\r\n isRunContent(item) || isHyperlinkContent(item)\r\n )\r\n .map((item) => item.getText())\r\n .join('');\r\n }\r\n\r\n /**\r\n * Gets the previous properties (for property change revisions)\r\n */\r\n getPreviousProperties(): Record<string, any> | undefined {\r\n return this.previousProperties;\r\n }\r\n\r\n /**\r\n * Gets the new properties (for property change revisions)\r\n */\r\n getNewProperties(): Record<string, any> | undefined {\r\n return this.newProperties;\r\n }\r\n\r\n /**\r\n * Gets the move ID (for moveFrom/moveTo operations)\r\n */\r\n getMoveId(): string | undefined {\r\n return this.moveId;\r\n }\r\n\r\n /**\r\n * Gets the move location\r\n */\r\n getMoveLocation(): string | undefined {\r\n return this.moveLocation;\r\n }\r\n\r\n /**\r\n * Gets the location of this revision within the document\r\n * @returns Location information or undefined if not set\r\n */\r\n getLocation(): RevisionLocation | undefined {\r\n return this.location;\r\n }\r\n\r\n /**\r\n * Sets the location of this revision within the document\r\n * @param location - Location information\r\n * @returns This revision for chaining\r\n */\r\n setLocation(location: RevisionLocation): this {\r\n this.location = location;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the field context if this revision is inside a complex field\r\n * @returns Field context information or undefined if not inside a field\r\n */\r\n getFieldContext(): FieldContext | undefined {\r\n return this.fieldContext;\r\n }\r\n\r\n /**\r\n * Sets the field context for this revision\r\n * @param context - Field context information\r\n * @returns This revision for chaining\r\n */\r\n setFieldContext(context: FieldContext): this {\r\n this.fieldContext = context;\r\n return this;\r\n }\r\n\r\n /**\r\n * Checks if this revision is inside a complex field\r\n * @returns True if the revision is inside a field result or instruction section\r\n */\r\n isInsideField(): boolean {\r\n return this.fieldContext !== undefined;\r\n }\r\n\r\n /**\r\n * Checks if this revision is inside a field result section\r\n * @returns True if the revision is in the result section of a complex field\r\n */\r\n isInsideFieldResult(): boolean {\r\n return this.fieldContext?.position === 'result';\r\n }\r\n\r\n /**\r\n * Checks if this revision is inside a field instruction section\r\n * @returns True if the revision is in the instruction section of a complex field\r\n */\r\n isInsideFieldInstruction(): boolean {\r\n return this.fieldContext?.position === 'instruction';\r\n }\r\n\r\n /**\r\n * Gets the parent field if this revision is inside a complex field\r\n * @returns The parent ComplexField or undefined\r\n */\r\n getParentField(): import('./Field').ComplexField | undefined {\r\n return this.fieldContext?.field;\r\n }\r\n\r\n /**\r\n * Marks this revision as a field instruction deletion\r\n * When true, uses w:delInstrText instead of w:delText\r\n */\r\n setAsFieldInstruction(): this {\r\n this.isFieldInstruction = true;\r\n return this;\r\n }\r\n\r\n /**\r\n * Checks if this is a field instruction deletion\r\n */\r\n isFieldInstructionDeletion(): boolean {\r\n return this.isFieldInstruction;\r\n }\r\n\r\n /**\r\n * Formats a date to ISO 8601 format for XML\r\n * Per ECMA-376, revision dates must be in ISO 8601 format (e.g., \"2024-01-01T12:00:00Z\")\r\n * Uses formatDateForXml() to strip milliseconds which Word does not accept.\r\n * @param date - Date to format\r\n * @returns ISO 8601 formatted date string without milliseconds\r\n */\r\n private formatDate(date: Date): string {\r\n return formatDateForXml(date);\r\n }\r\n\r\n /**\r\n * Gets the XML element name for this revision type\r\n * Maps internal revision types to OOXML WordprocessingML element names per ECMA-376\r\n *\r\n * Mappings:\r\n * - insert → w:ins (inserted content)\r\n * - delete → w:del (deleted content)\r\n * - runPropertiesChange → w:rPrChange (run formatting change)\r\n * - paragraphPropertiesChange → w:pPrChange (paragraph formatting change)\r\n * - tablePropertiesChange → w:tblPrChange (table formatting change)\r\n * - tableRowPropertiesChange → w:trPrChange (table row properties change)\r\n * - tableCellPropertiesChange → w:tcPrChange (table cell properties change)\r\n * - sectionPropertiesChange → w:sectPrChange (section properties change)\r\n * - moveFrom → w:moveFrom (source location of moved content)\r\n * - moveTo → w:moveTo (destination location of moved content)\r\n * - tableCellInsert → w:cellIns (inserted table cell)\r\n * - tableCellDelete → w:cellDel (deleted table cell)\r\n * - tableCellMerge → w:cellMerge (merged table cells)\r\n * - numberingChange → w:numberingChange (list numbering changed)\r\n *\r\n * @returns OOXML element name (e.g., \"w:ins\", \"w:del\")\r\n */\r\n private getElementName(): string {\r\n switch (this.type) {\r\n case 'insert':\r\n return 'w:ins';\r\n case 'delete':\r\n return 'w:del';\r\n case 'runPropertiesChange':\r\n return 'w:rPrChange';\r\n case 'paragraphPropertiesChange':\r\n return 'w:pPrChange';\r\n case 'tablePropertiesChange':\r\n return 'w:tblPrChange';\r\n case 'tableExceptionPropertiesChange':\r\n return 'w:tblPrExChange';\r\n case 'tableRowPropertiesChange':\r\n return 'w:trPrChange';\r\n case 'tableCellPropertiesChange':\r\n return 'w:tcPrChange';\r\n case 'sectionPropertiesChange':\r\n return 'w:sectPrChange';\r\n case 'moveFrom':\r\n return 'w:moveFrom';\r\n case 'moveTo':\r\n return 'w:moveTo';\r\n case 'tableCellInsert':\r\n return 'w:cellIns';\r\n case 'tableCellDelete':\r\n return 'w:cellDel';\r\n case 'tableCellMerge':\r\n return 'w:cellMerge';\r\n case 'numberingChange':\r\n return 'w:numberingChange';\r\n // Internal tracking types - no OOXML element equivalent\r\n // These are used for changelog generation and internal tracking,\r\n // not for XML serialization. OOXML tracks these as insert/delete pairs.\r\n case 'hyperlinkChange':\r\n case 'imageChange':\r\n case 'fieldChange':\r\n case 'commentChange':\r\n case 'bookmarkChange':\r\n case 'contentControlChange':\r\n throw new Error(\r\n `Revision type '${this.type}' is an internal tracking type and cannot be serialized to OOXML XML. ` +\r\n `OOXML does not have a native element for this type. ` +\r\n `Use insert/delete revision pairs for tracking changes to ${this.type.replace('Change', '')}s.`\r\n );\r\n default:\r\n // TypeScript exhaustiveness check - this should never be reached\r\n // if all RevisionType values are handled above\r\n const _exhaustiveCheck: never = this.type;\r\n throw new Error(`Unknown revision type: ${_exhaustiveCheck}`);\r\n }\r\n }\r\n\r\n /**\r\n * Generates XML for this revision per OOXML WordprocessingML specification (ECMA-376)\r\n *\r\n * **XML Structure:**\r\n *\r\n * Content revisions (w:ins, w:del, w:moveFrom, w:moveTo):\r\n * ```xml\r\n * <w:ins w:id=\"0\" w:author=\"Author Name\" w:date=\"2024-01-01T12:00:00Z\">\r\n * <w:r>\r\n * <w:t>Inserted text</w:t>\r\n * </w:r>\r\n * </w:ins>\r\n * ```\r\n *\r\n * Deletion revisions use w:delText instead of w:t:\r\n * ```xml\r\n * <w:del w:id=\"1\" w:author=\"Author Name\" w:date=\"2024-01-01T12:00:00Z\">\r\n * <w:r>\r\n * <w:delText>Deleted text</w:delText>\r\n * </w:r>\r\n * </w:del>\r\n * ```\r\n *\r\n * Property change revisions (w:rPrChange, w:pPrChange, etc.):\r\n * ```xml\r\n * <w:rPrChange w:id=\"2\" w:author=\"Author Name\" w:date=\"2024-01-01T12:00:00Z\">\r\n * <w:rPr>\r\n * <w:b/> <!-- Previous bold setting -->\r\n * <w:sz w:val=\"24\"/> <!-- Previous font size -->\r\n * </w:rPr>\r\n * </w:rPrChange>\r\n * ```\r\n *\r\n * **Required Attributes (per ECMA-376):**\r\n * - w:id: Unique revision identifier (ST_DecimalNumber) - REQUIRED\r\n * - w:author: Author who made the change (ST_String) - REQUIRED\r\n * - w:date: When the change was made (ST_DateTime, ISO 8601) - OPTIONAL\r\n *\r\n * **Move Operations:**\r\n * For moveFrom/moveTo, an additional w:moveId attribute links the source and destination:\r\n * ```xml\r\n * <w:moveFrom w:id=\"3\" w:author=\"Author\" w:date=\"...\" w:moveId=\"move-1\">...</w:moveFrom>\r\n * <w:moveTo w:id=\"4\" w:author=\"Author\" w:date=\"...\" w:moveId=\"move-1\">...</w:moveTo>\r\n * ```\r\n *\r\n * **Content vs Property Changes:**\r\n * - Content revisions (insert/delete/move): Contain w:r elements with text runs\r\n * - Property revisions (rPrChange/pPrChange): Contain previous property elements (w:rPr, w:pPr)\r\n *\r\n * @returns XMLElement representing the revision in OOXML format, or null for internal-only types\r\n * @see ECMA-376 Part 1 §17.13.5 (Revision Identifiers for Paragraph Content)\r\n * @see ECMA-376 Part 1 §17.13.5.15 (Inserted Paragraph)\r\n * @see ECMA-376 Part 1 §17.13.5.14 (Deleted Paragraph)\r\n */\r\n toXML(): XMLElement | null {\r\n // Internal tracking types have no OOXML equivalent and cannot be serialized\r\n // They are used for changelog generation and internal tracking only\r\n const INTERNAL_TRACKING_TYPES: RevisionType[] = [\r\n 'hyperlinkChange',\r\n 'imageChange',\r\n 'fieldChange',\r\n 'commentChange',\r\n 'bookmarkChange',\r\n 'contentControlChange',\r\n ];\r\n\r\n if (INTERNAL_TRACKING_TYPES.includes(this.type)) {\r\n // Return null for internal types - callers should skip these\r\n return null;\r\n }\r\n\r\n const attributes: Record<string, string> = {\r\n 'w:id': this.id.toString(),\r\n 'w:author': this.author,\r\n 'w:date': this.formatDate(this.date),\r\n };\r\n\r\n // Add move-specific attributes\r\n if ((this.type === 'moveFrom' || this.type === 'moveTo') && this.moveId) {\r\n attributes['w:moveId'] = this.moveId;\r\n }\r\n\r\n const elementName = this.getElementName();\r\n const children: XMLElement[] = [];\r\n\r\n // Handle different revision types\r\n if (this.isPropertyChangeType()) {\r\n // Property change revisions contain the previous properties\r\n if (this.previousProperties) {\r\n children.push(this.createPropertiesElement());\r\n }\r\n }\r\n\r\n // Check if content contains only a single hyperlink (needs nesting inversion per ECMA-376)\r\n // w:hyperlink is NOT a valid child of w:ins/w:del; instead w:ins/w:del must be inside w:hyperlink\r\n const firstItem = this.content[0];\r\n const singleHyperlink = this.content.length === 1 && firstItem && isHyperlinkContent(firstItem)\r\n ? firstItem : null;\r\n\r\n if (singleHyperlink && !this.isPropertyChangeType()) {\r\n return this.createHyperlinkWrappedRevisionXml(singleHyperlink, elementName, attributes);\r\n }\r\n\r\n // Add content to the revision (handles both Run and Hyperlink)\r\n for (const item of this.content) {\r\n if (isHyperlinkContent(item)) {\r\n // For multiple-item revisions containing hyperlinks, extract the runs\r\n // and add them directly (hyperlink wrapper omitted to maintain validity)\r\n const hyperlinkXml = item.toXML();\r\n if (hyperlinkXml.children) {\r\n for (const child of hyperlinkXml.children) {\r\n if (typeof child === 'object' && child.name === 'w:r') {\r\n if (this.type === 'delete' || this.type === 'moveFrom') {\r\n children.push(this.convertRunXmlToDeleted(child));\r\n } else {\r\n children.push(child);\r\n }\r\n }\r\n }\r\n }\r\n } else if (isRunContent(item)) {\r\n // Handle Run content (existing behavior)\r\n if (this.type === 'delete' || this.type === 'moveFrom') {\r\n // For deletions and moveFrom, we need to modify the run XML to use w:delText instead of w:t\r\n const runXml = this.createDeletedRunXml(item);\r\n children.push(runXml);\r\n } else {\r\n // For other types, use normal run XML\r\n children.push(item.toXML());\r\n }\r\n }\r\n }\r\n\r\n return {\r\n name: elementName,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Checks if this is a property change revision type\r\n *\r\n * Property change revisions track formatting changes, not content changes.\r\n * They contain previous property elements (w:rPr, w:pPr, etc.) instead of text runs.\r\n *\r\n * **Property Change Types:**\r\n * - runPropertiesChange: Run formatting (bold, italic, font, color, etc.)\r\n * - paragraphPropertiesChange: Paragraph formatting (alignment, spacing, indentation, etc.)\r\n * - tablePropertiesChange: Table formatting\r\n * - tableRowPropertiesChange: Table row properties\r\n * - tableCellPropertiesChange: Table cell properties\r\n * - sectionPropertiesChange: Section properties (page size, margins, etc.)\r\n * - numberingChange: List numbering properties\r\n *\r\n * **Content Change Types (NOT property changes):**\r\n * - insert: Added text\r\n * - delete: Removed text\r\n * - moveFrom: Moved text source\r\n * - moveTo: Moved text destination\r\n * - tableCellInsert: Added table cell\r\n * - tableCellDelete: Removed table cell\r\n * - tableCellMerge: Merged table cells\r\n *\r\n * @returns true if this revision tracks a property/formatting change, false otherwise\r\n */\r\n private isPropertyChangeType(): boolean {\r\n return [\r\n 'runPropertiesChange',\r\n 'paragraphPropertiesChange',\r\n 'tablePropertiesChange',\r\n 'tableExceptionPropertiesChange',\r\n 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange',\r\n 'sectionPropertiesChange',\r\n 'numberingChange',\r\n ].includes(this.type);\r\n }\r\n\r\n /**\r\n * Creates XML element for previous properties in property change revisions\r\n *\r\n * **Purpose:**\r\n * Property change revisions (w:rPrChange, w:pPrChange, etc.) must contain a child element\r\n * with the PREVIOUS state of the properties before the change. This allows Word to show\r\n * what changed and enables accepting/rejecting the change.\r\n *\r\n * **Structure:**\r\n * ```xml\r\n * <w:rPrChange w:id=\"0\" w:author=\"Author\" w:date=\"...\">\r\n * <w:rPr>\r\n * <!-- Previous run properties -->\r\n * <w:b/> <!-- Was bold -->\r\n * <w:sz w:val=\"24\"/> <!-- Was 12pt (24 half-points) -->\r\n * </w:rPr>\r\n * </w:rPrChange>\r\n * ```\r\n *\r\n * **Property Element Mapping:**\r\n * - runPropertiesChange → w:rPr (run properties)\r\n * - paragraphPropertiesChange → w:pPr (paragraph properties)\r\n * - tablePropertiesChange → w:tblPr (table properties)\r\n * - tableRowPropertiesChange → w:trPr (table row properties)\r\n * - tableCellPropertiesChange → w:tcPr (table cell properties)\r\n * - sectionPropertiesChange → w:sectPr (section properties)\r\n * - numberingChange → w:numPr (numbering properties)\r\n *\r\n * **Implementation:**\r\n * This method converts the previousProperties object into OOXML elements.\r\n * - Boolean properties (e.g., bold) → <w:b/>\r\n * - Value properties (e.g., font size) → <w:sz w:val=\"24\"/>\r\n *\r\n * @returns XMLElement containing previous properties (w:rPr, w:pPr, etc.)\r\n * @see ECMA-376 Part 1 §17.13.5.31 (Run Properties Change)\r\n * @see ECMA-376 Part 1 §17.13.5.29 (Paragraph Properties Change)\r\n */\r\n private createPropertiesElement(): XMLElement {\r\n // For runPropertiesChange, delegate to Run.generateRunPropertiesXML for correct\r\n // ECMA-376 element names and ordering (e.g., bold→w:b, font→w:rFonts, size→w:sz)\r\n if (this.type === 'runPropertiesChange' && this.previousProperties) {\r\n const rPr = Run.generateRunPropertiesXML(this.previousProperties as RunFormatting);\r\n return rPr || { name: 'w:rPr', attributes: {}, children: [] };\r\n }\r\n\r\n // The property element name depends on the revision type\r\n let propElementName = 'w:rPr';\r\n\r\n switch (this.type) {\r\n case 'runPropertiesChange':\r\n propElementName = 'w:rPr';\r\n break;\r\n case 'paragraphPropertiesChange':\r\n propElementName = 'w:pPr';\r\n break;\r\n case 'tablePropertiesChange':\r\n propElementName = 'w:tblPr';\r\n break;\r\n case 'tableExceptionPropertiesChange':\r\n propElementName = 'w:tblPrEx';\r\n break;\r\n case 'tableRowPropertiesChange':\r\n propElementName = 'w:trPr';\r\n break;\r\n case 'tableCellPropertiesChange':\r\n propElementName = 'w:tcPr';\r\n break;\r\n case 'sectionPropertiesChange':\r\n propElementName = 'w:sectPr';\r\n break;\r\n case 'numberingChange':\r\n propElementName = 'w:numPr';\r\n break;\r\n }\r\n\r\n // Build property children from previousProperties\r\n const propChildren: XMLElement[] = [];\r\n if (this.previousProperties) {\r\n for (const [key, value] of Object.entries(this.previousProperties)) {\r\n if (typeof value === 'boolean' && value) {\r\n // Boolean properties (e.g., bold, italic)\r\n propChildren.push({ name: `w:${key}`, attributes: {}, children: [] });\r\n } else if (typeof value === 'string' || typeof value === 'number') {\r\n // Value properties (e.g., font size, color)\r\n propChildren.push({\r\n name: `w:${key}`,\r\n attributes: { 'w:val': value.toString() },\r\n children: [],\r\n });\r\n }\r\n }\r\n }\r\n\r\n return {\r\n name: propElementName,\r\n attributes: {},\r\n children: propChildren,\r\n };\r\n }\r\n\r\n /**\r\n * Creates XML for a deleted run (uses w:delText or w:delInstrText instead of w:t)\r\n *\r\n * **OOXML Requirement:**\r\n * Per ECMA-376, deleted text must use w:delText element instead of w:t element.\r\n * For deleted field instructions, w:delInstrText must be used instead.\r\n * This is required for proper rendering in Microsoft Word's Track Changes mode.\r\n *\r\n * **Transformation:**\r\n * ```xml\r\n * <!-- Normal run (NOT in deletion) -->\r\n * <w:r>\r\n * <w:rPr><w:b/></w:rPr>\r\n * <w:t>Text</w:t>\r\n * </w:r>\r\n *\r\n * <!-- Deleted run (inside w:del) -->\r\n * <w:r>\r\n * <w:rPr><w:b/></w:rPr>\r\n * <w:delText>Text</w:delText>\r\n * </w:r>\r\n *\r\n * <!-- Deleted field instruction (inside w:del) -->\r\n * <w:r>\r\n * <w:delInstrText>MERGEFIELD Name</w:delInstrText>\r\n * </w:r>\r\n * ```\r\n *\r\n * **Why This Matters:**\r\n * - w:delText tells Word to render with strikethrough in Track Changes mode\r\n * - w:delInstrText is specifically for deleted field codes\r\n * - w:t would render as normal text even inside w:del element\r\n * - Word will reject documents with w:t inside deletions as malformed\r\n *\r\n * **Implementation:**\r\n * This method gets the run's normal XML and replaces all w:t elements with w:delText\r\n * or w:delInstrText (for field instructions) while preserving all other properties\r\n * (formatting, spacing attributes, etc.)\r\n *\r\n * @param run - Run containing deleted text\r\n * @returns XMLElement with w:delText or w:delInstrText instead of w:t\r\n * @see ECMA-376 Part 1 §17.13.5.14 (Deleted Run Content)\r\n * @see ECMA-376 Part 1 §22.1.2.27 (w:delText element)\r\n * @see ECMA-376 Part 1 §22.1.2.26 (w:delInstrText element)\r\n */\r\n private createDeletedRunXml(run: Run): XMLElement {\r\n // Get the regular run XML\r\n const runXml = run.toXML();\r\n\r\n // Determine which element to use for deleted text\r\n // w:delInstrText for field instructions, w:delText for regular text\r\n const deletedTextElement = this.isFieldInstruction ? 'w:delInstrText' : 'w:delText';\r\n\r\n // We need to replace text elements with their deleted counterparts:\r\n // - w:t -> w:delText (or w:delInstrText if isFieldInstruction)\r\n // - w:instrText -> w:delInstrText (always, regardless of isFieldInstruction flag)\r\n if (runXml.children) {\r\n const modifiedChildren = runXml.children.map(child => {\r\n if (typeof child === 'object') {\r\n if (child.name === 'w:t') {\r\n // Replace w:t with appropriate deleted text element\r\n return {\r\n ...child,\r\n name: deletedTextElement,\r\n };\r\n } else if (child.name === 'w:instrText') {\r\n // Replace w:instrText with w:delInstrText\r\n // Per ECMA-376 §22.1.2.26, deleted field instructions must use w:delInstrText\r\n return {\r\n ...child,\r\n name: 'w:delInstrText',\r\n };\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n return {\r\n ...runXml,\r\n children: modifiedChildren,\r\n };\r\n }\r\n\r\n return runXml;\r\n }\r\n\r\n /**\r\n * Creates XML for a deleted hyperlink (transforms nested runs to use w:delText)\r\n *\r\n * **OOXML Requirement:**\r\n * Per ECMA-376, when a hyperlink is inside a w:del element, its nested runs must\r\n * use w:delText instead of w:t. This transforms the hyperlink's internal run\r\n * content to comply with Word's Track Changes requirements.\r\n *\r\n * **XML Structure:**\r\n * ```xml\r\n * <w:del w:id=\"1\" w:author=\"Author\" w:date=\"...\">\r\n * <w:hyperlink r:id=\"rId1\">\r\n * <w:r>\r\n * <w:delText>Link text</w:delText> <!-- Transformed from w:t -->\r\n * </w:r>\r\n * </w:hyperlink>\r\n * </w:del>\r\n * ```\r\n *\r\n * @param hyperlink - Hyperlink containing deleted content\r\n * @returns XMLElement with nested runs transformed to use w:delText\r\n */\r\n /**\r\n * Creates a hyperlink-wrapped revision XML element.\r\n * Per ECMA-376, w:hyperlink is NOT a valid child of w:ins/w:del.\r\n * Instead, w:ins/w:del must be inside w:hyperlink:\r\n * <w:hyperlink r:id=\"rId1\"><w:ins ...><w:r>...</w:r></w:ins></w:hyperlink>\r\n */\r\n private createHyperlinkWrappedRevisionXml(\r\n hyperlink: import('./Hyperlink').Hyperlink,\r\n revisionElementName: string,\r\n revisionAttributes: Record<string, string>\r\n ): XMLElement {\r\n const hyperlinkXml = hyperlink.toXML();\r\n\r\n // Extract runs from the hyperlink\r\n const runs: XMLElement[] = [];\r\n if (hyperlinkXml.children) {\r\n for (const child of hyperlinkXml.children) {\r\n if (typeof child === 'object' && child.name === 'w:r') {\r\n if (this.type === 'delete' || this.type === 'moveFrom') {\r\n runs.push(this.convertRunXmlToDeleted(child));\r\n } else {\r\n runs.push(child);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Build: <w:hyperlink ...><w:ins/w:del ...><w:r>...</w:r></w:ins/w:del></w:hyperlink>\r\n const revisionElement: XMLElement = {\r\n name: revisionElementName,\r\n attributes: revisionAttributes,\r\n children: runs,\r\n };\r\n\r\n return {\r\n name: hyperlinkXml.name,\r\n attributes: hyperlinkXml.attributes,\r\n children: [revisionElement],\r\n };\r\n }\r\n\r\n private createDeletedHyperlinkXml(hyperlink: import('./Hyperlink').Hyperlink): XMLElement {\r\n // Get the hyperlink's normal XML\r\n const hyperlinkXml = hyperlink.toXML();\r\n\r\n // Transform nested runs: w:t -> w:delText (or w:delInstrText for field instructions)\r\n if (hyperlinkXml.children) {\r\n hyperlinkXml.children = hyperlinkXml.children.map(child => {\r\n if (typeof child === 'object' && child.name === 'w:r') {\r\n // Transform the run's text elements\r\n return this.convertRunXmlToDeleted(child);\r\n }\r\n return child;\r\n });\r\n }\r\n\r\n return hyperlinkXml;\r\n }\r\n\r\n /**\r\n * Converts a run XMLElement to use deleted text elements\r\n * Helper for createDeletedHyperlinkXml\r\n */\r\n private convertRunXmlToDeleted(runXml: XMLElement): XMLElement {\r\n const deletedTextElement = this.isFieldInstruction ? 'w:delInstrText' : 'w:delText';\r\n\r\n if (!runXml.children) return runXml;\r\n\r\n const modifiedChildren = runXml.children.map(child => {\r\n if (typeof child === 'object' && child.name === 'w:t') {\r\n return {\r\n ...child,\r\n name: deletedTextElement,\r\n };\r\n }\r\n return child;\r\n });\r\n\r\n return {\r\n ...runXml,\r\n children: modifiedChildren,\r\n };\r\n }\r\n\r\n /**\r\n * Creates an insertion revision\r\n * @param author - Author who made the insertion\r\n * @param content - Inserted content (Run, Hyperlink, or arrays thereof)\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createInsertion(\r\n author: string,\r\n content: RevisionContent | RevisionContent[],\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'insert',\r\n content,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a deletion revision\r\n * @param author - Author who made the deletion\r\n * @param content - Deleted content (Run, Hyperlink, or arrays thereof)\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createDeletion(\r\n author: string,\r\n content: RevisionContent | RevisionContent[],\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'delete',\r\n content,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a field instruction deletion revision\r\n * Uses w:delInstrText instead of w:delText for field codes\r\n * @param author - Author who made the deletion\r\n * @param content - Deleted field instruction content (Run or array of Runs)\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createFieldInstructionDeletion(\r\n author: string,\r\n content: Run | Run[],\r\n date?: Date\r\n ): Revision {\r\n const revision = new Revision({\r\n author,\r\n type: 'delete',\r\n content,\r\n date,\r\n });\r\n revision.setAsFieldInstruction();\r\n return revision;\r\n }\r\n\r\n /**\r\n * Creates a revision from text\r\n * Convenience method that creates a Run from the text\r\n * @param type - Revision type\r\n * @param author - Author who made the change\r\n * @param text - Text content\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static fromText(\r\n type: RevisionType,\r\n author: string,\r\n text: string,\r\n date?: Date\r\n ): Revision {\r\n const run = new Run(text);\r\n return new Revision({\r\n author,\r\n type,\r\n content: run,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a run properties change revision\r\n * @param author - Author who made the change\r\n * @param content - Content with changed formatting\r\n * @param previousProperties - Previous run properties\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createRunPropertiesChange(\r\n author: string,\r\n content: Run | Run[],\r\n previousProperties: Record<string, any>,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'runPropertiesChange',\r\n content,\r\n previousProperties,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a paragraph properties change revision\r\n * @param author - Author who made the change\r\n * @param content - Paragraph content\r\n * @param previousProperties - Previous paragraph properties\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createParagraphPropertiesChange(\r\n author: string,\r\n content: Run | Run[],\r\n previousProperties: Record<string, any>,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'paragraphPropertiesChange',\r\n content,\r\n previousProperties,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a table properties change revision\r\n * @param author - Author who made the change\r\n * @param content - Table content\r\n * @param previousProperties - Previous table properties\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createTablePropertiesChange(\r\n author: string,\r\n content: Run | Run[],\r\n previousProperties: Record<string, any>,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'tablePropertiesChange',\r\n content,\r\n previousProperties,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a table exception properties change revision\r\n * Tracks changes to table properties that override style defaults\r\n * @param author - Author who made the change\r\n * @param content - Table content\r\n * @param previousProperties - Previous table exception properties\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createTableExceptionPropertiesChange(\r\n author: string,\r\n content: Run | Run[],\r\n previousProperties: Record<string, any>,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'tableExceptionPropertiesChange',\r\n content,\r\n previousProperties,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a moveFrom revision (source of moved content)\r\n * @param author - Author who moved the content\r\n * @param content - Content that was moved\r\n * @param moveId - Unique move operation ID (links moveFrom and moveTo)\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createMoveFrom(\r\n author: string,\r\n content: Run | Run[],\r\n moveId: string,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'moveFrom',\r\n content,\r\n moveId,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a moveTo revision (destination of moved content)\r\n * @param author - Author who moved the content\r\n * @param content - Content that was moved\r\n * @param moveId - Unique move operation ID (links moveFrom and moveTo)\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createMoveTo(\r\n author: string,\r\n content: Run | Run[],\r\n moveId: string,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'moveTo',\r\n content,\r\n moveId,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a table cell insertion revision\r\n * @param author - Author who inserted the cell\r\n * @param content - Cell content\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createTableCellInsert(\r\n author: string,\r\n content: Run | Run[],\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'tableCellInsert',\r\n content,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a table cell deletion revision\r\n * @param author - Author who deleted the cell\r\n * @param content - Cell content\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createTableCellDelete(\r\n author: string,\r\n content: Run | Run[],\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'tableCellDelete',\r\n content,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a table cell merge revision\r\n * @param author - Author who merged cells\r\n * @param content - Merged cell content\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createTableCellMerge(\r\n author: string,\r\n content: Run | Run[],\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'tableCellMerge',\r\n content,\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a numbering change revision\r\n * @param author - Author who changed the numbering\r\n * @param content - Content with changed numbering\r\n * @param previousProperties - Previous numbering properties\r\n * @param date - Optional date (defaults to now)\r\n * @returns New Revision instance\r\n */\r\n static createNumberingChange(\r\n author: string,\r\n content: Run | Run[],\r\n previousProperties: Record<string, any>,\r\n date?: Date\r\n ): Revision {\r\n return new Revision({\r\n author,\r\n type: 'numberingChange',\r\n content,\r\n previousProperties,\r\n date,\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevisionContent.js","sourceRoot":"","sources":["../../src/elements/RevisionContent.ts"],"names":[],"mappings":";;AAiCA,oCAQC;AAUD,gDAKC;AAWD,8CAKC;AAvCD,SAAgB,YAAY,CAAC,OAAwB;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG1D,MAAM,UAAU,GAAG,OAAQ,OAAe,CAAC,OAAO,KAAK,UAAU,CAAC;IAClE,MAAM,SAAS,GAAG,OAAQ,OAAe,CAAC,MAAM,KAAK,UAAU,CAAC;IAEhE,OAAO,UAAU,IAAI,CAAC,SAAS,CAAC;AAClC,CAAC;AAUD,SAAgB,kBAAkB,CAAC,OAAwB;IACzD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG1D,OAAO,OAAQ,OAAe,CAAC,MAAM,KAAK,UAAU,CAAC;AACvD,CAAC;AAWD,SAAgB,iBAAiB,CAAC,OAAwB;IACxD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG1D,OAAO,OAAQ,OAAe,CAAC,eAAe,KAAK,UAAU,CAAC;AAChE,CAAC"}
|
|
1
|
+
{"version":3,"file":"RevisionContent.js","sourceRoot":"","sources":["../../src/elements/RevisionContent.ts"],"names":[],"mappings":";;AAiCA,oCAQC;AAUD,gDAKC;AAWD,8CAKC;AAvCD,SAAgB,YAAY,CAAC,OAAwB;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG1D,MAAM,UAAU,GAAG,OAAQ,OAAe,CAAC,OAAO,KAAK,UAAU,CAAC;IAClE,MAAM,SAAS,GAAG,OAAQ,OAAe,CAAC,MAAM,KAAK,UAAU,CAAC;IAEhE,OAAO,UAAU,IAAI,CAAC,SAAS,CAAC;AAClC,CAAC;AAUD,SAAgB,kBAAkB,CAAC,OAAwB;IACzD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG1D,OAAO,OAAQ,OAAe,CAAC,MAAM,KAAK,UAAU,CAAC;AACvD,CAAC;AAWD,SAAgB,iBAAiB,CAAC,OAAwB;IACxD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAG1D,OAAO,OAAQ,OAAe,CAAC,eAAe,KAAK,UAAU,CAAC;AAChE,CAAC","sourcesContent":["/**\r\n * RevisionContent - Defines valid content types for tracked changes (revisions)\r\n *\r\n * Per ECMA-376, w:ins and w:del elements can contain:\r\n * - w:r (runs) - Text with formatting\r\n * - w:r with w:drawing (image runs) - Images embedded in runs\r\n * - w:hyperlink - Hyperlinks with nested runs\r\n *\r\n * This module provides the type definitions and type guards for revision content.\r\n */\r\n\r\nimport type { Run } from './Run';\r\nimport type { Hyperlink } from './Hyperlink';\r\nimport type { ImageRun } from './ImageRun';\r\n\r\n/**\r\n * Content types valid within a revision (tracked change)\r\n *\r\n * Per ECMA-376 Part 1 section 17.13.5, revision elements can contain:\r\n * - Run elements (w:r) - the most common case\r\n * - ImageRun elements (w:r with w:drawing) - for tracked image changes\r\n * - Hyperlink elements (w:hyperlink) - for tracked hyperlink changes\r\n */\r\nexport type RevisionContent = Run | ImageRun | Hyperlink;\r\n\r\n/**\r\n * Type guard to check if content is a Run\r\n * @param content - The content to check\r\n * @returns true if content is a Run instance\r\n *\r\n * Note: Uses duck typing instead of constructor.name to handle minified builds.\r\n * Run objects have getText() but NOT getUrl() or getAnchor() methods.\r\n */\r\nexport function isRunContent(content: RevisionContent): content is Run {\r\n if (!content || typeof content !== 'object') return false;\r\n\r\n // Duck typing: Runs have getText but no getUrl\r\n const hasGetText = typeof (content as any).getText === 'function';\r\n const hasGetUrl = typeof (content as any).getUrl === 'function';\r\n\r\n return hasGetText && !hasGetUrl;\r\n}\r\n\r\n/**\r\n * Type guard to check if content is a Hyperlink\r\n * @param content - The content to check\r\n * @returns true if content is a Hyperlink instance\r\n *\r\n * Note: Uses duck typing instead of constructor.name to handle minified builds.\r\n * Hyperlink objects have getUrl() method which Runs don't have.\r\n */\r\nexport function isHyperlinkContent(content: RevisionContent): content is Hyperlink {\r\n if (!content || typeof content !== 'object') return false;\r\n\r\n // Duck typing: Hyperlinks have getUrl method\r\n return typeof (content as any).getUrl === 'function';\r\n}\r\n\r\n/**\r\n * Type guard to check if content is an ImageRun\r\n * @param content - The content to check\r\n * @returns true if content is an ImageRun instance\r\n *\r\n * Note: Uses duck typing instead of constructor.name to handle minified builds.\r\n * ImageRun objects have getImageElement() method which regular Runs don't have.\r\n * This check should be performed BEFORE isRunContent() since ImageRun extends Run.\r\n */\r\nexport function isImageRunContent(content: RevisionContent): content is ImageRun {\r\n if (!content || typeof content !== 'object') return false;\r\n\r\n // Duck typing: ImageRun has getImageElement method which regular Run doesn't have\r\n return typeof (content as any).getImageElement === 'function';\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevisionManager.d.ts","sourceRoot":"","sources":["../../src/elements/RevisionManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAY9D,MAAM,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC;AAM9C,MAAM,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;AAK5D,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,OAAO,CAAC;AAKZ,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAQD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"RevisionManager.d.ts","sourceRoot":"","sources":["../../src/elements/RevisionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevisionManager.js","sourceRoot":"","sources":["../../src/elements/RevisionManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RevisionManager.js","sourceRoot":"","sources":["../../src/elements/RevisionManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RevisionManager - Manages tracked changes (revisions) in a document\r\n *\r\n * Tracks all revisions, assigns unique IDs, and provides statistics.\r\n */\r\n\r\nimport { Revision, RevisionType } from './Revision';\r\nimport type { RevisionLocation } from './PropertyChangeTypes';\r\nimport { getGlobalLogger, createScopedLogger, ILogger } from '../utils/logger';\r\n\r\n// Scoped logger for RevisionManager\r\nfunction getLogger(): ILogger {\r\n return createScopedLogger(getGlobalLogger(), 'RevisionManager');\r\n}\r\n\r\n/**\r\n * Type for the centralized ID provider callback.\r\n * Returns the next available annotation ID from a shared counter.\r\n */\r\nexport type IdProviderCallback = () => number;\r\n\r\n/**\r\n * Type for callback to notify of existing IDs (for synchronization).\r\n * Called when registering existing revisions to keep the central counter in sync.\r\n */\r\nexport type IdExistsCallback = (existingId: number) => void;\r\n\r\n/**\r\n * Semantic category for grouping revisions.\r\n */\r\nexport type RevisionCategory =\r\n | 'content' // Text insertions, deletions\r\n | 'formatting' // Run/paragraph property changes\r\n | 'structural' // Moves, section changes\r\n | 'table'; // Table structure changes\r\n\r\n/**\r\n * Summary statistics for revisions.\r\n */\r\nexport interface RevisionSummary {\r\n total: number;\r\n byType: {\r\n insertions: number;\r\n deletions: number;\r\n moves: number;\r\n propertyChanges: number;\r\n tableChanges: number;\r\n };\r\n byCategory: Record<RevisionCategory, number>;\r\n authors: string[];\r\n dateRange: { earliest: Date; latest: Date } | null;\r\n}\r\n\r\n/**\r\n * Manages document revisions (track changes)\r\n *\r\n * Per ECMA-376, revision IDs must be unique across ALL annotation types\r\n * in a document. Use setIdProvider() to connect to a centralized ID allocator.\r\n */\r\nexport class RevisionManager {\r\n private revisions: Revision[] = [];\r\n private nextId = 0;\r\n private idProvider: IdProviderCallback | null = null;\r\n private idExistsNotifier: IdExistsCallback | null = null;\r\n\r\n // Performance caching for frequently accessed filtered results\r\n private revisionsByTypeCache = new Map<RevisionType, Revision[]>();\r\n private revisionsByAuthorCache = new Map<string, Revision[]>();\r\n private revisionsByCategoryCache = new Map<RevisionCategory, Revision[]>();\r\n private cacheValid = true;\r\n\r\n /**\r\n * Invalidates all caches. Called when revisions are added/removed.\r\n * @private\r\n */\r\n private invalidateCache(): void {\r\n this.revisionsByTypeCache.clear();\r\n this.revisionsByAuthorCache.clear();\r\n this.revisionsByCategoryCache.clear();\r\n this.cacheValid = false;\r\n }\r\n\r\n /**\r\n * Sets the centralized ID provider callback.\r\n * When set, IDs will be allocated from the centralized DocumentIdManager\r\n * instead of the local nextId counter.\r\n *\r\n * @param provider - Callback that returns the next available ID\r\n * @param existsNotifier - Optional callback to notify when existing IDs are found\r\n */\r\n setIdProvider(provider: IdProviderCallback, existsNotifier?: IdExistsCallback): void {\r\n this.idProvider = provider;\r\n this.idExistsNotifier = existsNotifier || null;\r\n }\r\n\r\n /**\r\n * Registers a revision with the manager\r\n * Assigns a unique ID\r\n * @param revision - Revision to register\r\n * @returns The registered revision (same instance)\r\n */\r\n register(revision: Revision): Revision {\r\n const logger = getLogger();\r\n // Assign unique ID - use centralized provider if available\r\n const id = this.idProvider ? this.idProvider() : this.nextId++;\r\n revision.setId(id);\r\n\r\n // Store revision\r\n this.revisions.push(revision);\r\n this.invalidateCache();\r\n\r\n logger.debug('Revision registered', {\r\n id: revision.getId(),\r\n type: revision.getType(),\r\n author: revision.getAuthor()\r\n });\r\n\r\n return revision;\r\n }\r\n\r\n /**\r\n * Registers an existing revision (from parsing) with its pre-assigned ID.\r\n * Unlike register(), this does NOT assign a new ID - preserves the original\r\n * ID from parsed XML. Used when loading documents to avoid overwriting\r\n * revision IDs that are already correct.\r\n *\r\n * @param revision - Revision with ID already set from XML parsing\r\n * @returns The registered revision (same instance)\r\n */\r\n registerExisting(revision: Revision): Revision {\r\n const logger = getLogger();\r\n const existingId = revision.getId();\r\n\r\n // Notify centralized ID manager about this existing ID\r\n // This ensures the shared counter stays above all existing IDs\r\n if (this.idExistsNotifier) {\r\n this.idExistsNotifier(existingId);\r\n }\r\n\r\n // Also update local nextId to avoid collisions (fallback when no provider)\r\n if (existingId >= this.nextId) {\r\n this.nextId = existingId + 1;\r\n }\r\n\r\n // Store revision (keep its existing ID - do NOT overwrite)\r\n this.revisions.push(revision);\r\n this.invalidateCache();\r\n\r\n logger.debug('Existing revision registered', {\r\n id: existingId,\r\n type: revision.getType(),\r\n author: revision.getAuthor()\r\n });\r\n\r\n return revision;\r\n }\r\n\r\n /**\r\n * Gets all revisions\r\n * @returns Array of all revisions\r\n */\r\n getAllRevisions(): Revision[] {\r\n return [...this.revisions];\r\n }\r\n\r\n /**\r\n * Gets revisions by type\r\n * Uses caching for improved performance on repeated calls\r\n * @param type - Revision type to filter by\r\n * @returns Array of revisions of the specified type\r\n */\r\n getRevisionsByType(type: RevisionType): Revision[] {\r\n // Check cache first\r\n if (this.revisionsByTypeCache.has(type)) {\r\n return [...this.revisionsByTypeCache.get(type)!];\r\n }\r\n\r\n // Compute and cache\r\n const result = this.revisions.filter(rev => rev.getType() === type);\r\n this.revisionsByTypeCache.set(type, result);\r\n return [...result];\r\n }\r\n\r\n /**\r\n * Gets revisions by author\r\n * Uses caching for improved performance on repeated calls\r\n * @param author - Author name to filter by\r\n * @returns Array of revisions by the specified author\r\n */\r\n getRevisionsByAuthor(author: string): Revision[] {\r\n // Check cache first\r\n if (this.revisionsByAuthorCache.has(author)) {\r\n return [...this.revisionsByAuthorCache.get(author)!];\r\n }\r\n\r\n // Compute and cache\r\n const result = this.revisions.filter(rev => rev.getAuthor() === author);\r\n this.revisionsByAuthorCache.set(author, result);\r\n return [...result];\r\n }\r\n\r\n /**\r\n * Gets the number of revisions\r\n * @returns Number of revisions\r\n */\r\n getCount(): number {\r\n return this.revisions.length;\r\n }\r\n\r\n /**\r\n * Gets the number of insertions\r\n * @returns Number of insertion revisions\r\n */\r\n getInsertionCount(): number {\r\n return this.getRevisionsByType('insert').length;\r\n }\r\n\r\n /**\r\n * Gets the number of deletions\r\n * @returns Number of deletion revisions\r\n */\r\n getDeletionCount(): number {\r\n return this.getRevisionsByType('delete').length;\r\n }\r\n\r\n /**\r\n * Gets all unique authors who have made changes\r\n * @returns Array of unique author names\r\n */\r\n getAuthors(): string[] {\r\n const authorsSet = new Set<string>();\r\n for (const revision of this.revisions) {\r\n authorsSet.add(revision.getAuthor());\r\n }\r\n return Array.from(authorsSet);\r\n }\r\n\r\n /**\r\n * Clears all revisions\r\n */\r\n clear(): void {\r\n const count = this.revisions.length;\r\n this.revisions = [];\r\n this.nextId = 0;\r\n this.invalidateCache();\r\n if (count > 0) {\r\n getLogger().info('Revisions cleared', { previousCount: count });\r\n }\r\n }\r\n\r\n /**\r\n * Checks if there are no revisions\r\n * @returns True if there are no tracked changes\r\n */\r\n isEmpty(): boolean {\r\n return this.revisions.length === 0;\r\n }\r\n\r\n /**\r\n * Gets the most recent N revisions\r\n * @param count - Number of recent revisions to return\r\n * @returns Array of most recent revisions\r\n */\r\n getRecentRevisions(count: number): Revision[] {\r\n return [...this.revisions]\r\n .sort((a, b) => b.getDate().getTime() - a.getDate().getTime())\r\n .slice(0, count);\r\n }\r\n\r\n /**\r\n * Searches revisions by text content\r\n * @param searchText - Text to search for (case-insensitive)\r\n * @returns Array of revisions containing the search text\r\n */\r\n findRevisionsByText(searchText: string): Revision[] {\r\n const lowerSearch = searchText.toLowerCase();\r\n return this.revisions.filter(revision => {\r\n const text = revision.getRuns()\r\n .map(run => run.getText())\r\n .join('')\r\n .toLowerCase();\r\n return text.includes(lowerSearch);\r\n });\r\n }\r\n\r\n /**\r\n * Gets all insertions (added text)\r\n * @returns Array of insertion revisions\r\n */\r\n getAllInsertions(): Revision[] {\r\n return this.getRevisionsByType('insert');\r\n }\r\n\r\n /**\r\n * Gets all deletions (removed text)\r\n * @returns Array of deletion revisions\r\n */\r\n getAllDeletions(): Revision[] {\r\n return this.getRevisionsByType('delete');\r\n }\r\n\r\n /**\r\n * Gets all run properties changes (formatting changes)\r\n * @returns Array of run property change revisions\r\n */\r\n getAllRunPropertiesChanges(): Revision[] {\r\n return this.getRevisionsByType('runPropertiesChange');\r\n }\r\n\r\n /**\r\n * Gets all paragraph properties changes\r\n * @returns Array of paragraph property change revisions\r\n */\r\n getAllParagraphPropertiesChanges(): Revision[] {\r\n return this.getRevisionsByType('paragraphPropertiesChange');\r\n }\r\n\r\n /**\r\n * Gets all table properties changes\r\n * @returns Array of table property change revisions\r\n */\r\n getAllTablePropertiesChanges(): Revision[] {\r\n return this.getRevisionsByType('tablePropertiesChange');\r\n }\r\n\r\n /**\r\n * Gets all move operations (both moveFrom and moveTo)\r\n * @returns Array of move-related revisions\r\n */\r\n getAllMoves(): Revision[] {\r\n return this.revisions.filter(rev =>\r\n rev.getType() === 'moveFrom' || rev.getType() === 'moveTo'\r\n );\r\n }\r\n\r\n /**\r\n * Gets all moveFrom revisions (source of moves)\r\n * @returns Array of moveFrom revisions\r\n */\r\n getAllMoveFrom(): Revision[] {\r\n return this.getRevisionsByType('moveFrom');\r\n }\r\n\r\n /**\r\n * Gets all moveTo revisions (destination of moves)\r\n * @returns Array of moveTo revisions\r\n */\r\n getAllMoveTo(): Revision[] {\r\n return this.getRevisionsByType('moveTo');\r\n }\r\n\r\n /**\r\n * Gets all table cell changes (insert, delete, merge)\r\n * @returns Array of table cell change revisions\r\n */\r\n getAllTableCellChanges(): Revision[] {\r\n return this.revisions.filter(rev =>\r\n rev.getType() === 'tableCellInsert' ||\r\n rev.getType() === 'tableCellDelete' ||\r\n rev.getType() === 'tableCellMerge'\r\n );\r\n }\r\n\r\n /**\r\n * Gets all numbering changes\r\n * @returns Array of numbering change revisions\r\n */\r\n getAllNumberingChanges(): Revision[] {\r\n return this.getRevisionsByType('numberingChange');\r\n }\r\n\r\n /**\r\n * Gets all property change revisions (run, paragraph, table, etc.)\r\n * @returns Array of all property change revisions\r\n */\r\n getAllPropertyChanges(): Revision[] {\r\n return this.revisions.filter(rev =>\r\n rev.getType() === 'runPropertiesChange' ||\r\n rev.getType() === 'paragraphPropertiesChange' ||\r\n rev.getType() === 'tablePropertiesChange' ||\r\n rev.getType() === 'tableRowPropertiesChange' ||\r\n rev.getType() === 'tableCellPropertiesChange' ||\r\n rev.getType() === 'sectionPropertiesChange' ||\r\n rev.getType() === 'numberingChange'\r\n );\r\n }\r\n\r\n /**\r\n * Gets move pair by move ID\r\n * @param moveId - Move operation ID\r\n * @returns Object with moveFrom and moveTo revisions (if found)\r\n */\r\n getMovePair(moveId: string): { moveFrom?: Revision; moveTo?: Revision } {\r\n const moveFrom = this.revisions.find(\r\n rev => rev.getType() === 'moveFrom' && rev.getMoveId() === moveId\r\n );\r\n const moveTo = this.revisions.find(\r\n rev => rev.getType() === 'moveTo' && rev.getMoveId() === moveId\r\n );\r\n return { moveFrom, moveTo };\r\n }\r\n\r\n /**\r\n * Gets statistics about revisions\r\n * @returns Object with revision statistics\r\n */\r\n getStats(): {\r\n total: number;\r\n insertions: number;\r\n deletions: number;\r\n propertyChanges: number;\r\n moves: number;\r\n tableCellChanges: number;\r\n authors: string[];\r\n nextId: number;\r\n } {\r\n return {\r\n total: this.revisions.length,\r\n insertions: this.getInsertionCount(),\r\n deletions: this.getDeletionCount(),\r\n propertyChanges: this.getAllPropertyChanges().length,\r\n moves: this.getAllMoves().length,\r\n tableCellChanges: this.getAllTableCellChanges().length,\r\n authors: this.getAuthors(),\r\n nextId: this.nextId,\r\n };\r\n }\r\n\r\n /**\r\n * Checks if track changes is enabled (has any revisions)\r\n * @returns True if there are revisions\r\n */\r\n isTrackingChanges(): boolean {\r\n return this.revisions.length > 0;\r\n }\r\n\r\n /**\r\n * Gets the most recent revision\r\n * @returns The most recent revision, or undefined if no revisions\r\n */\r\n getLatestRevision(): Revision | undefined {\r\n if (this.revisions.length === 0) {\r\n return undefined;\r\n }\r\n return this.revisions[this.revisions.length - 1];\r\n }\r\n\r\n /**\r\n * Gets revisions within a date range\r\n * @param startDate - Start of date range\r\n * @param endDate - End of date range\r\n * @returns Array of revisions within the date range\r\n */\r\n getRevisionsByDateRange(startDate: Date, endDate: Date): Revision[] {\r\n return this.revisions.filter(rev => {\r\n const revDate = rev.getDate();\r\n return revDate >= startDate && revDate <= endDate;\r\n });\r\n }\r\n\r\n /**\r\n * Gets the next available revision ID without consuming it.\r\n *\r\n * This is an alias for peekNextId() for backward compatibility.\r\n * Use consumeNextId() if you need to reserve an ID for manual use.\r\n *\r\n * @returns Next available revision ID (without consuming it)\r\n * @see consumeNextId for reserving IDs\r\n * @see register for automatic ID assignment\r\n */\r\n getNextId(): number {\r\n return this.nextId;\r\n }\r\n\r\n /**\r\n * Peeks at the next revision ID without incrementing\r\n * @returns Next available revision ID (without consuming it)\r\n */\r\n peekNextId(): number {\r\n return this.nextId;\r\n }\r\n\r\n /**\r\n * Consumes and returns the next revision ID.\r\n *\r\n * Use this when you need to manually assign an ID to a revision\r\n * that won't be registered through register(). The ID is reserved\r\n * and won't be reused by subsequent register() calls.\r\n *\r\n * When a centralized ID provider is set, IDs come from the shared counter.\r\n *\r\n * @returns The consumed revision ID\r\n *\r\n * @example\r\n * ```typescript\r\n * // Reserve an ID for manual assignment\r\n * const id = revisionManager.consumeNextId();\r\n * revision.setId(id);\r\n * // Don't call register() - the ID is already consumed\r\n * ```\r\n */\r\n consumeNextId(): number {\r\n // Use centralized provider if available\r\n return this.idProvider ? this.idProvider() : this.nextId++;\r\n }\r\n\r\n /**\r\n * Sets the next ID to be assigned.\r\n * Used when loading documents to avoid ID collisions with existing revisions.\r\n * @param id - The next ID value to use\r\n */\r\n setNextId(id: number): void {\r\n this.nextId = id;\r\n }\r\n\r\n /**\r\n * Creates a new RevisionManager\r\n * @returns New RevisionManager instance\r\n */\r\n static create(): RevisionManager {\r\n return new RevisionManager();\r\n }\r\n\r\n // ═══════════════════════════════════════════════════════════════════════════\r\n // NEW METHODS - Added for ChangelogGenerator and RevisionAwareProcessor\r\n // ═══════════════════════════════════════════════════════════════════════════\r\n\r\n /**\r\n * Check if any revisions exist in the manager.\r\n * @returns True if there are any revisions\r\n */\r\n hasRevisions(): boolean {\r\n return this.revisions.length > 0;\r\n }\r\n\r\n /**\r\n * Get revisions by semantic category.\r\n *\r\n * Categories:\r\n * - content: insert, delete, imageChange, fieldChange, commentChange, contentControlChange, hyperlinkChange\r\n * - formatting: runPropertiesChange, paragraphPropertiesChange, numberingChange\r\n * - structural: moveFrom, moveTo, sectionPropertiesChange, bookmarkChange\r\n * - table: tablePropertiesChange, tableCellInsert, tableCellDelete, tableCellMerge, etc.\r\n *\r\n * @param category - Semantic category to filter by\r\n * @returns Array of revisions in the specified category\r\n */\r\n getByCategory(category: RevisionCategory): Revision[] {\r\n // Check cache first\r\n if (this.revisionsByCategoryCache.has(category)) {\r\n return [...this.revisionsByCategoryCache.get(category)!];\r\n }\r\n\r\n // Compute and cache\r\n const result = this.revisions.filter(rev => {\r\n const type = rev.getType();\r\n switch (category) {\r\n case 'content':\r\n return type === 'insert' ||\r\n type === 'delete' ||\r\n // Internal tracking types for rich content changes\r\n type === 'imageChange' ||\r\n type === 'fieldChange' ||\r\n type === 'commentChange' ||\r\n type === 'contentControlChange' ||\r\n type === 'hyperlinkChange';\r\n\r\n case 'formatting':\r\n return type === 'runPropertiesChange' ||\r\n type === 'paragraphPropertiesChange' ||\r\n type === 'numberingChange';\r\n\r\n case 'structural':\r\n return type === 'moveFrom' ||\r\n type === 'moveTo' ||\r\n type === 'sectionPropertiesChange' ||\r\n // Bookmarks are structural markers\r\n type === 'bookmarkChange';\r\n\r\n case 'table':\r\n return type === 'tablePropertiesChange' ||\r\n type === 'tableExceptionPropertiesChange' ||\r\n type === 'tableRowPropertiesChange' ||\r\n type === 'tableCellPropertiesChange' ||\r\n type === 'tableCellInsert' ||\r\n type === 'tableCellDelete' ||\r\n type === 'tableCellMerge';\r\n\r\n default:\r\n return false;\r\n }\r\n });\r\n this.revisionsByCategoryCache.set(category, result);\r\n return [...result];\r\n }\r\n\r\n /**\r\n * Get revisions affecting a specific paragraph.\r\n *\r\n * Uses the revision's location data if available. Returns revisions\r\n * where location.paragraphIndex matches the specified index.\r\n *\r\n * Note: Revisions must have location data set (via setLocation()) for\r\n * accurate filtering. Revisions without location data are excluded.\r\n *\r\n * @param paragraphIndex - Index of the paragraph (0-based)\r\n * @returns Array of revisions affecting the specified paragraph\r\n *\r\n * @example\r\n * ```typescript\r\n * const revisions = revisionManager.getRevisionsForParagraph(3);\r\n * console.log(`${revisions.length} revisions affect paragraph 3`);\r\n * ```\r\n */\r\n getRevisionsForParagraph(paragraphIndex: number): Revision[] {\r\n if (paragraphIndex < 0) {\r\n return [];\r\n }\r\n return this.revisions.filter(rev => {\r\n const loc = rev.getLocation();\r\n if (!loc) return false;\r\n return loc.paragraphIndex === paragraphIndex;\r\n });\r\n }\r\n\r\n /**\r\n * Get summary statistics for all revisions.\r\n * Provides comprehensive breakdown by type, category, and author.\r\n *\r\n * @returns Summary statistics object\r\n */\r\n getSummary(): RevisionSummary {\r\n const byCategory: Record<RevisionCategory, number> = {\r\n content: 0,\r\n formatting: 0,\r\n structural: 0,\r\n table: 0,\r\n };\r\n\r\n let earliest: Date | null = null;\r\n let latest: Date | null = null;\r\n\r\n // Count by category and track date range\r\n for (const rev of this.revisions) {\r\n const type = rev.getType();\r\n const date = rev.getDate();\r\n\r\n // Update date range\r\n if (!earliest || date < earliest) earliest = date;\r\n if (!latest || date > latest) latest = date;\r\n\r\n // Categorize\r\n if (type === 'insert' || type === 'delete') {\r\n byCategory.content++;\r\n } else if (\r\n type === 'runPropertiesChange' ||\r\n type === 'paragraphPropertiesChange' ||\r\n type === 'numberingChange'\r\n ) {\r\n byCategory.formatting++;\r\n } else if (\r\n type === 'moveFrom' ||\r\n type === 'moveTo' ||\r\n type === 'sectionPropertiesChange'\r\n ) {\r\n byCategory.structural++;\r\n } else if (\r\n type === 'tablePropertiesChange' ||\r\n type === 'tableExceptionPropertiesChange' ||\r\n type === 'tableRowPropertiesChange' ||\r\n type === 'tableCellPropertiesChange' ||\r\n type === 'tableCellInsert' ||\r\n type === 'tableCellDelete' ||\r\n type === 'tableCellMerge'\r\n ) {\r\n byCategory.table++;\r\n }\r\n }\r\n\r\n const summary = {\r\n total: this.revisions.length,\r\n byType: {\r\n insertions: this.getInsertionCount(),\r\n deletions: this.getDeletionCount(),\r\n moves: this.getAllMoves().length,\r\n propertyChanges: this.getAllPropertyChanges().length,\r\n tableChanges: this.getAllTableCellChanges().length,\r\n },\r\n byCategory,\r\n authors: this.getAuthors(),\r\n dateRange: earliest && latest ? { earliest, latest } : null,\r\n };\r\n\r\n if (summary.total > 0) {\r\n getLogger().info('Revision summary', {\r\n total: summary.total,\r\n ins: summary.byType.insertions,\r\n del: summary.byType.deletions,\r\n fmt: summary.byType.propertyChanges,\r\n authors: summary.authors.length\r\n });\r\n }\r\n\r\n return summary;\r\n }\r\n\r\n /**\r\n * Get a revision by its ID.\r\n *\r\n * @param id - Revision ID to find\r\n * @returns Revision with the specified ID, or undefined\r\n */\r\n getById(id: number): Revision | undefined {\r\n return this.revisions.find(rev => rev.getId() === id);\r\n }\r\n\r\n /**\r\n * Remove a revision by its ID.\r\n *\r\n * @param id - ID of the revision to remove\r\n * @returns True if revision was found and removed\r\n */\r\n removeById(id: number): boolean {\r\n const index = this.revisions.findIndex(rev => rev.getId() === id);\r\n if (index === -1) return false;\r\n\r\n this.revisions.splice(index, 1);\r\n this.invalidateCache();\r\n return true;\r\n }\r\n\r\n /**\r\n * Get revisions matching multiple criteria.\r\n *\r\n * @param criteria - Filter criteria\r\n * @returns Array of matching revisions\r\n */\r\n getMatching(criteria: {\r\n types?: RevisionType[];\r\n authors?: string[];\r\n categories?: RevisionCategory[];\r\n dateRange?: { start: Date; end: Date };\r\n }): Revision[] {\r\n return this.revisions.filter(rev => {\r\n // Filter by types\r\n if (criteria.types && !criteria.types.includes(rev.getType())) {\r\n return false;\r\n }\r\n\r\n // Filter by authors\r\n if (criteria.authors && !criteria.authors.includes(rev.getAuthor())) {\r\n return false;\r\n }\r\n\r\n // Filter by categories\r\n if (criteria.categories) {\r\n const revCategory = this.getRevisionCategory(rev);\r\n if (!criteria.categories.includes(revCategory)) {\r\n return false;\r\n }\r\n }\r\n\r\n // Filter by date range\r\n if (criteria.dateRange) {\r\n const date = rev.getDate();\r\n if (date < criteria.dateRange.start || date > criteria.dateRange.end) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * Get the semantic category of a revision.\r\n * @internal\r\n */\r\n private getRevisionCategory(revision: Revision): RevisionCategory {\r\n const type = revision.getType();\r\n\r\n if (type === 'insert' || type === 'delete') {\r\n return 'content';\r\n }\r\n if (\r\n type === 'runPropertiesChange' ||\r\n type === 'paragraphPropertiesChange' ||\r\n type === 'numberingChange'\r\n ) {\r\n return 'formatting';\r\n }\r\n if (\r\n type === 'moveFrom' ||\r\n type === 'moveTo' ||\r\n type === 'sectionPropertiesChange'\r\n ) {\r\n return 'structural';\r\n }\r\n if (\r\n type === 'tablePropertiesChange' ||\r\n type === 'tableExceptionPropertiesChange' ||\r\n type === 'tableRowPropertiesChange' ||\r\n type === 'tableCellPropertiesChange' ||\r\n type === 'tableCellInsert' ||\r\n type === 'tableCellDelete' ||\r\n type === 'tableCellMerge'\r\n ) {\r\n return 'table';\r\n }\r\n\r\n // Default\r\n return 'content';\r\n }\r\n\r\n // ============================================================\r\n // Location-Aware Methods\r\n // ============================================================\r\n\r\n /**\r\n * Gets revisions affecting a specific run within a paragraph.\r\n *\r\n * Uses the revision's location data if available.\r\n *\r\n * @param paragraphIndex - Index of the paragraph (0-based)\r\n * @param runIndex - Index of the run within the paragraph (0-based)\r\n * @returns Array of revisions affecting the specified run\r\n *\r\n * @example\r\n * ```typescript\r\n * const revisions = revisionManager.getRevisionsForRun(0, 2);\r\n * console.log(`${revisions.length} revisions affect run 2 in paragraph 0`);\r\n * ```\r\n */\r\n getRevisionsForRun(paragraphIndex: number, runIndex: number): Revision[] {\r\n return this.revisions.filter(rev => {\r\n const loc = rev.getLocation();\r\n if (!loc) return false;\r\n return loc.paragraphIndex === paragraphIndex && loc.runIndex === runIndex;\r\n });\r\n }\r\n\r\n /**\r\n * Gets revisions by location criteria.\r\n *\r\n * Filters revisions based on their location within the document structure.\r\n * All specified criteria must match (AND logic).\r\n *\r\n * @param criteria - Location filter criteria\r\n * @returns Array of revisions matching the criteria\r\n *\r\n * @example\r\n * ```typescript\r\n * // Get all revisions in paragraph 5\r\n * const paraRevisions = revisionManager.getRevisionsByLocation({\r\n * paragraphIndex: 5\r\n * });\r\n *\r\n * // Get all revisions in table row 2, cell 1\r\n * const cellRevisions = revisionManager.getRevisionsByLocation({\r\n * tableRow: 2,\r\n * tableCell: 1\r\n * });\r\n * ```\r\n */\r\n getRevisionsByLocation(criteria: Partial<RevisionLocation>): Revision[] {\r\n return this.revisions.filter(rev => {\r\n const loc = rev.getLocation();\r\n if (!loc) return false;\r\n\r\n // Check each criteria if specified\r\n if (criteria.paragraphIndex !== undefined &&\r\n loc.paragraphIndex !== criteria.paragraphIndex) {\r\n return false;\r\n }\r\n if (criteria.runIndex !== undefined &&\r\n loc.runIndex !== criteria.runIndex) {\r\n return false;\r\n }\r\n if (criteria.tableRow !== undefined &&\r\n loc.tableRow !== criteria.tableRow) {\r\n return false;\r\n }\r\n if (criteria.tableCell !== undefined &&\r\n loc.tableCell !== criteria.tableCell) {\r\n return false;\r\n }\r\n if (criteria.sectionIndex !== undefined &&\r\n loc.sectionIndex !== criteria.sectionIndex) {\r\n return false;\r\n }\r\n if (criteria.headerFooterType !== undefined &&\r\n loc.headerFooterType !== criteria.headerFooterType) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * Gets revisions that have location data.\r\n *\r\n * @returns Array of revisions with location information\r\n */\r\n getRevisionsWithLocation(): Revision[] {\r\n return this.revisions.filter(rev => rev.getLocation() !== undefined);\r\n }\r\n\r\n /**\r\n * Gets revisions that do NOT have location data.\r\n *\r\n * @returns Array of revisions without location information\r\n */\r\n getRevisionsWithoutLocation(): Revision[] {\r\n return this.revisions.filter(rev => rev.getLocation() === undefined);\r\n }\r\n\r\n // ============================================================\r\n // Validation Methods\r\n // ============================================================\r\n\r\n /**\r\n * Validates that all revision IDs are unique.\r\n *\r\n * Per ECMA-376, revision IDs must be unique within a document.\r\n * Duplicate IDs can cause Word to reject the document or\r\n * produce unexpected behavior.\r\n *\r\n * @returns Validation result with any duplicate IDs found\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = revisionManager.validateRevisionIds();\r\n * if (!result.valid) {\r\n * console.error('Duplicate IDs found:', result.duplicates);\r\n * }\r\n * ```\r\n */\r\n validateRevisionIds(): { valid: boolean; duplicates: number[] } {\r\n const seen = new Set<number>();\r\n const duplicates: number[] = [];\r\n\r\n for (const rev of this.revisions) {\r\n const id = rev.getId();\r\n if (seen.has(id)) {\r\n if (!duplicates.includes(id)) {\r\n duplicates.push(id);\r\n }\r\n }\r\n seen.add(id);\r\n }\r\n\r\n return {\r\n valid: duplicates.length === 0,\r\n duplicates,\r\n };\r\n }\r\n\r\n /**\r\n * Reassigns all revision IDs to ensure uniqueness.\r\n *\r\n * This is useful after merging documents or when duplicate\r\n * IDs are detected. IDs are reassigned sequentially starting\r\n * from the specified value.\r\n *\r\n * @param startId - Starting ID value (default: 0)\r\n * @returns Number of IDs reassigned\r\n *\r\n * @example\r\n * ```typescript\r\n * const count = revisionManager.reassignRevisionIds();\r\n * console.log(`Reassigned ${count} revision IDs`);\r\n * ```\r\n */\r\n reassignRevisionIds(startId = 0): number {\r\n let currentId = startId;\r\n\r\n for (const rev of this.revisions) {\r\n rev.setId(currentId++);\r\n }\r\n\r\n // Update nextId to continue from where we left off\r\n this.nextId = currentId;\r\n\r\n return this.revisions.length;\r\n }\r\n\r\n /**\r\n * Validates move operation pairs (moveFrom/moveTo).\r\n *\r\n * Each moveFrom must have a matching moveTo with the same moveId,\r\n * and vice versa. Orphaned move markers can cause document corruption.\r\n *\r\n * @returns Validation result with orphaned move IDs\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = revisionManager.validateMovePairs();\r\n * if (!result.valid) {\r\n * console.error('Orphaned moveFrom IDs:', result.orphanedMoveFrom);\r\n * console.error('Orphaned moveTo IDs:', result.orphanedMoveTo);\r\n * }\r\n * ```\r\n */\r\n validateMovePairs(): {\r\n valid: boolean;\r\n orphanedMoveFrom: string[];\r\n orphanedMoveTo: string[];\r\n } {\r\n const moveFromIds = new Map<string, Revision>();\r\n const moveToIds = new Map<string, Revision>();\r\n\r\n for (const rev of this.revisions) {\r\n const moveId = rev.getMoveId();\r\n if (!moveId) continue;\r\n\r\n if (rev.getType() === 'moveFrom') {\r\n moveFromIds.set(moveId, rev);\r\n } else if (rev.getType() === 'moveTo') {\r\n moveToIds.set(moveId, rev);\r\n }\r\n }\r\n\r\n const orphanedMoveFrom: string[] = [];\r\n const orphanedMoveTo: string[] = [];\r\n\r\n // Find moveFrom without matching moveTo\r\n for (const moveId of moveFromIds.keys()) {\r\n if (!moveToIds.has(moveId)) {\r\n orphanedMoveFrom.push(moveId);\r\n }\r\n }\r\n\r\n // Find moveTo without matching moveFrom\r\n for (const moveId of moveToIds.keys()) {\r\n if (!moveFromIds.has(moveId)) {\r\n orphanedMoveTo.push(moveId);\r\n }\r\n }\r\n\r\n return {\r\n valid: orphanedMoveFrom.length === 0 && orphanedMoveTo.length === 0,\r\n orphanedMoveFrom,\r\n orphanedMoveTo,\r\n };\r\n }\r\n\r\n /**\r\n * Gets the highest revision ID currently in use.\r\n *\r\n * @returns Highest ID, or -1 if no revisions exist\r\n */\r\n getHighestId(): number {\r\n if (this.revisions.length === 0) return -1;\r\n return Math.max(...this.revisions.map(r => r.getId()));\r\n }\r\n\r\n /**\r\n * Ensures the next ID is higher than all existing IDs.\r\n *\r\n * Useful after loading a document with existing revisions\r\n * to prevent ID conflicts with new revisions.\r\n */\r\n syncNextId(): void {\r\n const highestId = this.getHighestId();\r\n if (highestId >= this.nextId) {\r\n this.nextId = highestId + 1;\r\n }\r\n }\r\n}\r\n"]}
|