docxmlater 10.1.3 → 10.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +759 -754
- package/dist/constants/legacyCompatFlags.js +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +50 -50
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +483 -471
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +9 -9
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +251 -251
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2123 -2155
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +2 -5
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +3 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +9 -6
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +18 -17
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +21 -21
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +56 -56
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +6 -6
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +6 -7
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +82 -25
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js +2 -2
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +6 -6
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +6 -7
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js +2 -2
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -3
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +134 -76
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +238 -106
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +1 -1
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +24 -24
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +181 -188
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js +6 -6
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +4 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +40 -48
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -16
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +256 -238
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +36 -11
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +6 -6
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +99 -104
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +11 -11
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +102 -107
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +10 -10
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +105 -106
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +4 -4
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +13 -6
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +3 -5
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +4 -4
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +54 -49
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +1 -3
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +5 -5
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +119 -125
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +9 -9
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +11 -11
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +219 -247
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +96 -102
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +6 -6
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js +7 -7
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +23 -7
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +6 -6
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.d.ts +2 -2
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js +97 -101
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +1 -1
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
- package/dist/utils/MoveOperationHelper.js +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js +2 -4
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.d.ts.map +1 -1
- package/dist/utils/RevisionWalker.js +4 -12
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.d.ts.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +23 -12
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +40 -40
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.js +1 -1
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +10 -2
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +21 -23
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +3 -3
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.d.ts +1 -1
- package/dist/utils/textDiff.js +8 -8
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +24 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.d.ts.map +1 -1
- package/dist/utils/xmlSanitization.js +3 -3
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +5 -5
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +7 -9
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js +3 -3
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +98 -100
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +61 -66
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +1 -3
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +28 -36
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/types.js +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/helper-methods.test.ts +512 -512
- package/src/constants/legacyCompatFlags.ts +138 -138
- package/src/constants/limits.ts +50 -50
- package/src/core/Document.ts +985 -1145
- package/src/core/DocumentContent.ts +461 -467
- package/src/core/DocumentGenerator.ts +1133 -1104
- package/src/core/DocumentIdManager.ts +158 -158
- package/src/core/DocumentParser.ts +2347 -2716
- package/src/core/DocumentValidator.ts +363 -372
- package/src/core/Relationship.ts +367 -367
- package/src/core/RelationshipManager.ts +429 -428
- package/src/elements/AlternateContent.ts +42 -42
- package/src/elements/Bookmark.ts +212 -210
- package/src/elements/BookmarkManager.ts +247 -250
- package/src/elements/Comment.ts +356 -359
- package/src/elements/CommentManager.ts +499 -502
- package/src/elements/CommonTypes.ts +524 -549
- package/src/elements/CustomXml.ts +36 -36
- package/src/elements/Endnote.ts +221 -217
- package/src/elements/EndnoteManager.ts +246 -249
- package/src/elements/Field.ts +1292 -1233
- package/src/elements/FieldHelpers.ts +329 -333
- package/src/elements/FontManager.ts +336 -339
- package/src/elements/Footer.ts +269 -269
- package/src/elements/Footnote.ts +221 -217
- package/src/elements/FootnoteManager.ts +246 -249
- package/src/elements/Header.ts +269 -269
- package/src/elements/HeaderFooterManager.ts +219 -219
- package/src/elements/Hyperlink.ts +1288 -1193
- package/src/elements/Image.ts +1982 -1756
- package/src/elements/ImageManager.ts +437 -432
- package/src/elements/ImageRun.ts +59 -59
- package/src/elements/MathElement.ts +65 -65
- package/src/elements/Paragraph.ts +4347 -4287
- package/src/elements/PreservedElement.ts +53 -53
- package/src/elements/PropertyChangeTypes.ts +458 -442
- package/src/elements/RangeMarker.ts +382 -400
- package/src/elements/Revision.ts +1198 -1217
- package/src/elements/RevisionContent.ts +73 -73
- package/src/elements/RevisionManager.ts +1070 -1070
- package/src/elements/Run.ts +3103 -3073
- package/src/elements/Section.ts +1521 -1421
- package/src/elements/Shape.ts +884 -873
- package/src/elements/StructuredDocumentTag.ts +1176 -1207
- package/src/elements/Table.ts +2468 -2524
- package/src/elements/TableCell.ts +1617 -1621
- package/src/elements/TableGridChange.ts +149 -151
- package/src/elements/TableOfContents.ts +701 -691
- package/src/elements/TableOfContentsElement.ts +89 -89
- package/src/elements/TableRow.ts +960 -929
- package/src/elements/TextBox.ts +766 -768
- package/src/formatting/AbstractNumbering.ts +580 -579
- package/src/formatting/NumberingInstance.ts +295 -299
- package/src/formatting/NumberingLevel.ts +981 -1040
- package/src/formatting/NumberingManager.ts +833 -827
- package/src/formatting/Style.ts +1785 -1879
- package/src/formatting/StylesManager.ts +1090 -1130
- package/src/helpers/CleanupHelper.ts +524 -524
- package/src/images/ImageOptimizer.ts +274 -274
- package/src/index.ts +559 -554
- package/src/managers/DrawingManager.ts +319 -319
- package/src/tracking/DocumentTrackingContext.ts +687 -674
- package/src/tracking/TrackingContext.ts +175 -173
- package/src/types/compatibility-types.ts +49 -49
- package/src/types/formatting.ts +210 -210
- package/src/types/list-types.ts +14 -14
- package/src/types/settings-types.ts +59 -59
- package/src/types/styleConfig.ts +189 -189
- package/src/utils/ChangelogGenerator.ts +1583 -1581
- package/src/utils/CompatibilityUpgrader.ts +235 -237
- package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
- package/src/utils/MoveOperationHelper.ts +233 -238
- package/src/utils/RevisionAwareProcessor.ts +518 -526
- package/src/utils/RevisionWalker.ts +427 -457
- package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
- package/src/utils/ShadingResolver.ts +105 -107
- package/src/utils/acceptRevisions.ts +723 -714
- package/src/utils/cnfStyleDecoder.ts +212 -217
- package/src/utils/corruptionDetection.ts +346 -345
- package/src/utils/dateFormatting.ts +20 -20
- package/src/utils/deepClone.ts +77 -78
- package/src/utils/diagnostics.ts +125 -129
- package/src/utils/errorHandling.ts +80 -80
- package/src/utils/formatting.ts +220 -213
- package/src/utils/list-detection.ts +32 -42
- package/src/utils/logger.ts +412 -404
- package/src/utils/parsingHelpers.ts +190 -190
- package/src/utils/stripTrackedChanges.ts +356 -353
- package/src/utils/textDiff.ts +100 -100
- package/src/utils/units.ts +421 -421
- package/src/utils/validation.ts +553 -542
- package/src/utils/xmlSanitization.ts +179 -182
- package/src/validation/RevisionAutoFixer.ts +541 -542
- package/src/validation/RevisionValidator.ts +470 -460
- package/src/validation/ValidationRules.ts +338 -338
- package/src/validation/index.ts +30 -30
- package/src/xml/XMLBuilder.ts +857 -871
- package/src/xml/XMLParser.ts +877 -919
- package/src/zip/ZipHandler.ts +629 -637
- package/src/zip/ZipReader.ts +295 -299
- package/src/zip/ZipWriter.ts +374 -390
- package/src/zip/types.ts +116 -116
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AlternateContent - Represents mc:AlternateContent block element
|
|
3
|
-
*
|
|
4
|
-
* Per ECMA-376 Part 3 §11.4, mc:AlternateContent provides markup compatibility.
|
|
5
|
-
* Word uses this for newer features (Word 2010+ shapes as Choice, VML as Fallback).
|
|
6
|
-
*
|
|
7
|
-
* Stored as raw XML for round-trip fidelity since the internal structure varies widely.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
11
|
-
|
|
12
|
-
export class AlternateContent {
|
|
13
|
-
private rawXml: string;
|
|
14
|
-
|
|
15
|
-
constructor(rawXml: string) {
|
|
16
|
-
this.rawXml = rawXml;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Returns the raw XML for round-trip serialization
|
|
21
|
-
*/
|
|
22
|
-
toXML(): XMLElement {
|
|
23
|
-
return {
|
|
24
|
-
name: '__rawXml',
|
|
25
|
-
rawXml: this.rawXml,
|
|
26
|
-
} as XMLElement;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Gets the raw XML string
|
|
31
|
-
*/
|
|
32
|
-
getRawXml(): string {
|
|
33
|
-
return this.rawXml;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Returns the element type identifier
|
|
38
|
-
*/
|
|
39
|
-
getType(): string {
|
|
40
|
-
return 'alternateContent';
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* AlternateContent - Represents mc:AlternateContent block element
|
|
3
|
+
*
|
|
4
|
+
* Per ECMA-376 Part 3 §11.4, mc:AlternateContent provides markup compatibility.
|
|
5
|
+
* Word uses this for newer features (Word 2010+ shapes as Choice, VML as Fallback).
|
|
6
|
+
*
|
|
7
|
+
* Stored as raw XML for round-trip fidelity since the internal structure varies widely.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { XMLElement } from '../xml/XMLBuilder';
|
|
11
|
+
|
|
12
|
+
export class AlternateContent {
|
|
13
|
+
private rawXml: string;
|
|
14
|
+
|
|
15
|
+
constructor(rawXml: string) {
|
|
16
|
+
this.rawXml = rawXml;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Returns the raw XML for round-trip serialization
|
|
21
|
+
*/
|
|
22
|
+
toXML(): XMLElement {
|
|
23
|
+
return {
|
|
24
|
+
name: '__rawXml',
|
|
25
|
+
rawXml: this.rawXml,
|
|
26
|
+
} as XMLElement;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Gets the raw XML string
|
|
31
|
+
*/
|
|
32
|
+
getRawXml(): string {
|
|
33
|
+
return this.rawXml;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns the element type identifier
|
|
38
|
+
*/
|
|
39
|
+
getType(): string {
|
|
40
|
+
return 'alternateContent';
|
|
41
|
+
}
|
|
42
|
+
}
|
package/src/elements/Bookmark.ts
CHANGED
|
@@ -1,210 +1,212 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bookmark - Represents a bookmark in a Word document
|
|
3
|
-
*
|
|
4
|
-
* Bookmarks mark specific locations in a document for internal navigation.
|
|
5
|
-
* They consist of a start marker and an end marker with matching IDs.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { XMLElement } from '../xml/XMLBuilder';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Bookmark properties
|
|
12
|
-
*/
|
|
13
|
-
export interface BookmarkProperties {
|
|
14
|
-
/** Unique bookmark ID (generated automatically if not provided) */
|
|
15
|
-
id?: number;
|
|
16
|
-
/** Bookmark name (must be unique within document) */
|
|
17
|
-
name: string;
|
|
18
|
-
/** Skip name normalization (used when loading from existing documents) */
|
|
19
|
-
skipNormalization?: boolean;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Represents a bookmark location in a document
|
|
24
|
-
*/
|
|
25
|
-
export class Bookmark {
|
|
26
|
-
private id: number;
|
|
27
|
-
private name: string;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Creates a new Bookmark
|
|
31
|
-
* @param properties - Bookmark properties
|
|
32
|
-
*/
|
|
33
|
-
constructor(properties: BookmarkProperties) {
|
|
34
|
-
this.id = properties.id ?? 0; // ID will be assigned by BookmarkManager
|
|
35
|
-
// Preserve exact bookmark names when loading from documents (Word allows =, ., etc.)
|
|
36
|
-
// Only normalize when creating new bookmarks programmatically
|
|
37
|
-
this.name = properties.skipNormalization
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
*
|
|
44
|
-
* -
|
|
45
|
-
* -
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* -
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* -
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
* @
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
*
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Bookmark - Represents a bookmark in a Word document
|
|
3
|
+
*
|
|
4
|
+
* Bookmarks mark specific locations in a document for internal navigation.
|
|
5
|
+
* They consist of a start marker and an end marker with matching IDs.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { XMLElement } from '../xml/XMLBuilder';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Bookmark properties
|
|
12
|
+
*/
|
|
13
|
+
export interface BookmarkProperties {
|
|
14
|
+
/** Unique bookmark ID (generated automatically if not provided) */
|
|
15
|
+
id?: number;
|
|
16
|
+
/** Bookmark name (must be unique within document) */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Skip name normalization (used when loading from existing documents) */
|
|
19
|
+
skipNormalization?: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Represents a bookmark location in a document
|
|
24
|
+
*/
|
|
25
|
+
export class Bookmark {
|
|
26
|
+
private id: number;
|
|
27
|
+
private name: string;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new Bookmark
|
|
31
|
+
* @param properties - Bookmark properties
|
|
32
|
+
*/
|
|
33
|
+
constructor(properties: BookmarkProperties) {
|
|
34
|
+
this.id = properties.id ?? 0; // ID will be assigned by BookmarkManager
|
|
35
|
+
// Preserve exact bookmark names when loading from documents (Word allows =, ., etc.)
|
|
36
|
+
// Only normalize when creating new bookmarks programmatically
|
|
37
|
+
this.name = properties.skipNormalization
|
|
38
|
+
? properties.name
|
|
39
|
+
: this.normalizeName(properties.name);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Normalizes a bookmark name to be valid
|
|
44
|
+
* - Must start with a letter or underscore
|
|
45
|
+
* - Can only contain letters, numbers, and underscores
|
|
46
|
+
* - Maximum 40 characters
|
|
47
|
+
* - Case-insensitive (Word converts to lowercase)
|
|
48
|
+
* @param name - Raw bookmark name
|
|
49
|
+
* @returns Normalized bookmark name
|
|
50
|
+
*/
|
|
51
|
+
private normalizeName(name: string): string {
|
|
52
|
+
// Remove invalid characters
|
|
53
|
+
let normalized = name.replace(/[^a-zA-Z0-9_]/g, '_');
|
|
54
|
+
|
|
55
|
+
// Ensure it starts with a letter or underscore
|
|
56
|
+
if (normalized.length > 0 && /^\d/.test(normalized)) {
|
|
57
|
+
normalized = '_' + normalized;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Limit to 40 characters
|
|
61
|
+
if (normalized.length > 40) {
|
|
62
|
+
normalized = normalized.substring(0, 40);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Default if empty
|
|
66
|
+
if (normalized.length === 0) {
|
|
67
|
+
normalized = '_bookmark';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return normalized;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Gets the bookmark ID
|
|
75
|
+
*/
|
|
76
|
+
getId(): number {
|
|
77
|
+
return this.id;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Sets the bookmark ID (used by BookmarkManager)
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
setId(id: number): void {
|
|
85
|
+
this.id = id;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Gets the bookmark name
|
|
90
|
+
*/
|
|
91
|
+
getName(): string {
|
|
92
|
+
return this.name;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Sets the bookmark name (normalizes the name)
|
|
97
|
+
*
|
|
98
|
+
* The name will be normalized:
|
|
99
|
+
* - Invalid characters replaced with underscores
|
|
100
|
+
* - Leading digits prefixed with underscore
|
|
101
|
+
* - Limited to 40 characters
|
|
102
|
+
*
|
|
103
|
+
* @param name - New bookmark name
|
|
104
|
+
* @returns This bookmark for chaining
|
|
105
|
+
*/
|
|
106
|
+
setName(name: string): this {
|
|
107
|
+
this.name = this.normalizeName(name);
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Sets the bookmark name without normalization
|
|
113
|
+
*
|
|
114
|
+
* Use this method when:
|
|
115
|
+
* - Preserving exact names from imported documents
|
|
116
|
+
* - Setting names with special characters that Word allows (=, ., etc.)
|
|
117
|
+
* - Round-trip fidelity is required
|
|
118
|
+
*
|
|
119
|
+
* **Warning:** Setting invalid bookmark names may cause issues in Word.
|
|
120
|
+
* Only use this if you know the name is valid or needs to match an existing document.
|
|
121
|
+
*
|
|
122
|
+
* @param name - Raw bookmark name (not normalized)
|
|
123
|
+
* @returns This bookmark for chaining
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* // Preserve exact name from Word document
|
|
128
|
+
* bookmark.setRawName('SECTION=II.MNKE7E8NA385_');
|
|
129
|
+
*
|
|
130
|
+
* // For new bookmarks, prefer setName() which normalizes
|
|
131
|
+
* bookmark.setName('My Heading'); // Becomes 'My_Heading'
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
setRawName(name: string): this {
|
|
135
|
+
this.name = name;
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Generates XML for the bookmark start marker
|
|
141
|
+
* @returns XMLElement for bookmarkStart
|
|
142
|
+
*/
|
|
143
|
+
toStartXML(): XMLElement {
|
|
144
|
+
return {
|
|
145
|
+
name: 'w:bookmarkStart',
|
|
146
|
+
attributes: {
|
|
147
|
+
'w:id': this.id.toString(),
|
|
148
|
+
'w:name': this.name,
|
|
149
|
+
},
|
|
150
|
+
selfClosing: true,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Generates XML for the bookmark end marker
|
|
156
|
+
* @returns XMLElement for bookmarkEnd
|
|
157
|
+
*/
|
|
158
|
+
toEndXML(): XMLElement {
|
|
159
|
+
return {
|
|
160
|
+
name: 'w:bookmarkEnd',
|
|
161
|
+
attributes: {
|
|
162
|
+
'w:id': this.id.toString(),
|
|
163
|
+
},
|
|
164
|
+
selfClosing: true,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Generates both start and end XML elements as an array
|
|
170
|
+
* @returns Array of XMLElements [start, end]
|
|
171
|
+
*/
|
|
172
|
+
toXML(): [XMLElement, XMLElement] {
|
|
173
|
+
return [this.toStartXML(), this.toEndXML()];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Creates a new Bookmark
|
|
178
|
+
* @param name - Bookmark name
|
|
179
|
+
* @returns New Bookmark instance
|
|
180
|
+
*/
|
|
181
|
+
static create(name: string): Bookmark {
|
|
182
|
+
return new Bookmark({ name });
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Creates a bookmark for a heading
|
|
187
|
+
* Useful for table of contents internal links
|
|
188
|
+
* @param headingText - The text of the heading
|
|
189
|
+
* @returns New Bookmark instance with normalized name
|
|
190
|
+
*/
|
|
191
|
+
static createForHeading(headingText: string): Bookmark {
|
|
192
|
+
// Create a bookmark name from heading text
|
|
193
|
+
// Example: "Chapter 1: Introduction" -> "_Chapter_1_Introduction"
|
|
194
|
+
const name = headingText
|
|
195
|
+
.trim()
|
|
196
|
+
.replace(/[^a-zA-Z0-9]+/g, '_')
|
|
197
|
+
.substring(0, 40);
|
|
198
|
+
return new Bookmark({ name: name || '_heading' });
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Creates a bookmark with an auto-generated unique name
|
|
203
|
+
* @param prefix - Optional prefix for the name (default: 'bookmark')
|
|
204
|
+
* @returns New Bookmark instance
|
|
205
|
+
*/
|
|
206
|
+
static createAuto(prefix = 'bookmark'): Bookmark {
|
|
207
|
+
const timestamp = Date.now().toString(36);
|
|
208
|
+
const random = Math.random().toString(36).substring(2, 7);
|
|
209
|
+
const name = `${prefix}_${timestamp}_${random}`;
|
|
210
|
+
return new Bookmark({ name });
|
|
211
|
+
}
|
|
212
|
+
}
|