docxmlater 10.0.2 → 10.0.4
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 +3 -2
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.d.ts +0 -27
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +13 -13
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +23 -19
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +197 -63
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +59 -24
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.d.ts.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +6 -6
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +86 -55
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.d.ts.map +1 -1
- package/dist/core/Relationship.js +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.js +1 -1
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +8 -2
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -2
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +31 -28
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +6 -6
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +5 -5
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +2 -2
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +21 -5
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +2 -2
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +8 -0
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +153 -118
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts +1 -0
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +44 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +1 -3
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +127 -118
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +21 -0
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +20 -8
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +2 -2
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +29 -35
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +2 -2
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +63 -67
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +6 -6
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +65 -47
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +1 -1
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +1 -1
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +11 -11
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +4 -4
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +26 -26
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +87 -95
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +3 -3
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +4 -4
- package/dist/types/list-types.d.ts.map +1 -1
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +7 -7
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +23 -2
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts +1 -0
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +46 -0
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts +0 -28
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +5 -7
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +1 -1
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.d.ts +0 -1
- package/dist/utils/deepClone.d.ts.map +1 -1
- package/dist/utils/deepClone.js +0 -7
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +2 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +3 -3
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -19
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +0 -2
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +10 -0
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +4 -5
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/errors.js.map +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +34 -4
- package/src/__tests__/helper-methods.test.ts +512 -0
- package/src/constants/legacyCompatFlags.ts +138 -0
- package/src/constants/limits.ts +50 -0
- package/src/core/CLAUDE.md +109 -0
- package/src/core/Document.ts +15569 -0
- package/src/core/DocumentContent.ts +467 -0
- package/src/core/DocumentGenerator.ts +1104 -0
- package/src/core/DocumentIdManager.ts +158 -0
- package/src/core/DocumentParser.ts +10140 -0
- package/src/core/DocumentValidator.ts +372 -0
- package/src/core/Relationship.ts +367 -0
- package/src/core/RelationshipManager.ts +428 -0
- package/src/elements/AlternateContent.ts +42 -0
- package/src/elements/Bookmark.ts +210 -0
- package/src/elements/BookmarkManager.ts +250 -0
- package/src/elements/CLAUDE.md +126 -0
- package/src/elements/Comment.ts +359 -0
- package/src/elements/CommentManager.ts +502 -0
- package/src/elements/CommonTypes.ts +549 -0
- package/src/elements/CustomXml.ts +36 -0
- package/src/elements/Endnote.ts +217 -0
- package/src/elements/EndnoteManager.ts +249 -0
- package/src/elements/Field.ts +1233 -0
- package/src/elements/FieldHelpers.ts +333 -0
- package/src/elements/FontManager.ts +339 -0
- package/src/elements/Footer.ts +269 -0
- package/src/elements/Footnote.ts +217 -0
- package/src/elements/FootnoteManager.ts +249 -0
- package/src/elements/Header.ts +269 -0
- package/src/elements/HeaderFooterManager.ts +219 -0
- package/src/elements/Hyperlink.ts +1146 -0
- package/src/elements/Image.ts +1756 -0
- package/src/elements/ImageManager.ts +432 -0
- package/src/elements/ImageRun.ts +59 -0
- package/src/elements/MathElement.ts +65 -0
- package/src/elements/Paragraph.ts +4287 -0
- package/src/elements/PreservedElement.ts +53 -0
- package/src/elements/PropertyChangeTypes.ts +442 -0
- package/src/elements/RangeMarker.ts +400 -0
- package/src/elements/Revision.ts +1217 -0
- package/src/elements/RevisionContent.ts +73 -0
- package/src/elements/RevisionManager.ts +1070 -0
- package/src/elements/Run.ts +3068 -0
- package/src/elements/Section.ts +1421 -0
- package/src/elements/Shape.ts +873 -0
- package/src/elements/StructuredDocumentTag.ts +978 -0
- package/src/elements/Table.ts +2524 -0
- package/src/elements/TableCell.ts +1586 -0
- package/src/elements/TableGridChange.ts +151 -0
- package/src/elements/TableOfContents.ts +691 -0
- package/src/elements/TableOfContentsElement.ts +89 -0
- package/src/elements/TableRow.ts +906 -0
- package/src/elements/TextBox.ts +768 -0
- package/src/formatting/AbstractNumbering.ts +548 -0
- package/src/formatting/CLAUDE.md +74 -0
- package/src/formatting/NumberingInstance.ts +212 -0
- package/src/formatting/NumberingLevel.ts +1006 -0
- package/src/formatting/NumberingManager.ts +827 -0
- package/src/formatting/Style.ts +1833 -0
- package/src/formatting/StylesManager.ts +1005 -0
- package/src/helpers/CleanupHelper.ts +524 -0
- package/src/images/ImageOptimizer.ts +274 -0
- package/src/index.ts +554 -0
- package/src/managers/CLAUDE.md +47 -0
- package/src/managers/DrawingManager.ts +319 -0
- package/src/tracking/DocumentTrackingContext.ts +643 -0
- package/src/tracking/TrackingContext.ts +173 -0
- package/src/types/compatibility-types.ts +49 -0
- package/src/types/formatting.ts +210 -0
- package/src/types/list-types.ts +152 -0
- package/src/types/settings-types.ts +59 -0
- package/src/types/styleConfig.ts +189 -0
- package/src/utils/CLAUDE.md +153 -0
- package/src/utils/ChangelogGenerator.ts +1581 -0
- package/src/utils/CompatibilityUpgrader.ts +237 -0
- package/src/utils/InMemoryRevisionAcceptor.ts +696 -0
- package/src/utils/MoveOperationHelper.ts +238 -0
- package/src/utils/RevisionAwareProcessor.ts +526 -0
- package/src/utils/RevisionWalker.ts +457 -0
- package/src/utils/SelectiveRevisionAcceptor.ts +683 -0
- package/src/utils/ShadingResolver.ts +107 -0
- package/src/utils/acceptRevisions.ts +714 -0
- package/src/utils/cnfStyleDecoder.ts +217 -0
- package/src/utils/corruptionDetection.ts +345 -0
- package/src/utils/dateFormatting.ts +20 -0
- package/src/utils/deepClone.ts +78 -0
- package/src/utils/diagnostics.ts +129 -0
- package/src/utils/errorHandling.ts +80 -0
- package/src/utils/formatting.ts +213 -0
- package/src/utils/list-detection.ts +274 -0
- package/src/utils/logger.ts +404 -0
- package/src/utils/parsingHelpers.ts +190 -0
- package/src/utils/stripTrackedChanges.ts +353 -0
- package/src/utils/textDiff.ts +100 -0
- package/src/utils/units.ts +421 -0
- package/src/utils/validation.ts +542 -0
- package/src/utils/xmlSanitization.ts +182 -0
- package/src/validation/RevisionAutoFixer.ts +542 -0
- package/src/validation/RevisionValidator.ts +460 -0
- package/src/validation/ValidationRules.ts +338 -0
- package/src/validation/index.ts +30 -0
- package/src/xml/CLAUDE.md +65 -0
- package/src/xml/XMLBuilder.ts +871 -0
- package/src/xml/XMLParser.ts +919 -0
- package/src/zip/CLAUDE.md +55 -0
- package/src/zip/ZipHandler.ts +637 -0
- package/src/zip/ZipReader.ts +299 -0
- package/src/zip/ZipWriter.ts +390 -0
- package/src/zip/errors.ts +69 -0
- package/src/zip/types.ts +116 -0
- package/dist/core/ListNormalizer.d.ts +0 -23
- package/dist/core/ListNormalizer.d.ts.map +0 -1
- package/dist/core/ListNormalizer.js +0 -624
- package/dist/core/ListNormalizer.js.map +0 -1
- package/dist/images/index.d.ts +0 -2
- package/dist/images/index.d.ts.map +0 -1
- package/dist/images/index.js +0 -8
- package/dist/images/index.js.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
- package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.js +0 -360
- package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
- package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
- package/dist/ms-doc/fib/FIB.d.ts +0 -18
- package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
- package/dist/ms-doc/fib/FIB.js +0 -342
- package/dist/ms-doc/fib/FIB.js.map +0 -1
- package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
- package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
- package/dist/ms-doc/fields/FieldParser.js +0 -266
- package/dist/ms-doc/fields/FieldParser.js.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
- package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.js +0 -233
- package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
- package/dist/ms-doc/index.d.ts +0 -20
- package/dist/ms-doc/index.d.ts.map +0 -1
- package/dist/ms-doc/index.js +0 -59
- package/dist/ms-doc/index.js.map +0 -1
- package/dist/ms-doc/properties/SPRM.d.ts +0 -210
- package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
- package/dist/ms-doc/properties/SPRM.js +0 -633
- package/dist/ms-doc/properties/SPRM.js.map +0 -1
- package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
- package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
- package/dist/ms-doc/sections/SectionParser.js +0 -214
- package/dist/ms-doc/sections/SectionParser.js.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
- package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.js +0 -268
- package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
- package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
- package/dist/ms-doc/tables/TableParser.d.ts +0 -29
- package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
- package/dist/ms-doc/tables/TableParser.js +0 -176
- package/dist/ms-doc/tables/TableParser.js.map +0 -1
- package/dist/ms-doc/text/PieceTable.d.ts +0 -21
- package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
- package/dist/ms-doc/text/PieceTable.js +0 -171
- package/dist/ms-doc/text/PieceTable.js.map +0 -1
- package/dist/ms-doc/types/Constants.d.ts +0 -99
- package/dist/ms-doc/types/Constants.d.ts.map +0 -1
- package/dist/ms-doc/types/Constants.js +0 -102
- package/dist/ms-doc/types/Constants.js.map +0 -1
- package/dist/ms-doc/types/DocTypes.d.ts +0 -368
- package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
- package/dist/ms-doc/types/DocTypes.js +0 -3
- package/dist/ms-doc/types/DocTypes.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -3
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -6
- package/dist/tracking/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FontManager.js","sourceRoot":"","sources":["../../src/elements/FontManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FontManager.js","sourceRoot":"","sources":["../../src/elements/FontManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * FontManager - Manages embedded fonts in DOCX documents\r\n * Handles font registration and Content_Types.xml updates\r\n */\r\n\r\n/**\r\n * Font format types supported in DOCX\r\n */\r\nexport type FontFormat = 'ttf' | 'otf' | 'woff' | 'woff2';\r\n\r\n/**\r\n * Font entry information\r\n */\r\nexport interface FontEntry {\r\n /** Font file name (e.g., 'arial.ttf') */\r\n filename: string;\r\n /** Font format */\r\n format: FontFormat;\r\n /** Font family name (e.g., 'Arial') */\r\n fontFamily: string;\r\n /** Font data (Buffer) */\r\n data: Buffer;\r\n /** Path in DOCX archive (e.g., 'word/fonts/arial.ttf') */\r\n path: string;\r\n}\r\n\r\n/**\r\n * FontManager handles embedded fonts in documents\r\n * Ensures fonts are properly registered in [Content_Types].xml\r\n */\r\nexport class FontManager {\r\n private fonts = new Map<string, FontEntry>();\r\n private static fontCounter = 1;\r\n\r\n /**\r\n * Creates a new FontManager\r\n */\r\n constructor() {\r\n // Empty constructor\r\n }\r\n\r\n /**\r\n * Factory method to create a new FontManager\r\n */\r\n static create(): FontManager {\r\n return new FontManager();\r\n }\r\n\r\n /**\r\n * Adds a font to the document\r\n * @param fontFamily - Font family name (e.g., 'Arial', 'Times New Roman')\r\n * @param data - Font file data as Buffer\r\n * @param format - Font format (ttf, otf, woff, woff2)\r\n * @returns Font path in the archive\r\n */\r\n addFont(fontFamily: string, data: Buffer, format: FontFormat = 'ttf'): string {\r\n // Generate unique filename\r\n const sanitizedFamily = this.sanitizeFontName(fontFamily);\r\n const filename = `${sanitizedFamily}_${FontManager.fontCounter++}.${format}`;\r\n const path = `word/fonts/${filename}`;\r\n\r\n // Create font entry\r\n const entry: FontEntry = {\r\n filename,\r\n format,\r\n fontFamily,\r\n data,\r\n path,\r\n };\r\n\r\n // Store with path as key for easy lookup\r\n this.fonts.set(path, entry);\r\n\r\n return path;\r\n }\r\n\r\n /**\r\n * Adds a font from a file path\r\n * @param fontFamily - Font family name\r\n * @param filePath - Path to font file\r\n * @param format - Font format (optional, detected from extension)\r\n * @returns Font path in the archive\r\n */\r\n async addFontFromFile(\r\n fontFamily: string,\r\n filePath: string,\r\n format?: FontFormat\r\n ): Promise<string> {\r\n const fs = require('fs').promises;\r\n\r\n // Detect format from extension if not provided\r\n if (!format) {\r\n const ext = filePath.split('.').pop()?.toLowerCase();\r\n if (ext === 'ttf' || ext === 'otf' || ext === 'woff' || ext === 'woff2') {\r\n format = ext as FontFormat;\r\n } else {\r\n throw new Error(`Unable to detect font format from file: ${filePath}`);\r\n }\r\n }\r\n\r\n // Read font file\r\n const data = await fs.readFile(filePath);\r\n\r\n return this.addFont(fontFamily, data, format);\r\n }\r\n\r\n /**\r\n * Checks if a font exists\r\n * @param fontFamily - Font family name\r\n * @returns True if font is registered\r\n */\r\n hasFont(fontFamily: string): boolean {\r\n for (const entry of this.fonts.values()) {\r\n if (entry.fontFamily === fontFamily) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets all registered fonts\r\n * @returns Array of font entries\r\n */\r\n getAllFonts(): FontEntry[] {\r\n return Array.from(this.fonts.values());\r\n }\r\n\r\n /**\r\n * Gets font count\r\n * @returns Number of fonts\r\n */\r\n getCount(): number {\r\n return this.fonts.size;\r\n }\r\n\r\n /**\r\n * Gets MIME type for font format\r\n * @param format - Font format\r\n * @returns MIME type string\r\n */\r\n static getMimeType(format: FontFormat): string {\r\n const mimeTypes: Record<FontFormat, string> = {\r\n ttf: 'application/x-font-ttf',\r\n otf: 'application/x-font-opentype',\r\n woff: 'application/font-woff',\r\n woff2: 'font/woff2',\r\n };\r\n\r\n return mimeTypes[format] || 'application/octet-stream';\r\n }\r\n\r\n /**\r\n * Gets all unique font extensions\r\n * @returns Set of extensions (e.g., 'ttf', 'otf')\r\n */\r\n getExtensions(): Set<string> {\r\n const extensions = new Set<string>();\r\n for (const entry of this.fonts.values()) {\r\n extensions.add(entry.format);\r\n }\r\n return extensions;\r\n }\r\n\r\n /**\r\n * Generates Content_Types.xml entries for fonts\r\n * @returns Array of XML strings\r\n */\r\n generateContentTypeEntries(): string[] {\r\n const entries: string[] = [];\r\n const extensions = this.getExtensions();\r\n\r\n // Add Default entries for each extension\r\n for (const ext of extensions) {\r\n const mimeType = FontManager.getMimeType(ext as FontFormat);\r\n entries.push(` <Default Extension=\"${ext}\" ContentType=\"${mimeType}\"/>`);\r\n }\r\n\r\n return entries;\r\n }\r\n\r\n /**\r\n * Sanitizes font name for use in filename\r\n * @param fontName - Font family name\r\n * @returns Sanitized name safe for filename\r\n */\r\n private sanitizeFontName(fontName: string): string {\r\n // Remove spaces and special characters\r\n return fontName\r\n .toLowerCase()\r\n .replace(/\\s+/g, '_')\r\n .replace(/[^a-z0-9_-]/g, '')\r\n .substring(0, 50); // Limit length\r\n }\r\n\r\n /**\r\n * Clears all fonts\r\n */\r\n clear(): void {\r\n this.fonts.clear();\r\n }\r\n\r\n /**\r\n * Removes a specific font\r\n * @param path - Font path in archive\r\n * @returns True if font was removed\r\n */\r\n removeFont(path: string): boolean {\r\n return this.fonts.delete(path);\r\n }\r\n\r\n /**\r\n * Gets font by path\r\n * @param path - Font path in archive\r\n * @returns Font entry or undefined\r\n */\r\n getFontByPath(path: string): FontEntry | undefined {\r\n return this.fonts.get(path);\r\n }\r\n\r\n /**\r\n * Gets font by family name\r\n * @param fontFamily - Font family name\r\n * @returns Font entry or undefined\r\n */\r\n getFontByFamily(fontFamily: string): FontEntry | undefined {\r\n for (const entry of this.fonts.values()) {\r\n if (entry.fontFamily === fontFamily) {\r\n return entry;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Parses Content_Types.xml to detect font extensions\r\n * @param contentTypesXml - Content_Types.xml content\r\n * @returns Array of font extensions found\r\n */\r\n static parseFontExtensionsFromContentTypes(contentTypesXml: string): string[] {\r\n const fontExtensions: string[] = [];\r\n const fontMimeTypes = [\r\n 'application/x-font-ttf',\r\n 'application/x-font-opentype',\r\n 'application/font-woff',\r\n 'font/woff2',\r\n ];\r\n\r\n // Parse XML to find Default elements with font MIME types\r\n const defaultPattern = /<Default\\s+Extension=\"([^\"]+)\"\\s+ContentType=\"([^\"]+)\"/g;\r\n let match;\r\n\r\n while ((match = defaultPattern.exec(contentTypesXml)) !== null) {\r\n const extension = match[1];\r\n const mimeType = match[2];\r\n\r\n if (extension && mimeType && fontMimeTypes.includes(mimeType)) {\r\n fontExtensions.push(extension);\r\n }\r\n }\r\n\r\n return fontExtensions;\r\n }\r\n\r\n /**\r\n * Detects font format from extension\r\n * @param extension - File extension\r\n * @returns FontFormat or undefined\r\n */\r\n static detectFormatFromExtension(extension: string): FontFormat | undefined {\r\n const ext = extension.toLowerCase().replace('.', '');\r\n if (ext === 'ttf' || ext === 'otf' || ext === 'woff' || ext === 'woff2') {\r\n return ext as FontFormat;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Loads fonts from a ZIP archive\r\n * Reads fonts from word/fonts/ directory and registers them\r\n * @param zipFiles - Map of file paths to content (from ZipHandler)\r\n * @param contentTypesXml - Content of [Content_Types].xml\r\n */\r\n loadFontsFromArchive(\r\n zipFiles: Map<string, Buffer | string>,\r\n contentTypesXml: string\r\n ): void {\r\n // First, detect which font formats are registered in Content_Types.xml\r\n const registeredExtensions = FontManager.parseFontExtensionsFromContentTypes(contentTypesXml);\r\n\r\n // Then, scan word/fonts/ directory for font files\r\n for (const [path, content] of zipFiles.entries()) {\r\n if (path.startsWith('word/fonts/') && content instanceof Buffer) {\r\n const filename = path.split('/').pop() || '';\r\n const extension = filename.split('.').pop()?.toLowerCase();\r\n\r\n // Check if this extension is registered\r\n if (extension && registeredExtensions.includes(extension)) {\r\n const format = FontManager.detectFormatFromExtension(extension);\r\n\r\n if (format) {\r\n // Extract font family from filename (sanitize back)\r\n const familyName = this.extractFontFamilyFromFilename(filename);\r\n\r\n // Create font entry\r\n const entry: FontEntry = {\r\n filename,\r\n format,\r\n fontFamily: familyName,\r\n data: content,\r\n path,\r\n };\r\n\r\n this.fonts.set(path, entry);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Extracts font family name from filename\r\n * @param filename - Font filename\r\n * @returns Inferred font family name\r\n */\r\n private extractFontFamilyFromFilename(filename: string): string {\r\n // Remove extension\r\n const nameWithoutExt = filename.replace(/\\.(ttf|otf|woff|woff2)$/i, '');\r\n\r\n // Remove counter suffix (e.g., _1, _2)\r\n const nameWithoutCounter = nameWithoutExt.replace(/_\\d+$/, '');\r\n\r\n // Replace underscores with spaces and title case\r\n return nameWithoutCounter\r\n .split('_')\r\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(' ');\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/elements/Footer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/elements/Footer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Footer - Represents a document footer\r\n *\r\n * Footers appear at the bottom of pages and can contain text, tables, images, and fields.\r\n * Different footers can be defined for first page, odd pages, and even pages.\r\n */\r\n\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\nimport { Paragraph } from './Paragraph';\r\nimport { Table } from './Table';\r\n\r\n/**\r\n * Footer type\r\n */\r\nexport type FooterType = 'default' | 'first' | 'even';\r\n\r\n/**\r\n * Footer content element\r\n */\r\ntype FooterElement = Paragraph | Table;\r\n\r\n/**\r\n * Footer properties\r\n */\r\nexport interface FooterProperties {\r\n /** Footer type (default, first page, or even page) */\r\n type?: FooterType;\r\n}\r\n\r\n/**\r\n * Represents a document footer\r\n */\r\nexport class Footer {\r\n private elements: FooterElement[] = [];\r\n private type: FooterType;\r\n private footerId?: string;\r\n private rawXML?: string; // Store original XML for preservation\r\n\r\n /**\r\n * Creates a new footer\r\n * @param properties Footer properties\r\n */\r\n constructor(properties: FooterProperties = {}) {\r\n this.type = properties.type || 'default';\r\n }\r\n\r\n /**\r\n * Sets the raw XML content (used when loading existing footers)\r\n * @param xml Raw XML content\r\n */\r\n setRawXML(xml: string): this {\r\n this.rawXML = xml;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the raw XML content if available\r\n */\r\n getRawXML(): string | undefined {\r\n return this.rawXML;\r\n }\r\n\r\n /**\r\n * Gets the footer type\r\n */\r\n getType(): FooterType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Sets the footer ID (used for relationships)\r\n * @param id Footer ID\r\n */\r\n setFooterId(id: string): this {\r\n this.footerId = id;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the footer ID\r\n */\r\n getFooterId(): string | undefined {\r\n return this.footerId;\r\n }\r\n\r\n /**\r\n * Adds a paragraph to the footer\r\n * @param paragraph Paragraph to add\r\n */\r\n addParagraph(paragraph: Paragraph): this {\r\n this.elements.push(paragraph);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new paragraph\r\n * @param text Optional text content\r\n */\r\n createParagraph(text?: string): Paragraph {\r\n const para = new Paragraph();\r\n if (text) {\r\n para.addText(text);\r\n }\r\n this.elements.push(para);\r\n return para;\r\n }\r\n\r\n /**\r\n * Adds a table to the footer\r\n * @param table Table to add\r\n */\r\n addTable(table: Table): this {\r\n this.elements.push(table);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new table\r\n * @param rows Number of rows\r\n * @param columns Number of columns\r\n */\r\n createTable(rows: number, columns: number): Table {\r\n const table = new Table(rows, columns);\r\n this.elements.push(table);\r\n return table;\r\n }\r\n\r\n /**\r\n * Gets all elements in the footer\r\n */\r\n getElements(): FooterElement[] {\r\n return [...this.elements];\r\n }\r\n\r\n /**\r\n * Gets the number of elements\r\n */\r\n getElementCount(): number {\r\n return this.elements.length;\r\n }\r\n\r\n /**\r\n * Clears all elements and resets raw XML so toXML() regenerates an empty footer\r\n */\r\n clear(): this {\r\n this.elements = [];\r\n this.rawXML = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Generates the complete footer XML file content\r\n * This creates a complete footer document (footer1.xml, etc.)\r\n */\r\n toXML(): string {\r\n // If we have raw XML preserved from loading, use it\r\n if (this.rawXML) {\r\n return this.rawXML;\r\n }\r\n\r\n // Otherwise generate from elements\r\n const elementXmls = this.elements.map(el => el.toXML());\r\n\r\n let xml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\r\n xml += '<w:ftr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ';\r\n xml += 'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\\n';\r\n\r\n // Add elements\r\n for (const element of elementXmls) {\r\n xml += this.renderElement(element, 1);\r\n }\r\n\r\n // If no elements, add an empty paragraph\r\n if (this.elements.length === 0) {\r\n xml += ' <w:p/>\\n';\r\n }\r\n\r\n xml += '</w:ftr>';\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Renders an XML element to string with indentation\r\n */\r\n private renderElement(element: XMLElement, indent: number): string {\r\n const spaces = ' '.repeat(indent);\r\n let xml = '';\r\n\r\n if (element.selfClosing) {\r\n xml += `${spaces}<${element.name}`;\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n xml += ` ${key}=\"${value}\"`;\r\n }\r\n }\r\n xml += '/>\\n';\r\n } else {\r\n xml += `${spaces}<${element.name}`;\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n xml += ` ${key}=\"${value}\"`;\r\n }\r\n }\r\n xml += '>';\r\n\r\n if (element.children && element.children.length > 0) {\r\n const hasOnlyText = element.children.every(c => typeof c === 'string');\r\n\r\n if (hasOnlyText) {\r\n // Inline text content\r\n xml += element.children.join('');\r\n } else {\r\n // Block-level children\r\n xml += '\\n';\r\n for (const child of element.children) {\r\n if (typeof child === 'string') {\r\n xml += spaces + ' ' + child + '\\n';\r\n } else {\r\n xml += this.renderElement(child, indent + 1);\r\n }\r\n }\r\n xml += spaces;\r\n }\r\n }\r\n\r\n xml += `</${element.name}>\\n`;\r\n }\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Gets the filename for this footer\r\n * @param number Footer number (1, 2, 3, etc.)\r\n */\r\n getFilename(number: number): string {\r\n return `footer${number}.xml`;\r\n }\r\n\r\n /**\r\n * Creates a default footer\r\n */\r\n static createDefault(): Footer {\r\n return new Footer({ type: 'default' });\r\n }\r\n\r\n /**\r\n * Creates a first page footer\r\n */\r\n static createFirst(): Footer {\r\n return new Footer({ type: 'first' });\r\n }\r\n\r\n /**\r\n * Creates an even page footer\r\n */\r\n static createEven(): Footer {\r\n return new Footer({ type: 'even' });\r\n }\r\n\r\n /**\r\n * Creates a footer with properties\r\n * @param properties Footer properties\r\n */\r\n static create(properties?: FooterProperties): Footer {\r\n return new Footer(properties);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footnote.d.ts","sourceRoot":"","sources":["../../src/elements/Footnote.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK3D,oBAAY,YAAY;IAEtB,MAAM,WAAW;IAEjB,SAAS,cAAc;IAEvB,qBAAqB,0BAA0B;IAE/C,kBAAkB,uBAAuB;CAC1C;AAKD,MAAM,WAAW,kBAAkB;IAEjC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAmB;gBAMzB,UAAU,EAAE,kBAAkB;IAS1C,KAAK,IAAI,MAAM;IAOf,OAAO,IAAI,YAAY;IAOvB,aAAa,IAAI,MAAM,GAAG,SAAS;IAQnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASjC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAUxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAYzC,aAAa,IAAI,SAAS,EAAE;IAO5B,OAAO,IAAI,MAAM;IAOjB,KAAK,IAAI,UAAU;IA2CnB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAWnD,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAgB5C,MAAM,CAAC,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAaxD,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"Footnote.d.ts","sourceRoot":"","sources":["../../src/elements/Footnote.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK3D,oBAAY,YAAY;IAEtB,MAAM,WAAW;IAEjB,SAAS,cAAc;IAEvB,qBAAqB,0BAA0B;IAE/C,kBAAkB,uBAAuB;CAC1C;AAKD,MAAM,WAAW,kBAAkB;IAEjC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAmB;gBAMzB,UAAU,EAAE,kBAAkB;IAS1C,KAAK,IAAI,MAAM;IAOf,OAAO,IAAI,YAAY;IAOvB,aAAa,IAAI,MAAM,GAAG,SAAS;IAQnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASjC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAUxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAYzC,aAAa,IAAI,SAAS,EAAE;IAO5B,OAAO,IAAI,MAAM;IAOjB,KAAK,IAAI,UAAU;IA2CnB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAWnD,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAgB5C,MAAM,CAAC,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAaxD,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,SAAiB,GAAG,QAAQ;CAQ7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footnote.js","sourceRoot":"","sources":["../../src/elements/Footnote.ts"],"names":[],"mappings":";;;AAOA,2CAAwC;AACxC,kDAA2D;AAK3D,IAAY,YASX;AATD,WAAY,YAAY;IAEtB,iCAAiB,CAAA;IAEjB,uCAAuB,CAAA;IAEvB,+DAA+C,CAAA;IAE/C,yDAAyC,CAAA;AAC3C,CAAC,EATW,YAAY,4BAAZ,YAAY,QASvB;AAiBD,MAAa,QAAQ;IACX,EAAE,CAAS;IACX,IAAI,CAAe;IACnB,UAAU,CAAU;IACpB,UAAU,GAAgB,EAAE,CAAC;IAMrC,YAAY,UAA8B;QACxC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAKD,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAKD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAMD,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY,CAAC,SAAoB;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,eAAe,CAAC,IAAa;QAC3B,MAAM,IAAI,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAKD,KAAK;QACH,MAAM,KAAK,GAAwB;YACjC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;SAC3B,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YACtC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAGlC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;YAEzC,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE;gBACzC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;aAC9D,CAAC,CAAC,CAAC;QACN,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,qBAAqB,EAAE,CAAC;YAE5D,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE;gBACzC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,uBAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;aAC1E,CAAC,CAAC,CAAC;QACN,CAAC;aAAM,CAAC;YAEN,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9B,CAAC;YAGD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,uBAAU,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAQD,MAAM,CAAC,QAAQ,CAAC,EAAU,EAAE,IAAY;QACtC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,MAAM,CAAC,eAAe,CAAC,EAAU;QAC/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,EAAE;YACF,IAAI,EAAE,YAAY,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,MAAM,CAAC,2BAA2B,CAAC,EAAU;QAC3C,OAAO,IAAI,QAAQ,CAAC;YAClB,EAAE;YACF,IAAI,EAAE,YAAY,CAAC,qBAAqB;SACzC,CAAC,CAAC;IACL,CAAC;IAQD,MAAM,CAAC,wBAAwB,CAAC,EAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"Footnote.js","sourceRoot":"","sources":["../../src/elements/Footnote.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Footnote - Represents a footnote in a Word document\r\n *\r\n * Footnotes appear at the bottom of the page and are referenced\r\n * within the document text via footnote references.\r\n */\r\n\r\nimport { Paragraph } from './Paragraph';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Footnote type\r\n */\r\nexport enum FootnoteType {\r\n /** Normal footnote */\r\n Normal = 'normal',\r\n /** Separator between document text and footnotes */\r\n Separator = 'separator',\r\n /** Continuation separator for footnotes that continue to next page */\r\n ContinuationSeparator = 'continuationSeparator',\r\n /** Continuation notice at bottom of page when footnotes continue */\r\n ContinuationNotice = 'continuationNotice',\r\n}\r\n\r\n/**\r\n * Footnote properties\r\n */\r\nexport interface FootnoteProperties {\r\n /** Footnote ID (required, must be unique) */\r\n id: number;\r\n /** Type of footnote */\r\n type?: FootnoteType;\r\n /** Custom mark/symbol (optional, otherwise uses numbering) */\r\n customMark?: string;\r\n}\r\n\r\n/**\r\n * Represents a footnote in a document\r\n */\r\nexport class Footnote {\r\n private id: number;\r\n private type: FootnoteType;\r\n private customMark?: string;\r\n private paragraphs: Paragraph[] = [];\r\n\r\n /**\r\n * Creates a new footnote\r\n * @param properties Footnote properties\r\n */\r\n constructor(properties: FootnoteProperties) {\r\n this.id = properties.id;\r\n this.type = properties.type || FootnoteType.Normal;\r\n this.customMark = properties.customMark;\r\n }\r\n\r\n /**\r\n * Gets the footnote ID\r\n */\r\n getId(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * Gets the footnote type\r\n */\r\n getType(): FootnoteType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Gets the custom mark\r\n */\r\n getCustomMark(): string | undefined {\r\n return this.customMark;\r\n }\r\n\r\n /**\r\n * Sets the custom mark\r\n * @param mark Custom mark/symbol\r\n */\r\n setCustomMark(mark: string): this {\r\n this.customMark = mark;\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a paragraph to the footnote\r\n * @param paragraph Paragraph to add\r\n */\r\n addParagraph(paragraph: Paragraph): this {\r\n this.paragraphs.push(paragraph);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new paragraph\r\n * @param text Optional text content\r\n * @returns The created paragraph\r\n */\r\n createParagraph(text?: string): Paragraph {\r\n const para = new Paragraph();\r\n if (text) {\r\n para.addText(text);\r\n }\r\n this.paragraphs.push(para);\r\n return para;\r\n }\r\n\r\n /**\r\n * Gets all paragraphs in the footnote\r\n */\r\n getParagraphs(): Paragraph[] {\r\n return [...this.paragraphs];\r\n }\r\n\r\n /**\r\n * Gets the text content of the footnote\r\n */\r\n getText(): string {\r\n return this.paragraphs.map(p => p.getText()).join('\\n');\r\n }\r\n\r\n /**\r\n * Generates the XML for this footnote\r\n */\r\n toXML(): XMLElement {\r\n const attrs: Record<string, any> = {\r\n 'w:id': this.id.toString(),\r\n };\r\n\r\n if (this.type !== FootnoteType.Normal) {\r\n attrs['w:type'] = this.type;\r\n }\r\n\r\n const children: XMLElement[] = [];\r\n\r\n // Separator types require specific child elements per ECMA-376\r\n if (this.type === FootnoteType.Separator) {\r\n // <w:p><w:r><w:separator/></w:r></w:p>\r\n children.push(XMLBuilder.w('p', undefined, [\r\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('separator')])\r\n ]));\r\n } else if (this.type === FootnoteType.ContinuationSeparator) {\r\n // <w:p><w:r><w:continuationSeparator/></w:r></w:p>\r\n children.push(XMLBuilder.w('p', undefined, [\r\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('continuationSeparator')])\r\n ]));\r\n } else {\r\n // Add paragraphs\r\n for (const para of this.paragraphs) {\r\n children.push(para.toXML());\r\n }\r\n\r\n // If no paragraphs, add an empty one (required)\r\n if (children.length === 0) {\r\n children.push(XMLBuilder.w('p'));\r\n }\r\n }\r\n\r\n return XMLBuilder.w('footnote', attrs, children);\r\n }\r\n\r\n /**\r\n * Creates a footnote from text\r\n * @param id Footnote ID\r\n * @param text Text content\r\n * @returns New footnote instance\r\n */\r\n static fromText(id: number, text: string): Footnote {\r\n const footnote = new Footnote({ id });\r\n footnote.createParagraph(text);\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Creates a separator footnote\r\n * @param id Footnote ID\r\n * @returns New separator footnote\r\n */\r\n static createSeparator(id: number): Footnote {\r\n const footnote = new Footnote({\r\n id,\r\n type: FootnoteType.Separator\r\n });\r\n // Separator typically has a horizontal line\r\n footnote.createParagraph();\r\n // Add separator formatting if needed\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Creates a continuation separator footnote\r\n * @param id Footnote ID\r\n * @returns New continuation separator footnote\r\n */\r\n static createContinuationSeparator(id: number): Footnote {\r\n return new Footnote({\r\n id,\r\n type: FootnoteType.ContinuationSeparator\r\n });\r\n }\r\n\r\n /**\r\n * Creates a continuation notice footnote\r\n * @param id Footnote ID\r\n * @param text Notice text (e.g., \"Continued on next page...\")\r\n * @returns New continuation notice footnote\r\n */\r\n static createContinuationNotice(id: number, text = 'Continued...'): Footnote {\r\n const footnote = new Footnote({\r\n id,\r\n type: FootnoteType.ContinuationNotice\r\n });\r\n footnote.createParagraph(text);\r\n return footnote;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FootnoteManager.d.ts","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"FootnoteManager.d.ts","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAK;IAMnB,OAAO;IASP,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,iBAAiB;IAUzB,MAAM,CAAC,MAAM,IAAI,eAAe;IAShC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAuBtC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAWtC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ7C,eAAe,IAAI,QAAQ,EAAE;IAS7B,0BAA0B,IAAI,QAAQ,EAAE;IASxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAWnC,SAAS,IAAI,MAAM;IAOnB,QAAQ,IAAI,MAAM;IAOlB,OAAO,IAAI,OAAO;IAQlB,KAAK,IAAI,IAAI;IAqBb,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAUD,oBAAoB,IAAI,MAAM;IA4B9B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAkBtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FootnoteManager.js","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FootnoteManager.js","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * FootnoteManager - Manages footnotes in a document\r\n *\r\n * Handles creation, registration, and XML generation for footnotes.\r\n * Maintains unique IDs and proper ordering.\r\n */\r\n\r\nimport { Footnote, FootnoteType } from './Footnote';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\nimport { XMLParser } from '../xml/XMLParser';\r\n\r\n/**\r\n * Manages footnotes in a document\r\n */\r\nexport class FootnoteManager {\r\n private footnotes = new Map<number, Footnote>();\r\n private nextId = 1;\r\n\r\n /**\r\n * Creates a new FootnoteManager\r\n * @private Use static factory method\r\n */\r\n private constructor() {\r\n // Add special footnotes (separators) with negative IDs\r\n this.addSpecialFootnotes();\r\n }\r\n\r\n /**\r\n * Adds special footnotes (separator, continuation)\r\n * These use negative IDs as per OOXML specification\r\n */\r\n private addSpecialFootnotes(): void {\r\n // Separator footnote (ID -1)\r\n const separator = Footnote.createSeparator(-1);\r\n this.footnotes.set(-1, separator);\r\n\r\n // Continuation separator (ID 0)\r\n const continuationSep = Footnote.createContinuationSeparator(0);\r\n this.footnotes.set(0, continuationSep);\r\n }\r\n\r\n /**\r\n * Checks if a footnote is a special/system type (separator, continuationSeparator,\r\n * continuationNotice) that should be preserved across clear() operations.\r\n * Uses type-based detection rather than ID-based, because continuationNotice\r\n * has a positive ID (typically 1) but is still a system footnote.\r\n */\r\n private isSpecialFootnote(footnote: Footnote): boolean {\r\n const type = footnote.getType();\r\n return type === FootnoteType.Separator ||\r\n type === FootnoteType.ContinuationSeparator ||\r\n type === FootnoteType.ContinuationNotice;\r\n }\r\n\r\n /**\r\n * Creates a new FootnoteManager instance\r\n */\r\n static create(): FootnoteManager {\r\n return new FootnoteManager();\r\n }\r\n\r\n /**\r\n * Registers a footnote\r\n * @param footnote Footnote to register\r\n * @returns The registered footnote\r\n */\r\n register(footnote: Footnote): Footnote {\r\n const id = footnote.getId();\r\n\r\n // Ensure ID is not already used (except for special footnotes)\r\n if (id > 0 && this.footnotes.has(id)) {\r\n throw new Error(`Footnote with ID ${id} already exists`);\r\n }\r\n\r\n this.footnotes.set(id, footnote);\r\n\r\n // Update next ID if needed\r\n if (id >= this.nextId) {\r\n this.nextId = id + 1;\r\n }\r\n\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Creates and registers a new footnote\r\n * @param text Footnote text\r\n * @returns The created footnote\r\n */\r\n createFootnote(text: string): Footnote {\r\n const footnote = Footnote.fromText(this.nextId++, text);\r\n this.footnotes.set(footnote.getId(), footnote);\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Gets a footnote by ID\r\n * @param id Footnote ID\r\n * @returns The footnote, or undefined if not found\r\n */\r\n getFootnote(id: number): Footnote | undefined {\r\n return this.footnotes.get(id);\r\n }\r\n\r\n /**\r\n * Gets all user footnotes (excluding special system types: separator,\r\n * continuationSeparator, continuationNotice)\r\n */\r\n getAllFootnotes(): Footnote[] {\r\n return Array.from(this.footnotes.values())\r\n .filter(f => !this.isSpecialFootnote(f))\r\n .sort((a, b) => a.getId() - b.getId());\r\n }\r\n\r\n /**\r\n * Gets all footnotes including special ones\r\n */\r\n getAllFootnotesWithSpecial(): Footnote[] {\r\n return Array.from(this.footnotes.values())\r\n .sort((a, b) => a.getId() - b.getId());\r\n }\r\n\r\n /**\r\n * Checks if a footnote exists\r\n * @param id Footnote ID\r\n */\r\n hasFootnote(id: number): boolean {\r\n return this.footnotes.has(id);\r\n }\r\n\r\n /**\r\n * Removes a footnote\r\n * @param id Footnote ID\r\n * @returns True if removed, false if not found or if it's a special type\r\n */\r\n removeFootnote(id: number): boolean {\r\n const footnote = this.footnotes.get(id);\r\n if (!footnote || this.isSpecialFootnote(footnote)) {\r\n return false;\r\n }\r\n return this.footnotes.delete(id);\r\n }\r\n\r\n /**\r\n * Gets the next available ID\r\n */\r\n getNextId(): number {\r\n return this.nextId;\r\n }\r\n\r\n /**\r\n * Gets the count of footnotes (excluding special ones)\r\n */\r\n getCount(): number {\r\n return this.getAllFootnotes().length;\r\n }\r\n\r\n /**\r\n * Checks if there are any footnotes (excluding special ones)\r\n */\r\n isEmpty(): boolean {\r\n return this.getCount() === 0;\r\n }\r\n\r\n /**\r\n * Clears all user footnotes (preserves special system types: separator,\r\n * continuationSeparator, continuationNotice)\r\n */\r\n clear(): void {\r\n const specialFootnotes = new Map<number, Footnote>();\r\n let maxSpecialId = 0;\r\n\r\n for (const [id, footnote] of this.footnotes) {\r\n if (this.isSpecialFootnote(footnote)) {\r\n specialFootnotes.set(id, footnote);\r\n if (id > maxSpecialId) {\r\n maxSpecialId = id;\r\n }\r\n }\r\n }\r\n\r\n this.footnotes = specialFootnotes;\r\n // Ensure nextId doesn't collide with special footnotes that have positive IDs\r\n this.nextId = Math.max(maxSpecialId + 1, 1);\r\n }\r\n\r\n /**\r\n * Gets statistics about footnotes\r\n */\r\n getStats(): {\r\n total: number;\r\n nextId: number;\r\n } {\r\n return {\r\n total: this.getCount(),\r\n nextId: this.nextId,\r\n };\r\n }\r\n\r\n /**\r\n * Generates the footnotes.xml content\r\n */\r\n generateFootnotesXml(): string {\r\n const footnotes = this.getAllFootnotesWithSpecial();\r\n\r\n // Build footnotes element\r\n const footnotesElement: XMLElement = {\r\n name: 'w:footnotes',\r\n attributes: {\r\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\r\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\r\n },\r\n children: footnotes.map(f => f.toXML())\r\n };\r\n\r\n // Build XML using XMLBuilder\r\n const builder = new XMLBuilder();\r\n builder.element(\r\n footnotesElement.name,\r\n footnotesElement.attributes,\r\n footnotesElement.children\r\n );\r\n return builder.build(true);\r\n }\r\n\r\n /**\r\n * Validates footnotes XML\r\n * @param xml XML string to validate\r\n * @returns True if valid\r\n */\r\n static validate(xml: string): boolean {\r\n // Use XMLParser to extract root element\r\n if (!xml) {\r\n return false;\r\n }\r\n\r\n const footnotesContent = XMLParser.extractBetweenTags(xml, '<w:footnotes', '</w:footnotes>');\r\n if (!footnotesContent) {\r\n return false;\r\n }\r\n\r\n // Check for proper structure - namespace declaration\r\n if (!xml.includes('xmlns:w=')) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/elements/Header.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/elements/Header.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Header - Represents a document header\r\n *\r\n * Headers appear at the top of pages and can contain text, tables, images, and fields.\r\n * Different headers can be defined for first page, odd pages, and even pages.\r\n */\r\n\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\nimport { Paragraph } from './Paragraph';\r\nimport { Table } from './Table';\r\n\r\n/**\r\n * Header type\r\n */\r\nexport type HeaderType = 'default' | 'first' | 'even';\r\n\r\n/**\r\n * Header content element\r\n */\r\ntype HeaderElement = Paragraph | Table;\r\n\r\n/**\r\n * Header properties\r\n */\r\nexport interface HeaderProperties {\r\n /** Header type (default, first page, or even page) */\r\n type?: HeaderType;\r\n}\r\n\r\n/**\r\n * Represents a document header\r\n */\r\nexport class Header {\r\n private elements: HeaderElement[] = [];\r\n private type: HeaderType;\r\n private headerId?: string;\r\n private rawXML?: string; // Store original XML for preservation\r\n\r\n /**\r\n * Creates a new header\r\n * @param properties Header properties\r\n */\r\n constructor(properties: HeaderProperties = {}) {\r\n this.type = properties.type || 'default';\r\n }\r\n\r\n /**\r\n * Sets the raw XML content (used when loading existing headers)\r\n * @param xml Raw XML content\r\n */\r\n setRawXML(xml: string): this {\r\n this.rawXML = xml;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the raw XML content if available\r\n */\r\n getRawXML(): string | undefined {\r\n return this.rawXML;\r\n }\r\n\r\n /**\r\n * Gets the header type\r\n */\r\n getType(): HeaderType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Sets the header ID (used for relationships)\r\n * @param id Header ID\r\n */\r\n setHeaderId(id: string): this {\r\n this.headerId = id;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the header ID\r\n */\r\n getHeaderId(): string | undefined {\r\n return this.headerId;\r\n }\r\n\r\n /**\r\n * Adds a paragraph to the header\r\n * @param paragraph Paragraph to add\r\n */\r\n addParagraph(paragraph: Paragraph): this {\r\n this.elements.push(paragraph);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new paragraph\r\n * @param text Optional text content\r\n */\r\n createParagraph(text?: string): Paragraph {\r\n const para = new Paragraph();\r\n if (text) {\r\n para.addText(text);\r\n }\r\n this.elements.push(para);\r\n return para;\r\n }\r\n\r\n /**\r\n * Adds a table to the header\r\n * @param table Table to add\r\n */\r\n addTable(table: Table): this {\r\n this.elements.push(table);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new table\r\n * @param rows Number of rows\r\n * @param columns Number of columns\r\n */\r\n createTable(rows: number, columns: number): Table {\r\n const table = new Table(rows, columns);\r\n this.elements.push(table);\r\n return table;\r\n }\r\n\r\n /**\r\n * Gets all elements in the header\r\n */\r\n getElements(): HeaderElement[] {\r\n return [...this.elements];\r\n }\r\n\r\n /**\r\n * Gets the number of elements\r\n */\r\n getElementCount(): number {\r\n return this.elements.length;\r\n }\r\n\r\n /**\r\n * Clears all elements and resets raw XML so toXML() regenerates an empty header\r\n */\r\n clear(): this {\r\n this.elements = [];\r\n this.rawXML = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Generates the complete header XML file content\r\n * This creates a complete header document (header1.xml, etc.)\r\n */\r\n toXML(): string {\r\n // If we have raw XML preserved from loading, use it\r\n if (this.rawXML) {\r\n return this.rawXML;\r\n }\r\n\r\n // Otherwise generate from elements\r\n const elementXmls = this.elements.map(el => el.toXML());\r\n\r\n let xml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\r\n xml += '<w:hdr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ';\r\n xml += 'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\\n';\r\n\r\n // Add elements\r\n for (const element of elementXmls) {\r\n xml += this.renderElement(element, 1);\r\n }\r\n\r\n // If no elements, add an empty paragraph\r\n if (this.elements.length === 0) {\r\n xml += ' <w:p/>\\n';\r\n }\r\n\r\n xml += '</w:hdr>';\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Renders an XML element to string with indentation\r\n */\r\n private renderElement(element: XMLElement, indent: number): string {\r\n const spaces = ' '.repeat(indent);\r\n let xml = '';\r\n\r\n if (element.selfClosing) {\r\n xml += `${spaces}<${element.name}`;\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n xml += ` ${key}=\"${value}\"`;\r\n }\r\n }\r\n xml += '/>\\n';\r\n } else {\r\n xml += `${spaces}<${element.name}`;\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n xml += ` ${key}=\"${value}\"`;\r\n }\r\n }\r\n xml += '>';\r\n\r\n if (element.children && element.children.length > 0) {\r\n const hasOnlyText = element.children.every(c => typeof c === 'string');\r\n\r\n if (hasOnlyText) {\r\n // Inline text content\r\n xml += element.children.join('');\r\n } else {\r\n // Block-level children\r\n xml += '\\n';\r\n for (const child of element.children) {\r\n if (typeof child === 'string') {\r\n xml += spaces + ' ' + child + '\\n';\r\n } else {\r\n xml += this.renderElement(child, indent + 1);\r\n }\r\n }\r\n xml += spaces;\r\n }\r\n }\r\n\r\n xml += `</${element.name}>\\n`;\r\n }\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Gets the filename for this header\r\n * @param number Header number (1, 2, 3, etc.)\r\n */\r\n getFilename(number: number): string {\r\n return `header${number}.xml`;\r\n }\r\n\r\n /**\r\n * Creates a default header\r\n */\r\n static createDefault(): Header {\r\n return new Header({ type: 'default' });\r\n }\r\n\r\n /**\r\n * Creates a first page header\r\n */\r\n static createFirst(): Header {\r\n return new Header({ type: 'first' });\r\n }\r\n\r\n /**\r\n * Creates an even page header\r\n */\r\n static createEven(): Header {\r\n return new Header({ type: 'even' });\r\n }\r\n\r\n /**\r\n * Creates a header with properties\r\n * @param properties Header properties\r\n */\r\n static create(properties?: HeaderProperties): Header {\r\n return new Header(properties);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderFooterManager.js","sourceRoot":"","sources":["../../src/elements/HeaderFooterManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeaderFooterManager.js","sourceRoot":"","sources":["../../src/elements/HeaderFooterManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * HeaderFooterManager - Manages headers and footers in a document\r\n *\r\n * Tracks all headers and footers, assigns unique IDs, generates filenames,\r\n * and manages relationships.\r\n */\r\n\r\nimport { Header } from './Header';\r\nimport { Footer } from './Footer';\r\n\r\n/**\r\n * Header entry with metadata\r\n */\r\ninterface HeaderEntry {\r\n header: Header;\r\n filename: string;\r\n relationshipId: string;\r\n number: number;\r\n}\r\n\r\n/**\r\n * Footer entry with metadata\r\n */\r\ninterface FooterEntry {\r\n footer: Footer;\r\n filename: string;\r\n relationshipId: string;\r\n number: number;\r\n}\r\n\r\n/**\r\n * Manages all headers and footers in a document\r\n */\r\nexport class HeaderFooterManager {\r\n private headers: Map<Header, HeaderEntry>;\r\n private footers: Map<Footer, FooterEntry>;\r\n private nextHeaderNumber: number;\r\n private nextFooterNumber: number;\r\n\r\n /**\r\n * Creates a new header/footer manager\r\n */\r\n constructor() {\r\n this.headers = new Map();\r\n this.footers = new Map();\r\n this.nextHeaderNumber = 1;\r\n this.nextFooterNumber = 1;\r\n }\r\n\r\n /**\r\n * Registers a header with the manager\r\n * @param header The header to register\r\n * @param relationshipId The relationship ID for this header\r\n * @returns The filename assigned to this header\r\n */\r\n registerHeader(header: Header, relationshipId: string): string {\r\n // Check if already registered\r\n const existing = this.headers.get(header);\r\n if (existing) {\r\n return existing.filename;\r\n }\r\n\r\n // Generate filename\r\n const number = this.nextHeaderNumber++;\r\n const filename = header.getFilename(number);\r\n\r\n // Set header ID\r\n header.setHeaderId(relationshipId);\r\n\r\n // Store entry\r\n const entry: HeaderEntry = {\r\n header,\r\n filename,\r\n relationshipId,\r\n number,\r\n };\r\n\r\n this.headers.set(header, entry);\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Registers a footer with the manager\r\n * @param footer The footer to register\r\n * @param relationshipId The relationship ID for this footer\r\n * @returns The filename assigned to this footer\r\n */\r\n registerFooter(footer: Footer, relationshipId: string): string {\r\n // Check if already registered\r\n const existing = this.footers.get(footer);\r\n if (existing) {\r\n return existing.filename;\r\n }\r\n\r\n // Generate filename\r\n const number = this.nextFooterNumber++;\r\n const filename = footer.getFilename(number);\r\n\r\n // Set footer ID\r\n footer.setFooterId(relationshipId);\r\n\r\n // Store entry\r\n const entry: FooterEntry = {\r\n footer,\r\n filename,\r\n relationshipId,\r\n number,\r\n };\r\n\r\n this.footers.set(footer, entry);\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Gets the filename for a header\r\n * @param header The header\r\n * @returns The filename, or undefined if not registered\r\n */\r\n getHeaderFilename(header: Header): string | undefined {\r\n return this.headers.get(header)?.filename;\r\n }\r\n\r\n /**\r\n * Gets the filename for a footer\r\n * @param footer The footer\r\n * @returns The filename, or undefined if not registered\r\n */\r\n getFooterFilename(footer: Footer): string | undefined {\r\n return this.footers.get(footer)?.filename;\r\n }\r\n\r\n /**\r\n * Gets the relationship ID for a header\r\n * @param header The header\r\n * @returns The relationship ID, or undefined if not registered\r\n */\r\n getHeaderRelationshipId(header: Header): string | undefined {\r\n return this.headers.get(header)?.relationshipId;\r\n }\r\n\r\n /**\r\n * Gets the relationship ID for a footer\r\n * @param footer The footer\r\n * @returns The relationship ID, or undefined if not registered\r\n */\r\n getFooterRelationshipId(footer: Footer): string | undefined {\r\n return this.footers.get(footer)?.relationshipId;\r\n }\r\n\r\n /**\r\n * Gets all registered headers\r\n * @returns Array of header entries\r\n */\r\n getAllHeaders(): HeaderEntry[] {\r\n return Array.from(this.headers.values());\r\n }\r\n\r\n /**\r\n * Gets all registered footers\r\n * @returns Array of footer entries\r\n */\r\n getAllFooters(): FooterEntry[] {\r\n return Array.from(this.footers.values());\r\n }\r\n\r\n /**\r\n * Gets the number of headers\r\n * @returns Number of registered headers\r\n */\r\n getHeaderCount(): number {\r\n return this.headers.size;\r\n }\r\n\r\n /**\r\n * Gets the number of footers\r\n * @returns Number of registered footers\r\n */\r\n getFooterCount(): number {\r\n return this.footers.size;\r\n }\r\n\r\n /**\r\n * Checks if a header is registered\r\n * @param header The header\r\n * @returns True if registered\r\n */\r\n hasHeader(header: Header): boolean {\r\n return this.headers.has(header);\r\n }\r\n\r\n /**\r\n * Checks if a footer is registered\r\n * @param footer The footer\r\n * @returns True if registered\r\n */\r\n hasFooter(footer: Footer): boolean {\r\n return this.footers.has(footer);\r\n }\r\n\r\n /**\r\n * Clears all headers and footers\r\n */\r\n clear(): this {\r\n this.headers.clear();\r\n this.footers.clear();\r\n this.nextHeaderNumber = 1;\r\n this.nextFooterNumber = 1;\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a new header/footer manager\r\n */\r\n static create(): HeaderFooterManager {\r\n return new HeaderFooterManager();\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hyperlink.d.ts","sourceRoot":"","sources":["../../src/elements/Hyperlink.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQ3C,MAAM,WAAW,mBAAmB;IAElC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,aAAa,CAAC;IAE3B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"Hyperlink.d.ts","sourceRoot":"","sources":["../../src/elements/Hyperlink.ts"],"names":[],"mappings":"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"}
|
|
@@ -324,12 +324,12 @@ class Hyperlink {
|
|
|
324
324
|
return { valid: false, issues, fixed, originalUrl };
|
|
325
325
|
}
|
|
326
326
|
if (fixCommonIssues && fixedUrl) {
|
|
327
|
-
if (!
|
|
327
|
+
if (!(/^[a-z]+:\/\//i.exec(fixedUrl))) {
|
|
328
328
|
fixedUrl = "https://" + fixedUrl;
|
|
329
329
|
fixed.push("Added missing protocol (https://)");
|
|
330
330
|
}
|
|
331
|
-
const protocolMatch =
|
|
332
|
-
if (protocolMatch
|
|
331
|
+
const protocolMatch = /^([a-z]+:\/\/)/i.exec(fixedUrl);
|
|
332
|
+
if (protocolMatch?.[1]) {
|
|
333
333
|
const protocol = protocolMatch[1];
|
|
334
334
|
const rest = fixedUrl.substring(protocol.length);
|
|
335
335
|
const fixedRest = rest.replace(/\/\//g, "/");
|
|
@@ -342,7 +342,7 @@ class Hyperlink {
|
|
|
342
342
|
fixedUrl = fixedUrl.replace(/ /g, "%20");
|
|
343
343
|
fixed.push("Encoded spaces as %20");
|
|
344
344
|
}
|
|
345
|
-
if (
|
|
345
|
+
if (/^https?:\/\/[^/]+\/.+\/$/.exec(fixedUrl)) {
|
|
346
346
|
fixedUrl = fixedUrl.replace(/\/$/, "");
|
|
347
347
|
fixed.push("Removed trailing slash");
|
|
348
348
|
}
|
|
@@ -354,7 +354,7 @@ class Hyperlink {
|
|
|
354
354
|
this.setUrl(fixedUrl);
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
|
-
if (checkAccessibility && fixedUrl
|
|
357
|
+
if (checkAccessibility && fixedUrl?.match(/^https?:\/\//i)) {
|
|
358
358
|
if (typeof fetch === "undefined") {
|
|
359
359
|
issues.push("Network validation unavailable: fetch API not supported in this environment");
|
|
360
360
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hyperlink.js","sourceRoot":"","sources":["../../src/elements/Hyperlink.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Hyperlink.js","sourceRoot":"","sources":["../../src/elements/Hyperlink.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Hyperlink - Represents a hyperlink in a Word document\r\n *\r\n * Hyperlinks can be external (to websites, files) or internal (to bookmarks within the document).\r\n * They are represented using the `<w:hyperlink>` element.\r\n *\r\n * ## Important: Relationship ID Requirement\r\n *\r\n * **External hyperlinks REQUIRE a relationship ID to be set before XML generation.**\r\n * Per ECMA-376 Part 1 §17.16.22, `<w:hyperlink>` elements with external targets must have\r\n * an `r:id` attribute that references a relationship in `word/_rels/document.xml.rels`.\r\n *\r\n * ### Correct Usage Pattern:\r\n *\r\n * ```typescript\r\n * // RECOMMENDED: Use Document.save() - automatically handles relationships\r\n * const doc = Document.create();\r\n * const para = doc.createParagraph();\r\n * para.addHyperlink(Hyperlink.createExternal('https://example.com', 'Link'));\r\n * await doc.save('document.docx'); // ✅ Relationships auto-registered\r\n * ```\r\n *\r\n * ### Manual Relationship Registration (Advanced):\r\n *\r\n * ```typescript\r\n * const link = Hyperlink.createExternal('https://example.com', 'Link');\r\n * const relationship = relationshipManager.addHyperlink('https://example.com');\r\n * link.setRelationshipId(relationship.getId());\r\n * link.toXML(); // ✅ Now valid\r\n * ```\r\n *\r\n * ### What NOT to Do:\r\n *\r\n * ```typescript\r\n * const link = Hyperlink.createExternal('https://example.com', 'Link');\r\n * link.toXML(); // ❌ ERROR: Missing relationship ID\r\n * ```\r\n *\r\n * ## Internal Hyperlinks\r\n *\r\n * Internal hyperlinks (bookmarks) do NOT require relationships:\r\n *\r\n * ```typescript\r\n * const link = Hyperlink.createInternal('Section1', 'Go to Section 1');\r\n * link.toXML(); // ✅ Valid - uses w:anchor attribute\r\n * ```\r\n *\r\n * @see {@link https://www.ecma-international.org/publications-and-standards/standards/ecma-376/ | ECMA-376 Part 1 §17.16.22}\r\n */\r\n\r\nimport { XMLElement } from \"../xml/XMLBuilder\";\r\nimport { Run, RunFormatting } from \"./Run\";\r\nimport { Revision } from \"./Revision\";\r\nimport { validateRunText } from \"../utils/validation\";\r\nimport { defaultLogger } from \"../utils/logger\";\r\n\r\n/**\r\n * Hyperlink properties\r\n */\r\nexport interface HyperlinkProperties {\r\n /** Hyperlink URL (for external links) */\r\n url?: string;\r\n /** Bookmark anchor (for internal links) */\r\n anchor?: string;\r\n /** Display text (optional for empty/invisible hyperlinks) */\r\n text?: string;\r\n /** Text formatting */\r\n formatting?: RunFormatting;\r\n /** Tooltip text */\r\n tooltip?: string;\r\n /** Relationship ID (set by Document when saving) */\r\n relationshipId?: string;\r\n /** Whether this is an empty/invisible hyperlink with no display text */\r\n isEmpty?: boolean;\r\n /** Target frame attribute (e.g., \"_blank\" for new window) */\r\n tgtFrame?: string;\r\n /** History tracking attribute */\r\n history?: string;\r\n}\r\n\r\n/**\r\n * Represents a hyperlink\r\n */\r\nexport class Hyperlink {\r\n private url?: string;\r\n private anchor?: string;\r\n private text: string;\r\n private run: Run;\r\n private tooltip?: string;\r\n private relationshipId?: string;\r\n private formatting: RunFormatting;\r\n /** Whether this is an empty/invisible hyperlink with no display text */\r\n private _isEmpty = false;\r\n /** Target frame attribute (e.g., \"_blank\" for new window) */\r\n private tgtFrame?: string;\r\n /** History tracking attribute */\r\n private history?: string;\r\n /** Tracking context for automatic change tracking */\r\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\r\n /** Parent paragraph reference for automatic tracking */\r\n private _parentParagraph?: import('./Paragraph').Paragraph;\r\n\r\n /**\r\n * Creates a new hyperlink\r\n *\r\n * **Note:** A hyperlink must have either a URL (external) or anchor (internal), but not both.\r\n * If both are provided, the URL takes precedence and a warning is logged.\r\n *\r\n * @param properties Hyperlink properties\r\n */\r\n constructor(properties: HyperlinkProperties) {\r\n this.url = properties.url;\r\n this.anchor = properties.anchor;\r\n this.tooltip = properties.tooltip;\r\n this.relationshipId = properties.relationshipId;\r\n this.tgtFrame = properties.tgtFrame;\r\n this.history = properties.history;\r\n this._isEmpty = properties.isEmpty ?? false;\r\n\r\n // VALIDATION: Warn about hybrid links (url + anchor)\r\n if (this.url && this.anchor) {\r\n defaultLogger.warn(\r\n `DocXML Warning: Hyperlink has both URL (\"${this.url}\") and anchor (\"${this.anchor}\"). ` +\r\n `This is ambiguous per ECMA-376 spec. URL will take precedence. ` +\r\n `Use Hyperlink.createExternal() or Hyperlink.createInternal() to avoid ambiguity.`\r\n );\r\n }\r\n\r\n // Handle empty/invisible hyperlinks (no display text)\r\n if (this._isEmpty) {\r\n this.text = \"\";\r\n this.formatting = {};\r\n this.run = new Run(\"\", {});\r\n return;\r\n }\r\n\r\n // Text fallback: properties.text → url → 'Link'\r\n // NOTE: Do NOT use anchor (bookmark ID) as display text - it should only be used for navigation\r\n // Using bookmark IDs as visible text causes TOC corruption (Issue: TOC shows \"HEADING=II.MNKE7E8NA385_\" instead of proper headings)\r\n this.text = properties.text || this.url || \"Link\";\r\n\r\n // Validate text for XML patterns\r\n // Default to auto-cleaning XML patterns unless explicitly disabled (matches Run behavior)\r\n const validation = validateRunText(this.text, {\r\n context: \"Hyperlink text\",\r\n autoClean: properties.formatting?.cleanXmlFromText !== false,\r\n warnToConsole: true,\r\n });\r\n\r\n // Use cleaned text if available and cleaning was requested\r\n if (validation.cleanedText) {\r\n this.text = validation.cleanedText;\r\n }\r\n\r\n // Create run with default hyperlink styling (Verdana 12pt blue underlined)\r\n this.formatting = {\r\n font: \"Verdana\",\r\n size: 12,\r\n color: \"0000FF\", // Standard hyperlink blue\r\n underline: \"single\",\r\n ...properties.formatting,\r\n };\r\n\r\n this.run = new Run(this.text, this.formatting);\r\n }\r\n\r\n /**\r\n * Sets the tracking context for automatic change tracking.\r\n * Called by Document when track changes is enabled.\r\n * @internal\r\n */\r\n _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {\r\n this.trackingContext = context;\r\n }\r\n\r\n /**\r\n * Sets the parent paragraph reference for automatic tracking.\r\n * Called by Paragraph when hyperlink is added.\r\n * @internal\r\n */\r\n _setParentParagraph(paragraph: import('./Paragraph').Paragraph): void {\r\n this._parentParagraph = paragraph;\r\n }\r\n\r\n /**\r\n * Gets the parent paragraph reference.\r\n * @internal\r\n */\r\n _getParentParagraph(): import('./Paragraph').Paragraph | undefined {\r\n return this._parentParagraph;\r\n }\r\n\r\n /**\r\n * Gets the hyperlink URL\r\n */\r\n getUrl(): string | undefined {\r\n return this.url;\r\n }\r\n\r\n /**\r\n * Gets the complete URL including any anchor fragment.\r\n *\r\n * For external links that also have an anchor (e.g., internal bookmark within external page),\r\n * this returns the URL with the anchor appended as a fragment.\r\n * For internal-only links (anchor without URL), returns undefined.\r\n *\r\n * Note: As of v7.2.0, DocumentParser automatically combines external URLs with anchors\r\n * during parsing, so getUrl() typically returns the full URL. This method is provided\r\n * for cases where URL and anchor are set separately via the API.\r\n *\r\n * @returns The complete URL with fragment, or undefined for internal-only links\r\n *\r\n * @example\r\n * ```typescript\r\n * // External link with anchor fragment\r\n * const link = new Hyperlink({ url: 'https://example.com/', anchor: '!/view?id=123', text: 'Link' });\r\n * link.getUrl(); // 'https://example.com/'\r\n * link.getAnchor(); // '!/view?id=123'\r\n * link.getFullUrl(); // 'https://example.com/#!/view?id=123'\r\n *\r\n * // External link without anchor\r\n * const link2 = Hyperlink.createExternal('https://example.com/page', 'Link');\r\n * link2.getFullUrl(); // 'https://example.com/page'\r\n *\r\n * // Internal link (bookmark reference)\r\n * const link3 = Hyperlink.createInternal('Section1', 'Go to Section 1');\r\n * link3.getFullUrl(); // undefined\r\n * ```\r\n */\r\n getFullUrl(): string | undefined {\r\n if (this.url && this.anchor) {\r\n return this.url + '#' + this.anchor;\r\n }\r\n return this.url;\r\n }\r\n\r\n /**\r\n * Gets the anchor (for internal links)\r\n */\r\n getAnchor(): string | undefined {\r\n return this.anchor;\r\n }\r\n\r\n /**\r\n * Returns whether this is an empty/invisible hyperlink (has no display text).\r\n * Empty hyperlinks are self-closing elements in the XML.\r\n */\r\n isEmpty(): boolean {\r\n return this._isEmpty;\r\n }\r\n\r\n /**\r\n * Gets the target frame attribute (e.g., \"_blank\" for new window)\r\n */\r\n getTgtFrame(): string | undefined {\r\n return this.tgtFrame;\r\n }\r\n\r\n /**\r\n * Gets the history tracking attribute\r\n */\r\n getHistory(): string | undefined {\r\n return this.history;\r\n }\r\n\r\n /**\r\n * Gets the display text\r\n *\r\n * This method delegates to the internal run to ensure the returned text\r\n * is always accurate and matches what will be in the generated XML,\r\n * per ECMA-376 Part 1 §17.16.22.\r\n *\r\n * @returns The display text including any special characters (tabs, breaks, etc.)\r\n */\r\n getText(): string {\r\n return this.run.getText();\r\n }\r\n\r\n /**\r\n * Sets the display text\r\n */\r\n setText(text: string): this {\r\n // Validate text for XML patterns\r\n // Default to auto-cleaning unless explicitly disabled (matches Run behavior)\r\n const validation = validateRunText(text, {\r\n context: \"Hyperlink.setText\",\r\n autoClean: this.formatting.cleanXmlFromText !== false,\r\n warnToConsole: true,\r\n });\r\n\r\n // Use cleaned text if available\r\n const cleanedText = validation.cleanedText || text;\r\n\r\n const previousValue = this.text;\r\n this.text = cleanedText;\r\n this.run.setText(cleanedText); // Run.setText also validates\r\n if (this.trackingContext?.isEnabled() && previousValue !== cleanedText) {\r\n this.trackingContext.trackHyperlinkChange(this, 'text', previousValue, cleanedText);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the internal run directly (for advanced use cases like TOC parsing)\r\n * Used by DocumentParser to preserve run content (tabs, breaks, etc.)\r\n * @param run - The run to use for this hyperlink\r\n */\r\n setRun(run: Run): this {\r\n this.run = run;\r\n this.text = run.getText();\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the tooltip\r\n */\r\n getTooltip(): string | undefined {\r\n return this.tooltip;\r\n }\r\n\r\n /**\r\n * Sets the tooltip\r\n */\r\n setTooltip(tooltip: string): this {\r\n const previousValue = this.tooltip;\r\n this.tooltip = tooltip;\r\n if (this.trackingContext?.isEnabled() && previousValue !== tooltip) {\r\n this.trackingContext.trackHyperlinkChange(this, 'tooltip', previousValue, tooltip);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the relationship ID\r\n */\r\n getRelationshipId(): string | undefined {\r\n return this.relationshipId;\r\n }\r\n\r\n /**\r\n * Sets the relationship ID (called by Document during save)\r\n */\r\n setRelationshipId(id: string): this {\r\n this.relationshipId = id;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets or updates the hyperlink URL\r\n *\r\n * When URL is updated, we mark that the relationship needs updating.\r\n * The actual relationship update happens during Document.save() to ensure\r\n * proper coordination with the RelationshipManager.\r\n *\r\n * **Important:** This method maintains the relationship ID but flags it for update.\r\n * The RelationshipManager will update the existing relationship's target URL\r\n * during save, preventing orphaned relationships per ECMA-376 §17.16.22.\r\n *\r\n * @param url - The new URL (or undefined to clear)\r\n * @returns This hyperlink for chaining\r\n * @throws {Error} If clearing URL would create empty hyperlink (no URL and no anchor)\r\n *\r\n * @example\r\n * ```typescript\r\n * const link = Hyperlink.createExternal('https://old.com', 'Link');\r\n * link.setUrl('https://new.com'); // Marks for relationship update\r\n * await doc.save('updated.docx'); // Updates relationship target\r\n * ```\r\n */\r\n setUrl(url: string | undefined): this {\r\n // Validate that clearing URL doesn't create empty hyperlink\r\n if (!url && !this.anchor) {\r\n throw new Error(\r\n `Cannot set URL to undefined: Hyperlink \"${this.run.getText()}\" has no anchor. ` +\r\n `Clearing the URL would create an invalid hyperlink per ECMA-376 §17.16.22. ` +\r\n `Either provide a new URL or delete the hyperlink entirely.`\r\n );\r\n }\r\n\r\n // Save old URL before updating (for text fallback logic)\r\n const oldUrl = this.url;\r\n\r\n // Skip if URL unchanged (optimization)\r\n if (oldUrl === url) {\r\n return this;\r\n }\r\n\r\n // If tracking enabled AND has parent paragraph, create revision pair\r\n // OOXML has no w:hyperlinkChange element - Word tracks hyperlink changes as delete/insert pairs\r\n if (this.trackingContext?.isEnabled() && this._parentParagraph) {\r\n const author = this.trackingContext.getAuthor();\r\n\r\n // Clone current state for deletion (before applying changes)\r\n const oldHyperlink = this.clone();\r\n\r\n // Apply the change to this hyperlink\r\n this.url = url;\r\n this.relationshipId = undefined;\r\n if (this.run.getText() === oldUrl) {\r\n this.text = url || this.anchor || \"Link\";\r\n this.run.setText(this.text);\r\n }\r\n\r\n // Create delete/insert revision pair\r\n const deletion = Revision.createDeletion(author, [oldHyperlink]);\r\n const insertion = Revision.createInsertion(author, [this]);\r\n\r\n // Replace this hyperlink with the revision pair in parent paragraph\r\n this._parentParagraph.replaceContent(this, [deletion, insertion]);\r\n\r\n // Clear parent reference since we're now inside a revision\r\n this._parentParagraph = undefined;\r\n\r\n return this;\r\n }\r\n\r\n // Non-tracking path (original behavior)\r\n this.url = url;\r\n\r\n // Clear the relationship ID so it will be re-registered during save\r\n // This ensures the relationship target is updated to point to the new URL\r\n this.relationshipId = undefined;\r\n\r\n // Update text ONLY if it was auto-generated from the old URL\r\n // This preserves user-provided text (even if it's \"Link\")\r\n // Use run.getText() to ensure we check the actual current text, not stale cache\r\n if (this.run.getText() === oldUrl) {\r\n this.text = url || this.anchor || \"Link\";\r\n this.run.setText(this.text);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the anchor (for internal links)\r\n * @param anchor Bookmark name to link to\r\n * @returns This hyperlink for chaining\r\n * @throws {Error} If clearing anchor would create empty hyperlink (no URL and no anchor)\r\n * @example\r\n * ```typescript\r\n * const link = Hyperlink.createInternal('OldBookmark', 'Go there');\r\n * link.setAnchor('NewBookmark'); // Update internal link target\r\n * ```\r\n */\r\n setAnchor(anchor: string | undefined): this {\r\n // Validate that clearing anchor doesn't create empty hyperlink\r\n if (!anchor && !this.url) {\r\n throw new Error(\r\n `Cannot set anchor to undefined: Hyperlink \"${this.run.getText()}\" has no URL. ` +\r\n `Clearing the anchor would create an invalid hyperlink per ECMA-376 §17.16.22. ` +\r\n `Either provide a new anchor or delete the hyperlink entirely.`\r\n );\r\n }\r\n\r\n // Save old anchor before updating\r\n const oldAnchor = this.anchor;\r\n\r\n // Skip if anchor unchanged (optimization)\r\n if (oldAnchor === anchor) {\r\n return this;\r\n }\r\n\r\n // If tracking enabled AND has parent paragraph, create revision pair\r\n // OOXML has no w:hyperlinkChange element - Word tracks hyperlink changes as delete/insert pairs\r\n if (this.trackingContext?.isEnabled() && this._parentParagraph) {\r\n const author = this.trackingContext.getAuthor();\r\n\r\n // Clone current state for deletion (before applying changes)\r\n const oldHyperlink = this.clone();\r\n\r\n // Apply the change to this hyperlink\r\n this.anchor = anchor;\r\n if (anchor && this.url) {\r\n defaultLogger.warn(\r\n `DocXML Warning: Setting anchor \"${anchor}\" on hyperlink that has URL \"${this.url}\". ` +\r\n `Clearing URL to make this an internal link. Use separate hyperlinks for external and internal links.`\r\n );\r\n this.url = undefined;\r\n this.relationshipId = undefined;\r\n }\r\n if (this.run.getText() === oldAnchor) {\r\n this.text = anchor || this.url || \"Link\";\r\n this.run.setText(this.text);\r\n }\r\n\r\n // Create delete/insert revision pair\r\n const deletion = Revision.createDeletion(author, [oldHyperlink]);\r\n const insertion = Revision.createInsertion(author, [this]);\r\n\r\n // Replace this hyperlink with the revision pair in parent paragraph\r\n this._parentParagraph.replaceContent(this, [deletion, insertion]);\r\n\r\n // Clear parent reference since we're now inside a revision\r\n this._parentParagraph = undefined;\r\n\r\n return this;\r\n }\r\n\r\n // Non-tracking path (original behavior)\r\n this.anchor = anchor;\r\n\r\n // If converting from external to internal, clear URL and relationship\r\n if (anchor && this.url) {\r\n defaultLogger.warn(\r\n `DocXML Warning: Setting anchor \"${anchor}\" on hyperlink that has URL \"${this.url}\". ` +\r\n `Clearing URL to make this an internal link. Use separate hyperlinks for external and internal links.`\r\n );\r\n this.url = undefined;\r\n this.relationshipId = undefined;\r\n }\r\n\r\n // Update text ONLY if it was auto-generated from the old anchor\r\n // Use run.getText() to ensure we check the actual current text, not stale cache\r\n if (this.run.getText() === oldAnchor) {\r\n this.text = anchor || this.url || \"Link\";\r\n this.run.setText(this.text);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the run\r\n */\r\n getRun(): Run {\r\n return this.run;\r\n }\r\n\r\n /**\r\n * Sets run formatting\r\n *\r\n * @param formatting - The formatting to apply\r\n * @param options - Optional settings\r\n * @param options.replace - If true, replaces ALL existing formatting instead of merging.\r\n * Use this when you want to clear inherited styles like characterStyle.\r\n *\r\n * @example\r\n * ```typescript\r\n * // Merge mode (default): adds/updates properties while preserving others\r\n * hyperlink.setFormatting({ bold: true });\r\n *\r\n * // Replace mode: clears all existing formatting and applies only the new properties\r\n * hyperlink.setFormatting({ font: \"Verdana\", size: 12 }, { replace: true });\r\n * ```\r\n */\r\n setFormatting(formatting: RunFormatting, options?: { replace?: boolean }): this {\r\n // Update stored formatting\r\n const previousValue = { ...this.formatting };\r\n if (options?.replace) {\r\n // Replace mode: new formatting replaces ALL existing properties\r\n this.formatting = { ...formatting };\r\n } else {\r\n // Merge mode (default, backwards-compatible): merge with existing\r\n this.formatting = { ...this.formatting, ...formatting };\r\n }\r\n // Create new run with updated formatting, preserving current text\r\n const currentText = this.run.getText();\r\n this.run = new Run(currentText, this.formatting);\r\n this.text = currentText; // Keep cache in sync\r\n if (this.trackingContext?.isEnabled()) {\r\n this.trackingContext.trackHyperlinkChange(this, 'formatting', previousValue, this.formatting);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets run formatting (returns this hyperlink for fluent API)\r\n * @returns This hyperlink for method chaining\r\n *\r\n * @example\r\n * ```typescript\r\n * hyperlink.getFormatting().setColor('0563C1').setUnderline('single');\r\n * ```\r\n */\r\n getFormatting(): this {\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the raw formatting object (for direct access)\r\n * @returns RunFormatting object\r\n */\r\n getRawFormatting(): RunFormatting {\r\n return this.formatting;\r\n }\r\n\r\n // ============================================================================\r\n // Individual Formatting Getters\r\n // ============================================================================\r\n\r\n /**\r\n * Gets the text color\r\n * @returns Color hex string or undefined\r\n */\r\n getColor(): string | undefined {\r\n return this.formatting.color;\r\n }\r\n\r\n /**\r\n * Gets the underline style\r\n * @returns Underline style or undefined\r\n */\r\n getUnderline(): string | boolean | undefined {\r\n return this.formatting.underline;\r\n }\r\n\r\n /**\r\n * Gets whether the hyperlink is bold\r\n * @returns True if bold, false otherwise\r\n */\r\n getBold(): boolean {\r\n return this.formatting.bold ?? false;\r\n }\r\n\r\n /**\r\n * Gets whether the hyperlink is italic\r\n * @returns True if italic, false otherwise\r\n */\r\n getItalic(): boolean {\r\n return this.formatting.italic ?? false;\r\n }\r\n\r\n /**\r\n * Gets the font family\r\n * @returns Font name or undefined\r\n */\r\n getFont(): string | undefined {\r\n return this.formatting.font;\r\n }\r\n\r\n /**\r\n * Gets the font size\r\n * @returns Font size in points or undefined\r\n */\r\n getSize(): number | undefined {\r\n return this.formatting.size;\r\n }\r\n\r\n /**\r\n * Sets text color\r\n * @param color Color in hex format (e.g., '0563C1')\r\n * @returns This hyperlink for chaining\r\n */\r\n setColor(color: string): this {\r\n const previousValue = this.formatting.color;\r\n this.formatting.color = color;\r\n this.run = new Run(this.text, this.formatting);\r\n if (this.trackingContext?.isEnabled() && previousValue !== color) {\r\n this.trackingContext.trackHyperlinkChange(this, 'color', previousValue, color);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets underline style\r\n * @param underline Underline style ('single', 'double', etc.)\r\n * @returns This hyperlink for chaining\r\n */\r\n setUnderline(underline: boolean | \"single\" | \"double\" | \"dotted\" | \"thick\" | \"dash\"): this {\r\n const previousValue = this.formatting.underline;\r\n this.formatting.underline = underline;\r\n this.run = new Run(this.text, this.formatting);\r\n if (this.trackingContext?.isEnabled() && previousValue !== underline) {\r\n this.trackingContext.trackHyperlinkChange(this, 'underline', previousValue, underline);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets bold formatting\r\n * @param bold Bold state (default: true)\r\n * @returns This hyperlink for chaining\r\n */\r\n setBold(bold = true): this {\r\n const previousValue = this.formatting.bold;\r\n this.formatting.bold = bold;\r\n this.run = new Run(this.text, this.formatting);\r\n if (this.trackingContext?.isEnabled() && previousValue !== bold) {\r\n this.trackingContext.trackHyperlinkChange(this, 'bold', previousValue, bold);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets italic formatting\r\n * @param italic Italic state (default: true)\r\n * @returns This hyperlink for chaining\r\n */\r\n setItalic(italic = true): this {\r\n const previousValue = this.formatting.italic;\r\n this.formatting.italic = italic;\r\n this.run = new Run(this.text, this.formatting);\r\n if (this.trackingContext?.isEnabled() && previousValue !== italic) {\r\n this.trackingContext.trackHyperlinkChange(this, 'italic', previousValue, italic);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets font family\r\n * @param font Font name (e.g., 'Arial', 'Verdana')\r\n * @returns This hyperlink for chaining\r\n */\r\n setFont(font: string): this {\r\n const previousValue = this.formatting.font;\r\n this.formatting.font = font;\r\n this.run = new Run(this.text, this.formatting);\r\n if (this.trackingContext?.isEnabled() && previousValue !== font) {\r\n this.trackingContext.trackHyperlinkChange(this, 'font', previousValue, font);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets font size\r\n * @param size Font size in points (e.g., 12, 14)\r\n * @returns This hyperlink for chaining\r\n */\r\n setSize(size: number): this {\r\n const previousValue = this.formatting.size;\r\n this.formatting.size = size;\r\n this.run = new Run(this.text, this.formatting);\r\n if (this.trackingContext?.isEnabled() && previousValue !== size) {\r\n this.trackingContext.trackHyperlinkChange(this, 'size', previousValue, size);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Validates the hyperlink URL and optionally fixes common issues\r\n *\r\n * Performs validation and fixing of hyperlink URLs including:\r\n * - Checking URL accessibility (HTTP HEAD request for external links)\r\n * - Fixing common URL issues (missing protocol, double slashes, spaces)\r\n * - Validating internal bookmark references\r\n * - Detecting broken links\r\n *\r\n * **Note:** This method is async due to network requests for accessibility checks.\r\n *\r\n * @param options - Validation options\r\n * @returns Promise with validation results\r\n *\r\n * @example\r\n * ```typescript\r\n * // Basic URL fixing without network check\r\n * const result = await link.validateAndFix({\r\n * fixCommonIssues: true,\r\n * checkAccessibility: false\r\n * });\r\n * console.log(`Fixed: ${result.fixed.join(', ')}`);\r\n *\r\n * // Full validation with accessibility check\r\n * const validation = await link.validateAndFix({\r\n * checkAccessibility: true,\r\n * timeout: 5000\r\n * });\r\n * if (!validation.valid) {\r\n * console.log(`Issues: ${validation.issues.join(', ')}`);\r\n * }\r\n *\r\n * // Batch validate all hyperlinks in document\r\n * for (const { hyperlink } of doc.getHyperlinks()) {\r\n * const result = await hyperlink.validateAndFix();\r\n * if (result.fixed.length > 0) {\r\n * console.log(`Fixed ${hyperlink.getUrl()}: ${result.fixed.join(', ')}`);\r\n * }\r\n * }\r\n * ```\r\n */\r\n async validateAndFix(options?: {\r\n checkAccessibility?: boolean;\r\n fixCommonIssues?: boolean;\r\n timeout?: number;\r\n bookmarkManager?: { hasBookmark(name: string): boolean };\r\n }): Promise<{\r\n valid: boolean;\r\n issues: string[];\r\n fixed: string[];\r\n originalUrl?: string;\r\n fixedUrl?: string;\r\n }> {\r\n const {\r\n checkAccessibility = false,\r\n fixCommonIssues = true,\r\n timeout = 5000,\r\n bookmarkManager,\r\n } = options || {};\r\n\r\n const issues: string[] = [];\r\n const fixed: string[] = [];\r\n let fixedUrl = this.url;\r\n const originalUrl = this.url;\r\n\r\n // Internal link validation (bookmarks)\r\n if (this.anchor) {\r\n if (bookmarkManager) {\r\n const bookmarkExists = bookmarkManager.hasBookmark(this.anchor);\r\n if (!bookmarkExists) {\r\n issues.push(`Internal bookmark \"${this.anchor}\" not found`);\r\n }\r\n }\r\n return {\r\n valid: issues.length === 0,\r\n issues,\r\n fixed,\r\n originalUrl,\r\n };\r\n }\r\n\r\n // External link validation\r\n if (!this.url) {\r\n issues.push(\"No URL or anchor specified\");\r\n return { valid: false, issues, fixed, originalUrl };\r\n }\r\n\r\n // Fix common issues\r\n if (fixCommonIssues && fixedUrl) {\r\n // Fix 1: Add missing protocol\r\n if (!(/^[a-z]+:\\/\\//i.exec(fixedUrl))) {\r\n fixedUrl = \"https://\" + fixedUrl;\r\n fixed.push(\"Added missing protocol (https://)\");\r\n }\r\n\r\n // Fix 2: Fix double slashes (except after protocol)\r\n const protocolMatch = /^([a-z]+:\\/\\/)/i.exec(fixedUrl);\r\n if (protocolMatch?.[1]) {\r\n const protocol = protocolMatch[1];\r\n const rest = fixedUrl.substring(protocol.length);\r\n const fixedRest = rest.replace(/\\/\\//g, \"/\");\r\n if (rest !== fixedRest) {\r\n fixedUrl = protocol + fixedRest;\r\n fixed.push(\"Fixed double slashes\");\r\n }\r\n }\r\n\r\n // Fix 3: Encode spaces\r\n if (fixedUrl.includes(\" \")) {\r\n fixedUrl = fixedUrl.replace(/ /g, \"%20\");\r\n fixed.push(\"Encoded spaces as %20\");\r\n }\r\n\r\n // Fix 4: Remove trailing slashes for non-root URLs\r\n if (/^https?:\\/\\/[^/]+\\/.+\\/$/.exec(fixedUrl)) {\r\n fixedUrl = fixedUrl.replace(/\\/$/, \"\");\r\n fixed.push(\"Removed trailing slash\");\r\n }\r\n\r\n // Fix 5: Fix common typos\r\n fixedUrl = fixedUrl.replace(/^http:\\/\\//i, \"https://\"); // Prefer HTTPS\r\n if (fixedUrl !== this.url && fixedUrl.startsWith(\"https://\")) {\r\n fixed.push(\"Upgraded HTTP to HTTPS\");\r\n }\r\n\r\n // Update URL if fixes were applied\r\n if (fixedUrl !== this.url) {\r\n this.setUrl(fixedUrl);\r\n }\r\n }\r\n\r\n // Check accessibility (HTTP HEAD request)\r\n if (checkAccessibility && fixedUrl?.match(/^https?:\\/\\//i)) {\r\n // Check if fetch is available (Node.js 18+ or browser)\r\n if (typeof fetch === \"undefined\") {\r\n issues.push(\r\n \"Network validation unavailable: fetch API not supported in this environment\"\r\n );\r\n } else {\r\n try {\r\n // Use fetch with AbortController for timeout\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n const response = await fetch(fixedUrl, {\r\n method: \"HEAD\",\r\n signal: controller.signal,\r\n redirect: \"follow\",\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n issues.push(\r\n `HTTP ${response.status}: ${response.statusText || \"Error\"}`\r\n );\r\n }\r\n } catch (error: unknown) {\r\n // Type guard for error objects with name and message properties\r\n const isErrorWithName = (err: unknown): err is { name: string } => {\r\n return typeof err === \"object\" && err !== null && \"name\" in err;\r\n };\r\n const isErrorWithMessage = (\r\n err: unknown\r\n ): err is { message: string } => {\r\n return typeof err === \"object\" && err !== null && \"message\" in err;\r\n };\r\n\r\n if (isErrorWithName(error) && error.name === \"AbortError\") {\r\n issues.push(`Timeout after ${timeout}ms`);\r\n } else if (\r\n isErrorWithMessage(error) &&\r\n error.message?.includes(\"fetch\")\r\n ) {\r\n issues.push(`Unreachable: ${error.message}`);\r\n } else if (isErrorWithMessage(error)) {\r\n issues.push(`Network error: ${error.message}`);\r\n } else {\r\n issues.push(\"Network error: Unknown error\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n valid: issues.length === 0,\r\n issues,\r\n fixed,\r\n originalUrl,\r\n fixedUrl: fixedUrl !== originalUrl ? fixedUrl : undefined,\r\n };\r\n }\r\n\r\n /**\r\n * Resets hyperlink formatting to standard style (Calibri, blue, underline)\r\n * This is useful for fixing corrupted hyperlinks from Google Docs or other sources\r\n * @returns this for method chaining\r\n */\r\n resetToStandardFormatting(): this {\r\n const standardFormatting: RunFormatting = {\r\n font: \"Verdana\",\r\n color: \"0000FF\", // Standard hyperlink blue\r\n underline: \"single\",\r\n // Clear any other formatting that might be causing issues\r\n bold: false,\r\n italic: false,\r\n strike: false,\r\n };\r\n\r\n this.setFormatting(standardFormatting);\r\n return this;\r\n }\r\n\r\n /**\r\n * Checks if this is an external link\r\n */\r\n isExternal(): boolean {\r\n return this.url !== undefined;\r\n }\r\n\r\n /**\r\n * Checks if this is an internal link (anchor)\r\n */\r\n isInternal(): boolean {\r\n return this.anchor !== undefined;\r\n }\r\n\r\n /**\r\n * Creates a deep copy of this hyperlink\r\n *\r\n * This is useful for preserving the original state before modifications,\r\n * particularly when creating tracked changes (revisions) where both the\r\n * old and new states need to be preserved.\r\n *\r\n * @returns A new Hyperlink instance with the same properties\r\n *\r\n * @example\r\n * ```typescript\r\n * // Clone before modifying for tracked changes\r\n * const originalLink = hyperlink.clone();\r\n * hyperlink.setUrl('https://new-url.com');\r\n * hyperlink.setText('New Text');\r\n *\r\n * // Now originalLink has old URL/text, hyperlink has new\r\n * const deletion = Revision.createDeletion(author, [originalLink]);\r\n * const insertion = Revision.createInsertion(author, [hyperlink]);\r\n * ```\r\n */\r\n clone(): Hyperlink {\r\n const cloned = new Hyperlink({\r\n url: this.url,\r\n anchor: this.anchor,\r\n text: this.text,\r\n tooltip: this.tooltip,\r\n relationshipId: this.relationshipId,\r\n formatting: { ...this.formatting },\r\n });\r\n\r\n // Copy the run with its formatting\r\n if (this.run) {\r\n cloned.run = new Run(this.run.getText(), { ...this.run.getFormatting() });\r\n }\r\n\r\n return cloned;\r\n }\r\n\r\n /**\r\n * Generates XML for the hyperlink\r\n *\r\n * **CRITICAL:** For external links, relationshipId MUST be set before calling toXML().\r\n * This happens automatically when saving via Document.save(), but manual usage requires\r\n * registering the hyperlink with RelationshipManager first.\r\n *\r\n * @throws {Error} If external link (has url) is missing relationshipId\r\n * @throws {Error} If hyperlink has neither url nor anchor (empty hyperlink)\r\n */\r\n toXML(): XMLElement {\r\n // VALIDATION: Hyperlink must have url OR anchor (unless it's an empty hyperlink with relationshipId)\r\n if (!this.url && !this.anchor && !this.relationshipId) {\r\n throw new Error(\r\n \"CRITICAL: Hyperlink must have either a URL (external link), anchor (internal link), or relationshipId. \" +\r\n \"Cannot generate valid XML for hyperlink without destination.\"\r\n );\r\n }\r\n\r\n // VALIDATION: External links MUST have relationship ID\r\n // Per ECMA-376 Part 1 §17.16.22, <w:hyperlink> with external target requires r:id attribute\r\n if (this.url && !this.relationshipId) {\r\n throw new Error(\r\n `CRITICAL: External hyperlink to \"${this.url}\" is missing relationship ID. ` +\r\n `This would create an invalid OpenXML document per ECMA-376 §17.16.22. ` +\r\n `Solution: Use Document.save() which automatically registers relationships, ` +\r\n `or manually call relationshipManager.addHyperlink(url) and set the relationship ID.`\r\n );\r\n }\r\n\r\n const attributes: Record<string, string> = {};\r\n\r\n // External link - add relationship ID\r\n if (this.relationshipId) {\r\n attributes[\"r:id\"] = this.relationshipId;\r\n }\r\n\r\n // Internal link - uses anchor\r\n if (this.anchor) {\r\n attributes[\"w:anchor\"] = this.anchor;\r\n }\r\n\r\n // Tooltip - explicitly escape attribute value for safety\r\n // XMLBuilder will handle escaping, but we document this for clarity\r\n if (this.tooltip) {\r\n // Note: XMLBuilder.elementToString() will escape this via escapeXmlAttribute()\r\n // when generating the actual XML string. We store the raw value here.\r\n attributes[\"w:tooltip\"] = this.tooltip;\r\n }\r\n\r\n // Target frame attribute (e.g., \"_blank\" for new window)\r\n if (this.tgtFrame) {\r\n attributes[\"w:tgtFrame\"] = this.tgtFrame;\r\n }\r\n\r\n // History tracking attribute\r\n if (this.history) {\r\n attributes[\"w:history\"] = this.history;\r\n }\r\n\r\n // Empty/invisible hyperlinks have no children (self-closing element)\r\n if (this._isEmpty) {\r\n return {\r\n name: \"w:hyperlink\",\r\n attributes,\r\n children: [],\r\n };\r\n }\r\n\r\n // Generate run XML\r\n const runXml = this.run.toXML();\r\n\r\n return {\r\n name: \"w:hyperlink\",\r\n attributes,\r\n children: [runXml],\r\n };\r\n }\r\n\r\n /**\r\n * Creates an external hyperlink\r\n * @param url The URL\r\n * @param text Display text\r\n * @param formatting Optional formatting\r\n */\r\n static createExternal(\r\n url: string,\r\n text: string,\r\n formatting?: RunFormatting\r\n ): Hyperlink {\r\n return new Hyperlink({ url, text, formatting });\r\n }\r\n\r\n /**\r\n * Creates an internal hyperlink (to a bookmark)\r\n * @param anchor Bookmark name\r\n * @param text Display text\r\n * @param formatting Optional formatting\r\n */\r\n static createInternal(\r\n anchor: string,\r\n text: string,\r\n formatting?: RunFormatting\r\n ): Hyperlink {\r\n return new Hyperlink({ anchor, text, formatting });\r\n }\r\n\r\n /**\r\n * Creates a web link (convenience method for URLs)\r\n * @param url The URL\r\n * @param text Display text (defaults to URL)\r\n * @param formatting Optional formatting\r\n */\r\n static createWebLink(\r\n url: string,\r\n text?: string,\r\n formatting?: RunFormatting\r\n ): Hyperlink {\r\n return new Hyperlink({\r\n url,\r\n text: text || url,\r\n formatting,\r\n });\r\n }\r\n\r\n /**\r\n * Creates an email link\r\n * @param email Email address\r\n * @param text Display text (defaults to email)\r\n * @param formatting Optional formatting\r\n */\r\n static createEmail(\r\n email: string,\r\n text?: string,\r\n formatting?: RunFormatting\r\n ): Hyperlink {\r\n return new Hyperlink({\r\n url: `mailto:${email}`,\r\n text: text || email,\r\n formatting,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a hyperlink with properties\r\n * @param properties Hyperlink properties\r\n */\r\n static create(properties: HyperlinkProperties): Hyperlink {\r\n return new Hyperlink(properties);\r\n }\r\n}\r\n"]}
|
package/dist/elements/Image.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../src/elements/Image.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK3D,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAKlG,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAKvE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAKrF,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,UAAU,GAAG,QAAQ,GAC1F,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,OAAO,GAAG,mBAAmB,GAC/E,QAAQ,GAAG,OAAO,CAAC;AAKvB,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAE5B,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;IAE7D,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAEzB,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../src/elements/Image.ts"],"names":[],"mappings":"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"}
|