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
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Document, DocumentProperties, DocumentOptions, DocumentLoadOptions, DocumentPart } from './core/Document';
|
|
1
|
+
export { Document, DocumentProperties, DocumentOptions, DocumentLoadOptions, DocumentPart, } from './core/Document';
|
|
2
2
|
export { Paragraph, ParagraphAlignment, ParagraphFormatting, ParagraphContent, FieldLike, isRun, isField, isSimpleField, isComplexField, isHyperlink, isRevision, isRangeMarker, isShape, isTextBox, } from './elements/Paragraph';
|
|
3
3
|
export { Run, RunFormatting, ThemeColorValue } from './elements/Run';
|
|
4
4
|
export { Section, PageOrientation, SectionType, PageNumberFormat, PageSize, Margins, Columns, PageNumbering, SectionProperties, LineNumbering, LineNumberingRestart, } from './elements/Section';
|
|
@@ -20,7 +20,7 @@ export { Footnote, FootnoteType, FootnoteProperties } from './elements/Footnote'
|
|
|
20
20
|
export { Endnote, EndnoteType, EndnoteProperties } from './elements/Endnote';
|
|
21
21
|
export { Field, FieldType, FieldProperties, ComplexField, ComplexFieldProperties, FieldCharType, TOCFieldOptions, createTOCField, } from './elements/Field';
|
|
22
22
|
export { createNestedIFMergeField, createMergeField, createRefField, createIFField, createNestedField, parseHyperlinkInstruction, buildHyperlinkInstruction, isHyperlinkInstruction, ParsedHyperlinkInstruction, } from './elements/FieldHelpers';
|
|
23
|
-
export { StructuredDocumentTag, SDTProperties, SDTLockType, SDTContent, SDTPlaceholder, SDTDataBinding, ContentControlType } from './elements/StructuredDocumentTag';
|
|
23
|
+
export { StructuredDocumentTag, SDTProperties, SDTLockType, SDTContent, SDTPlaceholder, SDTDataBinding, ContentControlType, } from './elements/StructuredDocumentTag';
|
|
24
24
|
export { TableOfContents, TOCProperties } from './elements/TableOfContents';
|
|
25
25
|
export { TableOfContentsElement } from './elements/TableOfContentsElement';
|
|
26
26
|
export { AlternateContent } from './elements/AlternateContent';
|
|
@@ -36,13 +36,13 @@ export { SelectiveRevisionAcceptor, SelectiveAcceptResult, } from './utils/Selec
|
|
|
36
36
|
export { RevisionAwareProcessor, RevisionHandlingMode, RevisionProcessingOptions, SelectionCriteria, RevisionProcessingResult, ConflictInfo, ProcessingLogEntry, } from './utils/RevisionAwareProcessor';
|
|
37
37
|
export { ChangelogGenerator, ChangeEntry, ChangeCategory, ChangeLocation, ChangelogOptions, ChangelogFormat, ConsolidatedChange, ChangelogSummary, } from './utils/ChangelogGenerator';
|
|
38
38
|
export { Style, StyleType, StyleProperties } from './formatting/Style';
|
|
39
|
-
export { StylesManager, ValidationResult, LatentStylesConfig, LatentStyleException } from './formatting/StylesManager';
|
|
39
|
+
export { StylesManager, ValidationResult, LatentStylesConfig, LatentStyleException, } from './formatting/StylesManager';
|
|
40
40
|
export { NumberingLevel, NumberFormat, NumberAlignment, NumberingLevelProperties, WORD_NATIVE_BULLETS, WordNativeBullet, } from './formatting/NumberingLevel';
|
|
41
|
-
export { AbstractNumbering, AbstractNumberingProperties
|
|
42
|
-
export { NumberingInstance, NumberingInstanceProperties
|
|
41
|
+
export { AbstractNumbering, AbstractNumberingProperties } from './formatting/AbstractNumbering';
|
|
42
|
+
export { NumberingInstance, NumberingInstanceProperties } from './formatting/NumberingInstance';
|
|
43
43
|
export { NumberingManager, NumberingConsolidationOptions, NumberingConsolidationResult, } from './formatting/NumberingManager';
|
|
44
44
|
export { StyleRunFormatting, StyleParagraphFormatting, Heading2TableOptions, StyleConfig, Heading2Config, ApplyCustomFormattingOptions, } from './types/styleConfig';
|
|
45
|
-
export { FormatOptions, StyleApplyOptions, EmphasisType, ListPrefix
|
|
45
|
+
export { FormatOptions, StyleApplyOptions, EmphasisType, ListPrefix } from './types/formatting';
|
|
46
46
|
export { RevisionManager, RevisionCategory, RevisionSummary } from './elements/RevisionManager';
|
|
47
47
|
export { ImageManager } from './elements/ImageManager';
|
|
48
48
|
export { BookmarkManager } from './elements/BookmarkManager';
|
|
@@ -51,11 +51,11 @@ export { FootnoteManager } from './elements/FootnoteManager';
|
|
|
51
51
|
export { EndnoteManager } from './elements/EndnoteManager';
|
|
52
52
|
export { HeaderFooterManager } from './elements/HeaderFooterManager';
|
|
53
53
|
export { FontManager, FontFormat, FontEntry } from './elements/FontManager';
|
|
54
|
-
export { DrawingManager, DrawingElement, DrawingType, PreservedDrawing } from './managers/DrawingManager';
|
|
54
|
+
export { DrawingManager, DrawingElement, DrawingType, PreservedDrawing, } from './managers/DrawingManager';
|
|
55
55
|
export type { ImageOptimizationResult } from './images/ImageOptimizer';
|
|
56
56
|
export { ShadingPattern, BasicShadingPattern, BorderStyle, ExtendedBorderStyle, FullBorderStyle, BorderDefinition, FourSidedBorders, TableBorderDefinitions, HorizontalAlignment, VerticalAlignment, PageVerticalAlignment, CellVerticalAlignment, ParagraphAlignment as CommonParagraphAlignment, TableAlignment as CommonTableAlignment, RowJustification, TextVerticalAlignment, TabAlignment, PositionAnchor, HorizontalAnchor, VerticalAnchor, TextDirection, SectionTextDirection, WidthType, ShadingConfig, buildShadingAttributes, TabLeader, TabStop, isShadingPattern, isBorderStyle, isHorizontalAlignment, isVerticalAlignment, isParagraphAlignment, isWidthType, DEFAULT_BORDER, NO_BORDER, } from './elements/CommonTypes';
|
|
57
57
|
export { ListCategory, NumberFormat as ListNumberFormat, BulletFormat, ListDetectionResult, ListAnalysis, ListNormalizationOptions, ListNormalizationReport, IndentationLevel, } from './types/list-types';
|
|
58
|
-
export { CompatibilityMode, CompatibilityInfo, CompatSetting
|
|
58
|
+
export { CompatibilityMode, CompatibilityInfo, CompatSetting } from './types/compatibility-types';
|
|
59
59
|
export { DocumentProtection, RevisionViewSettings, TrackChangesSettings, WebSettingsInfo, } from './types/settings-types';
|
|
60
60
|
export { CompatibilityUpgrader, UpgradeReport } from './utils/CompatibilityUpgrader';
|
|
61
61
|
export { LEGACY_COMPAT_ELEMENTS, LEGACY_COMPAT_ELEMENT_NAMES, MODERN_COMPAT_SETTINGS, MS_WORD_COMPAT_URI, } from './constants/legacyCompatFlags';
|
|
@@ -72,7 +72,7 @@ export { ILogger, LogLevel, LogEntry, ConsoleLogger, SilentLogger, CollectingLog
|
|
|
72
72
|
export { RevisionWalker, RevisionWalkerOptions } from './utils/RevisionWalker';
|
|
73
73
|
export { resolveCellShading } from './utils/ShadingResolver';
|
|
74
74
|
export { decodeCnfStyle, getActiveConditionalsInPriorityOrder } from './utils/cnfStyleDecoder';
|
|
75
|
-
export { CleanupHelper, CleanupOptions, CleanupReport
|
|
75
|
+
export { CleanupHelper, CleanupOptions, CleanupReport } from './helpers/CleanupHelper';
|
|
76
76
|
export { ZipHandler } from './zip/ZipHandler';
|
|
77
77
|
export { ZipReader } from './zip/ZipReader';
|
|
78
78
|
export { ZipWriter } from './zip/ZipWriter';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * DocXML - DOCX Editing Framework\r\n * Main entry point\r\n */\r\n\r\n// =============================================================================\r\n// PUBLIC API — Core Document Classes\r\n// =============================================================================\r\n\r\nexport { Document, DocumentProperties, DocumentOptions, DocumentLoadOptions, DocumentPart } from './core/Document';\r\n\r\n// =============================================================================\r\n// PUBLIC API — Document Elements\r\n// =============================================================================\r\n\r\nexport {\r\n Paragraph,\r\n ParagraphAlignment,\r\n ParagraphFormatting,\r\n ParagraphContent,\r\n FieldLike,\r\n isRun,\r\n isField,\r\n isSimpleField,\r\n isComplexField,\r\n isHyperlink,\r\n isRevision,\r\n isRangeMarker,\r\n isShape,\r\n isTextBox,\r\n} from './elements/Paragraph';\r\nexport { Run, RunFormatting, ThemeColorValue } from './elements/Run';\r\nexport {\r\n Section,\r\n PageOrientation,\r\n SectionType,\r\n PageNumberFormat,\r\n PageSize,\r\n Margins,\r\n Columns,\r\n PageNumbering,\r\n SectionProperties,\r\n LineNumbering,\r\n LineNumberingRestart,\r\n} from './elements/Section';\r\nexport {\r\n Table,\r\n TableAlignment,\r\n TableLayout,\r\n TableBorder,\r\n TableBorders,\r\n TableFormatting,\r\n} from './elements/Table';\r\nexport { TableRow, RowFormatting } from './elements/TableRow';\r\nexport {\r\n TableCell,\r\n CellBorder,\r\n CellBorders,\r\n CellShading,\r\n CellFormatting,\r\n} from './elements/TableCell';\r\nexport { TableGridChange, GridColumn, TableGridChangeProperties } from './elements/TableGridChange';\r\nexport {\r\n Image,\r\n ImageFormat,\r\n ImageProperties,\r\n ImageBorder,\r\n ImageEffects,\r\n PresetGeometry,\r\n BlipCompressionState,\r\n PicLockAttribute,\r\n PicNonVisualProperties,\r\n} from './elements/Image';\r\nexport { ImageRun } from './elements/ImageRun';\r\nexport { Shape, ShapeType, ShapeProperties, ShapeFill, ShapeOutline } from './elements/Shape';\r\nexport { TextBox, TextBoxProperties, TextBoxFill, TextBoxMargins } from './elements/TextBox';\r\nexport { Header, HeaderType, HeaderProperties } from './elements/Header';\r\nexport { Footer, FooterType, FooterProperties } from './elements/Footer';\r\nexport { Hyperlink, HyperlinkProperties } from './elements/Hyperlink';\r\nexport { Bookmark, BookmarkProperties } from './elements/Bookmark';\r\nexport { RangeMarker, RangeMarkerType, RangeMarkerProperties } from './elements/RangeMarker';\r\nexport { Comment, CommentProperties } from './elements/Comment';\r\nexport { Footnote, FootnoteType, FootnoteProperties } from './elements/Footnote';\r\nexport { Endnote, EndnoteType, EndnoteProperties } from './elements/Endnote';\r\nexport {\r\n Field,\r\n FieldType,\r\n FieldProperties,\r\n ComplexField,\r\n ComplexFieldProperties,\r\n FieldCharType,\r\n TOCFieldOptions,\r\n createTOCField,\r\n} from './elements/Field';\r\nexport {\r\n createNestedIFMergeField,\r\n createMergeField,\r\n createRefField,\r\n createIFField,\r\n createNestedField,\r\n parseHyperlinkInstruction,\r\n buildHyperlinkInstruction,\r\n isHyperlinkInstruction,\r\n ParsedHyperlinkInstruction,\r\n} from './elements/FieldHelpers';\r\nexport { StructuredDocumentTag, SDTProperties, SDTLockType, SDTContent, SDTPlaceholder, SDTDataBinding, ContentControlType } from './elements/StructuredDocumentTag';\r\nexport { TableOfContents, TOCProperties } from './elements/TableOfContents';\r\nexport { TableOfContentsElement } from './elements/TableOfContentsElement';\r\nexport { AlternateContent } from './elements/AlternateContent';\r\nexport { MathParagraph, MathExpression } from './elements/MathElement';\r\nexport { CustomXmlBlock } from './elements/CustomXml';\r\nexport { PreservedElement, PreservedElementContext } from './elements/PreservedElement';\r\n\r\n// =============================================================================\r\n// PUBLIC API — Track Changes / Revisions\r\n// =============================================================================\r\n\r\nexport { Revision, RevisionType, RevisionProperties, FieldContext } from './elements/Revision';\r\nexport { RevisionContent, isRunContent, isHyperlinkContent } from './elements/RevisionContent';\r\nexport {\r\n RevisionLocation,\r\n RunPropertyChange,\r\n ParagraphPropertyChange,\r\n ParagraphFormattingPartial,\r\n ParagraphBorderDef,\r\n ParagraphBorders,\r\n ParagraphShading,\r\n TabStopDef,\r\n PropertyChangeBase,\r\n TablePropertyChange,\r\n TablePropertyChangeType,\r\n SectionPropertyChange,\r\n NumberingChange,\r\n AnyPropertyChange,\r\n isRunPropertyChange,\r\n isParagraphPropertyChange,\r\n isTablePropertyChange,\r\n isSectionPropertyChange,\r\n isNumberingChange,\r\n} from './elements/PropertyChangeTypes';\r\nexport {\r\n acceptRevisionsInMemory,\r\n AcceptRevisionsOptions,\r\n AcceptRevisionsResult,\r\n paragraphHasRevisions,\r\n getRevisionsFromParagraph,\r\n countRevisionsByType,\r\n stripRevisionsFromXml,\r\n} from './utils/InMemoryRevisionAcceptor';\r\nexport {\r\n MoveOperationHelper,\r\n MoveOperationOptions,\r\n MoveOperationResult,\r\n} from './utils/MoveOperationHelper';\r\nexport {\r\n SelectiveRevisionAcceptor,\r\n SelectiveAcceptResult,\r\n} from './utils/SelectiveRevisionAcceptor';\r\nexport {\r\n RevisionAwareProcessor,\r\n RevisionHandlingMode,\r\n RevisionProcessingOptions,\r\n SelectionCriteria,\r\n RevisionProcessingResult,\r\n ConflictInfo,\r\n ProcessingLogEntry,\r\n} from './utils/RevisionAwareProcessor';\r\nexport {\r\n ChangelogGenerator,\r\n ChangeEntry,\r\n ChangeCategory,\r\n ChangeLocation,\r\n ChangelogOptions,\r\n ChangelogFormat,\r\n ConsolidatedChange,\r\n ChangelogSummary,\r\n} from './utils/ChangelogGenerator';\r\n\r\n// =============================================================================\r\n// PUBLIC API — Formatting / Styles / Numbering\r\n// =============================================================================\r\n\r\nexport { Style, StyleType, StyleProperties } from './formatting/Style';\r\nexport { StylesManager, ValidationResult, LatentStylesConfig, LatentStyleException } from './formatting/StylesManager';\r\nexport {\r\n NumberingLevel,\r\n NumberFormat,\r\n NumberAlignment,\r\n NumberingLevelProperties,\r\n WORD_NATIVE_BULLETS,\r\n WordNativeBullet,\r\n} from './formatting/NumberingLevel';\r\nexport {\r\n AbstractNumbering,\r\n AbstractNumberingProperties,\r\n} from './formatting/AbstractNumbering';\r\nexport {\r\n NumberingInstance,\r\n NumberingInstanceProperties,\r\n} from './formatting/NumberingInstance';\r\nexport {\r\n NumberingManager,\r\n NumberingConsolidationOptions,\r\n NumberingConsolidationResult,\r\n} from './formatting/NumberingManager';\r\nexport {\r\n StyleRunFormatting,\r\n StyleParagraphFormatting,\r\n Heading2TableOptions,\r\n StyleConfig,\r\n Heading2Config,\r\n ApplyCustomFormattingOptions,\r\n} from './types/styleConfig';\r\nexport {\r\n FormatOptions,\r\n StyleApplyOptions,\r\n EmphasisType,\r\n ListPrefix,\r\n} from './types/formatting';\r\n\r\n// =============================================================================\r\n// PUBLIC API — Managers\r\n// =============================================================================\r\n\r\nexport { RevisionManager, RevisionCategory, RevisionSummary } from './elements/RevisionManager';\r\nexport { ImageManager } from './elements/ImageManager';\r\nexport { BookmarkManager } from './elements/BookmarkManager';\r\nexport { CommentManager } from './elements/CommentManager';\r\nexport { FootnoteManager } from './elements/FootnoteManager';\r\nexport { EndnoteManager } from './elements/EndnoteManager';\r\nexport { HeaderFooterManager } from './elements/HeaderFooterManager';\r\nexport { FontManager, FontFormat, FontEntry } from './elements/FontManager';\r\nexport { DrawingManager, DrawingElement, DrawingType, PreservedDrawing } from './managers/DrawingManager';\r\n\r\n// =============================================================================\r\n// PUBLIC API — Image Optimization\r\n// =============================================================================\r\n\r\nexport type { ImageOptimizationResult } from './images/ImageOptimizer';\r\n\r\n// =============================================================================\r\n// TYPES — Common / Shared Type Definitions\r\n// =============================================================================\r\n\r\nexport {\r\n ShadingPattern,\r\n BasicShadingPattern,\r\n BorderStyle,\r\n ExtendedBorderStyle,\r\n FullBorderStyle,\r\n BorderDefinition,\r\n FourSidedBorders,\r\n TableBorderDefinitions,\r\n HorizontalAlignment,\r\n VerticalAlignment,\r\n PageVerticalAlignment,\r\n CellVerticalAlignment,\r\n ParagraphAlignment as CommonParagraphAlignment,\r\n TableAlignment as CommonTableAlignment,\r\n RowJustification,\r\n TextVerticalAlignment,\r\n TabAlignment,\r\n PositionAnchor,\r\n HorizontalAnchor,\r\n VerticalAnchor,\r\n TextDirection,\r\n SectionTextDirection,\r\n WidthType,\r\n ShadingConfig,\r\n buildShadingAttributes,\r\n TabLeader,\r\n TabStop,\r\n isShadingPattern,\r\n isBorderStyle,\r\n isHorizontalAlignment,\r\n isVerticalAlignment,\r\n isParagraphAlignment,\r\n isWidthType,\r\n DEFAULT_BORDER,\r\n NO_BORDER,\r\n} from './elements/CommonTypes';\r\nexport {\r\n ListCategory,\r\n NumberFormat as ListNumberFormat,\r\n BulletFormat,\r\n ListDetectionResult,\r\n ListAnalysis,\r\n ListNormalizationOptions,\r\n ListNormalizationReport,\r\n IndentationLevel,\r\n} from './types/list-types';\r\n\r\nexport {\r\n CompatibilityMode,\r\n CompatibilityInfo,\r\n CompatSetting,\r\n} from './types/compatibility-types';\r\n\r\nexport {\r\n DocumentProtection,\r\n RevisionViewSettings,\r\n TrackChangesSettings,\r\n WebSettingsInfo,\r\n} from './types/settings-types';\r\n\r\n// =============================================================================\r\n// TYPES — Compatibility Upgrade\r\n// =============================================================================\r\n\r\nexport { CompatibilityUpgrader, UpgradeReport } from './utils/CompatibilityUpgrader';\r\nexport {\r\n LEGACY_COMPAT_ELEMENTS,\r\n LEGACY_COMPAT_ELEMENT_NAMES,\r\n MODERN_COMPAT_SETTINGS,\r\n MS_WORD_COMPAT_URI,\r\n} from './constants/legacyCompatFlags';\r\n\r\n// =============================================================================\r\n// UTILITIES — Unit Conversions\r\n// =============================================================================\r\n\r\nexport {\r\n STANDARD_DPI,\r\n UNITS,\r\n PAGE_SIZES,\r\n COMMON_MARGINS,\r\n twipsToPoints,\r\n twipsToInches,\r\n twipsToCm,\r\n twipsToEmus,\r\n emusToTwips,\r\n emusToInches,\r\n emusToCm,\r\n emusToPoints,\r\n emusToPixels,\r\n pointsToTwips,\r\n pointsToEmus,\r\n pointsToInches,\r\n pointsToCm,\r\n pointsToHalfPoints,\r\n halfPointsToPoints,\r\n inchesToTwips,\r\n inchesToEmus,\r\n inchesToPoints,\r\n inchesToCm,\r\n inchesToPixels,\r\n cmToTwips,\r\n cmToEmus,\r\n cmToInches,\r\n cmToPoints,\r\n cmToPixels,\r\n pixelsToEmus,\r\n pixelsToInches,\r\n pixelsToTwips,\r\n pixelsToCm,\r\n pixelsToPoints,\r\n} from './utils/units';\r\n\r\n// =============================================================================\r\n// UTILITIES — Validation, Corruption Detection, Error Handling\r\n// =============================================================================\r\n\r\nexport {\r\n validateDocxStructure,\r\n isBinaryFile,\r\n normalizePath,\r\n isValidZipBuffer,\r\n isTextContent,\r\n validateTwips,\r\n validateColor,\r\n validateHexColor,\r\n normalizeColor,\r\n validateNumberingId,\r\n validateLevel,\r\n validateAlignment,\r\n validateFontSize,\r\n validateNonEmptyString,\r\n validatePercentage,\r\n validateEmus,\r\n detectXmlInText,\r\n cleanXmlFromText,\r\n validateRunText,\r\n TextValidationResult,\r\n} from './utils/validation';\r\nexport {\r\n detectCorruptionInDocument,\r\n detectCorruptionInText,\r\n suggestFix,\r\n looksCorrupted,\r\n CorruptionReport,\r\n CorruptionLocation,\r\n CorruptionType,\r\n} from './utils/corruptionDetection';\r\nexport { isError, toError, wrapError, getErrorMessage } from './utils/errorHandling';\r\nexport {\r\n REVISION_RULES,\r\n ValidationSeverity,\r\n ValidationIssue,\r\n ValidationRule,\r\n ValidationOptions,\r\n AutoFixOptions,\r\n ValidationResult as RevisionValidationResult,\r\n FixAction,\r\n AutoFixResult,\r\n createIssueFromRule,\r\n getRuleByCode,\r\n getRulesBySeverity,\r\n getAutoFixableRules,\r\n RevisionValidator,\r\n RevisionAutoFixer,\r\n} from './validation';\r\n\r\n// =============================================================================\r\n// UTILITIES — Formatting, Parsing, Sanitization\r\n// =============================================================================\r\n\r\nexport {\r\n mergeFormatting,\r\n cloneFormatting,\r\n hasFormatting,\r\n cleanFormatting,\r\n isEqualFormatting,\r\n applyDefaults,\r\n} from './utils/formatting';\r\nexport {\r\n safeParseInt,\r\n parseOoxmlBoolean,\r\n isExplicitlySet,\r\n parseNumericAttribute,\r\n parseOnOffAttribute,\r\n} from './utils/parsingHelpers';\r\nexport {\r\n removeInvalidXmlChars,\r\n findInvalidXmlChars,\r\n hasInvalidXmlChars,\r\n XML_CONTROL_CHARS,\r\n} from './utils/xmlSanitization';\r\n\r\n// =============================================================================\r\n// UTILITIES — List Detection (kept for basic detection; normalization moved to consumer)\r\n// =============================================================================\r\n\r\nexport {\r\n detectTypedPrefix,\r\n detectListType,\r\n inferLevelFromIndentation,\r\n getParagraphIndentation,\r\n validateListSequence,\r\n getListCategoryFromFormat,\r\n getLevelFromFormat,\r\n TYPED_LIST_PATTERNS,\r\n PATTERN_TO_CATEGORY,\r\n FORMAT_TO_LEVEL,\r\n} from './utils/list-detection';\r\n\r\n// =============================================================================\r\n// UTILITIES — Logging\r\n// =============================================================================\r\n\r\nexport {\r\n ILogger,\r\n LogLevel,\r\n LogEntry,\r\n ConsoleLogger,\r\n SilentLogger,\r\n CollectingLogger,\r\n defaultLogger,\r\n createScopedLogger,\r\n createComponentLogger,\r\n getGlobalLogger,\r\n setGlobalLogger,\r\n resetGlobalLogger,\r\n} from './utils/logger';\r\n\r\n// =============================================================================\r\n// UTILITIES — Revision Walker\r\n// =============================================================================\r\n\r\nexport { RevisionWalker, RevisionWalkerOptions } from './utils/RevisionWalker';\r\nexport { resolveCellShading } from './utils/ShadingResolver';\r\nexport { decodeCnfStyle, getActiveConditionalsInPriorityOrder } from './utils/cnfStyleDecoder';\r\n\r\n// =============================================================================\r\n// UTILITIES — Cleanup\r\n// =============================================================================\r\n\r\nexport {\r\n CleanupHelper,\r\n CleanupOptions,\r\n CleanupReport,\r\n} from './helpers/CleanupHelper';\r\n\r\n// =============================================================================\r\n// INTERNAL — ZIP Handling (advanced usage)\r\n// =============================================================================\r\n\r\nexport { ZipHandler } from './zip/ZipHandler';\r\nexport { ZipReader } from './zip/ZipReader';\r\nexport { ZipWriter } from './zip/ZipWriter';\r\nexport {\r\n ZipFile,\r\n FileMap,\r\n LoadOptions,\r\n SaveOptions,\r\n AddFileOptions,\r\n SizeLimitOptions,\r\n DEFAULT_SIZE_LIMITS,\r\n REQUIRED_DOCX_FILES,\r\n DOCX_PATHS,\r\n} from './zip/types';\r\nexport {\r\n DocxError,\r\n DocxNotFoundError,\r\n InvalidDocxError,\r\n CorruptedArchiveError,\r\n MissingRequiredFileError,\r\n FileOperationError,\r\n} from './zip/errors';\r\n\r\n// =============================================================================\r\n// INTERNAL — XML Builder and Parser (advanced usage)\r\n// =============================================================================\r\n\r\nexport { XMLBuilder, XMLElement } from './xml/XMLBuilder';\r\nexport {\r\n XMLParser,\r\n ParseToObjectOptions,\r\n ParsedXMLValue,\r\n ParsedXMLObject,\r\n DEFAULT_MAX_NESTING_DEPTH,\r\n} from './xml/XMLParser';\r\n\r\n// =============================================================================\r\n// INTERNAL — Parser, Generator, Validator (advanced usage)\r\n// =============================================================================\r\n\r\nexport { Relationship, RelationshipType, RelationshipProperties } from './core/Relationship';\r\nexport { RelationshipManager } from './core/RelationshipManager';\r\nexport { DocumentParser, ParseError } from './core/DocumentParser';\r\nexport { DocumentGenerator, IZipHandlerReader } from './core/DocumentGenerator';\r\nexport { DocumentValidator, SizeEstimate, MemoryOptions } from './core/DocumentValidator';\r\nexport { DocumentIdManager } from './core/DocumentIdManager';\r\n\r\n// =============================================================================\r\n// INTERNAL — Document Subsystem Classes (advanced usage)\r\n// =============================================================================\r\n\r\nexport { DocumentContent, BodyElement } from './core/DocumentContent';\r\n\r\n// =============================================================================\r\n// INTERNAL — Constants\r\n// =============================================================================\r\n\r\nexport { LIMITS } from './constants/limits';\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DocXML - DOCX Editing Framework\n * Main entry point\n */\n\n// =============================================================================\n// PUBLIC API — Core Document Classes\n// =============================================================================\n\nexport {\n Document,\n DocumentProperties,\n DocumentOptions,\n DocumentLoadOptions,\n DocumentPart,\n} from './core/Document';\n\n// =============================================================================\n// PUBLIC API — Document Elements\n// =============================================================================\n\nexport {\n Paragraph,\n ParagraphAlignment,\n ParagraphFormatting,\n ParagraphContent,\n FieldLike,\n isRun,\n isField,\n isSimpleField,\n isComplexField,\n isHyperlink,\n isRevision,\n isRangeMarker,\n isShape,\n isTextBox,\n} from './elements/Paragraph';\nexport { Run, RunFormatting, ThemeColorValue } from './elements/Run';\nexport {\n Section,\n PageOrientation,\n SectionType,\n PageNumberFormat,\n PageSize,\n Margins,\n Columns,\n PageNumbering,\n SectionProperties,\n LineNumbering,\n LineNumberingRestart,\n} from './elements/Section';\nexport {\n Table,\n TableAlignment,\n TableLayout,\n TableBorder,\n TableBorders,\n TableFormatting,\n} from './elements/Table';\nexport { TableRow, RowFormatting } from './elements/TableRow';\nexport {\n TableCell,\n CellBorder,\n CellBorders,\n CellShading,\n CellFormatting,\n} from './elements/TableCell';\nexport { TableGridChange, GridColumn, TableGridChangeProperties } from './elements/TableGridChange';\nexport {\n Image,\n ImageFormat,\n ImageProperties,\n ImageBorder,\n ImageEffects,\n PresetGeometry,\n BlipCompressionState,\n PicLockAttribute,\n PicNonVisualProperties,\n} from './elements/Image';\nexport { ImageRun } from './elements/ImageRun';\nexport { Shape, ShapeType, ShapeProperties, ShapeFill, ShapeOutline } from './elements/Shape';\nexport { TextBox, TextBoxProperties, TextBoxFill, TextBoxMargins } from './elements/TextBox';\nexport { Header, HeaderType, HeaderProperties } from './elements/Header';\nexport { Footer, FooterType, FooterProperties } from './elements/Footer';\nexport { Hyperlink, HyperlinkProperties } from './elements/Hyperlink';\nexport { Bookmark, BookmarkProperties } from './elements/Bookmark';\nexport { RangeMarker, RangeMarkerType, RangeMarkerProperties } from './elements/RangeMarker';\nexport { Comment, CommentProperties } from './elements/Comment';\nexport { Footnote, FootnoteType, FootnoteProperties } from './elements/Footnote';\nexport { Endnote, EndnoteType, EndnoteProperties } from './elements/Endnote';\nexport {\n Field,\n FieldType,\n FieldProperties,\n ComplexField,\n ComplexFieldProperties,\n FieldCharType,\n TOCFieldOptions,\n createTOCField,\n} from './elements/Field';\nexport {\n createNestedIFMergeField,\n createMergeField,\n createRefField,\n createIFField,\n createNestedField,\n parseHyperlinkInstruction,\n buildHyperlinkInstruction,\n isHyperlinkInstruction,\n ParsedHyperlinkInstruction,\n} from './elements/FieldHelpers';\nexport {\n StructuredDocumentTag,\n SDTProperties,\n SDTLockType,\n SDTContent,\n SDTPlaceholder,\n SDTDataBinding,\n ContentControlType,\n} from './elements/StructuredDocumentTag';\nexport { TableOfContents, TOCProperties } from './elements/TableOfContents';\nexport { TableOfContentsElement } from './elements/TableOfContentsElement';\nexport { AlternateContent } from './elements/AlternateContent';\nexport { MathParagraph, MathExpression } from './elements/MathElement';\nexport { CustomXmlBlock } from './elements/CustomXml';\nexport { PreservedElement, PreservedElementContext } from './elements/PreservedElement';\n\n// =============================================================================\n// PUBLIC API — Track Changes / Revisions\n// =============================================================================\n\nexport { Revision, RevisionType, RevisionProperties, FieldContext } from './elements/Revision';\nexport { RevisionContent, isRunContent, isHyperlinkContent } from './elements/RevisionContent';\nexport {\n RevisionLocation,\n RunPropertyChange,\n ParagraphPropertyChange,\n ParagraphFormattingPartial,\n ParagraphBorderDef,\n ParagraphBorders,\n ParagraphShading,\n TabStopDef,\n PropertyChangeBase,\n TablePropertyChange,\n TablePropertyChangeType,\n SectionPropertyChange,\n NumberingChange,\n AnyPropertyChange,\n isRunPropertyChange,\n isParagraphPropertyChange,\n isTablePropertyChange,\n isSectionPropertyChange,\n isNumberingChange,\n} from './elements/PropertyChangeTypes';\nexport {\n acceptRevisionsInMemory,\n AcceptRevisionsOptions,\n AcceptRevisionsResult,\n paragraphHasRevisions,\n getRevisionsFromParagraph,\n countRevisionsByType,\n stripRevisionsFromXml,\n} from './utils/InMemoryRevisionAcceptor';\nexport {\n MoveOperationHelper,\n MoveOperationOptions,\n MoveOperationResult,\n} from './utils/MoveOperationHelper';\nexport {\n SelectiveRevisionAcceptor,\n SelectiveAcceptResult,\n} from './utils/SelectiveRevisionAcceptor';\nexport {\n RevisionAwareProcessor,\n RevisionHandlingMode,\n RevisionProcessingOptions,\n SelectionCriteria,\n RevisionProcessingResult,\n ConflictInfo,\n ProcessingLogEntry,\n} from './utils/RevisionAwareProcessor';\nexport {\n ChangelogGenerator,\n ChangeEntry,\n ChangeCategory,\n ChangeLocation,\n ChangelogOptions,\n ChangelogFormat,\n ConsolidatedChange,\n ChangelogSummary,\n} from './utils/ChangelogGenerator';\n\n// =============================================================================\n// PUBLIC API — Formatting / Styles / Numbering\n// =============================================================================\n\nexport { Style, StyleType, StyleProperties } from './formatting/Style';\nexport {\n StylesManager,\n ValidationResult,\n LatentStylesConfig,\n LatentStyleException,\n} from './formatting/StylesManager';\nexport {\n NumberingLevel,\n NumberFormat,\n NumberAlignment,\n NumberingLevelProperties,\n WORD_NATIVE_BULLETS,\n WordNativeBullet,\n} from './formatting/NumberingLevel';\nexport { AbstractNumbering, AbstractNumberingProperties } from './formatting/AbstractNumbering';\nexport { NumberingInstance, NumberingInstanceProperties } from './formatting/NumberingInstance';\nexport {\n NumberingManager,\n NumberingConsolidationOptions,\n NumberingConsolidationResult,\n} from './formatting/NumberingManager';\nexport {\n StyleRunFormatting,\n StyleParagraphFormatting,\n Heading2TableOptions,\n StyleConfig,\n Heading2Config,\n ApplyCustomFormattingOptions,\n} from './types/styleConfig';\nexport { FormatOptions, StyleApplyOptions, EmphasisType, ListPrefix } from './types/formatting';\n\n// =============================================================================\n// PUBLIC API — Managers\n// =============================================================================\n\nexport { RevisionManager, RevisionCategory, RevisionSummary } from './elements/RevisionManager';\nexport { ImageManager } from './elements/ImageManager';\nexport { BookmarkManager } from './elements/BookmarkManager';\nexport { CommentManager } from './elements/CommentManager';\nexport { FootnoteManager } from './elements/FootnoteManager';\nexport { EndnoteManager } from './elements/EndnoteManager';\nexport { HeaderFooterManager } from './elements/HeaderFooterManager';\nexport { FontManager, FontFormat, FontEntry } from './elements/FontManager';\nexport {\n DrawingManager,\n DrawingElement,\n DrawingType,\n PreservedDrawing,\n} from './managers/DrawingManager';\n\n// =============================================================================\n// PUBLIC API — Image Optimization\n// =============================================================================\n\nexport type { ImageOptimizationResult } from './images/ImageOptimizer';\n\n// =============================================================================\n// TYPES — Common / Shared Type Definitions\n// =============================================================================\n\nexport {\n ShadingPattern,\n BasicShadingPattern,\n BorderStyle,\n ExtendedBorderStyle,\n FullBorderStyle,\n BorderDefinition,\n FourSidedBorders,\n TableBorderDefinitions,\n HorizontalAlignment,\n VerticalAlignment,\n PageVerticalAlignment,\n CellVerticalAlignment,\n ParagraphAlignment as CommonParagraphAlignment,\n TableAlignment as CommonTableAlignment,\n RowJustification,\n TextVerticalAlignment,\n TabAlignment,\n PositionAnchor,\n HorizontalAnchor,\n VerticalAnchor,\n TextDirection,\n SectionTextDirection,\n WidthType,\n ShadingConfig,\n buildShadingAttributes,\n TabLeader,\n TabStop,\n isShadingPattern,\n isBorderStyle,\n isHorizontalAlignment,\n isVerticalAlignment,\n isParagraphAlignment,\n isWidthType,\n DEFAULT_BORDER,\n NO_BORDER,\n} from './elements/CommonTypes';\nexport {\n ListCategory,\n NumberFormat as ListNumberFormat,\n BulletFormat,\n ListDetectionResult,\n ListAnalysis,\n ListNormalizationOptions,\n ListNormalizationReport,\n IndentationLevel,\n} from './types/list-types';\n\nexport { CompatibilityMode, CompatibilityInfo, CompatSetting } from './types/compatibility-types';\n\nexport {\n DocumentProtection,\n RevisionViewSettings,\n TrackChangesSettings,\n WebSettingsInfo,\n} from './types/settings-types';\n\n// =============================================================================\n// TYPES — Compatibility Upgrade\n// =============================================================================\n\nexport { CompatibilityUpgrader, UpgradeReport } from './utils/CompatibilityUpgrader';\nexport {\n LEGACY_COMPAT_ELEMENTS,\n LEGACY_COMPAT_ELEMENT_NAMES,\n MODERN_COMPAT_SETTINGS,\n MS_WORD_COMPAT_URI,\n} from './constants/legacyCompatFlags';\n\n// =============================================================================\n// UTILITIES — Unit Conversions\n// =============================================================================\n\nexport {\n STANDARD_DPI,\n UNITS,\n PAGE_SIZES,\n COMMON_MARGINS,\n twipsToPoints,\n twipsToInches,\n twipsToCm,\n twipsToEmus,\n emusToTwips,\n emusToInches,\n emusToCm,\n emusToPoints,\n emusToPixels,\n pointsToTwips,\n pointsToEmus,\n pointsToInches,\n pointsToCm,\n pointsToHalfPoints,\n halfPointsToPoints,\n inchesToTwips,\n inchesToEmus,\n inchesToPoints,\n inchesToCm,\n inchesToPixels,\n cmToTwips,\n cmToEmus,\n cmToInches,\n cmToPoints,\n cmToPixels,\n pixelsToEmus,\n pixelsToInches,\n pixelsToTwips,\n pixelsToCm,\n pixelsToPoints,\n} from './utils/units';\n\n// =============================================================================\n// UTILITIES — Validation, Corruption Detection, Error Handling\n// =============================================================================\n\nexport {\n validateDocxStructure,\n isBinaryFile,\n normalizePath,\n isValidZipBuffer,\n isTextContent,\n validateTwips,\n validateColor,\n validateHexColor,\n normalizeColor,\n validateNumberingId,\n validateLevel,\n validateAlignment,\n validateFontSize,\n validateNonEmptyString,\n validatePercentage,\n validateEmus,\n detectXmlInText,\n cleanXmlFromText,\n validateRunText,\n TextValidationResult,\n} from './utils/validation';\nexport {\n detectCorruptionInDocument,\n detectCorruptionInText,\n suggestFix,\n looksCorrupted,\n CorruptionReport,\n CorruptionLocation,\n CorruptionType,\n} from './utils/corruptionDetection';\nexport { isError, toError, wrapError, getErrorMessage } from './utils/errorHandling';\nexport {\n REVISION_RULES,\n ValidationSeverity,\n ValidationIssue,\n ValidationRule,\n ValidationOptions,\n AutoFixOptions,\n ValidationResult as RevisionValidationResult,\n FixAction,\n AutoFixResult,\n createIssueFromRule,\n getRuleByCode,\n getRulesBySeverity,\n getAutoFixableRules,\n RevisionValidator,\n RevisionAutoFixer,\n} from './validation';\n\n// =============================================================================\n// UTILITIES — Formatting, Parsing, Sanitization\n// =============================================================================\n\nexport {\n mergeFormatting,\n cloneFormatting,\n hasFormatting,\n cleanFormatting,\n isEqualFormatting,\n applyDefaults,\n} from './utils/formatting';\nexport {\n safeParseInt,\n parseOoxmlBoolean,\n isExplicitlySet,\n parseNumericAttribute,\n parseOnOffAttribute,\n} from './utils/parsingHelpers';\nexport {\n removeInvalidXmlChars,\n findInvalidXmlChars,\n hasInvalidXmlChars,\n XML_CONTROL_CHARS,\n} from './utils/xmlSanitization';\n\n// =============================================================================\n// UTILITIES — List Detection (kept for basic detection; normalization moved to consumer)\n// =============================================================================\n\nexport {\n detectTypedPrefix,\n detectListType,\n inferLevelFromIndentation,\n getParagraphIndentation,\n validateListSequence,\n getListCategoryFromFormat,\n getLevelFromFormat,\n TYPED_LIST_PATTERNS,\n PATTERN_TO_CATEGORY,\n FORMAT_TO_LEVEL,\n} from './utils/list-detection';\n\n// =============================================================================\n// UTILITIES — Logging\n// =============================================================================\n\nexport {\n ILogger,\n LogLevel,\n LogEntry,\n ConsoleLogger,\n SilentLogger,\n CollectingLogger,\n defaultLogger,\n createScopedLogger,\n createComponentLogger,\n getGlobalLogger,\n setGlobalLogger,\n resetGlobalLogger,\n} from './utils/logger';\n\n// =============================================================================\n// UTILITIES — Revision Walker\n// =============================================================================\n\nexport { RevisionWalker, RevisionWalkerOptions } from './utils/RevisionWalker';\nexport { resolveCellShading } from './utils/ShadingResolver';\nexport { decodeCnfStyle, getActiveConditionalsInPriorityOrder } from './utils/cnfStyleDecoder';\n\n// =============================================================================\n// UTILITIES — Cleanup\n// =============================================================================\n\nexport { CleanupHelper, CleanupOptions, CleanupReport } from './helpers/CleanupHelper';\n\n// =============================================================================\n// INTERNAL — ZIP Handling (advanced usage)\n// =============================================================================\n\nexport { ZipHandler } from './zip/ZipHandler';\nexport { ZipReader } from './zip/ZipReader';\nexport { ZipWriter } from './zip/ZipWriter';\nexport {\n ZipFile,\n FileMap,\n LoadOptions,\n SaveOptions,\n AddFileOptions,\n SizeLimitOptions,\n DEFAULT_SIZE_LIMITS,\n REQUIRED_DOCX_FILES,\n DOCX_PATHS,\n} from './zip/types';\nexport {\n DocxError,\n DocxNotFoundError,\n InvalidDocxError,\n CorruptedArchiveError,\n MissingRequiredFileError,\n FileOperationError,\n} from './zip/errors';\n\n// =============================================================================\n// INTERNAL — XML Builder and Parser (advanced usage)\n// =============================================================================\n\nexport { XMLBuilder, XMLElement } from './xml/XMLBuilder';\nexport {\n XMLParser,\n ParseToObjectOptions,\n ParsedXMLValue,\n ParsedXMLObject,\n DEFAULT_MAX_NESTING_DEPTH,\n} from './xml/XMLParser';\n\n// =============================================================================\n// INTERNAL — Parser, Generator, Validator (advanced usage)\n// =============================================================================\n\nexport { Relationship, RelationshipType, RelationshipProperties } from './core/Relationship';\nexport { RelationshipManager } from './core/RelationshipManager';\nexport { DocumentParser, ParseError } from './core/DocumentParser';\nexport { DocumentGenerator, IZipHandlerReader } from './core/DocumentGenerator';\nexport { DocumentValidator, SizeEstimate, MemoryOptions } from './core/DocumentValidator';\nexport { DocumentIdManager } from './core/DocumentIdManager';\n\n// =============================================================================\n// INTERNAL — Document Subsystem Classes (advanced usage)\n// =============================================================================\n\nexport { DocumentContent, BodyElement } from './core/DocumentContent';\n\n// =============================================================================\n// INTERNAL — Constants\n// =============================================================================\n\nexport { LIMITS } from './constants/limits';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingManager.js","sourceRoot":"","sources":["../../src/managers/DrawingManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * DrawingManager - Manages all drawing elements in a document\r\n *\r\n * Centralizes management of images, shapes, and text boxes.\r\n * Assigns unique IDs and handles relationship management.\r\n */\r\n\r\nimport { Image } from '../elements/Image';\r\nimport { Shape } from '../elements/Shape';\r\nimport { TextBox } from '../elements/TextBox';\r\n\r\n/**\r\n * Type representing any drawing element\r\n */\r\nexport type DrawingElement = Image | Shape | TextBox;\r\n\r\n/**\r\n * Drawing type discriminator\r\n */\r\nexport type DrawingType = 'image' | 'shape' | 'textbox' | 'preserved';\r\n\r\n/**\r\n * Preserved drawing (SmartArt, Chart, WordArt)\r\n * These are stored as raw XML for round-trip preservation\r\n */\r\nexport interface PreservedDrawing {\r\n /** Type of preserved drawing */\r\n type: 'smartart' | 'chart' | 'wordart';\r\n /** Raw XML content */\r\n xml: string;\r\n /** Relationship IDs referenced by this drawing */\r\n relationshipIds: string[];\r\n /** Unique ID for this drawing */\r\n id: string;\r\n}\r\n\r\n/**\r\n * Manages all drawing elements in a document\r\n *\r\n * Performance: Uses type-indexed Sets for O(1) type-specific lookups\r\n * instead of O(n) linear scans through the main Map.\r\n */\r\nexport class DrawingManager {\r\n private drawings = new Map<string, DrawingElement | PreservedDrawing>();\r\n private nextId = 1;\r\n\r\n // Type-indexed Sets for O(1) type-specific lookups\r\n private imageIds = new Set<string>();\r\n private shapeIds = new Set<string>();\r\n private textboxIds = new Set<string>();\r\n private preservedIds = new Set<string>();\r\n\r\n /**\r\n * Creates a new DrawingManager\r\n */\r\n constructor() {\r\n // Empty constructor\r\n }\r\n\r\n /**\r\n * Adds an image to the manager\r\n * @param image Image to add\r\n * @returns Assigned ID\r\n */\r\n addImage(image: Image): string {\r\n const id = this.generateId();\r\n image.setDocPrId(this.nextId - 1);\r\n this.drawings.set(id, image);\r\n this.imageIds.add(id);\r\n return id;\r\n }\r\n\r\n /**\r\n * Adds a shape to the manager\r\n * @param shape Shape to add\r\n * @returns Assigned ID\r\n */\r\n addShape(shape: Shape): string {\r\n const id = this.generateId();\r\n shape.setDocPrId(this.nextId - 1);\r\n this.drawings.set(id, shape);\r\n this.shapeIds.add(id);\r\n return id;\r\n }\r\n\r\n /**\r\n * Adds a text box to the manager\r\n * @param textbox TextBox to add\r\n * @returns Assigned ID\r\n */\r\n addTextBox(textbox: TextBox): string {\r\n const id = this.generateId();\r\n textbox.setDocPrId(this.nextId - 1);\r\n this.drawings.set(id, textbox);\r\n this.textboxIds.add(id);\r\n return id;\r\n }\r\n\r\n /**\r\n * Adds a preserved drawing (SmartArt, Chart, WordArt)\r\n * @param drawing Preserved drawing to add\r\n * @returns Assigned ID\r\n */\r\n addPreservedDrawing(drawing: PreservedDrawing): string {\r\n const id = this.generateId();\r\n this.drawings.set(id, { ...drawing, id });\r\n this.preservedIds.add(id);\r\n return id;\r\n }\r\n\r\n /**\r\n * Gets a drawing by ID\r\n * @param id Drawing ID\r\n * @returns Drawing element or undefined\r\n */\r\n getDrawing(id: string): DrawingElement | PreservedDrawing | undefined {\r\n return this.drawings.get(id);\r\n }\r\n\r\n /**\r\n * Gets all drawings\r\n * @returns Array of all drawing elements\r\n */\r\n getAllDrawings(): (DrawingElement | PreservedDrawing)[] {\r\n return Array.from(this.drawings.values());\r\n }\r\n\r\n /**\r\n * Gets all images\r\n * Performance: O(k) where k = number of images (uses indexed lookup)\r\n * @returns Array of images\r\n */\r\n getAllImages(): Image[] {\r\n const images: Image[] = [];\r\n for (const id of this.imageIds) {\r\n const drawing = this.drawings.get(id);\r\n if (drawing instanceof Image) {\r\n images.push(drawing);\r\n }\r\n }\r\n return images;\r\n }\r\n\r\n /**\r\n * Gets all shapes\r\n * Performance: O(k) where k = number of shapes (uses indexed lookup)\r\n * @returns Array of shapes\r\n */\r\n getAllShapes(): Shape[] {\r\n const shapes: Shape[] = [];\r\n for (const id of this.shapeIds) {\r\n const drawing = this.drawings.get(id);\r\n if (drawing instanceof Shape) {\r\n shapes.push(drawing);\r\n }\r\n }\r\n return shapes;\r\n }\r\n\r\n /**\r\n * Gets all text boxes\r\n * Performance: O(k) where k = number of text boxes (uses indexed lookup)\r\n * @returns Array of text boxes\r\n */\r\n getAllTextBoxes(): TextBox[] {\r\n const textboxes: TextBox[] = [];\r\n for (const id of this.textboxIds) {\r\n const drawing = this.drawings.get(id);\r\n if (drawing instanceof TextBox) {\r\n textboxes.push(drawing);\r\n }\r\n }\r\n return textboxes;\r\n }\r\n\r\n /**\r\n * Gets all preserved drawings\r\n * Performance: O(k) where k = number of preserved drawings (uses indexed lookup)\r\n * @returns Array of preserved drawings\r\n */\r\n getAllPreservedDrawings(): PreservedDrawing[] {\r\n const preserved: PreservedDrawing[] = [];\r\n for (const id of this.preservedIds) {\r\n const drawing = this.drawings.get(id);\r\n if (drawing && this.isPreservedDrawing(drawing)) {\r\n preserved.push(drawing);\r\n }\r\n }\r\n return preserved;\r\n }\r\n\r\n /**\r\n * Removes a drawing by ID\r\n * @param id Drawing ID\r\n * @returns True if removed, false if not found\r\n */\r\n removeDrawing(id: string): boolean {\r\n const deleted = this.drawings.delete(id);\r\n if (deleted) {\r\n // Remove from type-specific indices\r\n this.imageIds.delete(id);\r\n this.shapeIds.delete(id);\r\n this.textboxIds.delete(id);\r\n this.preservedIds.delete(id);\r\n }\r\n return deleted;\r\n }\r\n\r\n /**\r\n * Gets the total number of drawings\r\n * @returns Number of drawings\r\n */\r\n getCount(): number {\r\n return this.drawings.size;\r\n }\r\n\r\n /**\r\n * Checks if the manager has any drawings\r\n * @returns True if empty, false otherwise\r\n */\r\n isEmpty(): boolean {\r\n return this.drawings.size === 0;\r\n }\r\n\r\n /**\r\n * Clears all drawings\r\n */\r\n clear(): void {\r\n this.drawings.clear();\r\n this.imageIds.clear();\r\n this.shapeIds.clear();\r\n this.textboxIds.clear();\r\n this.preservedIds.clear();\r\n this.nextId = 1;\r\n }\r\n\r\n /**\r\n * Gets the drawing type\r\n * @param drawing Drawing element\r\n * @returns Drawing type\r\n */\r\n getDrawingType(drawing: DrawingElement | PreservedDrawing): DrawingType {\r\n if (drawing instanceof Image) {\r\n return 'image';\r\n } else if (drawing instanceof Shape) {\r\n return 'shape';\r\n } else if (drawing instanceof TextBox) {\r\n return 'textbox';\r\n } else {\r\n return 'preserved';\r\n }\r\n }\r\n\r\n /**\r\n * Type guard for PreservedDrawing\r\n * @param drawing Drawing to check\r\n * @returns True if PreservedDrawing\r\n */\r\n private isPreservedDrawing(drawing: any): drawing is PreservedDrawing {\r\n return (\r\n drawing &&\r\n typeof drawing === 'object' &&\r\n 'type' in drawing &&\r\n 'xml' in drawing &&\r\n 'relationshipIds' in drawing &&\r\n (drawing.type === 'smartart' || drawing.type === 'chart' || drawing.type === 'wordart')\r\n );\r\n }\r\n\r\n /**\r\n * Generates a unique ID for a drawing\r\n * @private\r\n * @returns Unique ID string\r\n */\r\n private generateId(): string {\r\n const id = `drawing_${this.nextId}`;\r\n this.nextId++;\r\n return id;\r\n }\r\n\r\n /**\r\n * Assigns sequential docPr IDs to all drawings\r\n * Call this before generating the document to ensure unique IDs\r\n */\r\n assignIds(): void {\r\n let docPrId = 1;\r\n for (const drawing of this.drawings.values()) {\r\n if (drawing instanceof Image) {\r\n drawing.setDocPrId(docPrId++);\r\n } else if (drawing instanceof Shape) {\r\n drawing.setDocPrId(docPrId++);\r\n } else if (drawing instanceof TextBox) {\r\n drawing.setDocPrId(docPrId++);\r\n }\r\n // PreservedDrawings don't need docPrId assignment (already in XML)\r\n }\r\n }\r\n\r\n /**\r\n * Gets statistics about the drawings\r\n * Performance: O(1) using indexed Set sizes\r\n * @returns Statistics object\r\n */\r\n getStats(): {\r\n total: number;\r\n images: number;\r\n shapes: number;\r\n textboxes: number;\r\n preserved: number;\r\n } {\r\n return {\r\n total: this.drawings.size,\r\n images: this.imageIds.size,\r\n shapes: this.shapeIds.size,\r\n textboxes: this.textboxIds.size,\r\n preserved: this.preservedIds.size,\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DrawingManager.js","sourceRoot":"","sources":["../../src/managers/DrawingManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DrawingManager - Manages all drawing elements in a document\n *\n * Centralizes management of images, shapes, and text boxes.\n * Assigns unique IDs and handles relationship management.\n */\n\nimport { Image } from '../elements/Image';\nimport { Shape } from '../elements/Shape';\nimport { TextBox } from '../elements/TextBox';\n\n/**\n * Type representing any drawing element\n */\nexport type DrawingElement = Image | Shape | TextBox;\n\n/**\n * Drawing type discriminator\n */\nexport type DrawingType = 'image' | 'shape' | 'textbox' | 'preserved';\n\n/**\n * Preserved drawing (SmartArt, Chart, WordArt)\n * These are stored as raw XML for round-trip preservation\n */\nexport interface PreservedDrawing {\n /** Type of preserved drawing */\n type: 'smartart' | 'chart' | 'wordart';\n /** Raw XML content */\n xml: string;\n /** Relationship IDs referenced by this drawing */\n relationshipIds: string[];\n /** Unique ID for this drawing */\n id: string;\n}\n\n/**\n * Manages all drawing elements in a document\n *\n * Performance: Uses type-indexed Sets for O(1) type-specific lookups\n * instead of O(n) linear scans through the main Map.\n */\nexport class DrawingManager {\n private drawings = new Map<string, DrawingElement | PreservedDrawing>();\n private nextId = 1;\n\n // Type-indexed Sets for O(1) type-specific lookups\n private imageIds = new Set<string>();\n private shapeIds = new Set<string>();\n private textboxIds = new Set<string>();\n private preservedIds = new Set<string>();\n\n /**\n * Creates a new DrawingManager\n */\n constructor() {\n // Empty constructor\n }\n\n /**\n * Adds an image to the manager\n * @param image Image to add\n * @returns Assigned ID\n */\n addImage(image: Image): string {\n const id = this.generateId();\n image.setDocPrId(this.nextId - 1);\n this.drawings.set(id, image);\n this.imageIds.add(id);\n return id;\n }\n\n /**\n * Adds a shape to the manager\n * @param shape Shape to add\n * @returns Assigned ID\n */\n addShape(shape: Shape): string {\n const id = this.generateId();\n shape.setDocPrId(this.nextId - 1);\n this.drawings.set(id, shape);\n this.shapeIds.add(id);\n return id;\n }\n\n /**\n * Adds a text box to the manager\n * @param textbox TextBox to add\n * @returns Assigned ID\n */\n addTextBox(textbox: TextBox): string {\n const id = this.generateId();\n textbox.setDocPrId(this.nextId - 1);\n this.drawings.set(id, textbox);\n this.textboxIds.add(id);\n return id;\n }\n\n /**\n * Adds a preserved drawing (SmartArt, Chart, WordArt)\n * @param drawing Preserved drawing to add\n * @returns Assigned ID\n */\n addPreservedDrawing(drawing: PreservedDrawing): string {\n const id = this.generateId();\n this.drawings.set(id, { ...drawing, id });\n this.preservedIds.add(id);\n return id;\n }\n\n /**\n * Gets a drawing by ID\n * @param id Drawing ID\n * @returns Drawing element or undefined\n */\n getDrawing(id: string): DrawingElement | PreservedDrawing | undefined {\n return this.drawings.get(id);\n }\n\n /**\n * Gets all drawings\n * @returns Array of all drawing elements\n */\n getAllDrawings(): (DrawingElement | PreservedDrawing)[] {\n return Array.from(this.drawings.values());\n }\n\n /**\n * Gets all images\n * Performance: O(k) where k = number of images (uses indexed lookup)\n * @returns Array of images\n */\n getAllImages(): Image[] {\n const images: Image[] = [];\n for (const id of this.imageIds) {\n const drawing = this.drawings.get(id);\n if (drawing instanceof Image) {\n images.push(drawing);\n }\n }\n return images;\n }\n\n /**\n * Gets all shapes\n * Performance: O(k) where k = number of shapes (uses indexed lookup)\n * @returns Array of shapes\n */\n getAllShapes(): Shape[] {\n const shapes: Shape[] = [];\n for (const id of this.shapeIds) {\n const drawing = this.drawings.get(id);\n if (drawing instanceof Shape) {\n shapes.push(drawing);\n }\n }\n return shapes;\n }\n\n /**\n * Gets all text boxes\n * Performance: O(k) where k = number of text boxes (uses indexed lookup)\n * @returns Array of text boxes\n */\n getAllTextBoxes(): TextBox[] {\n const textboxes: TextBox[] = [];\n for (const id of this.textboxIds) {\n const drawing = this.drawings.get(id);\n if (drawing instanceof TextBox) {\n textboxes.push(drawing);\n }\n }\n return textboxes;\n }\n\n /**\n * Gets all preserved drawings\n * Performance: O(k) where k = number of preserved drawings (uses indexed lookup)\n * @returns Array of preserved drawings\n */\n getAllPreservedDrawings(): PreservedDrawing[] {\n const preserved: PreservedDrawing[] = [];\n for (const id of this.preservedIds) {\n const drawing = this.drawings.get(id);\n if (drawing && this.isPreservedDrawing(drawing)) {\n preserved.push(drawing);\n }\n }\n return preserved;\n }\n\n /**\n * Removes a drawing by ID\n * @param id Drawing ID\n * @returns True if removed, false if not found\n */\n removeDrawing(id: string): boolean {\n const deleted = this.drawings.delete(id);\n if (deleted) {\n // Remove from type-specific indices\n this.imageIds.delete(id);\n this.shapeIds.delete(id);\n this.textboxIds.delete(id);\n this.preservedIds.delete(id);\n }\n return deleted;\n }\n\n /**\n * Gets the total number of drawings\n * @returns Number of drawings\n */\n getCount(): number {\n return this.drawings.size;\n }\n\n /**\n * Checks if the manager has any drawings\n * @returns True if empty, false otherwise\n */\n isEmpty(): boolean {\n return this.drawings.size === 0;\n }\n\n /**\n * Clears all drawings\n */\n clear(): void {\n this.drawings.clear();\n this.imageIds.clear();\n this.shapeIds.clear();\n this.textboxIds.clear();\n this.preservedIds.clear();\n this.nextId = 1;\n }\n\n /**\n * Gets the drawing type\n * @param drawing Drawing element\n * @returns Drawing type\n */\n getDrawingType(drawing: DrawingElement | PreservedDrawing): DrawingType {\n if (drawing instanceof Image) {\n return 'image';\n } else if (drawing instanceof Shape) {\n return 'shape';\n } else if (drawing instanceof TextBox) {\n return 'textbox';\n } else {\n return 'preserved';\n }\n }\n\n /**\n * Type guard for PreservedDrawing\n * @param drawing Drawing to check\n * @returns True if PreservedDrawing\n */\n private isPreservedDrawing(drawing: any): drawing is PreservedDrawing {\n return (\n drawing &&\n typeof drawing === 'object' &&\n 'type' in drawing &&\n 'xml' in drawing &&\n 'relationshipIds' in drawing &&\n (drawing.type === 'smartart' || drawing.type === 'chart' || drawing.type === 'wordart')\n );\n }\n\n /**\n * Generates a unique ID for a drawing\n * @private\n * @returns Unique ID string\n */\n private generateId(): string {\n const id = `drawing_${this.nextId}`;\n this.nextId++;\n return id;\n }\n\n /**\n * Assigns sequential docPr IDs to all drawings\n * Call this before generating the document to ensure unique IDs\n */\n assignIds(): void {\n let docPrId = 1;\n for (const drawing of this.drawings.values()) {\n if (drawing instanceof Image) {\n drawing.setDocPrId(docPrId++);\n } else if (drawing instanceof Shape) {\n drawing.setDocPrId(docPrId++);\n } else if (drawing instanceof TextBox) {\n drawing.setDocPrId(docPrId++);\n }\n // PreservedDrawings don't need docPrId assignment (already in XML)\n }\n }\n\n /**\n * Gets statistics about the drawings\n * Performance: O(1) using indexed Set sizes\n * @returns Statistics object\n */\n getStats(): {\n total: number;\n images: number;\n shapes: number;\n textboxes: number;\n preserved: number;\n } {\n return {\n total: this.drawings.size,\n images: this.imageIds.size,\n shapes: this.shapeIds.size,\n textboxes: this.textboxIds.size,\n preserved: this.preservedIds.size,\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentTrackingContext.d.ts","sourceRoot":"","sources":["../../src/tracking/DocumentTrackingContext.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAsB,MAAM,iBAAiB,CAAC;AAM1D,OAAO,KAAK,EAAE,eAAe,EAAiB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1F,MAAM,WAAW,qBAAqB;IAEpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAKD,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,YAAY,CAAiC;IAGrD,OAAO,CAAC,cAAc,CAAoC;IAG1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAuB1C;gBAMS,eAAe,EAAE,eAAe;IAQ5C,MAAM,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAa7C,OAAO,IAAI,IAAI;IAUf,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY/B,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,MAAM;IAInB,kBAAkB,IAAI,eAAe;IAIrC,wBAAwB,IAAI,OAAO;IAInC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"DocumentTrackingContext.d.ts","sourceRoot":"","sources":["../../src/tracking/DocumentTrackingContext.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAgB,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAsB,MAAM,iBAAiB,CAAC;AAM1D,OAAO,KAAK,EAAE,eAAe,EAAiB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1F,MAAM,WAAW,qBAAqB;IAEpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAKD,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,YAAY,CAAiC;IAGrD,OAAO,CAAC,cAAc,CAAoC;IAG1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAuB1C;gBAMS,eAAe,EAAE,eAAe;IAQ5C,MAAM,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAa7C,OAAO,IAAI,IAAI;IAUf,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY/B,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,MAAM;IAInB,kBAAkB,IAAI,eAAe;IAIrC,wBAAwB,IAAI,OAAO;IAInC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAsB9F,4BAA4B,CAC1B,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI;IAgBP,oBAAoB,CAClB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI;IAiBP,gBAAgB,CACd,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI;IA4BP,kBAAkB,CAChB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI;IAgBP,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB7D,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB5D,mBAAmB,IAAI,QAAQ,EAAE;IAyKjC,OAAO,CAAC,sBAAsB;IAyC9B,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,cAAc;IAYtB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,QAAQ;IAOpD,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,QAAQ;IAOnD,eAAe,IAAI,MAAM;IAOzB,iBAAiB,IAAI,OAAO;IAO5B,mBAAmB,IAAI,IAAI;CAG5B"}
|
|
@@ -80,8 +80,7 @@ class DocumentTrackingContext {
|
|
|
80
80
|
return;
|
|
81
81
|
if (this.valuesEqual(oldValue, newValue))
|
|
82
82
|
return;
|
|
83
|
-
if (!this.trackFormatting &&
|
|
84
|
-
DocumentTrackingContext.FORMATTING_PROPERTIES.has(property)) {
|
|
83
|
+
if (!this.trackFormatting && DocumentTrackingContext.FORMATTING_PROPERTIES.has(property)) {
|
|
85
84
|
return;
|
|
86
85
|
}
|
|
87
86
|
const key = `runProp:${property}:${this.stringifyValue(newValue)}@${this.getElementId(run)}`;
|
|
@@ -216,12 +215,14 @@ class DocumentTrackingContext {
|
|
|
216
215
|
changes.push(pending);
|
|
217
216
|
tableChanges.set(pending.element, changes);
|
|
218
217
|
}
|
|
219
|
-
else if (pending.type === 'tableRowPropertiesChange' &&
|
|
218
|
+
else if (pending.type === 'tableRowPropertiesChange' &&
|
|
219
|
+
pending.element instanceof TableRow_1.TableRow) {
|
|
220
220
|
const changes = rowChanges.get(pending.element) || [];
|
|
221
221
|
changes.push(pending);
|
|
222
222
|
rowChanges.set(pending.element, changes);
|
|
223
223
|
}
|
|
224
|
-
else if (pending.type === 'tableCellPropertiesChange' &&
|
|
224
|
+
else if (pending.type === 'tableCellPropertiesChange' &&
|
|
225
|
+
pending.element instanceof TableCell_1.TableCell) {
|
|
225
226
|
const changes = cellChanges.get(pending.element) || [];
|
|
226
227
|
changes.push(pending);
|
|
227
228
|
cellChanges.set(pending.element, changes);
|
|
@@ -283,7 +284,12 @@ class DocumentTrackingContext {
|
|
|
283
284
|
row.setTrPrChange({ ...existing, previousProperties: merged });
|
|
284
285
|
}
|
|
285
286
|
else {
|
|
286
|
-
row.setTrPrChange({
|
|
287
|
+
row.setTrPrChange({
|
|
288
|
+
author: this.author,
|
|
289
|
+
date,
|
|
290
|
+
id: String(getNextId()),
|
|
291
|
+
previousProperties: prevProps,
|
|
292
|
+
});
|
|
287
293
|
}
|
|
288
294
|
});
|
|
289
295
|
}
|
|
@@ -295,7 +301,12 @@ class DocumentTrackingContext {
|
|
|
295
301
|
cell.setTcPrChange({ ...existing, previousProperties: merged });
|
|
296
302
|
}
|
|
297
303
|
else {
|
|
298
|
-
cell.setTcPrChange({
|
|
304
|
+
cell.setTcPrChange({
|
|
305
|
+
author: this.author,
|
|
306
|
+
date,
|
|
307
|
+
id: String(getNextId()),
|
|
308
|
+
previousProperties: prevProps,
|
|
309
|
+
});
|
|
299
310
|
}
|
|
300
311
|
});
|
|
301
312
|
}
|
|
@@ -307,7 +318,12 @@ class DocumentTrackingContext {
|
|
|
307
318
|
section.setSectPrChange({ ...existing, previousProperties: merged });
|
|
308
319
|
}
|
|
309
320
|
else {
|
|
310
|
-
section.setSectPrChange({
|
|
321
|
+
section.setSectPrChange({
|
|
322
|
+
author: this.author,
|
|
323
|
+
date,
|
|
324
|
+
id: String(getNextId()),
|
|
325
|
+
previousProperties: prevProps,
|
|
326
|
+
});
|
|
311
327
|
}
|
|
312
328
|
});
|
|
313
329
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentTrackingContext.js","sourceRoot":"","sources":["../../src/tracking/DocumentTrackingContext.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * DocumentTrackingContext - Implementation of automatic change tracking\r\n *\r\n * Manages pending changes and creates Revision objects when flushed.\r\n * Supports consolidation of similar changes within a time window.\r\n *\r\n * @module DocumentTrackingContext\r\n */\r\n\r\nimport { Revision, RevisionType } from '../elements/Revision';\r\nimport { RevisionManager } from '../elements/RevisionManager';\r\nimport { Run, type RunFormatting } from '../elements/Run';\r\nimport { Paragraph } from '../elements/Paragraph';\r\nimport { Table } from '../elements/Table';\r\nimport { TableRow } from '../elements/TableRow';\r\nimport { TableCell } from '../elements/TableCell';\r\nimport { Section } from '../elements/Section';\r\nimport type { TrackingContext, PendingChange, TrackableElement } from './TrackingContext';\r\nimport { formatDateForXml } from '../utils/dateFormatting';\r\n\r\n/**\r\n * Enable options for tracking context\r\n */\r\nexport interface TrackingEnableOptions {\r\n /** Author name for new revisions (default: 'DocHub') */\r\n author?: string;\r\n /** Whether to track formatting changes (default: true) */\r\n trackFormatting?: boolean;\r\n}\r\n\r\n/**\r\n * Implementation of TrackingContext for Document\r\n */\r\nexport class DocumentTrackingContext implements TrackingContext {\r\n private enabled = false;\r\n private trackFormatting = true;\r\n private author = 'DocHub';\r\n private revisionManager: RevisionManager;\r\n\r\n /** Counter for assigning stable element IDs */\r\n private elementIdCounter = 0;\r\n /** Stable element identity map (WeakMap so elements can be GC'd) */\r\n private elementIdMap = new WeakMap<object, number>();\r\n\r\n /** Pending changes waiting to be flushed */\r\n private pendingChanges = new Map<string, PendingChange>();\r\n\r\n /** Properties considered \"formatting\" (vs structural) */\r\n private static readonly FORMATTING_PROPERTIES = new Set([\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strike',\r\n 'dstrike',\r\n 'subscript',\r\n 'superscript',\r\n 'font',\r\n 'size',\r\n 'color',\r\n 'highlight',\r\n 'smallCaps',\r\n 'allCaps',\r\n 'characterSpacing',\r\n 'scaling',\r\n 'position',\r\n 'emphasis',\r\n 'shadow',\r\n 'emboss',\r\n 'imprint',\r\n 'outline',\r\n 'vanish',\r\n ]);\r\n\r\n /**\r\n * Creates a new DocumentTrackingContext\r\n * @param revisionManager - RevisionManager to register revisions with\r\n */\r\n constructor(revisionManager: RevisionManager) {\r\n this.revisionManager = revisionManager;\r\n }\r\n\r\n /**\r\n * Enable change tracking\r\n * @param options - Enable options\r\n */\r\n enable(options?: TrackingEnableOptions): void {\r\n this.enabled = true;\r\n if (options?.author) {\r\n this.author = options.author;\r\n }\r\n if (options?.trackFormatting !== undefined) {\r\n this.trackFormatting = options.trackFormatting;\r\n }\r\n }\r\n\r\n /**\r\n * Disable change tracking and flush pending changes\r\n */\r\n disable(): void {\r\n this.flushPendingChanges();\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Set the author for new revisions\r\n * Flushes any pending changes before switching to prevent mixed authorship\r\n * @param author - Author name\r\n */\r\n setAuthor(author: string): void {\r\n // Flush pending changes before switching authors to prevent mixed authorship\r\n if (this.enabled && this.pendingChanges.size > 0) {\r\n this.flushPendingChanges();\r\n }\r\n this.author = author;\r\n }\r\n\r\n // ═══════════════════════════════════════════════════════════════════════════\r\n // TrackingContext Interface Implementation\r\n // ═══════════════════════════════════════════════════════════════════════════\r\n\r\n isEnabled(): boolean {\r\n return this.enabled;\r\n }\r\n\r\n getAuthor(): string {\r\n return this.author;\r\n }\r\n\r\n getRevisionManager(): RevisionManager {\r\n return this.revisionManager;\r\n }\r\n\r\n isTrackFormattingEnabled(): boolean {\r\n return this.trackFormatting;\r\n }\r\n\r\n trackRunPropertyChange(\r\n run: Run,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void {\r\n if (!this.enabled) return;\r\n if (this.valuesEqual(oldValue, newValue)) return;\r\n\r\n // Skip formatting changes if not tracking them\r\n if (\r\n !this.trackFormatting &&\r\n DocumentTrackingContext.FORMATTING_PROPERTIES.has(property)\r\n ) {\r\n return;\r\n }\r\n\r\n // Create consolidation key with element identity\r\n const key = `runProp:${property}:${this.stringifyValue(newValue)}@${this.getElementId(run)}`;\r\n\r\n this.addPendingChange(key, {\r\n type: 'runPropertiesChange',\r\n property,\r\n previousValue: oldValue,\r\n newValue,\r\n element: run,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n trackParagraphPropertyChange(\r\n paragraph: TrackableElement,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void {\r\n if (!this.enabled) return;\r\n if (this.valuesEqual(oldValue, newValue)) return;\r\n\r\n const key = `paraProp:${property}:${this.stringifyValue(newValue)}@${this.getElementId(paragraph)}`;\r\n\r\n this.addPendingChange(key, {\r\n type: 'paragraphPropertiesChange',\r\n property,\r\n previousValue: oldValue,\r\n newValue,\r\n element: paragraph,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n trackHyperlinkChange(\r\n hyperlink: TrackableElement,\r\n changeType: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void {\r\n if (!this.enabled) return;\r\n if (this.valuesEqual(oldValue, newValue)) return;\r\n\r\n // Hyperlink changes use dedicated type for proper categorization\r\n const key = `hyperlink:${changeType}:${this.stringifyValue(newValue)}@${this.getElementId(hyperlink)}`;\r\n\r\n this.addPendingChange(key, {\r\n type: 'hyperlinkChange',\r\n property: changeType,\r\n previousValue: oldValue,\r\n newValue,\r\n element: hyperlink,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n trackTableChange(\r\n element: TrackableElement,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void {\r\n if (!this.enabled) return;\r\n if (this.valuesEqual(oldValue, newValue)) return;\r\n\r\n // Determine revision type based on element type using instanceof (minification-safe)\r\n let type: RevisionType = 'tablePropertiesChange';\r\n let elementType = 'Table';\r\n\r\n if (element instanceof TableRow) {\r\n type = 'tableRowPropertiesChange';\r\n elementType = 'TableRow';\r\n } else if (element instanceof TableCell) {\r\n type = 'tableCellPropertiesChange';\r\n elementType = 'TableCell';\r\n }\r\n\r\n const key = `table:${elementType}:${property}:${this.stringifyValue(newValue)}@${this.getElementId(element)}`;\r\n\r\n this.addPendingChange(key, {\r\n type,\r\n property,\r\n previousValue: oldValue,\r\n newValue,\r\n element,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n trackSectionChange(\r\n section: TrackableElement,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void {\r\n if (!this.enabled) return;\r\n if (this.valuesEqual(oldValue, newValue)) return;\r\n\r\n const key = `section:${property}:${this.stringifyValue(newValue)}@${this.getElementId(section)}`;\r\n\r\n this.addPendingChange(key, {\r\n type: 'sectionPropertiesChange',\r\n property,\r\n previousValue: oldValue,\r\n newValue,\r\n element: section,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n trackInsertion(element: TrackableElement, text: string): void {\r\n if (!this.enabled) return;\r\n if (!text) return;\r\n\r\n const key = `insert:${Date.now()}:${text.substring(0, 20)}`;\r\n\r\n this.addPendingChange(key, {\r\n type: 'insert',\r\n property: 'text',\r\n previousValue: undefined,\r\n newValue: text,\r\n element,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n trackDeletion(element: TrackableElement, text: string): void {\r\n if (!this.enabled) return;\r\n if (!text) return;\r\n\r\n const key = `delete:${Date.now()}:${text.substring(0, 20)}`;\r\n\r\n this.addPendingChange(key, {\r\n type: 'delete',\r\n property: 'text',\r\n previousValue: text,\r\n newValue: undefined,\r\n element,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n flushPendingChanges(): Revision[] {\r\n const revisions: Revision[] = [];\r\n\r\n // Group pending changes by element for consolidation\r\n const paragraphChanges = new Map<Paragraph, PendingChange[]>();\r\n const tableChanges = new Map<Table, PendingChange[]>();\r\n const rowChanges = new Map<TableRow, PendingChange[]>();\r\n const cellChanges = new Map<TableCell, PendingChange[]>();\r\n const sectionChanges = new Map<Section, PendingChange[]>();\r\n const runChanges = new Map<Run, PendingChange[]>();\r\n\r\n for (const [, pending] of this.pendingChanges) {\r\n const revision = this.createRevision(pending);\r\n this.revisionManager.register(revision);\r\n revisions.push(revision);\r\n\r\n // Collect changes by element type for *PrChange application\r\n if (pending.type === 'paragraphPropertiesChange' && pending.element instanceof Paragraph) {\r\n const changes = paragraphChanges.get(pending.element) || [];\r\n changes.push(pending);\r\n paragraphChanges.set(pending.element, changes);\r\n } else if (pending.type === 'tablePropertiesChange' && pending.element instanceof Table) {\r\n const changes = tableChanges.get(pending.element) || [];\r\n changes.push(pending);\r\n tableChanges.set(pending.element, changes);\r\n } else if (pending.type === 'tableRowPropertiesChange' && pending.element instanceof TableRow) {\r\n const changes = rowChanges.get(pending.element) || [];\r\n changes.push(pending);\r\n rowChanges.set(pending.element, changes);\r\n } else if (pending.type === 'tableCellPropertiesChange' && pending.element instanceof TableCell) {\r\n const changes = cellChanges.get(pending.element) || [];\r\n changes.push(pending);\r\n cellChanges.set(pending.element, changes);\r\n } else if (pending.type === 'sectionPropertiesChange' && pending.element instanceof Section) {\r\n const changes = sectionChanges.get(pending.element) || [];\r\n changes.push(pending);\r\n sectionChanges.set(pending.element, changes);\r\n } else if (pending.type === 'runPropertiesChange' && pending.element instanceof Run) {\r\n const changes = runChanges.get(pending.element) || [];\r\n changes.push(pending);\r\n runChanges.set(pending.element, changes);\r\n }\r\n }\r\n\r\n // Apply pPrChange to each paragraph that has property changes\r\n for (const [paragraph, changes] of paragraphChanges) {\r\n this.applyParagraphPrChange(paragraph, changes);\r\n }\r\n\r\n // Apply tblPrChange to each Table\r\n // Per ECMA-376 §17.13.5.36, tblPrChange must contain FULL previous tblPr,\r\n // not just the delta of changed properties.\r\n for (const [table, changes] of tableChanges) {\r\n // Build full snapshot: start from current formatting, roll back changed properties\r\n const currentFormatting = table.getFormatting();\r\n const fullPrevProps: Record<string, unknown> = {};\r\n\r\n for (const [key, value] of Object.entries(currentFormatting)) {\r\n if (value !== undefined) {\r\n fullPrevProps[key] = value;\r\n }\r\n }\r\n\r\n // Roll back changed properties to their previous values\r\n let latestTimestamp = 0;\r\n for (const change of changes) {\r\n if (change.previousValue !== undefined) {\r\n fullPrevProps[change.property] = change.previousValue;\r\n } else {\r\n delete fullPrevProps[change.property];\r\n }\r\n if (change.timestamp > latestTimestamp) {\r\n latestTimestamp = change.timestamp;\r\n }\r\n }\r\n\r\n const date = formatDateForXml(new Date(latestTimestamp));\r\n\r\n const existing = table.getTblPrChange();\r\n if (existing) {\r\n // Merge: existing previous state takes precedence (it's the ORIGINAL baseline)\r\n const merged = { ...fullPrevProps, ...(existing.previousProperties || {}) };\r\n table.setTblPrChange({ ...existing, previousProperties: merged });\r\n } else {\r\n table.setTblPrChange({\r\n author: this.author,\r\n date,\r\n id: String(this.revisionManager.consumeNextId()),\r\n previousProperties: fullPrevProps,\r\n });\r\n }\r\n }\r\n\r\n // Apply trPrChange to each TableRow\r\n for (const [row, changes] of rowChanges) {\r\n this.applyElementPrChange(changes, (prevProps, getNextId, date) => {\r\n const existing = row.getTrPrChange();\r\n if (existing) {\r\n const merged = { ...(existing.previousProperties || {}), ...prevProps };\r\n row.setTrPrChange({ ...existing, previousProperties: merged });\r\n } else {\r\n row.setTrPrChange({ author: this.author, date, id: String(getNextId()), previousProperties: prevProps });\r\n }\r\n });\r\n }\r\n\r\n // Apply tcPrChange to each TableCell\r\n for (const [cell, changes] of cellChanges) {\r\n this.applyElementPrChange(changes, (prevProps, getNextId, date) => {\r\n const existing = cell.getTcPrChange();\r\n if (existing) {\r\n const merged = { ...(existing.previousProperties || {}), ...prevProps };\r\n cell.setTcPrChange({ ...existing, previousProperties: merged });\r\n } else {\r\n cell.setTcPrChange({ author: this.author, date, id: String(getNextId()), previousProperties: prevProps });\r\n }\r\n });\r\n }\r\n\r\n // Apply sectPrChange to each Section\r\n for (const [section, changes] of sectionChanges) {\r\n this.applyElementPrChange(changes, (prevProps, getNextId, date) => {\r\n const existing = section.getSectPrChange();\r\n if (existing) {\r\n const merged = { ...(existing.previousProperties || {}), ...prevProps };\r\n section.setSectPrChange({ ...existing, previousProperties: merged });\r\n } else {\r\n section.setSectPrChange({ author: this.author, date, id: String(getNextId()), previousProperties: prevProps });\r\n }\r\n });\r\n }\r\n\r\n // Apply rPrChange to each Run that has property changes\r\n for (const [run, changes] of runChanges) {\r\n this.applyRunPrChange(run, changes);\r\n }\r\n\r\n this.pendingChanges.clear();\r\n return revisions;\r\n }\r\n\r\n // ═══════════════════════════════════════════════════════════════════════════\r\n // Private Methods\r\n // ═══════════════════════════════════════════════════════════════════════════\r\n\r\n /**\r\n * Apply pPrChange to a paragraph (extracted from flushPendingChanges for readability)\r\n */\r\n private applyParagraphPrChange(paragraph: Paragraph, changes: PendingChange[]): void {\r\n const newPreviousProperties: Record<string, unknown> = {};\r\n let latestTimestamp = 0;\r\n\r\n for (const change of changes) {\r\n // Record previous value even if undefined (property wasn't set before)\r\n newPreviousProperties[change.property] = change.previousValue;\r\n if (change.timestamp > latestTimestamp) {\r\n latestTimestamp = change.timestamp;\r\n }\r\n }\r\n\r\n const existingChange = paragraph.formatting.pPrChange;\r\n\r\n if (existingChange) {\r\n const mergedPreviousProperties: Record<string, unknown> = {\r\n ...(existingChange.previousProperties || {}),\r\n };\r\n for (const [prop, value] of Object.entries(newPreviousProperties)) {\r\n mergedPreviousProperties[prop] = value;\r\n }\r\n paragraph.formatting.pPrChange = {\r\n author: existingChange.author,\r\n date: existingChange.date,\r\n id: existingChange.id,\r\n previousProperties: mergedPreviousProperties,\r\n };\r\n } else {\r\n const revisionId = this.revisionManager.consumeNextId();\r\n paragraph.formatting.pPrChange = {\r\n author: this.author,\r\n date: formatDateForXml(new Date(latestTimestamp)),\r\n id: String(revisionId),\r\n previousProperties: newPreviousProperties,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Apply rPrChange to a run (mirrors applyParagraphPrChange for runs)\r\n */\r\n private applyRunPrChange(run: Run, changes: PendingChange[]): void {\r\n const newPreviousProperties: Partial<RunFormatting> = {};\r\n let latestTimestamp = 0;\r\n\r\n for (const change of changes) {\r\n (newPreviousProperties as Record<string, unknown>)[change.property] = change.previousValue;\r\n if (change.timestamp > latestTimestamp) {\r\n latestTimestamp = change.timestamp;\r\n }\r\n }\r\n\r\n const existingChange = run.getPropertyChangeRevision();\r\n\r\n if (existingChange) {\r\n // Merge with existing rPrChange — preserve original author/date,\r\n // add new previous properties\r\n const mergedPreviousProperties: Partial<RunFormatting> = {\r\n ...(existingChange.previousProperties || {}),\r\n ...newPreviousProperties,\r\n };\r\n run.setPropertyChangeRevision({\r\n ...existingChange,\r\n previousProperties: mergedPreviousProperties,\r\n });\r\n } else {\r\n const revisionId = this.revisionManager.consumeNextId();\r\n run.setPropertyChangeRevision({\r\n id: revisionId,\r\n author: this.author,\r\n date: new Date(latestTimestamp),\r\n previousProperties: newPreviousProperties,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Generic helper to apply *PrChange to table/row/cell/section elements\r\n */\r\n private applyElementPrChange(\r\n changes: PendingChange[],\r\n applier: (prevProps: Record<string, unknown>, getNextId: () => number, date: string) => void\r\n ): void {\r\n const prevProps: Record<string, unknown> = {};\r\n let latestTimestamp = 0;\r\n\r\n for (const change of changes) {\r\n // Record previous value even if undefined (property wasn't set before)\r\n prevProps[change.property] = change.previousValue;\r\n if (change.timestamp > latestTimestamp) {\r\n latestTimestamp = change.timestamp;\r\n }\r\n }\r\n\r\n const date = formatDateForXml(new Date(latestTimestamp));\r\n applier(prevProps, () => this.revisionManager.consumeNextId(), date);\r\n }\r\n\r\n /**\r\n * Add a pending change, consolidating with existing if same key\r\n */\r\n private addPendingChange(key: string, change: PendingChange): void {\r\n const existing = this.pendingChanges.get(key);\r\n if (existing) {\r\n existing.count = (existing.count || 1) + 1;\r\n // Keep the first previousValue for consolidated changes\r\n } else {\r\n this.pendingChanges.set(key, { ...change, count: 1 });\r\n }\r\n }\r\n\r\n /**\r\n * Create a Revision from a pending change\r\n */\r\n private createRevision(pending: PendingChange): Revision {\r\n const previousProps: Record<string, any> = {};\r\n const newProps: Record<string, any> = {};\r\n\r\n if (pending.previousValue !== undefined) {\r\n previousProps[pending.property] = pending.previousValue;\r\n }\r\n if (pending.newValue !== undefined) {\r\n newProps[pending.property] = pending.newValue;\r\n }\r\n\r\n // Get or create a Run for the revision content\r\n const run = this.getRunFromElement(pending.element);\r\n\r\n return new Revision({\r\n author: this.author,\r\n type: pending.type,\r\n content: run,\r\n previousProperties:\r\n Object.keys(previousProps).length > 0 ? previousProps : undefined,\r\n newProperties: Object.keys(newProps).length > 0 ? newProps : undefined,\r\n date: new Date(pending.timestamp),\r\n });\r\n }\r\n\r\n /**\r\n * Get or create a Run from an element for revision content\r\n */\r\n private getRunFromElement(element: TrackableElement): Run {\r\n if (element instanceof Run) {\r\n return element;\r\n }\r\n\r\n // Use instanceof for type-safe element identification (minification-safe)\r\n if (element instanceof Table) return new Run('Table');\r\n if (element instanceof TableRow) return new Run('TableRow');\r\n if (element instanceof TableCell) return new Run('TableCell');\r\n if (element instanceof Section) return new Run('Section');\r\n if (element instanceof Paragraph) return new Run('Paragraph');\r\n\r\n // Fallback for other elements (e.g., Hyperlink)\r\n const hasGetText = 'getText' in element && typeof (element as { getText?: () => string }).getText === 'function';\r\n const text = hasGetText\r\n ? (element as { getText: () => string }).getText()\r\n : element?.constructor?.name || 'Unknown element';\r\n return new Run(typeof text === 'string' ? text : String(text));\r\n }\r\n\r\n /**\r\n * Get a stable unique ID for an element (used in consolidation keys)\r\n */\r\n private getElementId(element: TrackableElement): number {\r\n let id = this.elementIdMap.get(element as object);\r\n if (id === undefined) {\r\n id = this.elementIdCounter++;\r\n this.elementIdMap.set(element as object, id);\r\n }\r\n return id;\r\n }\r\n\r\n /**\r\n * Deep equality check for tracking values (handles objects, primitives, null/undefined)\r\n */\r\n private valuesEqual(a: unknown, b: unknown): boolean {\r\n if (a === b) return true;\r\n if (a == null || b == null) return false;\r\n if (typeof a !== 'object' || typeof b !== 'object') return false;\r\n return JSON.stringify(a) === JSON.stringify(b);\r\n }\r\n\r\n /**\r\n * Stringify a value for use in consolidation key\r\n */\r\n private stringifyValue(value: unknown): string {\r\n if (value === undefined) return 'undefined';\r\n if (value === null) return 'null';\r\n if (typeof value === 'object') {\r\n return JSON.stringify(value);\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Create an insertion revision (factory to avoid circular dependency in Run)\r\n */\r\n createInsertion(content: Run, date?: Date): Revision {\r\n return Revision.createInsertion(this.author, content, date);\r\n }\r\n\r\n /**\r\n * Create a deletion revision (factory to avoid circular dependency in Run)\r\n */\r\n createDeletion(content: Run, date?: Date): Revision {\r\n return Revision.createDeletion(this.author, content, date);\r\n }\r\n\r\n /**\r\n * Get count of pending changes\r\n */\r\n getPendingCount(): number {\r\n return this.pendingChanges.size;\r\n }\r\n\r\n /**\r\n * Check if there are pending changes\r\n */\r\n hasPendingChanges(): boolean {\r\n return this.pendingChanges.size > 0;\r\n }\r\n\r\n /**\r\n * Clear all pending changes without creating revisions\r\n */\r\n clearPendingChanges(): void {\r\n this.pendingChanges.clear();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DocumentTrackingContext.js","sourceRoot":"","sources":["../../src/tracking/DocumentTrackingContext.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DocumentTrackingContext - Implementation of automatic change tracking\n *\n * Manages pending changes and creates Revision objects when flushed.\n * Supports consolidation of similar changes within a time window.\n *\n * @module DocumentTrackingContext\n */\n\nimport { Revision, RevisionType } from '../elements/Revision';\nimport { RevisionManager } from '../elements/RevisionManager';\nimport { Run, type RunFormatting } from '../elements/Run';\nimport { Paragraph } from '../elements/Paragraph';\nimport { Table } from '../elements/Table';\nimport { TableRow } from '../elements/TableRow';\nimport { TableCell } from '../elements/TableCell';\nimport { Section } from '../elements/Section';\nimport type { TrackingContext, PendingChange, TrackableElement } from './TrackingContext';\nimport { formatDateForXml } from '../utils/dateFormatting';\n\n/**\n * Enable options for tracking context\n */\nexport interface TrackingEnableOptions {\n /** Author name for new revisions (default: 'DocHub') */\n author?: string;\n /** Whether to track formatting changes (default: true) */\n trackFormatting?: boolean;\n}\n\n/**\n * Implementation of TrackingContext for Document\n */\nexport class DocumentTrackingContext implements TrackingContext {\n private enabled = false;\n private trackFormatting = true;\n private author = 'DocHub';\n private revisionManager: RevisionManager;\n\n /** Counter for assigning stable element IDs */\n private elementIdCounter = 0;\n /** Stable element identity map (WeakMap so elements can be GC'd) */\n private elementIdMap = new WeakMap<object, number>();\n\n /** Pending changes waiting to be flushed */\n private pendingChanges = new Map<string, PendingChange>();\n\n /** Properties considered \"formatting\" (vs structural) */\n private static readonly FORMATTING_PROPERTIES = new Set([\n 'bold',\n 'italic',\n 'underline',\n 'strike',\n 'dstrike',\n 'subscript',\n 'superscript',\n 'font',\n 'size',\n 'color',\n 'highlight',\n 'smallCaps',\n 'allCaps',\n 'characterSpacing',\n 'scaling',\n 'position',\n 'emphasis',\n 'shadow',\n 'emboss',\n 'imprint',\n 'outline',\n 'vanish',\n ]);\n\n /**\n * Creates a new DocumentTrackingContext\n * @param revisionManager - RevisionManager to register revisions with\n */\n constructor(revisionManager: RevisionManager) {\n this.revisionManager = revisionManager;\n }\n\n /**\n * Enable change tracking\n * @param options - Enable options\n */\n enable(options?: TrackingEnableOptions): void {\n this.enabled = true;\n if (options?.author) {\n this.author = options.author;\n }\n if (options?.trackFormatting !== undefined) {\n this.trackFormatting = options.trackFormatting;\n }\n }\n\n /**\n * Disable change tracking and flush pending changes\n */\n disable(): void {\n this.flushPendingChanges();\n this.enabled = false;\n }\n\n /**\n * Set the author for new revisions\n * Flushes any pending changes before switching to prevent mixed authorship\n * @param author - Author name\n */\n setAuthor(author: string): void {\n // Flush pending changes before switching authors to prevent mixed authorship\n if (this.enabled && this.pendingChanges.size > 0) {\n this.flushPendingChanges();\n }\n this.author = author;\n }\n\n // ═══════════════════════════════════════════════════════════════════════════\n // TrackingContext Interface Implementation\n // ═══════════════════════════════════════════════════════════════════════════\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n getAuthor(): string {\n return this.author;\n }\n\n getRevisionManager(): RevisionManager {\n return this.revisionManager;\n }\n\n isTrackFormattingEnabled(): boolean {\n return this.trackFormatting;\n }\n\n trackRunPropertyChange(run: Run, property: string, oldValue: unknown, newValue: unknown): void {\n if (!this.enabled) return;\n if (this.valuesEqual(oldValue, newValue)) return;\n\n // Skip formatting changes if not tracking them\n if (!this.trackFormatting && DocumentTrackingContext.FORMATTING_PROPERTIES.has(property)) {\n return;\n }\n\n // Create consolidation key with element identity\n const key = `runProp:${property}:${this.stringifyValue(newValue)}@${this.getElementId(run)}`;\n\n this.addPendingChange(key, {\n type: 'runPropertiesChange',\n property,\n previousValue: oldValue,\n newValue,\n element: run,\n timestamp: Date.now(),\n });\n }\n\n trackParagraphPropertyChange(\n paragraph: TrackableElement,\n property: string,\n oldValue: unknown,\n newValue: unknown\n ): void {\n if (!this.enabled) return;\n if (this.valuesEqual(oldValue, newValue)) return;\n\n const key = `paraProp:${property}:${this.stringifyValue(newValue)}@${this.getElementId(paragraph)}`;\n\n this.addPendingChange(key, {\n type: 'paragraphPropertiesChange',\n property,\n previousValue: oldValue,\n newValue,\n element: paragraph,\n timestamp: Date.now(),\n });\n }\n\n trackHyperlinkChange(\n hyperlink: TrackableElement,\n changeType: string,\n oldValue: unknown,\n newValue: unknown\n ): void {\n if (!this.enabled) return;\n if (this.valuesEqual(oldValue, newValue)) return;\n\n // Hyperlink changes use dedicated type for proper categorization\n const key = `hyperlink:${changeType}:${this.stringifyValue(newValue)}@${this.getElementId(hyperlink)}`;\n\n this.addPendingChange(key, {\n type: 'hyperlinkChange',\n property: changeType,\n previousValue: oldValue,\n newValue,\n element: hyperlink,\n timestamp: Date.now(),\n });\n }\n\n trackTableChange(\n element: TrackableElement,\n property: string,\n oldValue: unknown,\n newValue: unknown\n ): void {\n if (!this.enabled) return;\n if (this.valuesEqual(oldValue, newValue)) return;\n\n // Determine revision type based on element type using instanceof (minification-safe)\n let type: RevisionType = 'tablePropertiesChange';\n let elementType = 'Table';\n\n if (element instanceof TableRow) {\n type = 'tableRowPropertiesChange';\n elementType = 'TableRow';\n } else if (element instanceof TableCell) {\n type = 'tableCellPropertiesChange';\n elementType = 'TableCell';\n }\n\n const key = `table:${elementType}:${property}:${this.stringifyValue(newValue)}@${this.getElementId(element)}`;\n\n this.addPendingChange(key, {\n type,\n property,\n previousValue: oldValue,\n newValue,\n element,\n timestamp: Date.now(),\n });\n }\n\n trackSectionChange(\n section: TrackableElement,\n property: string,\n oldValue: unknown,\n newValue: unknown\n ): void {\n if (!this.enabled) return;\n if (this.valuesEqual(oldValue, newValue)) return;\n\n const key = `section:${property}:${this.stringifyValue(newValue)}@${this.getElementId(section)}`;\n\n this.addPendingChange(key, {\n type: 'sectionPropertiesChange',\n property,\n previousValue: oldValue,\n newValue,\n element: section,\n timestamp: Date.now(),\n });\n }\n\n trackInsertion(element: TrackableElement, text: string): void {\n if (!this.enabled) return;\n if (!text) return;\n\n const key = `insert:${Date.now()}:${text.substring(0, 20)}`;\n\n this.addPendingChange(key, {\n type: 'insert',\n property: 'text',\n previousValue: undefined,\n newValue: text,\n element,\n timestamp: Date.now(),\n });\n }\n\n trackDeletion(element: TrackableElement, text: string): void {\n if (!this.enabled) return;\n if (!text) return;\n\n const key = `delete:${Date.now()}:${text.substring(0, 20)}`;\n\n this.addPendingChange(key, {\n type: 'delete',\n property: 'text',\n previousValue: text,\n newValue: undefined,\n element,\n timestamp: Date.now(),\n });\n }\n\n flushPendingChanges(): Revision[] {\n const revisions: Revision[] = [];\n\n // Group pending changes by element for consolidation\n const paragraphChanges = new Map<Paragraph, PendingChange[]>();\n const tableChanges = new Map<Table, PendingChange[]>();\n const rowChanges = new Map<TableRow, PendingChange[]>();\n const cellChanges = new Map<TableCell, PendingChange[]>();\n const sectionChanges = new Map<Section, PendingChange[]>();\n const runChanges = new Map<Run, PendingChange[]>();\n\n for (const [, pending] of this.pendingChanges) {\n const revision = this.createRevision(pending);\n this.revisionManager.register(revision);\n revisions.push(revision);\n\n // Collect changes by element type for *PrChange application\n if (pending.type === 'paragraphPropertiesChange' && pending.element instanceof Paragraph) {\n const changes = paragraphChanges.get(pending.element) || [];\n changes.push(pending);\n paragraphChanges.set(pending.element, changes);\n } else if (pending.type === 'tablePropertiesChange' && pending.element instanceof Table) {\n const changes = tableChanges.get(pending.element) || [];\n changes.push(pending);\n tableChanges.set(pending.element, changes);\n } else if (\n pending.type === 'tableRowPropertiesChange' &&\n pending.element instanceof TableRow\n ) {\n const changes = rowChanges.get(pending.element) || [];\n changes.push(pending);\n rowChanges.set(pending.element, changes);\n } else if (\n pending.type === 'tableCellPropertiesChange' &&\n pending.element instanceof TableCell\n ) {\n const changes = cellChanges.get(pending.element) || [];\n changes.push(pending);\n cellChanges.set(pending.element, changes);\n } else if (pending.type === 'sectionPropertiesChange' && pending.element instanceof Section) {\n const changes = sectionChanges.get(pending.element) || [];\n changes.push(pending);\n sectionChanges.set(pending.element, changes);\n } else if (pending.type === 'runPropertiesChange' && pending.element instanceof Run) {\n const changes = runChanges.get(pending.element) || [];\n changes.push(pending);\n runChanges.set(pending.element, changes);\n }\n }\n\n // Apply pPrChange to each paragraph that has property changes\n for (const [paragraph, changes] of paragraphChanges) {\n this.applyParagraphPrChange(paragraph, changes);\n }\n\n // Apply tblPrChange to each Table\n // Per ECMA-376 §17.13.5.36, tblPrChange must contain FULL previous tblPr,\n // not just the delta of changed properties.\n for (const [table, changes] of tableChanges) {\n // Build full snapshot: start from current formatting, roll back changed properties\n const currentFormatting = table.getFormatting();\n const fullPrevProps: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(currentFormatting)) {\n if (value !== undefined) {\n fullPrevProps[key] = value;\n }\n }\n\n // Roll back changed properties to their previous values\n let latestTimestamp = 0;\n for (const change of changes) {\n if (change.previousValue !== undefined) {\n fullPrevProps[change.property] = change.previousValue;\n } else {\n delete fullPrevProps[change.property];\n }\n if (change.timestamp > latestTimestamp) {\n latestTimestamp = change.timestamp;\n }\n }\n\n const date = formatDateForXml(new Date(latestTimestamp));\n\n const existing = table.getTblPrChange();\n if (existing) {\n // Merge: existing previous state takes precedence (it's the ORIGINAL baseline)\n const merged = { ...fullPrevProps, ...(existing.previousProperties || {}) };\n table.setTblPrChange({ ...existing, previousProperties: merged });\n } else {\n table.setTblPrChange({\n author: this.author,\n date,\n id: String(this.revisionManager.consumeNextId()),\n previousProperties: fullPrevProps,\n });\n }\n }\n\n // Apply trPrChange to each TableRow\n for (const [row, changes] of rowChanges) {\n this.applyElementPrChange(changes, (prevProps, getNextId, date) => {\n const existing = row.getTrPrChange();\n if (existing) {\n const merged = { ...(existing.previousProperties || {}), ...prevProps };\n row.setTrPrChange({ ...existing, previousProperties: merged });\n } else {\n row.setTrPrChange({\n author: this.author,\n date,\n id: String(getNextId()),\n previousProperties: prevProps,\n });\n }\n });\n }\n\n // Apply tcPrChange to each TableCell\n for (const [cell, changes] of cellChanges) {\n this.applyElementPrChange(changes, (prevProps, getNextId, date) => {\n const existing = cell.getTcPrChange();\n if (existing) {\n const merged = { ...(existing.previousProperties || {}), ...prevProps };\n cell.setTcPrChange({ ...existing, previousProperties: merged });\n } else {\n cell.setTcPrChange({\n author: this.author,\n date,\n id: String(getNextId()),\n previousProperties: prevProps,\n });\n }\n });\n }\n\n // Apply sectPrChange to each Section\n for (const [section, changes] of sectionChanges) {\n this.applyElementPrChange(changes, (prevProps, getNextId, date) => {\n const existing = section.getSectPrChange();\n if (existing) {\n const merged = { ...(existing.previousProperties || {}), ...prevProps };\n section.setSectPrChange({ ...existing, previousProperties: merged });\n } else {\n section.setSectPrChange({\n author: this.author,\n date,\n id: String(getNextId()),\n previousProperties: prevProps,\n });\n }\n });\n }\n\n // Apply rPrChange to each Run that has property changes\n for (const [run, changes] of runChanges) {\n this.applyRunPrChange(run, changes);\n }\n\n this.pendingChanges.clear();\n return revisions;\n }\n\n // ═══════════════════════════════════════════════════════════════════════════\n // Private Methods\n // ═══════════════════════════════════════════════════════════════════════════\n\n /**\n * Apply pPrChange to a paragraph (extracted from flushPendingChanges for readability)\n */\n private applyParagraphPrChange(paragraph: Paragraph, changes: PendingChange[]): void {\n const newPreviousProperties: Record<string, unknown> = {};\n let latestTimestamp = 0;\n\n for (const change of changes) {\n // Record previous value even if undefined (property wasn't set before)\n newPreviousProperties[change.property] = change.previousValue;\n if (change.timestamp > latestTimestamp) {\n latestTimestamp = change.timestamp;\n }\n }\n\n const existingChange = paragraph.formatting.pPrChange;\n\n if (existingChange) {\n const mergedPreviousProperties: Record<string, unknown> = {\n ...(existingChange.previousProperties || {}),\n };\n for (const [prop, value] of Object.entries(newPreviousProperties)) {\n mergedPreviousProperties[prop] = value;\n }\n paragraph.formatting.pPrChange = {\n author: existingChange.author,\n date: existingChange.date,\n id: existingChange.id,\n previousProperties: mergedPreviousProperties,\n };\n } else {\n const revisionId = this.revisionManager.consumeNextId();\n paragraph.formatting.pPrChange = {\n author: this.author,\n date: formatDateForXml(new Date(latestTimestamp)),\n id: String(revisionId),\n previousProperties: newPreviousProperties,\n };\n }\n }\n\n /**\n * Apply rPrChange to a run (mirrors applyParagraphPrChange for runs)\n */\n private applyRunPrChange(run: Run, changes: PendingChange[]): void {\n const newPreviousProperties: Partial<RunFormatting> = {};\n let latestTimestamp = 0;\n\n for (const change of changes) {\n (newPreviousProperties as Record<string, unknown>)[change.property] = change.previousValue;\n if (change.timestamp > latestTimestamp) {\n latestTimestamp = change.timestamp;\n }\n }\n\n const existingChange = run.getPropertyChangeRevision();\n\n if (existingChange) {\n // Merge with existing rPrChange — preserve original author/date,\n // add new previous properties\n const mergedPreviousProperties: Partial<RunFormatting> = {\n ...(existingChange.previousProperties || {}),\n ...newPreviousProperties,\n };\n run.setPropertyChangeRevision({\n ...existingChange,\n previousProperties: mergedPreviousProperties,\n });\n } else {\n const revisionId = this.revisionManager.consumeNextId();\n run.setPropertyChangeRevision({\n id: revisionId,\n author: this.author,\n date: new Date(latestTimestamp),\n previousProperties: newPreviousProperties,\n });\n }\n }\n\n /**\n * Generic helper to apply *PrChange to table/row/cell/section elements\n */\n private applyElementPrChange(\n changes: PendingChange[],\n applier: (prevProps: Record<string, unknown>, getNextId: () => number, date: string) => void\n ): void {\n const prevProps: Record<string, unknown> = {};\n let latestTimestamp = 0;\n\n for (const change of changes) {\n // Record previous value even if undefined (property wasn't set before)\n prevProps[change.property] = change.previousValue;\n if (change.timestamp > latestTimestamp) {\n latestTimestamp = change.timestamp;\n }\n }\n\n const date = formatDateForXml(new Date(latestTimestamp));\n applier(prevProps, () => this.revisionManager.consumeNextId(), date);\n }\n\n /**\n * Add a pending change, consolidating with existing if same key\n */\n private addPendingChange(key: string, change: PendingChange): void {\n const existing = this.pendingChanges.get(key);\n if (existing) {\n existing.count = (existing.count || 1) + 1;\n // Keep the first previousValue for consolidated changes\n } else {\n this.pendingChanges.set(key, { ...change, count: 1 });\n }\n }\n\n /**\n * Create a Revision from a pending change\n */\n private createRevision(pending: PendingChange): Revision {\n const previousProps: Record<string, any> = {};\n const newProps: Record<string, any> = {};\n\n if (pending.previousValue !== undefined) {\n previousProps[pending.property] = pending.previousValue;\n }\n if (pending.newValue !== undefined) {\n newProps[pending.property] = pending.newValue;\n }\n\n // Get or create a Run for the revision content\n const run = this.getRunFromElement(pending.element);\n\n return new Revision({\n author: this.author,\n type: pending.type,\n content: run,\n previousProperties: Object.keys(previousProps).length > 0 ? previousProps : undefined,\n newProperties: Object.keys(newProps).length > 0 ? newProps : undefined,\n date: new Date(pending.timestamp),\n });\n }\n\n /**\n * Get or create a Run from an element for revision content\n */\n private getRunFromElement(element: TrackableElement): Run {\n if (element instanceof Run) {\n return element;\n }\n\n // Use instanceof for type-safe element identification (minification-safe)\n if (element instanceof Table) return new Run('Table');\n if (element instanceof TableRow) return new Run('TableRow');\n if (element instanceof TableCell) return new Run('TableCell');\n if (element instanceof Section) return new Run('Section');\n if (element instanceof Paragraph) return new Run('Paragraph');\n\n // Fallback for other elements (e.g., Hyperlink)\n const hasGetText =\n 'getText' in element && typeof (element as { getText?: () => string }).getText === 'function';\n const text = hasGetText\n ? (element as { getText: () => string }).getText()\n : element?.constructor?.name || 'Unknown element';\n return new Run(typeof text === 'string' ? text : String(text));\n }\n\n /**\n * Get a stable unique ID for an element (used in consolidation keys)\n */\n private getElementId(element: TrackableElement): number {\n let id = this.elementIdMap.get(element as object);\n if (id === undefined) {\n id = this.elementIdCounter++;\n this.elementIdMap.set(element as object, id);\n }\n return id;\n }\n\n /**\n * Deep equality check for tracking values (handles objects, primitives, null/undefined)\n */\n private valuesEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n return JSON.stringify(a) === JSON.stringify(b);\n }\n\n /**\n * Stringify a value for use in consolidation key\n */\n private stringifyValue(value: unknown): string {\n if (value === undefined) return 'undefined';\n if (value === null) return 'null';\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n }\n\n /**\n * Create an insertion revision (factory to avoid circular dependency in Run)\n */\n createInsertion(content: Run, date?: Date): Revision {\n return Revision.createInsertion(this.author, content, date);\n }\n\n /**\n * Create a deletion revision (factory to avoid circular dependency in Run)\n */\n createDeletion(content: Run, date?: Date): Revision {\n return Revision.createDeletion(this.author, content, date);\n }\n\n /**\n * Get count of pending changes\n */\n getPendingCount(): number {\n return this.pendingChanges.size;\n }\n\n /**\n * Check if there are pending changes\n */\n hasPendingChanges(): boolean {\n return this.pendingChanges.size > 0;\n }\n\n /**\n * Clear all pending changes without creating revisions\n */\n clearPendingChanges(): void {\n this.pendingChanges.clear();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackingContext.d.ts","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"TrackingContext.d.ts","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,gBAAgB,GACxB,GAAG,GACH,SAAS,GACT,KAAK,GACL,QAAQ,GACR,SAAS,GACT,OAAO,GACP;IAAE,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAKtC,MAAM,WAAW,aAAa;IAE5B,IAAI,EAAE,YAAY,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,OAAO,CAAC;IAEvB,QAAQ,EAAE,OAAO,CAAC;IAElB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,eAAe;IAI9B,SAAS,IAAI,OAAO,CAAC;IAKrB,SAAS,IAAI,MAAM,CAAC;IAKpB,kBAAkB,IAAI,eAAe,CAAC;IAKtC,wBAAwB,IAAI,OAAO,CAAC;IASpC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAS/F,4BAA4B,CAC1B,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAAC;IASR,oBAAoB,CAClB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAAC;IASR,gBAAgB,CACd,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAAC;IASR,kBAAkB,CAChB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAAC;IAOR,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAO9D,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAO7D,mBAAmB,IAAI,QAAQ,EAAE,CAAC;IAOlC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;IAOrD,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;CACrD"}
|