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
package/dist/elements/Image.js
CHANGED
|
@@ -246,8 +246,8 @@ class Image {
|
|
|
246
246
|
}
|
|
247
247
|
detectExtension() {
|
|
248
248
|
if (typeof this.source === 'string') {
|
|
249
|
-
const match =
|
|
250
|
-
if (match
|
|
249
|
+
const match = /\.([a-z]+)$/i.exec(this.source);
|
|
250
|
+
if (match?.[1]) {
|
|
251
251
|
return match[1].toLowerCase();
|
|
252
252
|
}
|
|
253
253
|
}
|
|
@@ -400,12 +400,12 @@ class Image {
|
|
|
400
400
|
return null;
|
|
401
401
|
try {
|
|
402
402
|
const svgText = this.imageData.toString('utf-8').substring(0, 2000);
|
|
403
|
-
const widthMatch =
|
|
404
|
-
const heightMatch =
|
|
403
|
+
const widthMatch = /<svg[^>]*\bwidth\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(svgText);
|
|
404
|
+
const heightMatch = /<svg[^>]*\bheight\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(svgText);
|
|
405
405
|
if (widthMatch?.[1] && heightMatch?.[1]) {
|
|
406
406
|
return { width: Math.round(parseFloat(widthMatch[1])), height: Math.round(parseFloat(heightMatch[1])) };
|
|
407
407
|
}
|
|
408
|
-
const viewBoxMatch =
|
|
408
|
+
const viewBoxMatch = /<svg[^>]*\bviewBox\s*=\s*["']?\s*[\d.]+\s+[\d.]+\s+([\d.]+)\s+([\d.]+)/i.exec(svgText);
|
|
409
409
|
if (viewBoxMatch?.[1] && viewBoxMatch?.[2]) {
|
|
410
410
|
return { width: Math.round(parseFloat(viewBoxMatch[1])), height: Math.round(parseFloat(viewBoxMatch[2])) };
|
|
411
411
|
}
|
|
@@ -1072,10 +1072,26 @@ class Image {
|
|
|
1072
1072
|
if (this._rawPassthrough.has('wrap-polygon')) {
|
|
1073
1073
|
wrapChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('wrap-polygon') });
|
|
1074
1074
|
}
|
|
1075
|
+
else if (wrapElementName === 'wrapTight' || wrapElementName === 'wrapThrough') {
|
|
1076
|
+
wrapChildren.push({
|
|
1077
|
+
name: 'wp:wrapPolygon',
|
|
1078
|
+
attributes: { edited: '0' },
|
|
1079
|
+
children: [
|
|
1080
|
+
{ name: 'wp:start', attributes: { x: '0', y: '0' }, selfClosing: true },
|
|
1081
|
+
{ name: 'wp:lineTo', attributes: { x: '21600', y: '0' }, selfClosing: true },
|
|
1082
|
+
{ name: 'wp:lineTo', attributes: { x: '21600', y: '21600' }, selfClosing: true },
|
|
1083
|
+
{ name: 'wp:lineTo', attributes: { x: '0', y: '21600' }, selfClosing: true },
|
|
1084
|
+
{ name: 'wp:lineTo', attributes: { x: '0', y: '0' }, selfClosing: true },
|
|
1085
|
+
],
|
|
1086
|
+
});
|
|
1087
|
+
}
|
|
1075
1088
|
anchorChildren.push(wrapChildren.length > 0
|
|
1076
1089
|
? XMLBuilder_1.XMLBuilder.wp(wrapElementName, wrapAttrs, wrapChildren)
|
|
1077
1090
|
: XMLBuilder_1.XMLBuilder.wp(wrapElementName, wrapAttrs));
|
|
1078
1091
|
}
|
|
1092
|
+
else {
|
|
1093
|
+
anchorChildren.push(XMLBuilder_1.XMLBuilder.wp('wrapNone', {}));
|
|
1094
|
+
}
|
|
1079
1095
|
anchorChildren.push(buildDocPr(this.docPrId));
|
|
1080
1096
|
anchorChildren.push(buildCNvGraphicFramePr());
|
|
1081
1097
|
anchorChildren.push(graphic);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.js","sourceRoot":"","sources":["../../src/elements/Image.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Image.js","sourceRoot":"","sources":["../../src/elements/Image.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Image - Represents an embedded image in a Word document\r\n *\r\n * Images use DrawingML (a:) and WordprocessingML Drawing (wp:) namespaces\r\n * for proper positioning and formatting in Word documents.\r\n */\r\n\r\nimport { promises as fs } from 'fs';\r\nimport { defaultLogger } from '../utils/logger';\r\nimport { inchesToEmus, UNITS } from '../utils/units';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Supported image formats\r\n */\r\nexport type ImageFormat = 'png' | 'jpeg' | 'jpg' | 'gif' | 'bmp' | 'tiff' | 'svg' | 'emf' | 'wmf';\r\n\r\n/**\r\n * Preset geometry shape type (ECMA-376 §20.1.9.18)\r\n */\r\nexport type PresetGeometry = 'rect' | 'roundRect' | 'ellipse' | string;\r\n\r\n/**\r\n * Blip compression state (ECMA-376 §20.1.8.15)\r\n */\r\nexport type BlipCompressionState = 'none' | 'print' | 'email' | 'hqprint' | 'screen';\r\n\r\n/**\r\n * Picture lock attribute names (ECMA-376 §20.1.2.2.31)\r\n */\r\nexport type PicLockAttribute = 'noChangeAspect' | 'noChangeArrowheads' | 'noSelect' | 'noMove'\r\n | 'noResize' | 'noEditPoints' | 'noAdjustHandles' | 'noRot' | 'noChangeShapeType'\r\n | 'noCrop' | 'noGrp';\r\n\r\n/**\r\n * Non-visual picture properties (ECMA-376 §19.3.1.12)\r\n */\r\nexport interface PicNonVisualProperties {\r\n id: string;\r\n name: string;\r\n descr: string;\r\n}\r\n\r\n/**\r\n * Image border definition (full a:ln support per ECMA-376)\r\n */\r\nexport interface ImageBorder {\r\n /** Border width in points */\r\n width: number;\r\n /** Line cap style */\r\n cap?: 'flat' | 'rnd' | 'sq';\r\n /** Compound line type */\r\n compound?: 'sng' | 'dbl' | 'thickThin' | 'thinThick' | 'tri';\r\n /** Alignment relative to shape */\r\n alignment?: 'ctr' | 'in';\r\n /** Fill specification */\r\n fill?: {\r\n type: 'srgbClr' | 'schemeClr';\r\n value: string;\r\n modifiers?: { name: string; val: string }[];\r\n };\r\n /** Raw XML for non-solid fills (gradFill, pattFill, etc.) */\r\n rawFillXml?: string;\r\n /** Preset dash pattern */\r\n dashPattern?: string;\r\n /** Line join style */\r\n join?: 'round' | 'bevel' | 'miter';\r\n /** Miter limit (percentage * 1000) */\r\n miterLimit?: number;\r\n /** Head end decoration */\r\n headEnd?: { type?: string; width?: string; length?: string };\r\n /** Tail end decoration */\r\n tailEnd?: { type?: string; width?: string; length?: string };\r\n}\r\n\r\n/**\r\n * Image extent (dimensions)\r\n */\r\nexport interface ImageExtent {\r\n /** Width in EMUs */\r\n width: number;\r\n /** Height in EMUs */\r\n height: number;\r\n}\r\n\r\n/**\r\n * Effect extent (additional space for shadows, reflections, glows)\r\n * Specifies additional space to add to each edge to prevent clipping of effects\r\n */\r\nexport interface EffectExtent {\r\n /** Left extent in EMUs */\r\n left: number;\r\n /** Top extent in EMUs */\r\n top: number;\r\n /** Right extent in EMUs */\r\n right: number;\r\n /** Bottom extent in EMUs */\r\n bottom: number;\r\n}\r\n\r\n/**\r\n * Text wrapping type\r\n */\r\nexport type WrapType = 'square' | 'tight' | 'through' | 'topAndBottom' | 'none';\r\n\r\n/**\r\n * Text wrapping side\r\n */\r\nexport type WrapSide = 'bothSides' | 'left' | 'right' | 'largest';\r\n\r\n/**\r\n * Text wrap settings\r\n */\r\nexport interface TextWrapSettings {\r\n /** Wrap type */\r\n type: WrapType;\r\n /** Which side(s) to wrap text */\r\n side?: WrapSide;\r\n /** Distance from top in EMUs */\r\n distanceTop?: number;\r\n /** Distance from bottom in EMUs */\r\n distanceBottom?: number;\r\n /** Distance from left in EMUs */\r\n distanceLeft?: number;\r\n /** Distance from right in EMUs */\r\n distanceRight?: number;\r\n}\r\n\r\n/**\r\n * Position anchor type (what to position relative to)\r\n */\r\nexport type PositionAnchor = 'page' | 'margin' | 'column' | 'character' | 'paragraph';\r\n\r\n/**\r\n * Horizontal alignment options\r\n */\r\nexport type HorizontalAlignment = 'left' | 'center' | 'right' | 'inside' | 'outside';\r\n\r\n/**\r\n * Vertical alignment options\r\n */\r\nexport type VerticalAlignment = 'top' | 'center' | 'bottom' | 'inside' | 'outside';\r\n\r\n/**\r\n * Image position configuration\r\n */\r\nexport interface ImagePosition {\r\n /** Horizontal positioning */\r\n horizontal: {\r\n /** Anchor point */\r\n anchor: PositionAnchor;\r\n /** Offset in EMUs (absolute positioning) */\r\n offset?: number;\r\n /** Alignment (relative positioning) */\r\n alignment?: HorizontalAlignment;\r\n };\r\n /** Vertical positioning */\r\n vertical: {\r\n /** Anchor point */\r\n anchor: PositionAnchor;\r\n /** Offset in EMUs (absolute positioning) */\r\n offset?: number;\r\n /** Alignment (relative positioning) */\r\n alignment?: VerticalAlignment;\r\n };\r\n}\r\n\r\n/**\r\n * Image anchor configuration (floating images)\r\n */\r\nexport interface ImageAnchor {\r\n /** Position behind text */\r\n behindDoc: boolean;\r\n /** Lock anchor (prevent movement) */\r\n locked: boolean;\r\n /** Layout in table cell */\r\n layoutInCell: boolean;\r\n /** Allow overlap with other objects */\r\n allowOverlap: boolean;\r\n /** Z-order (higher = in front) */\r\n relativeHeight: number;\r\n /** Use simple positioning (wp:simplePos coordinates) */\r\n simplePos?: boolean;\r\n /** Distance from text - top (EMUs) */\r\n distT?: number;\r\n /** Distance from text - bottom (EMUs) */\r\n distB?: number;\r\n /** Distance from text - left (EMUs) */\r\n distL?: number;\r\n /** Distance from text - right (EMUs) */\r\n distR?: number;\r\n}\r\n\r\n/**\r\n * Image crop settings (percentage-based)\r\n */\r\nexport interface ImageCrop {\r\n /** Left crop percentage (0-100) */\r\n left: number;\r\n /** Top crop percentage (0-100) */\r\n top: number;\r\n /** Right crop percentage (0-100) */\r\n right: number;\r\n /** Bottom crop percentage (0-100) */\r\n bottom: number;\r\n}\r\n\r\n/**\r\n * Image visual effects\r\n */\r\nexport interface ImageEffects {\r\n /** Brightness adjustment (-100 to +100) */\r\n brightness?: number;\r\n /** Contrast adjustment (-100 to +100) */\r\n contrast?: number;\r\n /** Convert to grayscale */\r\n grayscale?: boolean;\r\n /** Transparency (0-100, percentage) via a:alphaModFix */\r\n transparency?: number;\r\n}\r\n\r\n/**\r\n * Image properties\r\n */\r\nexport interface ImageProperties {\r\n /** Image source (file path or buffer) */\r\n source: string | Buffer;\r\n /** Image width in EMUs (optional - will auto-detect) */\r\n width?: number;\r\n /** Image height in EMUs (optional - will auto-detect) */\r\n height?: number;\r\n /** Maintain aspect ratio when resizing */\r\n maintainAspectRatio?: boolean;\r\n /** Alt text / description */\r\n description?: string;\r\n /** Image name/title */\r\n name?: string;\r\n /** Image title (wp:docPr title attribute for accessibility) */\r\n title?: string;\r\n /** Relationship ID (will be set by ImageManager) */\r\n relationshipId?: string;\r\n /** Effect extent (space for shadows/glows) */\r\n effectExtent?: EffectExtent;\r\n /** Text wrapping configuration */\r\n wrap?: TextWrapSettings;\r\n /** Position configuration (floating images) */\r\n position?: ImagePosition;\r\n /** Anchor configuration (floating images) */\r\n anchor?: ImageAnchor;\r\n /** Crop settings */\r\n crop?: ImageCrop;\r\n /** Visual effects */\r\n effects?: ImageEffects;\r\n /** Border settings */\r\n border?: ImageBorder | { width: number };\r\n /** Rotation angle in degrees (0-360) */\r\n rotation?: number;\r\n /** Horizontal flip (ECMA-376 §20.1.7.6) */\r\n flipH?: boolean;\r\n /** Vertical flip (ECMA-376 §20.1.7.6) */\r\n flipV?: boolean;\r\n /** Preset geometry shape (ECMA-376 §20.1.9.18) */\r\n presetGeometry?: PresetGeometry;\r\n /** Blip compression state (ECMA-376 §20.1.8.15) */\r\n compressionState?: BlipCompressionState;\r\n /** Black-and-white mode (ECMA-376 §20.1.2.2.35) */\r\n bwMode?: string;\r\n /** Inline distance from text - top (EMUs, ECMA-376 §20.4.2.8) */\r\n inlineDistT?: number;\r\n /** Inline distance from text - bottom (EMUs) */\r\n inlineDistB?: number;\r\n /** Inline distance from text - left (EMUs) */\r\n inlineDistL?: number;\r\n /** Inline distance from text - right (EMUs) */\r\n inlineDistR?: number;\r\n /** Whether aspect ratio lock is enabled (ECMA-376 §20.4.2.4) */\r\n noChangeAspect?: boolean;\r\n /** Hidden attribute on docPr (ECMA-376 §20.4.2.3) */\r\n hidden?: boolean;\r\n /** BlipFill DPI override (ECMA-376 §20.1.8.14) */\r\n blipFillDpi?: number;\r\n /** BlipFill rotate with shape flag (ECMA-376 §20.1.8.14) */\r\n blipFillRotWithShape?: boolean;\r\n /** Picture locks (ECMA-376 §20.1.2.2.31) */\r\n picLocks?: Partial<Record<PicLockAttribute, boolean>>;\r\n /** Non-visual picture properties (ECMA-376 §19.3.1.12) */\r\n picNonVisualProps?: PicNonVisualProperties;\r\n /** Whether image is linked (r:link) vs embedded (r:embed) */\r\n isLinked?: boolean;\r\n /** SVG relationship ID for Word 365 dual-relationship approach */\r\n svgRelationshipId?: string;\r\n}\r\n\r\n/**\r\n * Image validation result\r\n */\r\nexport interface ValidationResult {\r\n valid: boolean;\r\n error?: string;\r\n}\r\n\r\nexport class Image {\r\n private source: string | Buffer;\r\n private width: number;\r\n private height: number;\r\n private description: string;\r\n private name: string;\r\n private title?: string;\r\n private relationshipId?: string;\r\n private imageData?: Buffer;\r\n private extension: string;\r\n private docPrId = 1;\r\n private dpi = 96; // Default DPI\r\n\r\n // Advanced image properties\r\n private effectExtent?: EffectExtent;\r\n private wrap?: TextWrapSettings;\r\n private position?: ImagePosition;\r\n private anchor?: ImageAnchor;\r\n private crop?: ImageCrop;\r\n private effects?: ImageEffects;\r\n private rotation = 0;\r\n private flipH = false;\r\n private flipV = false;\r\n private border?: ImageBorder;\r\n\r\n // Group A: Simple attribute preservation (ECMA-376 compliance)\r\n private presetGeometry: PresetGeometry = 'rect';\r\n private compressionState: BlipCompressionState = 'none';\r\n private bwMode = 'auto';\r\n private inlineDistT = 0;\r\n private inlineDistB = 0;\r\n private inlineDistL = 0;\r\n private inlineDistR = 0;\r\n private noChangeAspect = true;\r\n private hidden = false;\r\n private blipFillDpi?: number;\r\n private blipFillRotWithShape?: boolean;\r\n private picLocks: Partial<Record<PicLockAttribute, boolean>> = {\r\n noChangeAspect: true,\r\n noChangeArrowheads: true,\r\n };\r\n private picNonVisualProps: PicNonVisualProperties = { id: '0', name: '', descr: '' };\r\n private isLinked = false;\r\n private svgRelationshipId?: string;\r\n\r\n // Group B: Raw XML passthrough for complex subtrees\r\n private _rawPassthrough = new Map<string, string>();\r\n\r\n /**\r\n * Creates a new image from file path (async factory)\r\n * @param path File path\r\n * @param properties Additional properties\r\n * @returns Promise<Image>\r\n */\r\n static async fromFile(path: string, properties: Partial<ImageProperties> = {}): Promise<Image> {\r\n const image = new Image({ source: path, ...properties });\r\n await image.loadImageDataForDimensions();\r\n return image;\r\n }\r\n\r\n /**\r\n * Creates a new image from buffer (async factory)\r\n * Supports both modern and legacy API signatures\r\n *\r\n * @param buffer Image buffer\r\n * @param mimeTypeOrProperties MIME type string ('png', 'jpeg', etc.) or properties object\r\n * @param width Optional width in EMUs (legacy API)\r\n * @param height Optional height in EMUs (legacy API)\r\n * @returns Promise<Image>\r\n *\r\n * @example\r\n * // Modern API (recommended)\r\n * const img = await Image.fromBuffer(buffer, { mimeType: 'png', width: 914400, height: 914400 });\r\n *\r\n * // Legacy API (still supported)\r\n * const img = await Image.fromBuffer(buffer, 'png', 914400, 914400);\r\n */\r\n static async fromBuffer(\r\n buffer: Buffer,\r\n mimeTypeOrProperties?: string | Partial<ImageProperties>,\r\n width?: number,\r\n height?: number\r\n ): Promise<Image> {\r\n let properties: Partial<ImageProperties>;\r\n\r\n // Detect API signature\r\n if (typeof mimeTypeOrProperties === 'string') {\r\n // Legacy 4-parameter signature: fromBuffer(buffer, 'png', 914400, 914400)\r\n // Note: mimeType is ignored - extension is auto-detected from buffer\r\n properties = {\r\n width: width,\r\n height: height\r\n };\r\n } else {\r\n // Modern API: fromBuffer(buffer, { width: 914400, height: 914400 })\r\n properties = mimeTypeOrProperties || {};\r\n }\r\n\r\n const image = new Image({ source: buffer, ...properties });\r\n await image.loadImageDataForDimensions();\r\n return image;\r\n }\r\n\r\n /**\r\n * Unified create method for images (async factory)\r\n * @param properties Image properties including source (path or buffer)\r\n * @returns Promise<Image>\r\n */\r\n static async create(properties: ImageProperties): Promise<Image> {\r\n if (Buffer.isBuffer(properties.source)) {\r\n return Image.fromBuffer(properties.source, properties);\r\n } else if (typeof properties.source === 'string') {\r\n return Image.fromFile(properties.source, properties);\r\n } else {\r\n throw new Error('Invalid source: must be file path or Buffer');\r\n }\r\n }\r\n\r\n /**\r\n * Private constructor\r\n * @param properties Image properties\r\n */\r\n private constructor(properties: ImageProperties) {\r\n this.source = properties.source;\r\n this.description = properties.description || 'Image';\r\n this.name = properties.name || 'image';\r\n this.title = properties.title;\r\n this.relationshipId = properties.relationshipId;\r\n\r\n // Detect image extension\r\n this.extension = this.detectExtension();\r\n\r\n // Set default dimensions (6 inches x 4 inches) if not provided\r\n this.width = properties.width || inchesToEmus(6);\r\n this.height = properties.height || inchesToEmus(4);\r\n\r\n // Initialize advanced properties\r\n this.effectExtent = properties.effectExtent;\r\n this.wrap = properties.wrap;\r\n this.position = properties.position;\r\n this.anchor = properties.anchor;\r\n this.crop = properties.crop;\r\n this.effects = properties.effects;\r\n // Border: accept both legacy { width } and full ImageBorder\r\n if (properties.border) {\r\n this.border = properties.border as ImageBorder;\r\n }\r\n // Apply rotation if provided (normalize to 0-360)\r\n if (properties.rotation !== undefined && properties.rotation !== 0) {\r\n this.rotation = ((properties.rotation % 360) + 360) % 360;\r\n }\r\n // Apply flip attributes (ECMA-376 §20.1.7.6)\r\n this.flipH = properties.flipH || false;\r\n this.flipV = properties.flipV || false;\r\n\r\n // Group A: Simple attribute preservation\r\n if (properties.presetGeometry !== undefined) this.presetGeometry = properties.presetGeometry;\r\n if (properties.compressionState !== undefined) this.compressionState = properties.compressionState;\r\n if (properties.bwMode !== undefined) this.bwMode = properties.bwMode;\r\n if (properties.inlineDistT !== undefined) this.inlineDistT = properties.inlineDistT;\r\n if (properties.inlineDistB !== undefined) this.inlineDistB = properties.inlineDistB;\r\n if (properties.inlineDistL !== undefined) this.inlineDistL = properties.inlineDistL;\r\n if (properties.inlineDistR !== undefined) this.inlineDistR = properties.inlineDistR;\r\n if (properties.noChangeAspect !== undefined) this.noChangeAspect = properties.noChangeAspect;\r\n if (properties.hidden !== undefined) this.hidden = properties.hidden;\r\n if (properties.blipFillDpi !== undefined) this.blipFillDpi = properties.blipFillDpi;\r\n if (properties.blipFillRotWithShape !== undefined) this.blipFillRotWithShape = properties.blipFillRotWithShape;\r\n if (properties.picLocks !== undefined) this.picLocks = properties.picLocks;\r\n if (properties.picNonVisualProps !== undefined) this.picNonVisualProps = properties.picNonVisualProps;\r\n if (properties.isLinked !== undefined) this.isLinked = properties.isLinked;\r\n if (properties.svgRelationshipId !== undefined) this.svgRelationshipId = properties.svgRelationshipId;\r\n\r\n // Set default DPI\r\n this.dpi = 96;\r\n }\r\n\r\n /**\r\n * Loads image data temporarily for dimension detection only\r\n * Data is released after detection to save memory\r\n * @private\r\n */\r\n private async loadImageDataForDimensions(): Promise<void> {\r\n let tempData: Buffer | undefined;\r\n\r\n try {\r\n if (Buffer.isBuffer(this.source)) {\r\n tempData = this.source;\r\n } else if (typeof this.source === 'string') {\r\n await fs.access(this.source);\r\n tempData = await fs.readFile(this.source);\r\n }\r\n\r\n if (tempData) {\r\n this.imageData = tempData; // Temporarily store\r\n\r\n // Only auto-detect dimensions if they weren't explicitly provided\r\n // This preserves wp:extent values from parsed documents\r\n const defaultWidth = inchesToEmus(6);\r\n const defaultHeight = inchesToEmus(4);\r\n const hasExplicitDimensions = this.width !== defaultWidth || this.height !== defaultHeight;\r\n\r\n if (!hasExplicitDimensions) {\r\n const dimensions = this.detectDimensions();\r\n if (dimensions) {\r\n this.dpi = this.detectDPI() || 96;\r\n const emuPerInch = 914400;\r\n const pixelsPerInch = this.dpi;\r\n this.width = Math.round((dimensions.width / pixelsPerInch) * emuPerInch);\r\n this.height = Math.round((dimensions.height / pixelsPerInch) * emuPerInch);\r\n }\r\n }\r\n\r\n if (typeof this.source === 'string') {\r\n this.imageData = undefined; // Release\r\n }\r\n }\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n defaultLogger.error(`Failed to load image for dimensions: ${message}`);\r\n throw new Error(`Image loading failed: ${message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Ensures image data is loaded (lazy loading)\r\n */\r\n async ensureDataLoaded(): Promise<void> {\r\n if (this.imageData) return;\r\n\r\n try {\r\n if (Buffer.isBuffer(this.source)) {\r\n this.imageData = this.source;\r\n } else if (typeof this.source === 'string') {\r\n await fs.access(this.source);\r\n this.imageData = await fs.readFile(this.source);\r\n } else {\r\n throw new Error('Invalid image source');\r\n }\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n defaultLogger.error(`Failed to load image data: ${message}`);\r\n throw new Error(`Image data loading failed: ${message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Releases image data from memory\r\n */\r\n releaseData(): void {\r\n if (typeof this.source === 'string') {\r\n this.imageData = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Validates the image data integrity\r\n */\r\n validateImageData(): ValidationResult {\r\n // Skip validation for linked images (no data in package)\r\n if (this.isLinked) {\r\n return { valid: true };\r\n }\r\n\r\n if (!this.imageData || this.imageData.length === 0) {\r\n return { valid: false, error: 'Empty image data' };\r\n }\r\n\r\n // Skip signature validation for text-based formats (SVG)\r\n if (this.extension === 'svg') {\r\n return { valid: true };\r\n }\r\n\r\n const signatures: Record<string, number[]> = {\r\n png: [0x89, 0x50, 0x4E, 0x47],\r\n jpg: [0xFF, 0xD8],\r\n jpeg: [0xFF, 0xD8],\r\n gif: [0x47, 0x49, 0x46],\r\n bmp: [0x42, 0x4D],\r\n tiff: [0x49, 0x49, 0x2A, 0x00],\r\n tif: [0x49, 0x49, 0x2A, 0x00]\r\n };\r\n\r\n // EMF: check for ENHMETAHEADER signature at offset 40\r\n if (this.extension === 'emf') {\r\n if (this.imageData.length >= 44 &&\r\n this.imageData[40] === 0x20 && this.imageData[41] === 0x45 &&\r\n this.imageData[42] === 0x4D && this.imageData[43] === 0x46) {\r\n return { valid: true };\r\n }\r\n return { valid: false, error: 'Invalid EMF signature' };\r\n }\r\n\r\n // WMF: check for placeable or standard header\r\n if (this.extension === 'wmf') {\r\n if (this.imageData.length >= 4) {\r\n // Placeable WMF\r\n if (this.imageData[0] === 0xD7 && this.imageData[1] === 0xCD &&\r\n this.imageData[2] === 0xC6 && this.imageData[3] === 0x9A) {\r\n return { valid: true };\r\n }\r\n // Standard WMF\r\n if (this.imageData[0] === 0x01 && this.imageData[1] === 0x00 &&\r\n this.imageData[2] === 0x09 && this.imageData[3] === 0x00) {\r\n return { valid: true };\r\n }\r\n }\r\n return { valid: false, error: 'Invalid WMF signature' };\r\n }\r\n\r\n const sig = signatures[this.extension];\r\n if (sig) {\r\n for (let i = 0; i < sig.length; i++) {\r\n if (this.imageData[i] !== sig[i]) {\r\n return { valid: false, error: `Invalid ${this.extension.toUpperCase()} signature` };\r\n }\r\n }\r\n }\r\n\r\n return { valid: true };\r\n }\r\n\r\n /**\r\n * Detects image extension from source (path or buffer)\r\n */\r\n private detectExtension(): string {\r\n // Try path-based detection first\r\n if (typeof this.source === 'string') {\r\n const match = /\\.([a-z]+)$/i.exec(this.source);\r\n if (match?.[1]) {\r\n return match[1].toLowerCase();\r\n }\r\n }\r\n\r\n // Buffer-based detection using magic bytes\r\n if (Buffer.isBuffer(this.source) && this.source.length >= 4) {\r\n const buf = this.source;\r\n // PNG\r\n if (buf[0] === 0x89 && buf[1] === 0x50 && buf[2] === 0x4E && buf[3] === 0x47) return 'png';\r\n // JPEG\r\n if (buf[0] === 0xFF && buf[1] === 0xD8) return 'jpeg';\r\n // GIF\r\n if (buf[0] === 0x47 && buf[1] === 0x49 && buf[2] === 0x46) return 'gif';\r\n // BMP\r\n if (buf[0] === 0x42 && buf[1] === 0x4D) return 'bmp';\r\n // TIFF LE\r\n if (buf[0] === 0x49 && buf[1] === 0x49 && buf[2] === 0x2A && buf[3] === 0x00) return 'tiff';\r\n // TIFF BE\r\n if (buf[0] === 0x4D && buf[1] === 0x4D && buf[2] === 0x00 && buf[3] === 0x2A) return 'tiff';\r\n // EMF: byte 0 = 0x01,0x00,0x00,0x00 AND ' EMF' at offset 40\r\n if (buf.length >= 44 && buf[0] === 0x01 && buf[1] === 0x00 && buf[2] === 0x00 && buf[3] === 0x00 &&\r\n buf[40] === 0x20 && buf[41] === 0x45 && buf[42] === 0x4D && buf[43] === 0x46) return 'emf';\r\n // WMF placeable\r\n if (buf[0] === 0xD7 && buf[1] === 0xCD && buf[2] === 0xC6 && buf[3] === 0x9A) return 'wmf';\r\n // WMF standard\r\n if (buf[0] === 0x01 && buf[1] === 0x00 && buf[2] === 0x09 && buf[3] === 0x00) return 'wmf';\r\n // SVG: starts with '<' or UTF-8 BOM + '<'\r\n if (buf[0] === 0x3C || (buf[0] === 0xEF && buf[1] === 0xBB && buf[2] === 0xBF && buf.length > 3 && buf[3] === 0x3C)) return 'svg';\r\n }\r\n\r\n return 'png';\r\n }\r\n\r\n /**\r\n * Attempts to detect image dimensions from buffer\r\n */\r\n private detectDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData || this.imageData.length < 24) return null;\r\n\r\n if (this.imageData[0] === 0x89 && this.imageData[1] === 0x50 && this.imageData[2] === 0x4e && this.imageData[3] === 0x47) {\r\n return this.detectPngDimensions();\r\n }\r\n if (this.imageData[0] === 0xff && this.imageData[1] === 0xd8) {\r\n return this.detectJpegDimensions();\r\n }\r\n if (this.imageData[0] === 0x47 && this.imageData[1] === 0x49 && this.imageData[2] === 0x46) {\r\n return this.detectGifDimensions();\r\n }\r\n if (this.imageData[0] === 0x42 && this.imageData[1] === 0x4d) {\r\n return this.detectBmpDimensions();\r\n }\r\n if ((this.imageData[0] === 0x49 && this.imageData[1] === 0x49 && this.imageData[2] === 0x2a) ||\r\n (this.imageData[0] === 0x4d && this.imageData[1] === 0x4d && this.imageData[2] === 0x00)) {\r\n return this.detectTiffDimensions();\r\n }\r\n // EMF: ENHMETAHEADER has ' EMF' at offset 40\r\n if (this.imageData.length >= 44 &&\r\n this.imageData[40] === 0x20 && this.imageData[41] === 0x45 &&\r\n this.imageData[42] === 0x4D && this.imageData[43] === 0x46) {\r\n return this.detectEmfDimensions();\r\n }\r\n // WMF placeable\r\n if (this.imageData[0] === 0xD7 && this.imageData[1] === 0xCD &&\r\n this.imageData[2] === 0xC6 && this.imageData[3] === 0x9A) {\r\n return this.detectWmfDimensions();\r\n }\r\n // SVG (text-based)\r\n if (this.imageData[0] === 0x3C ||\r\n (this.imageData[0] === 0xEF && this.imageData[1] === 0xBB && this.imageData[2] === 0xBF)) {\r\n return this.detectSvgDimensions();\r\n }\r\n return null;\r\n }\r\n\r\n // Dimension detection helpers (as before, keeping them the same)\r\n\r\n private detectPngDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData || this.imageData.length < 24) return null;\r\n const width = this.imageData.readUInt32BE(16);\r\n const height = this.imageData.readUInt32BE(20);\r\n return { width, height };\r\n }\r\n\r\n private detectGifDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData || this.imageData.length < 10) return null;\r\n const width = this.imageData.readUInt16LE(6);\r\n const height = this.imageData.readUInt16LE(8);\r\n if (width > 0 && height > 0) return { width, height };\r\n return null;\r\n }\r\n\r\n private detectBmpDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData || this.imageData.length < 26) return null;\r\n const width = this.imageData.readInt32LE(18);\r\n const height = Math.abs(this.imageData.readInt32LE(22));\r\n if (width > 0 && height > 0) return { width, height };\r\n return null;\r\n }\r\n\r\n private detectTiffDimensions(): { width: number; height: number } | null {\r\n // Implementation as before\r\n if (!this.imageData || this.imageData.length < 14) return null;\r\n const isLittleEndian = this.imageData[0] === 0x49;\r\n const ifdOffset = isLittleEndian ? this.imageData.readUInt32LE(4) : this.imageData.readUInt32BE(4);\r\n if (ifdOffset + 14 > this.imageData.length) return null;\r\n const numEntries = isLittleEndian ? this.imageData.readUInt16LE(ifdOffset) : this.imageData.readUInt16BE(ifdOffset);\r\n let width = 0;\r\n let height = 0;\r\n for (let i = 0; i < numEntries; i++) {\r\n const entryOffset = ifdOffset + 2 + i * 12;\r\n if (entryOffset + 12 > this.imageData.length) break;\r\n const tag = isLittleEndian ? this.imageData.readUInt16LE(entryOffset) : this.imageData.readUInt16BE(entryOffset);\r\n const value = isLittleEndian ? this.imageData.readUInt32LE(entryOffset + 8) : this.imageData.readUInt32BE(entryOffset + 8);\r\n if (tag === 256) width = value;\r\n if (tag === 257) height = value;\r\n if (width > 0 && height > 0) break;\r\n }\r\n if (width > 0 && height > 0) return { width, height };\r\n return null;\r\n }\r\n\r\n private detectJpegDimensions(): { width: number; height: number } | null {\r\n // Implementation as before\r\n if (!this.imageData || this.imageData.length < 12) return null;\r\n let offset = 2;\r\n while (offset < this.imageData.length - 1) {\r\n if (this.imageData[offset] !== 0xff) break;\r\n const marker = this.imageData[offset + 1];\r\n if (marker === undefined) break;\r\n if (marker === 0x00 || marker === 0xff) {\r\n offset++;\r\n continue;\r\n }\r\n const isSOF = (marker >= 0xc0 && marker <= 0xcf) && marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc;\r\n if (isSOF) {\r\n if (offset + 9 > this.imageData.length) break;\r\n const height = this.imageData.readUInt16BE(offset + 5);\r\n const width = this.imageData.readUInt16BE(offset + 7);\r\n if (width > 0 && height > 0) return { width, height };\r\n }\r\n if (marker === 0xda || marker === 0xd9) break;\r\n const segmentLength = this.imageData.readUInt16BE(offset + 2);\r\n if (segmentLength < 2 || offset + 2 + segmentLength > this.imageData.length) break;\r\n offset += 2 + segmentLength;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Detects SVG dimensions from width/height attributes or viewBox\r\n */\r\n private detectSvgDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData) return null;\r\n try {\r\n const svgText = this.imageData.toString('utf-8').substring(0, 2000);\r\n // Try width/height attributes on <svg> element\r\n const widthMatch = /<svg[^>]*\\bwidth\\s*=\\s*[\"']?(\\d+(?:\\.\\d+)?)/i.exec(svgText);\r\n const heightMatch = /<svg[^>]*\\bheight\\s*=\\s*[\"']?(\\d+(?:\\.\\d+)?)/i.exec(svgText);\r\n if (widthMatch?.[1] && heightMatch?.[1]) {\r\n return { width: Math.round(parseFloat(widthMatch[1])), height: Math.round(parseFloat(heightMatch[1])) };\r\n }\r\n // Try viewBox attribute\r\n const viewBoxMatch = /<svg[^>]*\\bviewBox\\s*=\\s*[\"']?\\s*[\\d.]+\\s+[\\d.]+\\s+([\\d.]+)\\s+([\\d.]+)/i.exec(svgText);\r\n if (viewBoxMatch?.[1] && viewBoxMatch?.[2]) {\r\n return { width: Math.round(parseFloat(viewBoxMatch[1])), height: Math.round(parseFloat(viewBoxMatch[2])) };\r\n }\r\n } catch {\r\n // SVG parsing failed\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Detects EMF dimensions from ENHMETAHEADER rclFrame (offsets 24-36, 0.01mm units)\r\n */\r\n private detectEmfDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData || this.imageData.length < 40) return null;\r\n try {\r\n // rclFrame: left(24), top(28), right(32), bottom(36) in 0.01mm units\r\n const left = this.imageData.readInt32LE(24);\r\n const top = this.imageData.readInt32LE(28);\r\n const right = this.imageData.readInt32LE(32);\r\n const bottom = this.imageData.readInt32LE(36);\r\n const widthMm = (right - left) / 100;\r\n const heightMm = (bottom - top) / 100;\r\n // Convert mm to pixels at 96 DPI (1 inch = 25.4mm)\r\n const width = Math.round((widthMm / 25.4) * 96);\r\n const height = Math.round((heightMm / 25.4) * 96);\r\n if (width > 0 && height > 0) return { width, height };\r\n } catch {\r\n // EMF header parsing failed\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Detects WMF dimensions from placeable WMF header bounding box (offsets 6-14)\r\n */\r\n private detectWmfDimensions(): { width: number; height: number } | null {\r\n if (!this.imageData || this.imageData.length < 22) return null;\r\n try {\r\n // Placeable WMF header: left(6), top(8), right(10), bottom(12), inch(14)\r\n const left = this.imageData.readInt16LE(6);\r\n const top = this.imageData.readInt16LE(8);\r\n const right = this.imageData.readInt16LE(10);\r\n const bottom = this.imageData.readInt16LE(12);\r\n const unitsPerInch = this.imageData.readUInt16LE(14);\r\n if (unitsPerInch > 0) {\r\n const width = Math.round(((right - left) / unitsPerInch) * 96);\r\n const height = Math.round(((bottom - top) / unitsPerInch) * 96);\r\n if (width > 0 && height > 0) return { width, height };\r\n }\r\n } catch {\r\n // WMF header parsing failed\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the image data buffer asynchronously\r\n */\r\n async getImageDataAsync(): Promise<Buffer> {\r\n await this.ensureDataLoaded();\r\n if (!this.imageData) throw new Error('Failed to load image data');\r\n return this.imageData;\r\n }\r\n\r\n /**\r\n * Gets the image data buffer synchronously\r\n */\r\n getImageData(): Buffer {\r\n if (!this.imageData) throw new Error('Image data not loaded. Call ensureDataLoaded first.');\r\n return this.imageData;\r\n }\r\n\r\n getExtension(): string {\r\n return this.extension;\r\n }\r\n\r\n getDPI(): number {\r\n return this.dpi;\r\n }\r\n\r\n getWidth(): number {\r\n return this.width;\r\n }\r\n\r\n getHeight(): number {\r\n return this.height;\r\n }\r\n\r\n getImageDataSafe(): Buffer | null {\r\n return this.imageData ?? null;\r\n }\r\n\r\n setWidth(width: number, maintainAspectRatio = true): this {\r\n if (maintainAspectRatio && this.height > 0) {\r\n const ratio = this.height / this.width;\r\n this.height = Math.round(width * ratio);\r\n }\r\n this.width = width;\r\n return this;\r\n }\r\n\r\n setHeight(height: number, maintainAspectRatio = true): this {\r\n if (maintainAspectRatio && this.width > 0) {\r\n const ratio = this.width / this.height;\r\n this.width = Math.round(height * ratio);\r\n }\r\n this.height = height;\r\n return this;\r\n }\r\n\r\n setSize(width: number, height: number): this {\r\n this.width = width;\r\n this.height = height;\r\n return this;\r\n }\r\n\r\n async updateImageData(newSource: string | Buffer): Promise<void> {\r\n this.source = newSource;\r\n this.imageData = undefined;\r\n await this.loadImageDataForDimensions();\r\n this.extension = this.detectExtension();\r\n this.dpi = this.detectDPI() || 96;\r\n }\r\n\r\n setRelationshipId(relationshipId: string): this {\r\n this.relationshipId = relationshipId;\r\n return this;\r\n }\r\n\r\n getRelationshipId(): string | undefined {\r\n return this.relationshipId;\r\n }\r\n\r\n setDocPrId(id: number): this {\r\n this.docPrId = id;\r\n return this;\r\n }\r\n\r\n setAltText(altText: string): this {\r\n this.description = altText;\r\n return this;\r\n }\r\n\r\n getAltText(): string {\r\n return this.description;\r\n }\r\n\r\n setTitle(title: string): this {\r\n this.title = title;\r\n return this;\r\n }\r\n\r\n getTitle(): string | undefined {\r\n return this.title;\r\n }\r\n\r\n rotate(degrees: number): this {\r\n this.rotation = ((degrees % 360) + 360) % 360;\r\n if (this.rotation === 90 || this.rotation === 270) {\r\n [this.width, this.height] = [this.height, this.width];\r\n }\r\n return this;\r\n }\r\n\r\n getRotation(): number {\r\n return this.rotation;\r\n }\r\n\r\n setFlipH(flip: boolean): this {\r\n this.flipH = flip;\r\n return this;\r\n }\r\n\r\n getFlipH(): boolean {\r\n return this.flipH;\r\n }\r\n\r\n setFlipV(flip: boolean): this {\r\n this.flipV = flip;\r\n return this;\r\n }\r\n\r\n getFlipV(): boolean {\r\n return this.flipV;\r\n }\r\n\r\n // --- Group A: Simple attribute getters/setters ---\r\n\r\n getPresetGeometry(): PresetGeometry { return this.presetGeometry; }\r\n setPresetGeometry(geom: PresetGeometry): this { this.presetGeometry = geom; return this; }\r\n\r\n getCompressionState(): BlipCompressionState { return this.compressionState; }\r\n setCompressionState(state: BlipCompressionState): this { this.compressionState = state; return this; }\r\n\r\n getBwMode(): string { return this.bwMode; }\r\n setBwMode(mode: string): this { this.bwMode = mode; return this; }\r\n\r\n getInlineDistT(): number { return this.inlineDistT; }\r\n getInlineDistB(): number { return this.inlineDistB; }\r\n getInlineDistL(): number { return this.inlineDistL; }\r\n getInlineDistR(): number { return this.inlineDistR; }\r\n setInlineDist(distT: number, distB: number, distL: number, distR: number): this {\r\n this.inlineDistT = distT;\r\n this.inlineDistB = distB;\r\n this.inlineDistL = distL;\r\n this.inlineDistR = distR;\r\n return this;\r\n }\r\n\r\n getNoChangeAspect(): boolean { return this.noChangeAspect; }\r\n setNoChangeAspect(val: boolean): this { this.noChangeAspect = val; return this; }\r\n\r\n getHidden(): boolean { return this.hidden; }\r\n setHidden(val: boolean): this { this.hidden = val; return this; }\r\n\r\n getBlipFillDpi(): number | undefined { return this.blipFillDpi; }\r\n setBlipFillDpi(dpi: number | undefined): this { this.blipFillDpi = dpi; return this; }\r\n\r\n getBlipFillRotWithShape(): boolean | undefined { return this.blipFillRotWithShape; }\r\n setBlipFillRotWithShape(val: boolean | undefined): this { this.blipFillRotWithShape = val; return this; }\r\n\r\n getPicLocks(): Partial<Record<PicLockAttribute, boolean>> { return { ...this.picLocks }; }\r\n setPicLocks(locks: Partial<Record<PicLockAttribute, boolean>>): this { this.picLocks = locks; return this; }\r\n\r\n getPicNonVisualProps(): PicNonVisualProperties { return { ...this.picNonVisualProps }; }\r\n setPicNonVisualProps(props: PicNonVisualProperties): this { this.picNonVisualProps = props; return this; }\r\n\r\n getIsLinked(): boolean { return this.isLinked; }\r\n setIsLinked(val: boolean): this { this.isLinked = val; return this; }\r\n\r\n getSvgRelationshipId(): string | undefined { return this.svgRelationshipId; }\r\n setSvgRelationshipId(id: string | undefined): this { this.svgRelationshipId = id; return this; }\r\n\r\n // --- Group B: Raw passthrough storage ---\r\n\r\n /** @internal */\r\n _setRawPassthrough(slot: string, xml: string): void {\r\n this._rawPassthrough.set(slot, xml);\r\n }\r\n\r\n /** @internal */\r\n _getRawPassthrough(slot: string): string | undefined {\r\n return this._rawPassthrough.get(slot);\r\n }\r\n\r\n /** @internal */\r\n _hasRawPassthrough(slot: string): boolean {\r\n return this._rawPassthrough.has(slot);\r\n }\r\n\r\n // --- Group C: Enhanced border ---\r\n\r\n getBorder(): ImageBorder | undefined { return this.border; }\r\n\r\n setEffectExtent(left: number, top: number, right: number, bottom: number): this {\r\n this.effectExtent = { left, top, right, bottom };\r\n return this;\r\n }\r\n\r\n getEffectExtent(): EffectExtent | undefined {\r\n return this.effectExtent;\r\n }\r\n\r\n setWrap(type: WrapType, side?: WrapSide, distances?: { top?: number; bottom?: number; left?: number; right?: number }): this {\r\n this.wrap = {\r\n type,\r\n side,\r\n distanceTop: distances?.top,\r\n distanceBottom: distances?.bottom,\r\n distanceLeft: distances?.left,\r\n distanceRight: distances?.right,\r\n };\r\n return this;\r\n }\r\n\r\n getWrap(): TextWrapSettings | undefined {\r\n return this.wrap;\r\n }\r\n\r\n /**\r\n * Validates a position offset value\r\n * @param offset - Offset value in EMUs\r\n * @param axis - 'horizontal' or 'vertical' for error messages\r\n * @throws {Error} If offset exceeds maximum reasonable value\r\n * @private\r\n */\r\n private validatePositionOffset(offset: number | undefined, axis: string): void {\r\n if (offset === undefined) return;\r\n\r\n // Maximum reasonable offset: 50 inches = 45,720,000 EMUs\r\n const MAX_OFFSET_EMUS = 45720000;\r\n if (Math.abs(offset) > MAX_OFFSET_EMUS) {\r\n throw new Error(\r\n `Invalid ${axis} position offset: ${offset} EMUs exceeds maximum of ${MAX_OFFSET_EMUS} EMUs (50 inches).`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Sets the position for a floating image\r\n *\r\n * Position can be specified using either:\r\n * - Absolute offset (in EMUs from the anchor point)\r\n * - Relative alignment (left, center, right / top, center, bottom)\r\n *\r\n * @param horizontal - Horizontal positioning configuration\r\n * @param vertical - Vertical positioning configuration\r\n * @returns This image for chaining\r\n * @throws {Error} If offset values exceed maximum\r\n *\r\n * @example\r\n * ```typescript\r\n * // Absolute positioning (100,000 EMUs from page edges)\r\n * image.setPosition(\r\n * { anchor: 'page', offset: 100000 },\r\n * { anchor: 'page', offset: 100000 }\r\n * );\r\n *\r\n * // Relative alignment (centered on page)\r\n * image.setPosition(\r\n * { anchor: 'page', alignment: 'center' },\r\n * { anchor: 'page', alignment: 'center' }\r\n * );\r\n * ```\r\n */\r\n setPosition(horizontal: ImagePosition['horizontal'], vertical: ImagePosition['vertical']): this {\r\n // Validate offset values\r\n this.validatePositionOffset(horizontal.offset, 'horizontal');\r\n this.validatePositionOffset(vertical.offset, 'vertical');\r\n\r\n this.position = { horizontal, vertical };\r\n return this;\r\n }\r\n\r\n getPosition(): ImagePosition | undefined {\r\n return this.position;\r\n }\r\n\r\n /**\r\n * Validates the current image position configuration\r\n *\r\n * Checks for common configuration issues:\r\n * - Missing anchor when offset is used\r\n * - Conflicting offset and alignment values\r\n * - Invalid combinations\r\n *\r\n * @returns Validation result with details\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = image.validatePosition();\r\n * if (!result.isValid) {\r\n * console.log(result.warnings); // Array of warning messages\r\n * }\r\n * ```\r\n */\r\n validatePosition(): {\r\n isValid: boolean;\r\n warnings: string[];\r\n } {\r\n const warnings: string[] = [];\r\n\r\n if (!this.position) {\r\n return { isValid: true, warnings };\r\n }\r\n\r\n // Check if both offset and alignment are specified (unusual but not invalid)\r\n if (this.position.horizontal.offset !== undefined && this.position.horizontal.alignment) {\r\n warnings.push(\r\n 'Horizontal position has both offset and alignment. Word will use alignment and ignore offset.'\r\n );\r\n }\r\n\r\n if (this.position.vertical.offset !== undefined && this.position.vertical.alignment) {\r\n warnings.push(\r\n 'Vertical position has both offset and alignment. Word will use alignment and ignore offset.'\r\n );\r\n }\r\n\r\n // Check for floating image without anchor settings\r\n if (this.position && !this.anchor) {\r\n warnings.push(\r\n 'Position is set but anchor is not. Consider setting anchor properties for proper floating behavior.'\r\n );\r\n }\r\n\r\n return {\r\n isValid: warnings.length === 0,\r\n warnings,\r\n };\r\n }\r\n\r\n setAnchor(options: ImageAnchor): this {\r\n this.anchor = options;\r\n return this;\r\n }\r\n\r\n getAnchor(): ImageAnchor | undefined {\r\n return this.anchor;\r\n }\r\n\r\n setCrop(left: number, top: number, right: number, bottom: number): this {\r\n const clamp = (val: number) => Math.max(0, Math.min(100, val));\r\n this.crop = { left: clamp(left), top: clamp(top), right: clamp(right), bottom: clamp(bottom) };\r\n return this;\r\n }\r\n\r\n getCrop(): ImageCrop | undefined {\r\n return this.crop;\r\n }\r\n\r\n setEffects(options: ImageEffects): this {\r\n const clamp = (val?: number) => val !== undefined ? Math.max(-100, Math.min(100, val)) : undefined;\r\n this.effects = { brightness: clamp(options.brightness), contrast: clamp(options.contrast), grayscale: options.grayscale, transparency: options.transparency !== undefined ? Math.max(0, Math.min(100, options.transparency)) : undefined };\r\n return this;\r\n }\r\n\r\n getEffects(): ImageEffects | undefined {\r\n return this.effects;\r\n }\r\n\r\n private detectDPI(): number | undefined {\r\n if (!this.imageData) return undefined;\r\n\r\n try {\r\n if (this.extension === 'png') {\r\n const physIndex = this.imageData.indexOf(Buffer.from([0x70, 0x48, 0x59, 0x73]));\r\n if (physIndex !== -1 && physIndex + 12 < this.imageData.length) {\r\n const xPixelsPerMeter = this.imageData.readUInt32BE(physIndex + 4);\r\n const yPixelsPerMeter = this.imageData.readUInt32BE(physIndex + 8);\r\n const unit = this.imageData[physIndex + 12];\r\n if (unit === 1) {\r\n const dpiX = Math.round(xPixelsPerMeter * 0.0254);\r\n const dpiY = Math.round(yPixelsPerMeter * 0.0254);\r\n return Math.min(dpiX, dpiY);\r\n }\r\n }\r\n } else if (this.extension === 'jpg' || this.extension === 'jpeg') {\r\n let offset = 2;\r\n while (offset < this.imageData.length) {\r\n if (this.imageData[offset] !== 0xFF) break;\r\n const marker = this.imageData[offset + 1];\r\n if (marker === 0xE0) {\r\n const length = this.imageData.readUInt16BE(offset + 2);\r\n if (length >= 16 && this.imageData.slice(offset + 4, offset + 9).toString('ascii') === 'JFIF\\0') {\r\n const units = this.imageData[offset + 11];\r\n const xDensity = this.imageData.readUInt16BE(offset + 12);\r\n const yDensity = this.imageData.readUInt16BE(offset + 14);\r\n if (units === 1) return Math.min(xDensity, yDensity);\r\n if (units === 2) return Math.min(Math.round(xDensity * 2.54), Math.round(yDensity * 2.54));\r\n }\r\n offset += 2 + length;\r\n continue;\r\n }\r\n offset += 2 + this.imageData.readUInt16BE(offset + 2);\r\n }\r\n }\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n defaultLogger.warn(`DPI detection failed: ${message}`);\r\n }\r\n return undefined;\r\n }\r\n\r\n isFloating(): boolean {\r\n return !!this.anchor || !!this.position;\r\n }\r\n\r\n floatTopLeft(marginTop = 0, marginLeft = 0): this {\r\n this.setPosition(\r\n { anchor: 'page', offset: marginLeft },\r\n { anchor: 'page', offset: marginTop }\r\n );\r\n this.setAnchor({\r\n behindDoc: false,\r\n locked: false,\r\n layoutInCell: true,\r\n allowOverlap: true,\r\n relativeHeight: 251658240\r\n });\r\n this.setWrap('square', 'bothSides');\r\n return this;\r\n }\r\n\r\n floatTopRight(marginTop = 0, marginRight = 0): this {\r\n this.setPosition(\r\n { anchor: 'page', alignment: 'right', offset: -marginRight },\r\n { anchor: 'page', offset: marginTop }\r\n );\r\n this.setAnchor({\r\n behindDoc: false,\r\n locked: false,\r\n layoutInCell: true,\r\n allowOverlap: true,\r\n relativeHeight: 251658240\r\n });\r\n this.setWrap('square', 'bothSides');\r\n return this;\r\n }\r\n\r\n floatCenter(): this {\r\n this.setPosition(\r\n { anchor: 'page', alignment: 'center' },\r\n { anchor: 'page', alignment: 'center' }\r\n );\r\n this.setAnchor({\r\n behindDoc: false,\r\n locked: false,\r\n layoutInCell: true,\r\n allowOverlap: true,\r\n relativeHeight: 251658240\r\n });\r\n this.setWrap('square', 'bothSides');\r\n return this;\r\n }\r\n\r\n setBehindText(behind = true): this {\r\n if (this.anchor) {\r\n this.anchor.behindDoc = behind;\r\n } else {\r\n this.setAnchor({\r\n behindDoc: behind,\r\n locked: false,\r\n layoutInCell: true,\r\n allowOverlap: true,\r\n relativeHeight: 251658240\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Applies a border around the image\r\n * @param thicknessOrOptions Border thickness in points (number) or full ImageBorder options\r\n * @returns This image for chaining\r\n *\r\n * Note: effectExtent is set to accommodate the border width so it renders\r\n * properly without being clipped. The border is drawn centered on the image\r\n * edge, so half the border width extends outside the image bounds.\r\n */\r\n setBorder(thicknessOrOptions: number | ImageBorder = 2): this {\r\n if (typeof thicknessOrOptions === 'number') {\r\n this.border = { width: thicknessOrOptions };\r\n } else {\r\n this.border = thicknessOrOptions;\r\n }\r\n\r\n // Calculate space needed for border (half-width on each side)\r\n // Border is drawn centered on the edge\r\n const borderEmu = this.border.width * UNITS.EMUS_PER_POINT;\r\n const halfBorderEmu = Math.ceil(borderEmu / 2);\r\n\r\n // Ensure effectExtent has at least enough space for the border\r\n if (!this.effectExtent) {\r\n this.effectExtent = { left: 0, top: 0, right: 0, bottom: 0 };\r\n }\r\n this.effectExtent.left = Math.max(this.effectExtent.left, halfBorderEmu);\r\n this.effectExtent.top = Math.max(this.effectExtent.top, halfBorderEmu);\r\n this.effectExtent.right = Math.max(this.effectExtent.right, halfBorderEmu);\r\n this.effectExtent.bottom = Math.max(this.effectExtent.bottom, halfBorderEmu);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes the border from the image\r\n * @returns This image for chaining\r\n */\r\n removeBorder(): this {\r\n this.border = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * @deprecated Use setBorder() instead. This method will be removed in a future version.\r\n * Applies a 2-point black border around the image.\r\n * @returns This image for chaining\r\n */\r\n applyTwoPixelBlackBorder(): this {\r\n return this.setBorder(2);\r\n }\r\n\r\n toXML(): XMLElement {\r\n const isFloating = this.isFloating();\r\n\r\n // Common elements - must include wp: namespace prefix\r\n const extent = XMLBuilder.wp('extent', { cx: this.width.toString(), cy: this.height.toString() });\r\n\r\n // --- Build blip element with effects ---\r\n const blipChildren: XMLElement[] = [];\r\n\r\n // Add luminance effect for brightness/contrast (per ECMA-376 §20.1.8.43)\r\n if (this.effects?.brightness !== undefined || this.effects?.contrast !== undefined) {\r\n const lumAttrs: Record<string, string> = {};\r\n if (this.effects.brightness !== undefined) {\r\n lumAttrs.bright = Math.round(this.effects.brightness * 1000).toString();\r\n }\r\n if (this.effects.contrast !== undefined) {\r\n lumAttrs.contrast = Math.round(this.effects.contrast * 1000).toString();\r\n }\r\n blipChildren.push(XMLBuilder.aSelf('lum', lumAttrs));\r\n }\r\n\r\n // Add grayscale effect (per ECMA-376 §20.1.8.37)\r\n if (this.effects?.grayscale) {\r\n blipChildren.push(XMLBuilder.aSelf('grayscl'));\r\n }\r\n\r\n // Add transparency effect via a:alphaModFix (ECMA-376 §20.1.8.4)\r\n if (this.effects?.transparency !== undefined && this.effects.transparency > 0) {\r\n // transparency is 0-100%, alphaModFix amt is in 1/1000ths of percent\r\n // e.g., 50% transparency = 50000 amt (= 50% opacity)\r\n const amt = Math.round((100 - this.effects.transparency) * 1000);\r\n blipChildren.push(XMLBuilder.aSelf('alphaModFix', { amt: amt.toString() }));\r\n }\r\n\r\n // Group B: Inject raw blip effects passthrough (a:clrChange, a:duotone, etc.)\r\n if (this._rawPassthrough.has('blip-effects')) {\r\n blipChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('blip-effects')! } as XMLElement);\r\n }\r\n\r\n // Group B: Inject raw blip extLst passthrough (must come last per schema)\r\n if (this._rawPassthrough.has('blip-extLst')) {\r\n blipChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('blip-extLst')! } as XMLElement);\r\n } else if (this.svgRelationshipId) {\r\n // SVG dual-relationship: add asvg:svgBlip reference in extLst\r\n blipChildren.push({\r\n name: '__rawXml',\r\n rawXml: `<a:extLst><a:ext uri=\"{96DAC541-7B7A-43D3-8B79-37D633B846F1}\"><asvg:svgBlip xmlns:asvg=\"http://schemas.microsoft.com/office/drawing/2016/SVG/main\" r:embed=\"${this.svgRelationshipId}\"/></a:ext></a:extLst>`,\r\n } as XMLElement);\r\n }\r\n\r\n // Build blip attributes: r:embed or r:link, cstate\r\n const blipAttrs: Record<string, string | undefined> = {\r\n cstate: this.compressionState,\r\n };\r\n if (this.isLinked) {\r\n blipAttrs['r:link'] = this.relationshipId;\r\n } else {\r\n blipAttrs['r:embed'] = this.relationshipId;\r\n }\r\n\r\n const blip = blipChildren.length > 0\r\n ? XMLBuilder.a('blip', blipAttrs, blipChildren)\r\n : XMLBuilder.a('blip', blipAttrs);\r\n\r\n // --- Build transform (a:xfrm) ---\r\n const xfrmAttrs: Record<string, string> | undefined = (() => {\r\n const attrs: Record<string, string> = {};\r\n if (this.rotation > 0) attrs.rot = Math.round(this.rotation * 60000).toString();\r\n if (this.flipH) attrs.flipH = '1';\r\n if (this.flipV) attrs.flipV = '1';\r\n return Object.keys(attrs).length > 0 ? attrs : undefined;\r\n })();\r\n const xfrm = XMLBuilder.a('xfrm', xfrmAttrs, [\r\n XMLBuilder.a('off', { x: '0', y: '0' }),\r\n XMLBuilder.a('ext', { cx: this.width.toString(), cy: this.height.toString() })\r\n ]);\r\n\r\n // --- Build shape properties (pic:spPr) ---\r\n const spPrChildren: XMLElement[] = [xfrm];\r\n\r\n // Geometry: use passthrough for custGeom or prstGeom with avLst, otherwise default\r\n if (this._rawPassthrough.has('geometry')) {\r\n spPrChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('geometry')! } as XMLElement);\r\n } else {\r\n spPrChildren.push(XMLBuilder.a('prstGeom', { prst: this.presetGeometry }, [\r\n XMLBuilder.a('avLst')\r\n ]));\r\n }\r\n\r\n // Border (a:ln) - full model (Group C)\r\n if (this.border) {\r\n // Add noFill element before the border line (required by Word)\r\n spPrChildren.push(XMLBuilder.a('noFill'));\r\n\r\n const ptToEmu = 12700;\r\n const widthEmu = this.border.width * ptToEmu;\r\n const lnAttrs: Record<string, string> = { w: widthEmu.toString() };\r\n if (this.border.cap) lnAttrs.cap = this.border.cap;\r\n if (this.border.compound) lnAttrs.cmpd = this.border.compound;\r\n if (this.border.alignment) lnAttrs.algn = this.border.alignment;\r\n\r\n const lnChildren: XMLElement[] = [];\r\n\r\n // Fill\r\n if (this.border.rawFillXml) {\r\n lnChildren.push({ name: '__rawXml', rawXml: this.border.rawFillXml } as XMLElement);\r\n } else if (this.border.fill) {\r\n const colorChildren: XMLElement[] = [];\r\n if (this.border.fill.modifiers) {\r\n for (const mod of this.border.fill.modifiers) {\r\n colorChildren.push(XMLBuilder.aSelf(mod.name, { val: mod.val }));\r\n }\r\n }\r\n const colorEl = colorChildren.length > 0\r\n ? XMLBuilder.a(this.border.fill.type, { val: this.border.fill.value }, colorChildren)\r\n : XMLBuilder.a(this.border.fill.type, { val: this.border.fill.value });\r\n lnChildren.push(XMLBuilder.a('solidFill', undefined, [colorEl]));\r\n } else {\r\n // Default: scheme color tx1 (backward compat)\r\n lnChildren.push(XMLBuilder.a('solidFill', undefined, [\r\n XMLBuilder.a('schemeClr', { val: 'tx1' })\r\n ]));\r\n }\r\n\r\n // Dash pattern\r\n if (this.border.dashPattern) {\r\n lnChildren.push(XMLBuilder.aSelf('prstDash', { val: this.border.dashPattern }));\r\n }\r\n\r\n // Join\r\n if (this.border.join === 'round') {\r\n lnChildren.push(XMLBuilder.aSelf('round'));\r\n } else if (this.border.join === 'bevel') {\r\n lnChildren.push(XMLBuilder.aSelf('bevel'));\r\n } else if (this.border.join === 'miter') {\r\n const miterAttrs: Record<string, string> = {};\r\n if (this.border.miterLimit) miterAttrs.lim = this.border.miterLimit.toString();\r\n lnChildren.push(XMLBuilder.aSelf('miter', miterAttrs));\r\n }\r\n\r\n // Head/tail end\r\n if (this.border.headEnd) {\r\n lnChildren.push(XMLBuilder.aSelf('headEnd', this.border.headEnd as Record<string, string>));\r\n }\r\n if (this.border.tailEnd) {\r\n lnChildren.push(XMLBuilder.aSelf('tailEnd', this.border.tailEnd as Record<string, string>));\r\n }\r\n\r\n spPrChildren.push(XMLBuilder.a('ln', lnAttrs, lnChildren));\r\n }\r\n\r\n // Group B: Inject raw spPr effects passthrough (effectLst, scene3d, sp3d, etc.)\r\n if (this._rawPassthrough.has('spPr-effects')) {\r\n spPrChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('spPr-effects')! } as XMLElement);\r\n }\r\n\r\n // --- Build pic:cNvPr with passthrough ---\r\n const cNvPrChildren: XMLElement[] = [];\r\n if (this._rawPassthrough.has('cNvPr-extra')) {\r\n cNvPrChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('cNvPr-extra')! } as XMLElement);\r\n }\r\n const cNvPr = cNvPrChildren.length > 0\r\n ? XMLBuilder.pic('cNvPr', {\r\n id: this.picNonVisualProps.id,\r\n name: this.picNonVisualProps.name,\r\n descr: this.picNonVisualProps.descr,\r\n }, cNvPrChildren)\r\n : XMLBuilder.pic('cNvPr', {\r\n id: this.picNonVisualProps.id,\r\n name: this.picNonVisualProps.name,\r\n descr: this.picNonVisualProps.descr,\r\n });\r\n\r\n // --- Build picLocks from map ---\r\n const picLocksAttrs: Record<string, string> = {};\r\n for (const [key, val] of Object.entries(this.picLocks)) {\r\n if (val) picLocksAttrs[key] = '1';\r\n }\r\n\r\n // --- Build blipFill ---\r\n const blipFillAttrs: Record<string, string> = {};\r\n if (this.blipFillDpi !== undefined) blipFillAttrs.dpi = this.blipFillDpi.toString();\r\n if (this.blipFillRotWithShape !== undefined) blipFillAttrs.rotWithShape = this.blipFillRotWithShape ? '1' : '0';\r\n\r\n const blipFillChildren: XMLElement[] = [blip];\r\n // Crop values are stored as percentages (0-100), serialized as per-mille (0-100000)\r\n if (this.crop) {\r\n blipFillChildren.push(XMLBuilder.a('srcRect', {\r\n l: Math.round(this.crop.left * 1000).toString(),\r\n t: Math.round(this.crop.top * 1000).toString(),\r\n r: Math.round(this.crop.right * 1000).toString(),\r\n b: Math.round(this.crop.bottom * 1000).toString(),\r\n }));\r\n }\r\n // Group B: Use tile passthrough instead of stretch when present\r\n if (this._rawPassthrough.has('blipFill-extra')) {\r\n blipFillChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('blipFill-extra')! } as XMLElement);\r\n } else {\r\n blipFillChildren.push(XMLBuilder.a('stretch', undefined, [XMLBuilder.a('fillRect')]));\r\n }\r\n\r\n const blipFillAttrsObj = Object.keys(blipFillAttrs).length > 0 ? blipFillAttrs : undefined;\r\n\r\n const graphicData = XMLBuilder.a('graphicData', { uri: 'http://schemas.openxmlformats.org/drawingml/2006/picture' }, [\r\n XMLBuilder.pic('pic', undefined, [\r\n XMLBuilder.pic('nvPicPr', undefined, [\r\n cNvPr,\r\n XMLBuilder.pic('cNvPicPr', undefined, [\r\n XMLBuilder.a('picLocks', Object.keys(picLocksAttrs).length > 0 ? picLocksAttrs : undefined)\r\n ])\r\n ]),\r\n XMLBuilder.pic('blipFill', blipFillAttrsObj, blipFillChildren),\r\n XMLBuilder.pic('spPr', { bwMode: this.bwMode }, spPrChildren)\r\n ])\r\n ]);\r\n\r\n const graphic = XMLBuilder.a('graphic', undefined, [graphicData]);\r\n\r\n // --- Build docPr element (shared between inline and floating) ---\r\n const buildDocPr = (idVal: string | number): XMLElement => {\r\n const attrs: Record<string, any> = { id: idVal, name: this.name, descr: this.description };\r\n if (this.title) attrs.title = this.title;\r\n if (this.hidden) attrs.hidden = '1';\r\n const children: XMLElement[] = [];\r\n if (this._rawPassthrough.has('docPr-extra')) {\r\n children.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('docPr-extra')! } as XMLElement);\r\n }\r\n return children.length > 0\r\n ? XMLBuilder.wp('docPr', attrs, children)\r\n : XMLBuilder.wp('docPr', attrs);\r\n };\r\n\r\n // --- Build cNvGraphicFramePr element (shared between inline and floating) ---\r\n const buildCNvGraphicFramePr = (): XMLElement => {\r\n return XMLBuilder.wp('cNvGraphicFramePr', undefined, [\r\n XMLBuilder.a('graphicFrameLocks', {\r\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\r\n noChangeAspect: this.noChangeAspect ? '1' : '0',\r\n })\r\n ]);\r\n };\r\n\r\n if (isFloating) {\r\n // Floating image (anchor)\r\n const positionHChildren: XMLElement[] = [];\r\n if (this.position?.horizontal.alignment) {\r\n positionHChildren.push(XMLBuilder.wp('align', undefined, [this.position.horizontal.alignment]));\r\n } else {\r\n positionHChildren.push(XMLBuilder.wp('posOffset', undefined, [(this.position?.horizontal.offset || 0).toString()]));\r\n }\r\n const positionH = XMLBuilder.wp('positionH', { relativeFrom: this.position?.horizontal.anchor || 'page' }, positionHChildren);\r\n\r\n const positionVChildren: XMLElement[] = [];\r\n if (this.position?.vertical.alignment) {\r\n positionVChildren.push(XMLBuilder.wp('align', undefined, [this.position.vertical.alignment]));\r\n } else {\r\n positionVChildren.push(XMLBuilder.wp('posOffset', undefined, [(this.position?.vertical.offset || 0).toString()]));\r\n }\r\n const positionV = XMLBuilder.wp('positionV', { relativeFrom: this.position?.vertical.anchor || 'page' }, positionVChildren);\r\n\r\n // Effect extent for floating images (required by Word)\r\n const floatEffectExt = this.effectExtent || { left: 0, top: 0, right: 0, bottom: 0 };\r\n const effectExtentElement = XMLBuilder.wp('effectExtent', {\r\n t: floatEffectExt.top.toString(),\r\n r: floatEffectExt.right.toString(),\r\n b: floatEffectExt.bottom.toString(),\r\n l: floatEffectExt.left.toString()\r\n });\r\n\r\n const anchorChildren: XMLElement[] = [\r\n positionH,\r\n positionV,\r\n extent,\r\n effectExtentElement\r\n ];\r\n\r\n // Wrap element (required by CT_Anchor per ECMA-376 — defaults to wrapNone)\r\n if (this.wrap) {\r\n const wrapAttrs: Record<string, any> = {};\r\n if (this.wrap.distanceTop !== undefined) wrapAttrs.distT = this.wrap.distanceTop;\r\n if (this.wrap.distanceBottom !== undefined) wrapAttrs.distB = this.wrap.distanceBottom;\r\n if (this.wrap.distanceLeft !== undefined) wrapAttrs.distL = this.wrap.distanceLeft;\r\n if (this.wrap.distanceRight !== undefined) wrapAttrs.distR = this.wrap.distanceRight;\r\n if (this.wrap.side) wrapAttrs.wrapText = this.wrap.side;\r\n\r\n let wrapElementName: string;\r\n switch (this.wrap.type) {\r\n case 'square': wrapElementName = 'wrapSquare'; break;\r\n case 'tight': wrapElementName = 'wrapTight'; break;\r\n case 'through': wrapElementName = 'wrapThrough'; break;\r\n case 'topAndBottom': wrapElementName = 'wrapTopAndBottom'; break;\r\n case 'none': wrapElementName = 'wrapNone'; break;\r\n default: wrapElementName = 'wrapSquare';\r\n }\r\n\r\n // Group B: Include wrap polygon passthrough as children\r\n const wrapChildren: XMLElement[] = [];\r\n if (this._rawPassthrough.has('wrap-polygon')) {\r\n wrapChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('wrap-polygon')! } as XMLElement);\r\n } else if (wrapElementName === 'wrapTight' || wrapElementName === 'wrapThrough') {\r\n // CT_WrapTight/CT_WrapThrough require a wp:wrapPolygon child.\r\n // Generate a default rectangular polygon covering the full image extents.\r\n wrapChildren.push({\r\n name: 'wp:wrapPolygon',\r\n attributes: { edited: '0' },\r\n children: [\r\n { name: 'wp:start', attributes: { x: '0', y: '0' }, selfClosing: true },\r\n { name: 'wp:lineTo', attributes: { x: '21600', y: '0' }, selfClosing: true },\r\n { name: 'wp:lineTo', attributes: { x: '21600', y: '21600' }, selfClosing: true },\r\n { name: 'wp:lineTo', attributes: { x: '0', y: '21600' }, selfClosing: true },\r\n { name: 'wp:lineTo', attributes: { x: '0', y: '0' }, selfClosing: true },\r\n ],\r\n });\r\n }\r\n\r\n anchorChildren.push(\r\n wrapChildren.length > 0\r\n ? XMLBuilder.wp(wrapElementName, wrapAttrs, wrapChildren)\r\n : XMLBuilder.wp(wrapElementName, wrapAttrs)\r\n );\r\n } else {\r\n // Default: wrapNone (required choice element per CT_Anchor)\r\n anchorChildren.push(XMLBuilder.wp('wrapNone', {}));\r\n }\r\n\r\n anchorChildren.push(buildDocPr(this.docPrId));\r\n anchorChildren.push(buildCNvGraphicFramePr());\r\n anchorChildren.push(graphic);\r\n\r\n // Group B: Inject anchor extras (wp14:sizeRelH, wp14:sizeRelV)\r\n if (this._rawPassthrough.has('anchor-extra')) {\r\n anchorChildren.push({ name: '__rawXml', rawXml: this._rawPassthrough.get('anchor-extra')! } as XMLElement);\r\n }\r\n\r\n // Build anchor attributes including simplePos and distance from text\r\n const anchorAttrs: Record<string, any> = {\r\n behindDoc: this.anchor?.behindDoc ? 1 : 0,\r\n locked: this.anchor?.locked ? 1 : 0,\r\n layoutInCell: this.anchor?.layoutInCell ? 1 : 0,\r\n allowOverlap: this.anchor?.allowOverlap ? 1 : 0,\r\n relativeHeight: this.anchor?.relativeHeight,\r\n simplePos: this.anchor?.simplePos ? '1' : '0',\r\n distT: (this.anchor?.distT ?? 0).toString(),\r\n distB: (this.anchor?.distB ?? 0).toString(),\r\n distL: (this.anchor?.distL ?? 0).toString(),\r\n distR: (this.anchor?.distR ?? 0).toString(),\r\n };\r\n if (this.hidden) anchorAttrs.hidden = '1';\r\n\r\n // Add wp:simplePos child element (required by ECMA-376 even when simplePos=\"0\")\r\n anchorChildren.unshift(XMLBuilder.wp('simplePos', { x: '0', y: '0' }));\r\n\r\n return XMLBuilder.w('drawing', undefined, [\r\n XMLBuilder.wp('anchor', anchorAttrs, anchorChildren)\r\n ]);\r\n } else {\r\n // Inline image\r\n const effectExt = this.effectExtent || { left: 0, top: 0, right: 0, bottom: 0 };\r\n\r\n return XMLBuilder.w('drawing', undefined, [\r\n XMLBuilder.wp('inline', {\r\n distT: this.inlineDistT.toString(),\r\n distB: this.inlineDistB.toString(),\r\n distL: this.inlineDistL.toString(),\r\n distR: this.inlineDistR.toString(),\r\n }, [\r\n extent,\r\n XMLBuilder.wp('effectExtent', {\r\n t: effectExt.top.toString(),\r\n r: effectExt.right.toString(),\r\n b: effectExt.bottom.toString(),\r\n l: effectExt.left.toString()\r\n }),\r\n buildDocPr(this.docPrId.toString()),\r\n buildCNvGraphicFramePr(),\r\n graphic\r\n ])\r\n ]);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageManager.d.ts","sourceRoot":"","sources":["../../src/elements/ImageManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAMhC,UAAU,UAAU;IAElB,KAAK,EAAE,KAAK,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,MAAM,CAAC;IAEvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,mBAAmB;IAElC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAKD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,uBAAuB,CAAS;gBAM5B,OAAO,GAAE,mBAAwB;IA8B7C,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAwGzG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;IAS7C,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;IAWnD,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAoB1E,YAAY,IAAI,UAAU,EAAE;IAQ5B,aAAa,IAAI,MAAM;IASvB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAS/B,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAuBvC,gBAAgB,CACpB,WAAW,
|
|
1
|
+
{"version":3,"file":"ImageManager.d.ts","sourceRoot":"","sources":["../../src/elements/ImageManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAMhC,UAAU,UAAU;IAElB,KAAK,EAAE,KAAK,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,MAAM,CAAC;IAEvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,mBAAmB;IAElC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAKD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,uBAAuB,CAAS;gBAM5B,OAAO,GAAE,mBAAwB;IA8B7C,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAwGzG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;IAS7C,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;IAWnD,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAoB1E,YAAY,IAAI,UAAU,EAAE;IAQ5B,aAAa,IAAI,MAAM;IASvB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAS/B,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAuBvC,gBAAgB,CACpB,WAAW,SAAI,EACf,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACnD,OAAO,CAAC,IAAI,CAAC;IAmDhB,mBAAmB,IAAI,IAAI;IAW3B,YAAY,IAAI,MAAM;IAkBhB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAiB1C,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB;IAgBD,0BAA0B,IAAI,IAAI;IAqBlC,KAAK,IAAI,IAAI;IAYb,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY;CAG3D"}
|
|
@@ -202,8 +202,8 @@ class ImageManager {
|
|
|
202
202
|
initializeFromLoadedImages() {
|
|
203
203
|
let maxNumber = 0;
|
|
204
204
|
for (const entry of this.images.values()) {
|
|
205
|
-
const match =
|
|
206
|
-
if (match
|
|
205
|
+
const match = /image(\d+)\./.exec(entry.filename);
|
|
206
|
+
if (match?.[1]) {
|
|
207
207
|
const num = parseInt(match[1], 10);
|
|
208
208
|
if (num > maxNumber) {
|
|
209
209
|
maxNumber = num;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageManager.js","sourceRoot":"","sources":["../../src/elements/ImageManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImageManager.js","sourceRoot":"","sources":["../../src/elements/ImageManager.ts"],"names":[],"mappings":";;;AAQA,4CAAgD;AA+BhD,MAAa,YAAY;IACf,MAAM,CAAyB;IAC/B,aAAa,CAA0B;IACvC,eAAe,CAAS;IACxB,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,sBAAsB,CAAS;IAC/B,uBAAuB,CAAS;IAMxC,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAErB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,sBAAsB,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjF,IAAI,CAAC,uBAAuB,GAAG,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACpF,CAAC;IAqBD,aAAa,CAAC,KAAY,EAAE,cAAsB,EAAE,gBAAyB,EAAE,QAAiB;QAE9F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3B,CAAC;QAKD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAMzD,MAAM,QAAQ,GAAG,eAAe;YAC9B,CAAC,CAAC,eAAe,CAAC,QAAQ;YAC1B,CAAC,CAAC,CAAC,gBAAgB,IAAI,QAAQ,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAGnF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,CAAC,aAAa,cAAc;gBAC1E,aAAa;gBACb,qCAAqC;gBACrC,mDAAmD;gBACnD,uCAAuC,CACxC,CAAC;QACJ,CAAC;QAGD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YAErD,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC;oBAC7E,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;oBACpE,aAAa;oBACb,6BAA6B;oBAC7B,oCAAoC;oBACpC,0DAA0D;oBAC1D,wDAAwD,CACzD,CAAC;YACJ,CAAC;YAGD,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC;YACzD,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YAEpD,IAAI,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,qBAAqB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;oBACzE,IAAI,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;oBAC3F,aAAa;oBACb,mCAAmC;oBACnC,mCAAmC;oBACnC,yDAAyD;oBACzD,uCAAuC,CACxC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YAGxB,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAGD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAG1B,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAGxC,MAAM,KAAK,GAAe;YACxB,KAAK;YACL,QAAQ;YACR,cAAc;YACd,OAAO;SACR,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAI9B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,WAAW,CAAC,KAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1C,CAAC;IAOD,iBAAiB,CAAC,KAAY;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAChD,CAAC;IASD,mBAAmB,CAAC,KAAY,EAAE,WAAmB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;QACnC,IAAI,WAAW,KAAK,WAAW;YAAE,OAAO,WAAW,CAAC;QAGpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;gBAAE,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC3D,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;gBAAE,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC3D,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAMD,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAMD,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAOD,QAAQ,CAAC,KAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAOD,MAAM,CAAC,WAAW,CAAC,SAAiB;QAClC,MAAM,SAAS,GAA2B;YACxC,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,YAAY;YACjB,GAAG,EAAE,eAAe;YACpB,GAAG,EAAE,aAAa;YAClB,GAAG,EAAE,aAAa;SACnB,CAAC;QAEF,OAAO,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,WAAW,CAAC;IAC3D,CAAC;IAQD,KAAK,CAAC,gBAAgB,CACpB,WAAW,GAAG,CAAC,EACf,UAAoD;QAEpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAGD,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QAGf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YAGhE,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxB,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACrC,MAAM,EAAE,CAAC;oBAGT,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBAExB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,sBAAa,CAAC,IAAI,CAChB,8BAA8B,OAAO,EAAE,CACxC,CAAC;oBACF,MAAM,EAAE,CAAC;oBAET,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAMD,mBAAmB;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAOD,YAAY;QACV,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACxC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAC3B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sBAAa,CAAC,KAAK,CAAC,yDAAyD,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAOD,KAAK,CAAC,iBAAiB;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBACnD,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAC3B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sBAAa,CAAC,KAAK,CAAC,kDAAkD,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAMD,QAAQ;QAKN,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,OAAO;YACL,KAAK;YACL,SAAS;YACT,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3D,CAAC;IACJ,CAAC;IAQD,0BAA0B;QACxB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAEzC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;oBACpB,SAAS,GAAG,GAAG,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,eAAe,GAAG,SAAS,GAAG,CAAC,CAAC;IACvC,CAAC;IAKD,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,MAAM,CAAC,MAAM,CAAC,OAA6B;QACzC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CACF;AAxYD,oCAwYC","sourcesContent":["/**\r\n * ImageManager - Manages images in a document\r\n *\r\n * Handles image tracking, unique filename generation, and coordination\r\n * with the RelationshipManager for image relationships.\r\n */\r\n\r\nimport { Image } from './Image';\r\nimport { defaultLogger } from '../utils/logger';\r\n\r\n/**\r\n * Image file entry\r\n */\r\ninterface ImageEntry {\r\n /** The Image object */\r\n image: Image;\r\n /** Filename in media folder (e.g., 'image1.png') */\r\n filename: string;\r\n /** Relationship ID */\r\n relationshipId: string;\r\n /** Document property ID (for DrawingML) */\r\n docPrId: number;\r\n}\r\n\r\n/**\r\n * Image manager options\r\n */\r\nexport interface ImageManagerOptions {\r\n /** Maximum number of images allowed. Default: 1000 */\r\n maxImageCount?: number;\r\n /** Maximum total size of all images in MB. Default: 100 */\r\n maxTotalImageSizeMB?: number;\r\n /** Maximum size of a single image in MB. Default: 20 */\r\n maxSingleImageSizeMB?: number;\r\n}\r\n\r\n/**\r\n * Manages all images in a document\r\n */\r\nexport class ImageManager {\r\n private images: Map<Image, ImageEntry>;\r\n private imagesByRelId: Map<string, ImageEntry>; // Track by relationship ID (Issue #12 fix)\r\n private nextImageNumber: number;\r\n private nextDocPrId: number;\r\n private maxImageCount: number;\r\n private maxTotalImageSizeBytes: number;\r\n private maxSingleImageSizeBytes: number;\r\n\r\n /**\r\n * Creates a new image manager\r\n * @param options Image manager options\r\n */\r\n constructor(options: ImageManagerOptions = {}) {\r\n this.images = new Map();\r\n this.imagesByRelId = new Map(); // Issue #12 fix\r\n this.nextImageNumber = 1;\r\n this.nextDocPrId = 1;\r\n // Increased from 20 to 1000 to support production documents with many images\r\n this.maxImageCount = options.maxImageCount ?? 1000;\r\n this.maxTotalImageSizeBytes = (options.maxTotalImageSizeMB ?? 100) * 1024 * 1024;\r\n this.maxSingleImageSizeBytes = (options.maxSingleImageSizeMB ?? 20) * 1024 * 1024;\r\n }\r\n\r\n /**\r\n * Registers an image with the manager\r\n * @param image The image to register\r\n * @param relationshipId The relationship ID for this image\r\n * @param originalFilename Optional original filename from the source document.\r\n * When provided (during parsing), preserves the original filename to maintain\r\n * consistency with relationship targets. When not provided (adding new images),\r\n * generates a new sequential filename.\r\n * @param partName Optional part name (e.g., 'header1.xml', 'footer1.xml') for\r\n * distinguishing relationship IDs from different document parts. Headers and footers\r\n * have their own .rels files, so rId1 in header1.xml is different from rId1 in document.xml.\r\n * @returns The filename assigned to this image\r\n * @throws {Error} If image limits are exceeded\r\n *\r\n * **Issue #12 Fix:** Reuses filename for images with same relationship ID\r\n * to prevent duplicating files in media folder during save.\r\n * However, each image occurrence gets its own entry to preserve dimensions\r\n * (Word allows same image file displayed at different sizes via wp:extent).\r\n */\r\n registerImage(image: Image, relationshipId: string, originalFilename?: string, partName?: string): string {\r\n // Check if already registered by object reference (exact same object)\r\n const existing = this.images.get(image);\r\n if (existing) {\r\n return existing.filename;\r\n }\r\n\r\n // Issue #12 fix: Reuse FILENAME for same rId, but create separate entry\r\n // This prevents duplicate files in media folder while preserving dimensions\r\n // Use composite key with partName to distinguish headers/footers from document body\r\n const relIdKey = partName ? `${partName}:${relationshipId}` : relationshipId;\r\n const existingByRelId = this.imagesByRelId.get(relIdKey);\r\n\r\n // Filename priority:\r\n // 1. Existing filename for same rId (prevents duplicates)\r\n // 2. Original filename from source document (preserves round-trip integrity)\r\n // 3. Generate new sequential filename (for newly added images)\r\n const filename = existingByRelId\r\n ? existingByRelId.filename\r\n : (originalFilename || `image${this.nextImageNumber++}.${image.getExtension()}`);\r\n\r\n // Validate image count limit\r\n if (this.images.size >= this.maxImageCount) {\r\n throw new Error(\r\n `Cannot add image: Maximum image count (${this.maxImageCount}) exceeded. ` +\r\n `Consider:\\n` +\r\n ` - Reducing the number of images\\n` +\r\n ` - Increasing maxImageCount in DocumentOptions\\n` +\r\n ` - Splitting into multiple documents`\r\n );\r\n }\r\n\r\n // Validate single image size (if data is loaded)\r\n try {\r\n const imageData = image.getImageData();\r\n const imageSizeMB = imageData.length / (1024 * 1024);\r\n\r\n if (imageData.length > this.maxSingleImageSizeBytes) {\r\n throw new Error(\r\n `Image size (${imageSizeMB.toFixed(1)}MB) exceeds maximum single image size ` +\r\n `(${(this.maxSingleImageSizeBytes / (1024 * 1024)).toFixed(0)}MB). ` +\r\n `Consider:\\n` +\r\n ` - Compressing the image\\n` +\r\n ` - Resizing to lower resolution\\n` +\r\n ` - Converting to a more efficient format (e.g., JPEG)\\n` +\r\n ` - Increasing maxSingleImageSizeMB in DocumentOptions`\r\n );\r\n }\r\n\r\n // Validate total size after adding this image\r\n const currentTotalSize = this.getTotalSize();\r\n const newTotalSize = currentTotalSize + imageData.length;\r\n const newTotalSizeMB = newTotalSize / (1024 * 1024);\r\n\r\n if (newTotalSize > this.maxTotalImageSizeBytes) {\r\n throw new Error(\r\n `Total image size (${newTotalSizeMB.toFixed(1)}MB) would exceed maximum ` +\r\n `(${(this.maxTotalImageSizeBytes / (1024 * 1024)).toFixed(0)}MB) after adding this image. ` +\r\n `Consider:\\n` +\r\n ` - Compressing existing images\\n` +\r\n ` - Removing unnecessary images\\n` +\r\n ` - Increasing maxTotalImageSizeMB in DocumentOptions\\n` +\r\n ` - Splitting into multiple documents`\r\n );\r\n }\r\n } catch (error: unknown) {\r\n // Image data not loaded yet - validation will happen during save\r\n // This is acceptable for lazy-loaded images\r\n if (error instanceof Error && !error.message.includes('not loaded')) {\r\n throw error; // Re-throw size limit errors\r\n }\r\n }\r\n\r\n // Assign docPr ID\r\n const docPrId = this.nextDocPrId++;\r\n image.setDocPrId(docPrId);\r\n\r\n // Set relationship ID\r\n image.setRelationshipId(relationshipId);\r\n\r\n // Store entry (each image occurrence gets its own entry)\r\n const entry: ImageEntry = {\r\n image,\r\n filename,\r\n relationshipId,\r\n docPrId,\r\n };\r\n\r\n this.images.set(image, entry);\r\n\r\n // Only store first image for each rId (used for filename reuse)\r\n // Use composite key to distinguish headers/footers from document body\r\n if (!existingByRelId) {\r\n this.imagesByRelId.set(relIdKey, entry);\r\n }\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Gets the filename for an image\r\n * @param image The image\r\n * @returns The filename, or undefined if not registered\r\n */\r\n getFilename(image: Image): string | undefined {\r\n return this.images.get(image)?.filename;\r\n }\r\n\r\n /**\r\n * Gets the relationship ID for an image\r\n * @param image The image\r\n * @returns The relationship ID, or undefined if not registered\r\n */\r\n getRelationshipId(image: Image): string | undefined {\r\n return this.images.get(image)?.relationshipId;\r\n }\r\n\r\n /**\r\n * Updates the filename for an image and all other entries sharing the same old filename.\r\n * Used when image format changes (e.g., BMP → PNG) require a new filename.\r\n * @param image The image whose filename to update\r\n * @param newFilename The new filename\r\n * @returns The old filename, or undefined if image not registered\r\n */\r\n updateEntryFilename(image: Image, newFilename: string): string | undefined {\r\n const entry = this.images.get(image);\r\n if (!entry) return undefined;\r\n const oldFilename = entry.filename;\r\n if (oldFilename === newFilename) return oldFilename;\r\n\r\n // Update all entries sharing the old filename\r\n for (const e of this.images.values()) {\r\n if (e.filename === oldFilename) e.filename = newFilename;\r\n }\r\n for (const e of this.imagesByRelId.values()) {\r\n if (e.filename === oldFilename) e.filename = newFilename;\r\n }\r\n return oldFilename;\r\n }\r\n\r\n /**\r\n * Gets all registered images\r\n * @returns Array of image entries\r\n */\r\n getAllImages(): ImageEntry[] {\r\n return Array.from(this.images.values());\r\n }\r\n\r\n /**\r\n * Gets the number of images\r\n * @returns Number of registered images\r\n */\r\n getImageCount(): number {\r\n return this.images.size;\r\n }\r\n\r\n /**\r\n * Checks if an image is registered\r\n * @param image The image\r\n * @returns True if registered\r\n */\r\n hasImage(image: Image): boolean {\r\n return this.images.has(image);\r\n }\r\n\r\n /**\r\n * Gets the MIME type for an image extension\r\n * @param extension File extension (without dot)\r\n * @returns MIME type\r\n */\r\n static getMimeType(extension: string): string {\r\n const mimeTypes: Record<string, string> = {\r\n png: 'image/png',\r\n jpg: 'image/jpeg',\r\n jpeg: 'image/jpeg',\r\n gif: 'image/gif',\r\n bmp: 'image/bmp',\r\n tiff: 'image/tiff',\r\n tif: 'image/tiff',\r\n svg: 'image/svg+xml',\r\n emf: 'image/x-emf',\r\n wmf: 'image/x-wmf',\r\n };\r\n\r\n return mimeTypes[extension.toLowerCase()] || 'image/png';\r\n }\r\n\r\n /**\r\n * Loads data for all images with controlled concurrency\r\n * Call this before saving to ensure all image data is available\r\n * @param concurrency Maximum number of images to load simultaneously (default: 5)\r\n * @param onProgress Optional callback for progress tracking (loaded, total)\r\n */\r\n async loadAllImageData(\r\n concurrency = 5,\r\n onProgress?: (loaded: number, total: number) => void\r\n ): Promise<void> {\r\n const images = Array.from(this.images.values());\r\n const total = images.length;\r\n\r\n if (total === 0) {\r\n return;\r\n }\r\n\r\n // Validate concurrency\r\n if (concurrency < 1 || concurrency > 50 || !Number.isInteger(concurrency)) {\r\n throw new Error('Concurrency must be an integer between 1 and 50');\r\n }\r\n\r\n let loaded = 0;\r\n\r\n // Load images in batches to control concurrency\r\n for (let i = 0; i < total; i += concurrency) {\r\n const batch = images.slice(i, Math.min(i + concurrency, total));\r\n\r\n // Load batch in parallel\r\n await Promise.all(\r\n batch.map(async (entry) => {\r\n try {\r\n await entry.image.ensureDataLoaded();\r\n loaded++;\r\n\r\n // Report progress\r\n if (onProgress) {\r\n onProgress(loaded, total);\r\n }\r\n } catch (error: unknown) {\r\n // Log error but continue loading other images\r\n const message = error instanceof Error ? error.message : String(error);\r\n defaultLogger.warn(\r\n `Failed to load image data: ${message}`\r\n );\r\n loaded++; // Still count as processed\r\n\r\n if (onProgress) {\r\n onProgress(loaded, total);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Releases data for all images\r\n * Call this after saving to free memory\r\n */\r\n releaseAllImageData(): void {\r\n for (const entry of this.images.values()) {\r\n entry.image.releaseData();\r\n }\r\n }\r\n\r\n /**\r\n * Gets the total size of all loaded image data\r\n * Only counts images that are currently loaded in memory\r\n * @returns Total size in bytes\r\n */\r\n getTotalSize(): number {\r\n let totalSize = 0;\r\n for (const entry of this.images.values()) {\r\n try {\r\n const data = entry.image.getImageData();\r\n totalSize += data.length;\r\n } catch (e) {\r\n defaultLogger.debug(`[ImageManager] Image not loaded, skipping size count: ${entry.filename}`);\r\n }\r\n }\r\n return totalSize;\r\n }\r\n\r\n /**\r\n * Gets the total size of all images (loads them if needed)\r\n * Use this for accurate size estimation before saving\r\n * @returns Total size in bytes\r\n */\r\n async getTotalSizeAsync(): Promise<number> {\r\n let totalSize = 0;\r\n for (const entry of this.images.values()) {\r\n try {\r\n const data = await entry.image.getImageDataAsync();\r\n totalSize += data.length;\r\n } catch (e) {\r\n defaultLogger.debug(`[ImageManager] Image loading failed, skipping: ${entry.filename}`);\r\n }\r\n }\r\n return totalSize;\r\n }\r\n\r\n /**\r\n * Gets statistics about images\r\n * @returns Object with image statistics\r\n */\r\n getStats(): {\r\n count: number;\r\n totalSize: number;\r\n averageSize: number;\r\n } {\r\n const count = this.getImageCount();\r\n const totalSize = this.getTotalSize();\r\n return {\r\n count,\r\n totalSize,\r\n averageSize: count > 0 ? Math.round(totalSize / count) : 0,\r\n };\r\n }\r\n\r\n /**\r\n * Initializes nextImageNumber from already-loaded images\r\n * Call after parsing to prevent filename collisions\r\n * \r\n * **Issue #12 Fix:** Prevents collisions when adding new images after load\r\n */\r\n initializeFromLoadedImages(): void {\r\n let maxNumber = 0;\r\n\r\n for (const entry of this.images.values()) {\r\n // Extract number from filename (e.g., \"image5.png\" → 5)\r\n const match = /image(\\d+)\\./.exec(entry.filename); \r\n if (match?.[1]) {\r\n const num = parseInt(match[1], 10);\r\n if (num > maxNumber) {\r\n maxNumber = num;\r\n }\r\n }\r\n }\r\n\r\n // Start numbering after highest existing number\r\n this.nextImageNumber = maxNumber + 1;\r\n }\r\n\r\n /**\r\n * Clears all images\r\n */\r\n clear(): this {\r\n this.images.clear();\r\n this.imagesByRelId.clear(); // Issue #12 fix\r\n this.nextImageNumber = 1;\r\n this.nextDocPrId = 1;\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a new image manager\r\n * @param options Image manager options\r\n */\r\n static create(options?: ImageManagerOptions): ImageManager {\r\n return new ImageManager(options);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRun.js","sourceRoot":"","sources":["../../src/elements/ImageRun.ts"],"names":[],"mappings":";;;AAQA,+BAA4B;AAgB5B,MAAa,QAAS,SAAQ,SAAG;IACvB,YAAY,CAAQ;IAM5B,YAAY,KAAY;QAGtB,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAMD,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAOD,KAAK;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC;IACJ,CAAC;CACF;AAlCD,4BAkCC"}
|
|
1
|
+
{"version":3,"file":"ImageRun.js","sourceRoot":"","sources":["../../src/elements/ImageRun.ts"],"names":[],"mappings":";;;AAQA,+BAA4B;AAgB5B,MAAa,QAAS,SAAQ,SAAG;IACvB,YAAY,CAAQ;IAM5B,YAAY,KAAY;QAGtB,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAMD,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAOD,KAAK;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC;IACJ,CAAC;CACF;AAlCD,4BAkCC","sourcesContent":["/**\r\n * ImageRun - A run that contains an image (drawing)\r\n * Extends Run class for type-safe paragraph content\r\n *\r\n * This is a specialized Run that contains a drawing instead of text.\r\n * It generates proper w:r (run) XML with w:drawing child element.\r\n */\r\n\r\nimport { Run } from './Run';\r\nimport { Image } from './Image';\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * ImageRun - A run containing an embedded image\r\n *\r\n * In WordprocessingML, images are embedded in runs as drawing elements:\r\n * <w:r>\r\n * <w:drawing>\r\n * <wp:inline>\r\n * ... image data ...\r\n * </wp:inline>\r\n * </w:drawing>\r\n * </w:r>\r\n */\r\nexport class ImageRun extends Run {\r\n private imageElement: Image;\r\n\r\n /**\r\n * Creates a new image run\r\n * @param image The image to embed in this run\r\n */\r\n constructor(image: Image) {\r\n // Call parent constructor with empty text\r\n // The text is irrelevant for image runs\r\n super('');\r\n this.imageElement = image;\r\n }\r\n\r\n /**\r\n * Gets the image element\r\n * @returns Image instance\r\n */\r\n getImageElement(): Image {\r\n return this.imageElement;\r\n }\r\n\r\n /**\r\n * Override toXML to generate image-specific XML\r\n * Generates a w:r element containing w:drawing instead of w:t\r\n * @returns XMLElement with w:r containing w:drawing\r\n */\r\n toXML(): XMLElement {\r\n const drawing = this.imageElement.toXML();\r\n return {\r\n name: 'w:r',\r\n children: [drawing]\r\n };\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MathElement.js","sourceRoot":"","sources":["../../src/elements/MathElement.ts"],"names":[],"mappings":";;;AAgBA,MAAa,aAAa;IAChB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;SACN,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AArBD,sCAqBC;AAMD,MAAa,cAAc;IACjB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;SACN,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF;AArBD,wCAqBC"}
|
|
1
|
+
{"version":3,"file":"MathElement.js","sourceRoot":"","sources":["../../src/elements/MathElement.ts"],"names":[],"mappings":";;;AAgBA,MAAa,aAAa;IAChB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;SACN,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AArBD,sCAqBC;AAMD,MAAa,cAAc;IACjB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACH,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;SACN,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF;AArBD,wCAqBC","sourcesContent":["/**\r\n * MathElement - Represents math elements (m:oMathPara and m:oMath)\r\n *\r\n * Per ECMA-376 Part 1 §22.1, math paragraphs (m:oMathPara) are block-level\r\n * and inline math expressions (m:oMath) can appear within paragraphs.\r\n *\r\n * Stored as raw XML for round-trip fidelity since math content has complex\r\n * internal structure (fractions, radicals, matrices, etc.).\r\n */\r\n\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Block-level math paragraph (m:oMathPara)\r\n * Can appear directly in the document body alongside paragraphs and tables.\r\n */\r\nexport class MathParagraph {\r\n private rawXml: string;\r\n\r\n constructor(rawXml: string) {\r\n this.rawXml = rawXml;\r\n }\r\n\r\n toXML(): XMLElement {\r\n return {\r\n name: '__rawXml',\r\n rawXml: this.rawXml,\r\n } as XMLElement;\r\n }\r\n\r\n getRawXml(): string {\r\n return this.rawXml;\r\n }\r\n\r\n getType(): string {\r\n return 'mathParagraph';\r\n }\r\n}\r\n\r\n/**\r\n * Inline math expression (m:oMath)\r\n * Can appear within paragraphs alongside runs.\r\n */\r\nexport class MathExpression {\r\n private rawXml: string;\r\n\r\n constructor(rawXml: string) {\r\n this.rawXml = rawXml;\r\n }\r\n\r\n toXML(): XMLElement {\r\n return {\r\n name: '__rawXml',\r\n rawXml: this.rawXml,\r\n } as XMLElement;\r\n }\r\n\r\n getRawXml(): string {\r\n return this.rawXml;\r\n }\r\n\r\n getType(): string {\r\n return 'mathExpression';\r\n }\r\n}\r\n"]}
|
|
@@ -115,6 +115,11 @@ export interface ParagraphFormatting {
|
|
|
115
115
|
author: string;
|
|
116
116
|
date: Date;
|
|
117
117
|
};
|
|
118
|
+
paragraphMarkInsertion?: {
|
|
119
|
+
id: number;
|
|
120
|
+
author: string;
|
|
121
|
+
date: Date;
|
|
122
|
+
};
|
|
118
123
|
numberingSuppressed?: boolean;
|
|
119
124
|
}
|
|
120
125
|
export type ParagraphContent = Run | FieldLike | Hyperlink | Revision | RangeMarker | Shape | TextBox | PreservedElement;
|
|
@@ -272,6 +277,9 @@ export declare class Paragraph {
|
|
|
272
277
|
markParagraphMarkAsDeleted(id: number, author: string, date?: Date): this;
|
|
273
278
|
clearParagraphMarkDeletion(): this;
|
|
274
279
|
isParagraphMarkDeleted(): boolean;
|
|
280
|
+
markParagraphMarkAsInserted(id: number, author: string, date?: Date): this;
|
|
281
|
+
clearParagraphMarkInsertion(): this;
|
|
282
|
+
isParagraphMarkInserted(): boolean;
|
|
275
283
|
toXML(): XMLElement;
|
|
276
284
|
getWordCount(): number;
|
|
277
285
|
getLength(includeSpaces?: boolean): number;
|