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,442 +1,458 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PropertyChangeTypes - Type definitions for property change tracking in revisions
|
|
3
|
-
*
|
|
4
|
-
* These types represent the parsed data from OOXML property change elements:
|
|
5
|
-
* - w:rPrChange (run property changes)
|
|
6
|
-
* - w:pPrChange (paragraph property changes)
|
|
7
|
-
* - w:tblPrChange, w:trPrChange, w:tcPrChange (table property changes)
|
|
8
|
-
* - w:sectPrChange (section property changes)
|
|
9
|
-
* - w:numberingChange (numbering property changes)
|
|
10
|
-
*
|
|
11
|
-
* Per ECMA-376, property change elements track the PREVIOUS state of properties
|
|
12
|
-
* before a change was made, allowing Word to show what changed and enabling
|
|
13
|
-
* accept/reject functionality.
|
|
14
|
-
*
|
|
15
|
-
* @module PropertyChangeTypes
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import type { RunFormatting } from './Run';
|
|
19
|
-
import type { ShadingConfig } from './CommonTypes';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Common base for all property change types
|
|
23
|
-
*/
|
|
24
|
-
export interface PropertyChangeBase {
|
|
25
|
-
/** Unique revision ID (ST_DecimalNumber) */
|
|
26
|
-
id: number;
|
|
27
|
-
/** Author who made the change (required) */
|
|
28
|
-
author: string;
|
|
29
|
-
/** Date when the change was made (ISO 8601) */
|
|
30
|
-
date: Date;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Run property change (w:rPrChange)
|
|
35
|
-
*
|
|
36
|
-
* Tracks changes to run-level formatting such as:
|
|
37
|
-
* - Bold, italic, underline
|
|
38
|
-
* - Font name, size, color
|
|
39
|
-
* - Highlight, strikethrough
|
|
40
|
-
* - Character spacing, subscript/superscript
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```xml
|
|
44
|
-
* <w:rPrChange w:id="1" w:author="John" w:date="2024-01-15T10:30:00Z">
|
|
45
|
-
* <w:rPr>
|
|
46
|
-
* <w:b/> <!-- Was bold before change -->
|
|
47
|
-
* </w:rPr>
|
|
48
|
-
* </w:rPrChange>
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export interface RunPropertyChange extends PropertyChangeBase {
|
|
52
|
-
/** Previous run formatting properties before the change */
|
|
53
|
-
previousProperties: Partial<RunFormatting>;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Border definition for paragraph borders
|
|
58
|
-
* Per ECMA-376 Part 1 Section 17.3.1.24
|
|
59
|
-
*/
|
|
60
|
-
export interface ParagraphBorderDef {
|
|
61
|
-
/** Border style (single, double, dotted, dashed, etc.) */
|
|
62
|
-
val?: string;
|
|
63
|
-
/** Border width in eighths of a point */
|
|
64
|
-
sz?: number;
|
|
65
|
-
/** Space between border and content in points */
|
|
66
|
-
space?: number;
|
|
67
|
-
/** Border color (hex RGB without #) */
|
|
68
|
-
color?: string;
|
|
69
|
-
/** Theme color reference */
|
|
70
|
-
themeColor?: string;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Paragraph borders (w:pBdr)
|
|
75
|
-
* Per ECMA-376 Part 1 Section 17.3.1.24
|
|
76
|
-
*/
|
|
77
|
-
export interface ParagraphBorders {
|
|
78
|
-
/** Top border */
|
|
79
|
-
top?: ParagraphBorderDef;
|
|
80
|
-
/** Bottom border */
|
|
81
|
-
bottom?: ParagraphBorderDef;
|
|
82
|
-
/** Left border */
|
|
83
|
-
left?: ParagraphBorderDef;
|
|
84
|
-
/** Right border */
|
|
85
|
-
right?: ParagraphBorderDef;
|
|
86
|
-
/** Border between paragraphs with same borders */
|
|
87
|
-
between?: ParagraphBorderDef;
|
|
88
|
-
/** Bar border (vertical line) */
|
|
89
|
-
bar?: ParagraphBorderDef;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Paragraph shading (w:shd)
|
|
94
|
-
* @see ShadingConfig in CommonTypes.ts for the canonical definition
|
|
95
|
-
*/
|
|
96
|
-
export type ParagraphShading = ShadingConfig;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Tab stop definition
|
|
100
|
-
* Per ECMA-376 Part 1 Section 17.3.1.38
|
|
101
|
-
*/
|
|
102
|
-
export interface TabStopDef {
|
|
103
|
-
/** Tab stop type (left, right, center, decimal, bar, clear) */
|
|
104
|
-
val?: string;
|
|
105
|
-
/** Tab position in twips */
|
|
106
|
-
pos?: number;
|
|
107
|
-
/** Leader character (none, dot, hyphen, underscore, middleDot) */
|
|
108
|
-
leader?: string;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Paragraph formatting options (subset for type safety)
|
|
113
|
-
* Full ParagraphFormatting is in Paragraph.ts but we need a partial here
|
|
114
|
-
*
|
|
115
|
-
* Per ECMA-376 Part 1 Section 17.3.1, this covers all paragraph properties
|
|
116
|
-
* that can be tracked in w:pPrChange revision elements.
|
|
117
|
-
*/
|
|
118
|
-
export interface ParagraphFormattingPartial {
|
|
119
|
-
/** Text alignment: left, center, right, justify */
|
|
120
|
-
alignment?: 'left' | 'center' | 'right' | 'justify';
|
|
121
|
-
/** Left indentation in twips */
|
|
122
|
-
leftIndent?: number;
|
|
123
|
-
/** Right indentation in twips */
|
|
124
|
-
rightIndent?: number;
|
|
125
|
-
/** First line indentation in twips */
|
|
126
|
-
firstLineIndent?: number;
|
|
127
|
-
/** Hanging indentation in twips */
|
|
128
|
-
hangingIndent?: number;
|
|
129
|
-
/** Spacing before paragraph in twips */
|
|
130
|
-
spaceBefore?: number;
|
|
131
|
-
/** Spacing after paragraph in twips */
|
|
132
|
-
spaceAfter?: number;
|
|
133
|
-
/** Line spacing in twips */
|
|
134
|
-
lineSpacing?: number;
|
|
135
|
-
/** Line spacing rule */
|
|
136
|
-
lineSpacingRule?: 'auto' | 'exact' | 'atLeast';
|
|
137
|
-
/** Paragraph style ID */
|
|
138
|
-
style?: string;
|
|
139
|
-
/** Keep with next paragraph */
|
|
140
|
-
keepNext?: boolean;
|
|
141
|
-
/** Keep lines together */
|
|
142
|
-
keepLines?: boolean;
|
|
143
|
-
/** Page break before */
|
|
144
|
-
pageBreakBefore?: boolean;
|
|
145
|
-
/** Widow/orphan control */
|
|
146
|
-
widowControl?: boolean;
|
|
147
|
-
/** Suppress auto-hyphenation */
|
|
148
|
-
suppressAutoHyphens?: boolean;
|
|
149
|
-
/** Contextual spacing */
|
|
150
|
-
contextualSpacing?: boolean;
|
|
151
|
-
/** Mirror indents */
|
|
152
|
-
mirrorIndents?: boolean;
|
|
153
|
-
/** Outline level (for headings) */
|
|
154
|
-
outlineLevel?: number;
|
|
155
|
-
/** Right-to-left paragraph */
|
|
156
|
-
bidi?: boolean;
|
|
157
|
-
/** Numbering properties (list formatting) */
|
|
158
|
-
numbering?: {
|
|
159
|
-
numId?: number;
|
|
160
|
-
level?: number;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
// === Extended properties for full ECMA-376 compliance ===
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Paragraph borders (w:pBdr)
|
|
167
|
-
* Per ECMA-376 Part 1 Section 17.3.1.24
|
|
168
|
-
*/
|
|
169
|
-
borders?: ParagraphBorders;
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Paragraph shading/background (w:shd)
|
|
173
|
-
* Per ECMA-376 Part 1 Section 17.3.1.32
|
|
174
|
-
*/
|
|
175
|
-
shading?: ParagraphShading;
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Custom tab stops (w:tabs)
|
|
179
|
-
* Per ECMA-376 Part 1 Section 17.3.1.38
|
|
180
|
-
*/
|
|
181
|
-
tabs?: TabStopDef[];
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Text direction (w:textDirection)
|
|
185
|
-
* Per ECMA-376 Part 1 Section 17.3.1.40
|
|
186
|
-
* Values: lrTb, tbRl, btLr, lrTbV, tbRlV, tbLrV
|
|
187
|
-
*/
|
|
188
|
-
textDirection?: string;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Text alignment (w:textAlignment)
|
|
192
|
-
* Per ECMA-376 Part 1 Section 17.3.1.39
|
|
193
|
-
* Values: auto, top, center, baseline, bottom
|
|
194
|
-
*/
|
|
195
|
-
textAlignment?: string;
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Suppress line numbers (w:suppressLineNumbers)
|
|
199
|
-
* Per ECMA-376 Part 1 Section 17.3.1.35
|
|
200
|
-
*/
|
|
201
|
-
suppressLineNumbers?: boolean;
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Adjust right indent (w:adjustRightInd)
|
|
205
|
-
* Per ECMA-376 Part 1 Section 17.3.1.1
|
|
206
|
-
*/
|
|
207
|
-
adjustRightInd?: boolean;
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Snap to grid (w:snapToGrid)
|
|
211
|
-
* Per ECMA-376 Part 1 Section 17.3.1.33
|
|
212
|
-
*/
|
|
213
|
-
snapToGrid?: boolean;
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Word wrap (w:wordWrap)
|
|
217
|
-
* Per ECMA-376 Part 1 Section 17.3.1.44
|
|
218
|
-
*/
|
|
219
|
-
wordWrap?: boolean;
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Auto space between East Asian and numeric (w:autoSpaceDE)
|
|
223
|
-
*/
|
|
224
|
-
autoSpaceDE?: boolean;
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Auto space between East Asian and Western (w:autoSpaceDN)
|
|
228
|
-
*/
|
|
229
|
-
autoSpaceDN?: boolean;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Paragraph property change (w:pPrChange)
|
|
234
|
-
*
|
|
235
|
-
* Tracks changes to paragraph-level formatting such as:
|
|
236
|
-
* - Alignment (left, center, right, justify)
|
|
237
|
-
* - Indentation (left, right, first line, hanging)
|
|
238
|
-
* - Spacing (before, after, line)
|
|
239
|
-
* - Keep with next, keep lines together
|
|
240
|
-
* - Paragraph style
|
|
241
|
-
* - Numbering/list formatting (numId, ilvl)
|
|
242
|
-
*
|
|
243
|
-
* @example
|
|
244
|
-
* ```xml
|
|
245
|
-
* <w:pPrChange w:id="2" w:author="Jane" w:date="2024-01-15T11:00:00Z">
|
|
246
|
-
* <w:pPr>
|
|
247
|
-
* <w:jc w:val="left"/> <!-- Was left-aligned before change -->
|
|
248
|
-
* </w:pPr>
|
|
249
|
-
* </w:pPrChange>
|
|
250
|
-
* ```
|
|
251
|
-
*/
|
|
252
|
-
export interface ParagraphPropertyChange extends PropertyChangeBase {
|
|
253
|
-
/** Previous paragraph formatting properties before the change */
|
|
254
|
-
previousProperties: Partial<ParagraphFormattingPartial>;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Table property change types
|
|
259
|
-
*/
|
|
260
|
-
export type TablePropertyChangeType = 'table' | 'row' | 'cell';
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Table property change (w:tblPrChange, w:trPrChange, w:tcPrChange)
|
|
264
|
-
*
|
|
265
|
-
* Tracks changes to table-level properties including:
|
|
266
|
-
* - Table: width, alignment, borders, shading
|
|
267
|
-
* - Row: height, header row, can't split
|
|
268
|
-
* - Cell: width, vertical alignment, borders, shading, merge
|
|
269
|
-
*
|
|
270
|
-
* @example
|
|
271
|
-
* ```xml
|
|
272
|
-
* <w:tblPrChange w:id="3" w:author="John" w:date="2024-01-15T12:00:00Z">
|
|
273
|
-
* <w:tblPr>
|
|
274
|
-
* <w:tblW w:w="5000" w:type="pct"/>
|
|
275
|
-
* </w:tblPr>
|
|
276
|
-
* </w:tblPrChange>
|
|
277
|
-
* ```
|
|
278
|
-
*/
|
|
279
|
-
export interface TablePropertyChange extends PropertyChangeBase {
|
|
280
|
-
/** Type of table element (table, row, or cell) */
|
|
281
|
-
elementType: TablePropertyChangeType;
|
|
282
|
-
/** Previous table properties before the change */
|
|
283
|
-
previousProperties: Record<string, any>;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Section property change (w:sectPrChange)
|
|
288
|
-
*
|
|
289
|
-
* Tracks changes to section-level properties such as:
|
|
290
|
-
* - Page size (width, height)
|
|
291
|
-
* - Page margins (top, bottom, left, right, header, footer, gutter)
|
|
292
|
-
* - Page orientation (portrait, landscape)
|
|
293
|
-
* - Columns configuration
|
|
294
|
-
* - Page numbering
|
|
295
|
-
*
|
|
296
|
-
* @example
|
|
297
|
-
* ```xml
|
|
298
|
-
* <w:sectPrChange w:id="4" w:author="Jane" w:date="2024-01-15T13:00:00Z">
|
|
299
|
-
* <w:sectPr>
|
|
300
|
-
* <w:pgSz w:w="12240" w:h="15840"/>
|
|
301
|
-
* <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/>
|
|
302
|
-
* </w:sectPr>
|
|
303
|
-
* </w:sectPrChange>
|
|
304
|
-
* ```
|
|
305
|
-
*/
|
|
306
|
-
export interface SectionPropertyChange extends PropertyChangeBase {
|
|
307
|
-
/** Previous section properties before the change */
|
|
308
|
-
previousProperties: Record<string, any>;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Numbering change (w:numberingChange)
|
|
313
|
-
*
|
|
314
|
-
* Tracks changes to list numbering properties:
|
|
315
|
-
* - Numbering definition ID
|
|
316
|
-
* - Indentation level
|
|
317
|
-
* - Starting number
|
|
318
|
-
*
|
|
319
|
-
* @example
|
|
320
|
-
* ```xml
|
|
321
|
-
* <w:numberingChange w:id="5" w:author="John" w:date="2024-01-15T14:00:00Z"
|
|
322
|
-
* w:original="1" />
|
|
323
|
-
* ```
|
|
324
|
-
*/
|
|
325
|
-
export interface NumberingChange extends PropertyChangeBase {
|
|
326
|
-
/** Previous numbering definition ID */
|
|
327
|
-
previousNumId?: number;
|
|
328
|
-
/** Previous indentation level */
|
|
329
|
-
previousIlvl?: number;
|
|
330
|
-
/** Original numbering format string */
|
|
331
|
-
original?: string;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Location of a revision within the document structure
|
|
336
|
-
* Used for precise change tracking and changelog generation
|
|
337
|
-
*/
|
|
338
|
-
export interface RevisionLocation {
|
|
339
|
-
/** Paragraph index within the document body (0-based) */
|
|
340
|
-
paragraphIndex?: number;
|
|
341
|
-
/** Run index within the paragraph (0-based) */
|
|
342
|
-
runIndex?: number;
|
|
343
|
-
/** Table row index (0-based) - only for table revisions */
|
|
344
|
-
tableRow?: number;
|
|
345
|
-
/** Table cell index within row (0-based) - only for table revisions */
|
|
346
|
-
tableCell?: number;
|
|
347
|
-
/** Section index (0-based) - only for section revisions */
|
|
348
|
-
sectionIndex?: number;
|
|
349
|
-
/** Header/footer type if revision is in header/footer */
|
|
350
|
-
headerFooterType?:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
props.
|
|
383
|
-
props.
|
|
384
|
-
props.
|
|
385
|
-
props.
|
|
386
|
-
props.
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
1
|
+
/**
|
|
2
|
+
* PropertyChangeTypes - Type definitions for property change tracking in revisions
|
|
3
|
+
*
|
|
4
|
+
* These types represent the parsed data from OOXML property change elements:
|
|
5
|
+
* - w:rPrChange (run property changes)
|
|
6
|
+
* - w:pPrChange (paragraph property changes)
|
|
7
|
+
* - w:tblPrChange, w:trPrChange, w:tcPrChange (table property changes)
|
|
8
|
+
* - w:sectPrChange (section property changes)
|
|
9
|
+
* - w:numberingChange (numbering property changes)
|
|
10
|
+
*
|
|
11
|
+
* Per ECMA-376, property change elements track the PREVIOUS state of properties
|
|
12
|
+
* before a change was made, allowing Word to show what changed and enabling
|
|
13
|
+
* accept/reject functionality.
|
|
14
|
+
*
|
|
15
|
+
* @module PropertyChangeTypes
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { RunFormatting } from './Run';
|
|
19
|
+
import type { ShadingConfig } from './CommonTypes';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Common base for all property change types
|
|
23
|
+
*/
|
|
24
|
+
export interface PropertyChangeBase {
|
|
25
|
+
/** Unique revision ID (ST_DecimalNumber) */
|
|
26
|
+
id: number;
|
|
27
|
+
/** Author who made the change (required) */
|
|
28
|
+
author: string;
|
|
29
|
+
/** Date when the change was made (ISO 8601) */
|
|
30
|
+
date: Date;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Run property change (w:rPrChange)
|
|
35
|
+
*
|
|
36
|
+
* Tracks changes to run-level formatting such as:
|
|
37
|
+
* - Bold, italic, underline
|
|
38
|
+
* - Font name, size, color
|
|
39
|
+
* - Highlight, strikethrough
|
|
40
|
+
* - Character spacing, subscript/superscript
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```xml
|
|
44
|
+
* <w:rPrChange w:id="1" w:author="John" w:date="2024-01-15T10:30:00Z">
|
|
45
|
+
* <w:rPr>
|
|
46
|
+
* <w:b/> <!-- Was bold before change -->
|
|
47
|
+
* </w:rPr>
|
|
48
|
+
* </w:rPrChange>
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export interface RunPropertyChange extends PropertyChangeBase {
|
|
52
|
+
/** Previous run formatting properties before the change */
|
|
53
|
+
previousProperties: Partial<RunFormatting>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Border definition for paragraph borders
|
|
58
|
+
* Per ECMA-376 Part 1 Section 17.3.1.24
|
|
59
|
+
*/
|
|
60
|
+
export interface ParagraphBorderDef {
|
|
61
|
+
/** Border style (single, double, dotted, dashed, etc.) */
|
|
62
|
+
val?: string;
|
|
63
|
+
/** Border width in eighths of a point */
|
|
64
|
+
sz?: number;
|
|
65
|
+
/** Space between border and content in points */
|
|
66
|
+
space?: number;
|
|
67
|
+
/** Border color (hex RGB without #) */
|
|
68
|
+
color?: string;
|
|
69
|
+
/** Theme color reference */
|
|
70
|
+
themeColor?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Paragraph borders (w:pBdr)
|
|
75
|
+
* Per ECMA-376 Part 1 Section 17.3.1.24
|
|
76
|
+
*/
|
|
77
|
+
export interface ParagraphBorders {
|
|
78
|
+
/** Top border */
|
|
79
|
+
top?: ParagraphBorderDef;
|
|
80
|
+
/** Bottom border */
|
|
81
|
+
bottom?: ParagraphBorderDef;
|
|
82
|
+
/** Left border */
|
|
83
|
+
left?: ParagraphBorderDef;
|
|
84
|
+
/** Right border */
|
|
85
|
+
right?: ParagraphBorderDef;
|
|
86
|
+
/** Border between paragraphs with same borders */
|
|
87
|
+
between?: ParagraphBorderDef;
|
|
88
|
+
/** Bar border (vertical line) */
|
|
89
|
+
bar?: ParagraphBorderDef;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Paragraph shading (w:shd)
|
|
94
|
+
* @see ShadingConfig in CommonTypes.ts for the canonical definition
|
|
95
|
+
*/
|
|
96
|
+
export type ParagraphShading = ShadingConfig;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Tab stop definition
|
|
100
|
+
* Per ECMA-376 Part 1 Section 17.3.1.38
|
|
101
|
+
*/
|
|
102
|
+
export interface TabStopDef {
|
|
103
|
+
/** Tab stop type (left, right, center, decimal, bar, clear) */
|
|
104
|
+
val?: string;
|
|
105
|
+
/** Tab position in twips */
|
|
106
|
+
pos?: number;
|
|
107
|
+
/** Leader character (none, dot, hyphen, underscore, middleDot) */
|
|
108
|
+
leader?: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Paragraph formatting options (subset for type safety)
|
|
113
|
+
* Full ParagraphFormatting is in Paragraph.ts but we need a partial here
|
|
114
|
+
*
|
|
115
|
+
* Per ECMA-376 Part 1 Section 17.3.1, this covers all paragraph properties
|
|
116
|
+
* that can be tracked in w:pPrChange revision elements.
|
|
117
|
+
*/
|
|
118
|
+
export interface ParagraphFormattingPartial {
|
|
119
|
+
/** Text alignment: left, center, right, justify */
|
|
120
|
+
alignment?: 'left' | 'center' | 'right' | 'justify';
|
|
121
|
+
/** Left indentation in twips */
|
|
122
|
+
leftIndent?: number;
|
|
123
|
+
/** Right indentation in twips */
|
|
124
|
+
rightIndent?: number;
|
|
125
|
+
/** First line indentation in twips */
|
|
126
|
+
firstLineIndent?: number;
|
|
127
|
+
/** Hanging indentation in twips */
|
|
128
|
+
hangingIndent?: number;
|
|
129
|
+
/** Spacing before paragraph in twips */
|
|
130
|
+
spaceBefore?: number;
|
|
131
|
+
/** Spacing after paragraph in twips */
|
|
132
|
+
spaceAfter?: number;
|
|
133
|
+
/** Line spacing in twips */
|
|
134
|
+
lineSpacing?: number;
|
|
135
|
+
/** Line spacing rule */
|
|
136
|
+
lineSpacingRule?: 'auto' | 'exact' | 'atLeast';
|
|
137
|
+
/** Paragraph style ID */
|
|
138
|
+
style?: string;
|
|
139
|
+
/** Keep with next paragraph */
|
|
140
|
+
keepNext?: boolean;
|
|
141
|
+
/** Keep lines together */
|
|
142
|
+
keepLines?: boolean;
|
|
143
|
+
/** Page break before */
|
|
144
|
+
pageBreakBefore?: boolean;
|
|
145
|
+
/** Widow/orphan control */
|
|
146
|
+
widowControl?: boolean;
|
|
147
|
+
/** Suppress auto-hyphenation */
|
|
148
|
+
suppressAutoHyphens?: boolean;
|
|
149
|
+
/** Contextual spacing */
|
|
150
|
+
contextualSpacing?: boolean;
|
|
151
|
+
/** Mirror indents */
|
|
152
|
+
mirrorIndents?: boolean;
|
|
153
|
+
/** Outline level (for headings) */
|
|
154
|
+
outlineLevel?: number;
|
|
155
|
+
/** Right-to-left paragraph */
|
|
156
|
+
bidi?: boolean;
|
|
157
|
+
/** Numbering properties (list formatting) */
|
|
158
|
+
numbering?: {
|
|
159
|
+
numId?: number;
|
|
160
|
+
level?: number;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// === Extended properties for full ECMA-376 compliance ===
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Paragraph borders (w:pBdr)
|
|
167
|
+
* Per ECMA-376 Part 1 Section 17.3.1.24
|
|
168
|
+
*/
|
|
169
|
+
borders?: ParagraphBorders;
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Paragraph shading/background (w:shd)
|
|
173
|
+
* Per ECMA-376 Part 1 Section 17.3.1.32
|
|
174
|
+
*/
|
|
175
|
+
shading?: ParagraphShading;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Custom tab stops (w:tabs)
|
|
179
|
+
* Per ECMA-376 Part 1 Section 17.3.1.38
|
|
180
|
+
*/
|
|
181
|
+
tabs?: TabStopDef[];
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Text direction (w:textDirection)
|
|
185
|
+
* Per ECMA-376 Part 1 Section 17.3.1.40
|
|
186
|
+
* Values: lrTb, tbRl, btLr, lrTbV, tbRlV, tbLrV
|
|
187
|
+
*/
|
|
188
|
+
textDirection?: string;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Text alignment (w:textAlignment)
|
|
192
|
+
* Per ECMA-376 Part 1 Section 17.3.1.39
|
|
193
|
+
* Values: auto, top, center, baseline, bottom
|
|
194
|
+
*/
|
|
195
|
+
textAlignment?: string;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Suppress line numbers (w:suppressLineNumbers)
|
|
199
|
+
* Per ECMA-376 Part 1 Section 17.3.1.35
|
|
200
|
+
*/
|
|
201
|
+
suppressLineNumbers?: boolean;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Adjust right indent (w:adjustRightInd)
|
|
205
|
+
* Per ECMA-376 Part 1 Section 17.3.1.1
|
|
206
|
+
*/
|
|
207
|
+
adjustRightInd?: boolean;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Snap to grid (w:snapToGrid)
|
|
211
|
+
* Per ECMA-376 Part 1 Section 17.3.1.33
|
|
212
|
+
*/
|
|
213
|
+
snapToGrid?: boolean;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Word wrap (w:wordWrap)
|
|
217
|
+
* Per ECMA-376 Part 1 Section 17.3.1.44
|
|
218
|
+
*/
|
|
219
|
+
wordWrap?: boolean;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Auto space between East Asian and numeric (w:autoSpaceDE)
|
|
223
|
+
*/
|
|
224
|
+
autoSpaceDE?: boolean;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Auto space between East Asian and Western (w:autoSpaceDN)
|
|
228
|
+
*/
|
|
229
|
+
autoSpaceDN?: boolean;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Paragraph property change (w:pPrChange)
|
|
234
|
+
*
|
|
235
|
+
* Tracks changes to paragraph-level formatting such as:
|
|
236
|
+
* - Alignment (left, center, right, justify)
|
|
237
|
+
* - Indentation (left, right, first line, hanging)
|
|
238
|
+
* - Spacing (before, after, line)
|
|
239
|
+
* - Keep with next, keep lines together
|
|
240
|
+
* - Paragraph style
|
|
241
|
+
* - Numbering/list formatting (numId, ilvl)
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```xml
|
|
245
|
+
* <w:pPrChange w:id="2" w:author="Jane" w:date="2024-01-15T11:00:00Z">
|
|
246
|
+
* <w:pPr>
|
|
247
|
+
* <w:jc w:val="left"/> <!-- Was left-aligned before change -->
|
|
248
|
+
* </w:pPr>
|
|
249
|
+
* </w:pPrChange>
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export interface ParagraphPropertyChange extends PropertyChangeBase {
|
|
253
|
+
/** Previous paragraph formatting properties before the change */
|
|
254
|
+
previousProperties: Partial<ParagraphFormattingPartial>;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Table property change types
|
|
259
|
+
*/
|
|
260
|
+
export type TablePropertyChangeType = 'table' | 'row' | 'cell';
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Table property change (w:tblPrChange, w:trPrChange, w:tcPrChange)
|
|
264
|
+
*
|
|
265
|
+
* Tracks changes to table-level properties including:
|
|
266
|
+
* - Table: width, alignment, borders, shading
|
|
267
|
+
* - Row: height, header row, can't split
|
|
268
|
+
* - Cell: width, vertical alignment, borders, shading, merge
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```xml
|
|
272
|
+
* <w:tblPrChange w:id="3" w:author="John" w:date="2024-01-15T12:00:00Z">
|
|
273
|
+
* <w:tblPr>
|
|
274
|
+
* <w:tblW w:w="5000" w:type="pct"/>
|
|
275
|
+
* </w:tblPr>
|
|
276
|
+
* </w:tblPrChange>
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
export interface TablePropertyChange extends PropertyChangeBase {
|
|
280
|
+
/** Type of table element (table, row, or cell) */
|
|
281
|
+
elementType: TablePropertyChangeType;
|
|
282
|
+
/** Previous table properties before the change */
|
|
283
|
+
previousProperties: Record<string, any>;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Section property change (w:sectPrChange)
|
|
288
|
+
*
|
|
289
|
+
* Tracks changes to section-level properties such as:
|
|
290
|
+
* - Page size (width, height)
|
|
291
|
+
* - Page margins (top, bottom, left, right, header, footer, gutter)
|
|
292
|
+
* - Page orientation (portrait, landscape)
|
|
293
|
+
* - Columns configuration
|
|
294
|
+
* - Page numbering
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```xml
|
|
298
|
+
* <w:sectPrChange w:id="4" w:author="Jane" w:date="2024-01-15T13:00:00Z">
|
|
299
|
+
* <w:sectPr>
|
|
300
|
+
* <w:pgSz w:w="12240" w:h="15840"/>
|
|
301
|
+
* <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/>
|
|
302
|
+
* </w:sectPr>
|
|
303
|
+
* </w:sectPrChange>
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
export interface SectionPropertyChange extends PropertyChangeBase {
|
|
307
|
+
/** Previous section properties before the change */
|
|
308
|
+
previousProperties: Record<string, any>;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Numbering change (w:numberingChange)
|
|
313
|
+
*
|
|
314
|
+
* Tracks changes to list numbering properties:
|
|
315
|
+
* - Numbering definition ID
|
|
316
|
+
* - Indentation level
|
|
317
|
+
* - Starting number
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* ```xml
|
|
321
|
+
* <w:numberingChange w:id="5" w:author="John" w:date="2024-01-15T14:00:00Z"
|
|
322
|
+
* w:original="1" />
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
export interface NumberingChange extends PropertyChangeBase {
|
|
326
|
+
/** Previous numbering definition ID */
|
|
327
|
+
previousNumId?: number;
|
|
328
|
+
/** Previous indentation level */
|
|
329
|
+
previousIlvl?: number;
|
|
330
|
+
/** Original numbering format string */
|
|
331
|
+
original?: string;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Location of a revision within the document structure
|
|
336
|
+
* Used for precise change tracking and changelog generation
|
|
337
|
+
*/
|
|
338
|
+
export interface RevisionLocation {
|
|
339
|
+
/** Paragraph index within the document body (0-based) */
|
|
340
|
+
paragraphIndex?: number;
|
|
341
|
+
/** Run index within the paragraph (0-based) */
|
|
342
|
+
runIndex?: number;
|
|
343
|
+
/** Table row index (0-based) - only for table revisions */
|
|
344
|
+
tableRow?: number;
|
|
345
|
+
/** Table cell index within row (0-based) - only for table revisions */
|
|
346
|
+
tableCell?: number;
|
|
347
|
+
/** Section index (0-based) - only for section revisions */
|
|
348
|
+
sectionIndex?: number;
|
|
349
|
+
/** Header/footer type if revision is in header/footer */
|
|
350
|
+
headerFooterType?:
|
|
351
|
+
| 'header'
|
|
352
|
+
| 'footer'
|
|
353
|
+
| 'firstHeader'
|
|
354
|
+
| 'firstFooter'
|
|
355
|
+
| 'evenHeader'
|
|
356
|
+
| 'evenFooter';
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Union type for all property change types
|
|
361
|
+
*/
|
|
362
|
+
export type AnyPropertyChange =
|
|
363
|
+
| RunPropertyChange
|
|
364
|
+
| ParagraphPropertyChange
|
|
365
|
+
| TablePropertyChange
|
|
366
|
+
| SectionPropertyChange
|
|
367
|
+
| NumberingChange;
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Type guard to check if a property change is a RunPropertyChange
|
|
371
|
+
*
|
|
372
|
+
* Note: Empty previousProperties cannot be reliably typed - this guard returns
|
|
373
|
+
* false for empty objects. Use context-aware typing when the source is known.
|
|
374
|
+
*/
|
|
375
|
+
export function isRunPropertyChange(change: AnyPropertyChange): change is RunPropertyChange {
|
|
376
|
+
if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
// Check for typical run properties - must have at least one identifiable property
|
|
380
|
+
const props = change.previousProperties as Partial<RunFormatting>;
|
|
381
|
+
return (
|
|
382
|
+
props.bold !== undefined ||
|
|
383
|
+
props.italic !== undefined ||
|
|
384
|
+
props.font !== undefined ||
|
|
385
|
+
props.size !== undefined ||
|
|
386
|
+
props.color !== undefined ||
|
|
387
|
+
props.underline !== undefined ||
|
|
388
|
+
props.strike !== undefined ||
|
|
389
|
+
props.highlight !== undefined ||
|
|
390
|
+
props.smallCaps !== undefined ||
|
|
391
|
+
props.allCaps !== undefined ||
|
|
392
|
+
props.subscript !== undefined ||
|
|
393
|
+
props.superscript !== undefined
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Type guard to check if a property change is a ParagraphPropertyChange
|
|
399
|
+
*/
|
|
400
|
+
export function isParagraphPropertyChange(
|
|
401
|
+
change: AnyPropertyChange
|
|
402
|
+
): change is ParagraphPropertyChange {
|
|
403
|
+
return (
|
|
404
|
+
'previousProperties' in change &&
|
|
405
|
+
!('elementType' in change) &&
|
|
406
|
+
!('previousNumId' in change) &&
|
|
407
|
+
// Check for typical paragraph properties
|
|
408
|
+
((change.previousProperties as ParagraphFormattingPartial).alignment !== undefined ||
|
|
409
|
+
(change.previousProperties as ParagraphFormattingPartial).leftIndent !== undefined ||
|
|
410
|
+
(change.previousProperties as ParagraphFormattingPartial).spaceBefore !== undefined ||
|
|
411
|
+
(change.previousProperties as ParagraphFormattingPartial).style !== undefined)
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Type guard to check if a property change is a TablePropertyChange
|
|
417
|
+
*/
|
|
418
|
+
export function isTablePropertyChange(change: AnyPropertyChange): change is TablePropertyChange {
|
|
419
|
+
return 'elementType' in change;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Type guard to check if a property change is a SectionPropertyChange
|
|
424
|
+
*
|
|
425
|
+
* Checks for section-specific properties: page size, margins, orientation, columns, etc.
|
|
426
|
+
* Per ECMA-376, section properties are distinct from run/paragraph properties.
|
|
427
|
+
*/
|
|
428
|
+
export function isSectionPropertyChange(
|
|
429
|
+
change: AnyPropertyChange
|
|
430
|
+
): change is SectionPropertyChange {
|
|
431
|
+
if (!('previousProperties' in change) || 'elementType' in change || 'previousNumId' in change) {
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
// Check for section-specific properties
|
|
435
|
+
const props = change.previousProperties as Record<string, any>;
|
|
436
|
+
return (
|
|
437
|
+
props.pageWidth !== undefined ||
|
|
438
|
+
props.pageHeight !== undefined ||
|
|
439
|
+
props.orientation !== undefined ||
|
|
440
|
+
props.marginTop !== undefined ||
|
|
441
|
+
props.marginBottom !== undefined ||
|
|
442
|
+
props.marginLeft !== undefined ||
|
|
443
|
+
props.marginRight !== undefined ||
|
|
444
|
+
props.columns !== undefined ||
|
|
445
|
+
props.headerDistance !== undefined ||
|
|
446
|
+
props.footerDistance !== undefined ||
|
|
447
|
+
props.gutterMargin !== undefined ||
|
|
448
|
+
props.pageNumberStart !== undefined ||
|
|
449
|
+
props.sectionType !== undefined
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Type guard to check if a property change is a NumberingChange
|
|
455
|
+
*/
|
|
456
|
+
export function isNumberingChange(change: AnyPropertyChange): change is NumberingChange {
|
|
457
|
+
return 'previousNumId' in change || 'previousIlvl' in change || 'original' in change;
|
|
458
|
+
}
|