docxmlater 10.1.3 → 10.1.5
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 +759 -754
- package/dist/constants/legacyCompatFlags.js +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +50 -50
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +483 -471
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +9 -9
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +251 -251
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2123 -2155
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +2 -5
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.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 +3 -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.d.ts.map +1 -1
- package/dist/elements/Comment.js +9 -6
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +18 -17
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +21 -21
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +56 -56
- 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 +6 -6
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +6 -7
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +82 -25
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js +2 -2
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +6 -6
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +6 -7
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js +2 -2
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -3
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +134 -76
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +238 -106
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +1 -1
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +24 -24
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +181 -188
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js +6 -6
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +4 -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 +40 -48
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -16
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +256 -238
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +36 -11
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +6 -6
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +99 -104
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +11 -11
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +102 -107
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +10 -10
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +105 -106
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +4 -4
- 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 +13 -6
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +3 -5
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +4 -4
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +54 -49
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +1 -3
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +5 -5
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +119 -125
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +9 -9
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +11 -11
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +219 -247
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +96 -102
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +6 -6
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js +7 -7
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +23 -7
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts.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 +6 -6
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.d.ts +2 -2
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js +97 -101
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +1 -1
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
- package/dist/utils/MoveOperationHelper.js +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js +2 -4
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.d.ts.map +1 -1
- package/dist/utils/RevisionWalker.js +4 -12
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.d.ts.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +23 -12
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +40 -40
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.js +1 -1
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +10 -2
- 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 +21 -23
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +3 -3
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.d.ts +1 -1
- package/dist/utils/textDiff.js +8 -8
- 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 +24 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.d.ts.map +1 -1
- package/dist/utils/xmlSanitization.js +3 -3
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +5 -5
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +7 -9
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js +3 -3
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +98 -100
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +61 -66
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +1 -3
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +28 -36
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/types.js +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/helper-methods.test.ts +512 -512
- package/src/constants/legacyCompatFlags.ts +138 -138
- package/src/constants/limits.ts +50 -50
- package/src/core/Document.ts +985 -1145
- package/src/core/DocumentContent.ts +461 -467
- package/src/core/DocumentGenerator.ts +1133 -1104
- package/src/core/DocumentIdManager.ts +158 -158
- package/src/core/DocumentParser.ts +2347 -2716
- package/src/core/DocumentValidator.ts +363 -372
- package/src/core/Relationship.ts +367 -367
- package/src/core/RelationshipManager.ts +429 -428
- package/src/elements/AlternateContent.ts +42 -42
- package/src/elements/Bookmark.ts +212 -210
- package/src/elements/BookmarkManager.ts +247 -250
- package/src/elements/Comment.ts +356 -359
- package/src/elements/CommentManager.ts +499 -502
- package/src/elements/CommonTypes.ts +524 -549
- package/src/elements/CustomXml.ts +36 -36
- package/src/elements/Endnote.ts +221 -217
- package/src/elements/EndnoteManager.ts +246 -249
- package/src/elements/Field.ts +1292 -1233
- package/src/elements/FieldHelpers.ts +329 -333
- package/src/elements/FontManager.ts +336 -339
- package/src/elements/Footer.ts +269 -269
- package/src/elements/Footnote.ts +221 -217
- package/src/elements/FootnoteManager.ts +246 -249
- package/src/elements/Header.ts +269 -269
- package/src/elements/HeaderFooterManager.ts +219 -219
- package/src/elements/Hyperlink.ts +1288 -1193
- package/src/elements/Image.ts +1982 -1756
- package/src/elements/ImageManager.ts +437 -432
- package/src/elements/ImageRun.ts +59 -59
- package/src/elements/MathElement.ts +65 -65
- package/src/elements/Paragraph.ts +4347 -4287
- package/src/elements/PreservedElement.ts +53 -53
- package/src/elements/PropertyChangeTypes.ts +458 -442
- package/src/elements/RangeMarker.ts +382 -400
- package/src/elements/Revision.ts +1198 -1217
- package/src/elements/RevisionContent.ts +73 -73
- package/src/elements/RevisionManager.ts +1070 -1070
- package/src/elements/Run.ts +3103 -3073
- package/src/elements/Section.ts +1521 -1421
- package/src/elements/Shape.ts +884 -873
- package/src/elements/StructuredDocumentTag.ts +1176 -1207
- package/src/elements/Table.ts +2468 -2524
- package/src/elements/TableCell.ts +1617 -1621
- package/src/elements/TableGridChange.ts +149 -151
- package/src/elements/TableOfContents.ts +701 -691
- package/src/elements/TableOfContentsElement.ts +89 -89
- package/src/elements/TableRow.ts +960 -929
- package/src/elements/TextBox.ts +766 -768
- package/src/formatting/AbstractNumbering.ts +580 -579
- package/src/formatting/NumberingInstance.ts +295 -299
- package/src/formatting/NumberingLevel.ts +981 -1040
- package/src/formatting/NumberingManager.ts +833 -827
- package/src/formatting/Style.ts +1785 -1879
- package/src/formatting/StylesManager.ts +1090 -1130
- package/src/helpers/CleanupHelper.ts +524 -524
- package/src/images/ImageOptimizer.ts +274 -274
- package/src/index.ts +559 -554
- package/src/managers/DrawingManager.ts +319 -319
- package/src/tracking/DocumentTrackingContext.ts +687 -674
- package/src/tracking/TrackingContext.ts +175 -173
- package/src/types/compatibility-types.ts +49 -49
- package/src/types/formatting.ts +210 -210
- package/src/types/list-types.ts +14 -14
- package/src/types/settings-types.ts +59 -59
- package/src/types/styleConfig.ts +189 -189
- package/src/utils/ChangelogGenerator.ts +1583 -1581
- package/src/utils/CompatibilityUpgrader.ts +235 -237
- package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
- package/src/utils/MoveOperationHelper.ts +233 -238
- package/src/utils/RevisionAwareProcessor.ts +518 -526
- package/src/utils/RevisionWalker.ts +427 -457
- package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
- package/src/utils/ShadingResolver.ts +105 -107
- package/src/utils/acceptRevisions.ts +723 -714
- package/src/utils/cnfStyleDecoder.ts +212 -217
- package/src/utils/corruptionDetection.ts +346 -345
- package/src/utils/dateFormatting.ts +20 -20
- package/src/utils/deepClone.ts +77 -78
- package/src/utils/diagnostics.ts +125 -129
- package/src/utils/errorHandling.ts +80 -80
- package/src/utils/formatting.ts +220 -213
- package/src/utils/list-detection.ts +32 -42
- package/src/utils/logger.ts +412 -404
- package/src/utils/parsingHelpers.ts +190 -190
- package/src/utils/stripTrackedChanges.ts +356 -353
- package/src/utils/textDiff.ts +100 -100
- package/src/utils/units.ts +421 -421
- package/src/utils/validation.ts +553 -542
- package/src/utils/xmlSanitization.ts +179 -182
- package/src/validation/RevisionAutoFixer.ts +541 -542
- package/src/validation/RevisionValidator.ts +470 -460
- package/src/validation/ValidationRules.ts +338 -338
- package/src/validation/index.ts +30 -30
- package/src/xml/XMLBuilder.ts +857 -871
- package/src/xml/XMLParser.ts +877 -919
- package/src/zip/ZipHandler.ts +629 -637
- package/src/zip/ZipReader.ts +295 -299
- package/src/zip/ZipWriter.ts +374 -390
- package/src/zip/types.ts +116 -116
|
@@ -1,238 +1,233 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MoveOperationHelper - Creates complete move operations with range markers
|
|
3
|
-
*
|
|
4
|
-
* Per ECMA-376, move operations in tracked changes require:
|
|
5
|
-
* 1. w:moveFromRangeStart (marks start of source region)
|
|
6
|
-
* 2. w:moveFrom (contains the moved content)
|
|
7
|
-
* 3. w:moveFromRangeEnd (marks end of source region)
|
|
8
|
-
* 4. w:moveToRangeStart (marks start of destination region)
|
|
9
|
-
* 5. w:moveTo (contains the moved content copy)
|
|
10
|
-
* 6. w:moveToRangeEnd (marks end of destination region)
|
|
11
|
-
*
|
|
12
|
-
* The range markers and move elements share a common 'name' (for range markers)
|
|
13
|
-
* and 'moveId' (for move elements) that links them together.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // Create a complete move operation
|
|
18
|
-
* const moveOp = MoveOperationHelper.createMoveOperation({
|
|
19
|
-
* author: 'John Doe',
|
|
20
|
-
* content: [new Run('moved text')],
|
|
21
|
-
* idProvider: () => document.getIdManager().getNextId(),
|
|
22
|
-
* });
|
|
23
|
-
*
|
|
24
|
-
* // Add to source paragraph
|
|
25
|
-
* sourceParagraph.addRangeMarker(moveOp.source.rangeStart);
|
|
26
|
-
* sourceParagraph.addRevision(moveOp.source.moveFrom);
|
|
27
|
-
* sourceParagraph.addRangeMarker(moveOp.source.rangeEnd);
|
|
28
|
-
*
|
|
29
|
-
* // Add to destination paragraph
|
|
30
|
-
* destParagraph.addRangeMarker(moveOp.destination.rangeStart);
|
|
31
|
-
* destParagraph.addRevision(moveOp.destination.moveTo);
|
|
32
|
-
* destParagraph.addRangeMarker(moveOp.destination.rangeEnd);
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
import { Revision } from '../elements/Revision';
|
|
37
|
-
import { RangeMarker } from '../elements/RangeMarker';
|
|
38
|
-
import { Run } from '../elements/Run';
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Options for creating a move operation
|
|
42
|
-
*/
|
|
43
|
-
export interface MoveOperationOptions {
|
|
44
|
-
/** Author who made the move */
|
|
45
|
-
author: string;
|
|
46
|
-
/** Content being moved (Run or array of Runs) */
|
|
47
|
-
content: Run | Run[];
|
|
48
|
-
/** Date of the move (defaults to now) */
|
|
49
|
-
date?: Date;
|
|
50
|
-
/** ID provider function - returns the next available annotation ID */
|
|
51
|
-
idProvider?: () => number;
|
|
52
|
-
/** Optional move ID (auto-generated if not provided) */
|
|
53
|
-
moveId?: string;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Result of creating a move operation
|
|
58
|
-
*/
|
|
59
|
-
export interface MoveOperationResult {
|
|
60
|
-
/** Elements to add to the source paragraph (where content was moved FROM) */
|
|
61
|
-
source: {
|
|
62
|
-
/** Range start marker (w:moveFromRangeStart) */
|
|
63
|
-
rangeStart: RangeMarker;
|
|
64
|
-
/** Move revision (w:moveFrom) */
|
|
65
|
-
moveFrom: Revision;
|
|
66
|
-
/** Range end marker (w:moveFromRangeEnd) */
|
|
67
|
-
rangeEnd: RangeMarker;
|
|
68
|
-
};
|
|
69
|
-
/** Elements to add to the destination paragraph (where content was moved TO) */
|
|
70
|
-
destination: {
|
|
71
|
-
/** Range start marker (w:moveToRangeStart) */
|
|
72
|
-
rangeStart: RangeMarker;
|
|
73
|
-
/** Move revision (w:moveTo) */
|
|
74
|
-
moveTo: Revision;
|
|
75
|
-
/** Range end marker (w:moveToRangeEnd) */
|
|
76
|
-
rangeEnd: RangeMarker;
|
|
77
|
-
};
|
|
78
|
-
/** The move ID linking all elements together */
|
|
79
|
-
moveId: string;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Simple ID counter for when no provider is specified
|
|
84
|
-
*/
|
|
85
|
-
let globalMoveIdCounter = 0;
|
|
86
|
-
let globalAnnotationIdCounter = 1000; // Start high to avoid conflicts
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Helper class for creating complete move operations
|
|
90
|
-
*/
|
|
91
|
-
export class MoveOperationHelper {
|
|
92
|
-
/**
|
|
93
|
-
* Creates a complete move operation with all required elements.
|
|
94
|
-
*
|
|
95
|
-
* This generates:
|
|
96
|
-
* - Source: w:moveFromRangeStart, w:moveFrom, w:moveFromRangeEnd
|
|
97
|
-
* - Destination: w:moveToRangeStart, w:moveTo, w:moveToRangeEnd
|
|
98
|
-
*
|
|
99
|
-
* All elements are linked by the moveId (for revisions) and name (for range markers).
|
|
100
|
-
*
|
|
101
|
-
* @param options - Move operation options
|
|
102
|
-
* @returns Complete move operation with all elements
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```typescript
|
|
106
|
-
* const moveOp = MoveOperationHelper.createMoveOperation({
|
|
107
|
-
* author: 'John Doe',
|
|
108
|
-
* content: new Run('text to move'),
|
|
109
|
-
* });
|
|
110
|
-
*
|
|
111
|
-
* // Add to source paragraph (where text was)
|
|
112
|
-
* sourcePara.addRangeMarker(moveOp.source.rangeStart);
|
|
113
|
-
* sourcePara.addRevision(moveOp.source.moveFrom);
|
|
114
|
-
* sourcePara.addRangeMarker(moveOp.source.rangeEnd);
|
|
115
|
-
*
|
|
116
|
-
* // Add to destination paragraph (where text moved to)
|
|
117
|
-
* destPara.addRangeMarker(moveOp.destination.rangeStart);
|
|
118
|
-
* destPara.addRevision(moveOp.destination.moveTo);
|
|
119
|
-
* destPara.addRangeMarker(moveOp.destination.rangeEnd);
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
static createMoveOperation(options: MoveOperationOptions): MoveOperationResult {
|
|
123
|
-
const { author, content, date = new Date() } = options;
|
|
124
|
-
|
|
125
|
-
// Generate move ID if not provided
|
|
126
|
-
const moveId = options.moveId || `move-${++globalMoveIdCounter}`;
|
|
127
|
-
|
|
128
|
-
// Get IDs from provider or use simple counter
|
|
129
|
-
const getNextId = options.idProvider || (() => ++globalAnnotationIdCounter);
|
|
130
|
-
|
|
131
|
-
// Allocate IDs for all elements
|
|
132
|
-
// Range markers use same ID for start/end pairs
|
|
133
|
-
const moveFromRangeId = getNextId();
|
|
134
|
-
const moveFromId = getNextId();
|
|
135
|
-
const moveToRangeId = getNextId();
|
|
136
|
-
const moveToId = getNextId();
|
|
137
|
-
|
|
138
|
-
// Create source elements
|
|
139
|
-
const moveFromRangeStart = RangeMarker.createMoveFromStart(
|
|
140
|
-
moveFromRangeId,
|
|
141
|
-
moveId,
|
|
142
|
-
author,
|
|
143
|
-
date
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
const moveFrom = Revision.createMoveFrom(author, content, moveId, date);
|
|
147
|
-
moveFrom.setId(moveFromId);
|
|
148
|
-
|
|
149
|
-
const moveFromRangeEnd = RangeMarker.createMoveFromEnd(moveFromRangeId);
|
|
150
|
-
|
|
151
|
-
// Create destination elements (clone content for moveTo)
|
|
152
|
-
const contentArray = Array.isArray(content) ? content : [content];
|
|
153
|
-
const clonedContent = contentArray.map(run => {
|
|
154
|
-
// Clone the run to have independent content at destination
|
|
155
|
-
const cloned = new Run(run.getText(), { ...run.getFormatting() });
|
|
156
|
-
return cloned;
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
const moveToRangeStart = RangeMarker.createMoveToStart(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
rangeStart:
|
|
174
|
-
|
|
175
|
-
rangeEnd:
|
|
176
|
-
},
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* @
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
// Add to
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
static resetIdCounters(): void {
|
|
235
|
-
globalMoveIdCounter = 0;
|
|
236
|
-
globalAnnotationIdCounter = 1000;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* MoveOperationHelper - Creates complete move operations with range markers
|
|
3
|
+
*
|
|
4
|
+
* Per ECMA-376, move operations in tracked changes require:
|
|
5
|
+
* 1. w:moveFromRangeStart (marks start of source region)
|
|
6
|
+
* 2. w:moveFrom (contains the moved content)
|
|
7
|
+
* 3. w:moveFromRangeEnd (marks end of source region)
|
|
8
|
+
* 4. w:moveToRangeStart (marks start of destination region)
|
|
9
|
+
* 5. w:moveTo (contains the moved content copy)
|
|
10
|
+
* 6. w:moveToRangeEnd (marks end of destination region)
|
|
11
|
+
*
|
|
12
|
+
* The range markers and move elements share a common 'name' (for range markers)
|
|
13
|
+
* and 'moveId' (for move elements) that links them together.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Create a complete move operation
|
|
18
|
+
* const moveOp = MoveOperationHelper.createMoveOperation({
|
|
19
|
+
* author: 'John Doe',
|
|
20
|
+
* content: [new Run('moved text')],
|
|
21
|
+
* idProvider: () => document.getIdManager().getNextId(),
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Add to source paragraph
|
|
25
|
+
* sourceParagraph.addRangeMarker(moveOp.source.rangeStart);
|
|
26
|
+
* sourceParagraph.addRevision(moveOp.source.moveFrom);
|
|
27
|
+
* sourceParagraph.addRangeMarker(moveOp.source.rangeEnd);
|
|
28
|
+
*
|
|
29
|
+
* // Add to destination paragraph
|
|
30
|
+
* destParagraph.addRangeMarker(moveOp.destination.rangeStart);
|
|
31
|
+
* destParagraph.addRevision(moveOp.destination.moveTo);
|
|
32
|
+
* destParagraph.addRangeMarker(moveOp.destination.rangeEnd);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
import { Revision } from '../elements/Revision';
|
|
37
|
+
import { RangeMarker } from '../elements/RangeMarker';
|
|
38
|
+
import { Run } from '../elements/Run';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Options for creating a move operation
|
|
42
|
+
*/
|
|
43
|
+
export interface MoveOperationOptions {
|
|
44
|
+
/** Author who made the move */
|
|
45
|
+
author: string;
|
|
46
|
+
/** Content being moved (Run or array of Runs) */
|
|
47
|
+
content: Run | Run[];
|
|
48
|
+
/** Date of the move (defaults to now) */
|
|
49
|
+
date?: Date;
|
|
50
|
+
/** ID provider function - returns the next available annotation ID */
|
|
51
|
+
idProvider?: () => number;
|
|
52
|
+
/** Optional move ID (auto-generated if not provided) */
|
|
53
|
+
moveId?: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Result of creating a move operation
|
|
58
|
+
*/
|
|
59
|
+
export interface MoveOperationResult {
|
|
60
|
+
/** Elements to add to the source paragraph (where content was moved FROM) */
|
|
61
|
+
source: {
|
|
62
|
+
/** Range start marker (w:moveFromRangeStart) */
|
|
63
|
+
rangeStart: RangeMarker;
|
|
64
|
+
/** Move revision (w:moveFrom) */
|
|
65
|
+
moveFrom: Revision;
|
|
66
|
+
/** Range end marker (w:moveFromRangeEnd) */
|
|
67
|
+
rangeEnd: RangeMarker;
|
|
68
|
+
};
|
|
69
|
+
/** Elements to add to the destination paragraph (where content was moved TO) */
|
|
70
|
+
destination: {
|
|
71
|
+
/** Range start marker (w:moveToRangeStart) */
|
|
72
|
+
rangeStart: RangeMarker;
|
|
73
|
+
/** Move revision (w:moveTo) */
|
|
74
|
+
moveTo: Revision;
|
|
75
|
+
/** Range end marker (w:moveToRangeEnd) */
|
|
76
|
+
rangeEnd: RangeMarker;
|
|
77
|
+
};
|
|
78
|
+
/** The move ID linking all elements together */
|
|
79
|
+
moveId: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Simple ID counter for when no provider is specified
|
|
84
|
+
*/
|
|
85
|
+
let globalMoveIdCounter = 0;
|
|
86
|
+
let globalAnnotationIdCounter = 1000; // Start high to avoid conflicts
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Helper class for creating complete move operations
|
|
90
|
+
*/
|
|
91
|
+
export class MoveOperationHelper {
|
|
92
|
+
/**
|
|
93
|
+
* Creates a complete move operation with all required elements.
|
|
94
|
+
*
|
|
95
|
+
* This generates:
|
|
96
|
+
* - Source: w:moveFromRangeStart, w:moveFrom, w:moveFromRangeEnd
|
|
97
|
+
* - Destination: w:moveToRangeStart, w:moveTo, w:moveToRangeEnd
|
|
98
|
+
*
|
|
99
|
+
* All elements are linked by the moveId (for revisions) and name (for range markers).
|
|
100
|
+
*
|
|
101
|
+
* @param options - Move operation options
|
|
102
|
+
* @returns Complete move operation with all elements
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const moveOp = MoveOperationHelper.createMoveOperation({
|
|
107
|
+
* author: 'John Doe',
|
|
108
|
+
* content: new Run('text to move'),
|
|
109
|
+
* });
|
|
110
|
+
*
|
|
111
|
+
* // Add to source paragraph (where text was)
|
|
112
|
+
* sourcePara.addRangeMarker(moveOp.source.rangeStart);
|
|
113
|
+
* sourcePara.addRevision(moveOp.source.moveFrom);
|
|
114
|
+
* sourcePara.addRangeMarker(moveOp.source.rangeEnd);
|
|
115
|
+
*
|
|
116
|
+
* // Add to destination paragraph (where text moved to)
|
|
117
|
+
* destPara.addRangeMarker(moveOp.destination.rangeStart);
|
|
118
|
+
* destPara.addRevision(moveOp.destination.moveTo);
|
|
119
|
+
* destPara.addRangeMarker(moveOp.destination.rangeEnd);
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
static createMoveOperation(options: MoveOperationOptions): MoveOperationResult {
|
|
123
|
+
const { author, content, date = new Date() } = options;
|
|
124
|
+
|
|
125
|
+
// Generate move ID if not provided
|
|
126
|
+
const moveId = options.moveId || `move-${++globalMoveIdCounter}`;
|
|
127
|
+
|
|
128
|
+
// Get IDs from provider or use simple counter
|
|
129
|
+
const getNextId = options.idProvider || (() => ++globalAnnotationIdCounter);
|
|
130
|
+
|
|
131
|
+
// Allocate IDs for all elements
|
|
132
|
+
// Range markers use same ID for start/end pairs
|
|
133
|
+
const moveFromRangeId = getNextId();
|
|
134
|
+
const moveFromId = getNextId();
|
|
135
|
+
const moveToRangeId = getNextId();
|
|
136
|
+
const moveToId = getNextId();
|
|
137
|
+
|
|
138
|
+
// Create source elements
|
|
139
|
+
const moveFromRangeStart = RangeMarker.createMoveFromStart(
|
|
140
|
+
moveFromRangeId,
|
|
141
|
+
moveId,
|
|
142
|
+
author,
|
|
143
|
+
date
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
const moveFrom = Revision.createMoveFrom(author, content, moveId, date);
|
|
147
|
+
moveFrom.setId(moveFromId);
|
|
148
|
+
|
|
149
|
+
const moveFromRangeEnd = RangeMarker.createMoveFromEnd(moveFromRangeId);
|
|
150
|
+
|
|
151
|
+
// Create destination elements (clone content for moveTo)
|
|
152
|
+
const contentArray = Array.isArray(content) ? content : [content];
|
|
153
|
+
const clonedContent = contentArray.map((run) => {
|
|
154
|
+
// Clone the run to have independent content at destination
|
|
155
|
+
const cloned = new Run(run.getText(), { ...run.getFormatting() });
|
|
156
|
+
return cloned;
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
const moveToRangeStart = RangeMarker.createMoveToStart(moveToRangeId, moveId, author, date);
|
|
160
|
+
|
|
161
|
+
const moveTo = Revision.createMoveTo(author, clonedContent, moveId, date);
|
|
162
|
+
moveTo.setId(moveToId);
|
|
163
|
+
|
|
164
|
+
const moveToRangeEnd = RangeMarker.createMoveToEnd(moveToRangeId);
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
source: {
|
|
168
|
+
rangeStart: moveFromRangeStart,
|
|
169
|
+
moveFrom,
|
|
170
|
+
rangeEnd: moveFromRangeEnd,
|
|
171
|
+
},
|
|
172
|
+
destination: {
|
|
173
|
+
rangeStart: moveToRangeStart,
|
|
174
|
+
moveTo,
|
|
175
|
+
rangeEnd: moveToRangeEnd,
|
|
176
|
+
},
|
|
177
|
+
moveId,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Adds a complete move operation to source and destination paragraphs.
|
|
183
|
+
*
|
|
184
|
+
* This is a convenience method that creates the move operation and adds
|
|
185
|
+
* all elements to the appropriate paragraphs in the correct order.
|
|
186
|
+
*
|
|
187
|
+
* @param sourceParagraph - Paragraph where content was moved FROM
|
|
188
|
+
* @param destParagraph - Paragraph where content was moved TO
|
|
189
|
+
* @param options - Move operation options
|
|
190
|
+
* @returns The move operation result for reference
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* import { Paragraph } from 'docxmlater';
|
|
195
|
+
*
|
|
196
|
+
* const sourcePara = document.getParagraphs()[0];
|
|
197
|
+
* const destPara = document.getParagraphs()[5];
|
|
198
|
+
*
|
|
199
|
+
* MoveOperationHelper.addMoveOperation(sourcePara, destPara, {
|
|
200
|
+
* author: 'John Doe',
|
|
201
|
+
* content: new Run('moved text'),
|
|
202
|
+
* });
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
static addMoveOperation(
|
|
206
|
+
sourceParagraph: import('../elements/Paragraph').Paragraph,
|
|
207
|
+
destParagraph: import('../elements/Paragraph').Paragraph,
|
|
208
|
+
options: MoveOperationOptions
|
|
209
|
+
): MoveOperationResult {
|
|
210
|
+
const moveOp = this.createMoveOperation(options);
|
|
211
|
+
|
|
212
|
+
// Add to source paragraph in order
|
|
213
|
+
sourceParagraph.addRangeMarker(moveOp.source.rangeStart);
|
|
214
|
+
sourceParagraph.addRevision(moveOp.source.moveFrom);
|
|
215
|
+
sourceParagraph.addRangeMarker(moveOp.source.rangeEnd);
|
|
216
|
+
|
|
217
|
+
// Add to destination paragraph in order
|
|
218
|
+
destParagraph.addRangeMarker(moveOp.destination.rangeStart);
|
|
219
|
+
destParagraph.addRevision(moveOp.destination.moveTo);
|
|
220
|
+
destParagraph.addRangeMarker(moveOp.destination.rangeEnd);
|
|
221
|
+
|
|
222
|
+
return moveOp;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Resets the global ID counters (for testing purposes).
|
|
227
|
+
* @internal
|
|
228
|
+
*/
|
|
229
|
+
static resetIdCounters(): void {
|
|
230
|
+
globalMoveIdCounter = 0;
|
|
231
|
+
globalAnnotationIdCounter = 1000;
|
|
232
|
+
}
|
|
233
|
+
}
|