docxmlater 10.1.3 → 10.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +759 -754
- package/dist/constants/legacyCompatFlags.js +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +50 -50
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +483 -471
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +9 -9
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +251 -251
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2123 -2155
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +2 -5
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +3 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +9 -6
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +18 -17
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +21 -21
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +56 -56
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +6 -6
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +6 -7
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +82 -25
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js +2 -2
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +6 -6
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +6 -7
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js +2 -2
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -3
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +134 -76
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +238 -106
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +1 -1
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +24 -24
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +181 -188
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js +6 -6
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +4 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +40 -48
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -16
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +256 -238
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +36 -11
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +6 -6
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +99 -104
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +11 -11
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +102 -107
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +10 -10
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +105 -106
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +4 -4
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +13 -6
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +3 -5
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +4 -4
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +54 -49
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +1 -3
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +5 -5
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +119 -125
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +9 -9
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +11 -11
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +219 -247
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +96 -102
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +6 -6
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js +7 -7
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +23 -7
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +6 -6
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.d.ts +2 -2
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js +97 -101
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +1 -1
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
- package/dist/utils/MoveOperationHelper.js +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js +2 -4
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.d.ts.map +1 -1
- package/dist/utils/RevisionWalker.js +4 -12
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.d.ts.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +23 -12
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +40 -40
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.js +1 -1
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +10 -2
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +21 -23
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +3 -3
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.d.ts +1 -1
- package/dist/utils/textDiff.js +8 -8
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +24 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.d.ts.map +1 -1
- package/dist/utils/xmlSanitization.js +3 -3
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +5 -5
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +7 -9
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js +3 -3
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +98 -100
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +61 -66
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +1 -3
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +28 -36
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/types.js +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/helper-methods.test.ts +512 -512
- package/src/constants/legacyCompatFlags.ts +138 -138
- package/src/constants/limits.ts +50 -50
- package/src/core/Document.ts +985 -1145
- package/src/core/DocumentContent.ts +461 -467
- package/src/core/DocumentGenerator.ts +1133 -1104
- package/src/core/DocumentIdManager.ts +158 -158
- package/src/core/DocumentParser.ts +2347 -2716
- package/src/core/DocumentValidator.ts +363 -372
- package/src/core/Relationship.ts +367 -367
- package/src/core/RelationshipManager.ts +429 -428
- package/src/elements/AlternateContent.ts +42 -42
- package/src/elements/Bookmark.ts +212 -210
- package/src/elements/BookmarkManager.ts +247 -250
- package/src/elements/Comment.ts +356 -359
- package/src/elements/CommentManager.ts +499 -502
- package/src/elements/CommonTypes.ts +524 -549
- package/src/elements/CustomXml.ts +36 -36
- package/src/elements/Endnote.ts +221 -217
- package/src/elements/EndnoteManager.ts +246 -249
- package/src/elements/Field.ts +1292 -1233
- package/src/elements/FieldHelpers.ts +329 -333
- package/src/elements/FontManager.ts +336 -339
- package/src/elements/Footer.ts +269 -269
- package/src/elements/Footnote.ts +221 -217
- package/src/elements/FootnoteManager.ts +246 -249
- package/src/elements/Header.ts +269 -269
- package/src/elements/HeaderFooterManager.ts +219 -219
- package/src/elements/Hyperlink.ts +1288 -1193
- package/src/elements/Image.ts +1982 -1756
- package/src/elements/ImageManager.ts +437 -432
- package/src/elements/ImageRun.ts +59 -59
- package/src/elements/MathElement.ts +65 -65
- package/src/elements/Paragraph.ts +4347 -4287
- package/src/elements/PreservedElement.ts +53 -53
- package/src/elements/PropertyChangeTypes.ts +458 -442
- package/src/elements/RangeMarker.ts +382 -400
- package/src/elements/Revision.ts +1198 -1217
- package/src/elements/RevisionContent.ts +73 -73
- package/src/elements/RevisionManager.ts +1070 -1070
- package/src/elements/Run.ts +3103 -3073
- package/src/elements/Section.ts +1521 -1421
- package/src/elements/Shape.ts +884 -873
- package/src/elements/StructuredDocumentTag.ts +1176 -1207
- package/src/elements/Table.ts +2468 -2524
- package/src/elements/TableCell.ts +1617 -1621
- package/src/elements/TableGridChange.ts +149 -151
- package/src/elements/TableOfContents.ts +701 -691
- package/src/elements/TableOfContentsElement.ts +89 -89
- package/src/elements/TableRow.ts +960 -929
- package/src/elements/TextBox.ts +766 -768
- package/src/formatting/AbstractNumbering.ts +580 -579
- package/src/formatting/NumberingInstance.ts +295 -299
- package/src/formatting/NumberingLevel.ts +981 -1040
- package/src/formatting/NumberingManager.ts +833 -827
- package/src/formatting/Style.ts +1785 -1879
- package/src/formatting/StylesManager.ts +1090 -1130
- package/src/helpers/CleanupHelper.ts +524 -524
- package/src/images/ImageOptimizer.ts +274 -274
- package/src/index.ts +559 -554
- package/src/managers/DrawingManager.ts +319 -319
- package/src/tracking/DocumentTrackingContext.ts +687 -674
- package/src/tracking/TrackingContext.ts +175 -173
- package/src/types/compatibility-types.ts +49 -49
- package/src/types/formatting.ts +210 -210
- package/src/types/list-types.ts +14 -14
- package/src/types/settings-types.ts +59 -59
- package/src/types/styleConfig.ts +189 -189
- package/src/utils/ChangelogGenerator.ts +1583 -1581
- package/src/utils/CompatibilityUpgrader.ts +235 -237
- package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
- package/src/utils/MoveOperationHelper.ts +233 -238
- package/src/utils/RevisionAwareProcessor.ts +518 -526
- package/src/utils/RevisionWalker.ts +427 -457
- package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
- package/src/utils/ShadingResolver.ts +105 -107
- package/src/utils/acceptRevisions.ts +723 -714
- package/src/utils/cnfStyleDecoder.ts +212 -217
- package/src/utils/corruptionDetection.ts +346 -345
- package/src/utils/dateFormatting.ts +20 -20
- package/src/utils/deepClone.ts +77 -78
- package/src/utils/diagnostics.ts +125 -129
- package/src/utils/errorHandling.ts +80 -80
- package/src/utils/formatting.ts +220 -213
- package/src/utils/list-detection.ts +32 -42
- package/src/utils/logger.ts +412 -404
- package/src/utils/parsingHelpers.ts +190 -190
- package/src/utils/stripTrackedChanges.ts +356 -353
- package/src/utils/textDiff.ts +100 -100
- package/src/utils/units.ts +421 -421
- package/src/utils/validation.ts +553 -542
- package/src/utils/xmlSanitization.ts +179 -182
- package/src/validation/RevisionAutoFixer.ts +541 -542
- package/src/validation/RevisionValidator.ts +470 -460
- package/src/validation/ValidationRules.ts +338 -338
- package/src/validation/index.ts +30 -30
- package/src/xml/XMLBuilder.ts +857 -871
- package/src/xml/XMLParser.ts +877 -919
- package/src/zip/ZipHandler.ts +629 -637
- package/src/zip/ZipReader.ts +295 -299
- package/src/zip/ZipWriter.ts +374 -390
- package/src/zip/types.ts +116 -116
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../../src/elements/CommonTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * CommonTypes - Consolidated type definitions for docxmlater elements\r\n *\r\n * This file consolidates duplicate type definitions that were scattered across multiple\r\n * element files (Paragraph.ts, Run.ts, Table.ts, TableCell.ts, TableRow.ts, Image.ts, Section.ts).\r\n *\r\n * Benefits:\r\n * - Single source of truth for shared types\r\n * - Consistent type definitions across all elements\r\n * - Easier maintenance and updates\r\n * - Better type safety when passing values between elements\r\n *\r\n * @module CommonTypes\r\n */\r\n\r\n// ============================================================================\r\n// SHADING PATTERNS\r\n// ============================================================================\r\n\r\n/**\r\n * Shading pattern types per ECMA-376 Part 1 Section 17.18.78 (ST_Shd)\r\n *\r\n * Consolidated from: Paragraph.ts, Run.ts, TableRow.ts, TableCell.ts\r\n * This is the complete set of shading patterns supported by Word.\r\n */\r\nexport type ShadingPattern =\r\n // Solid patterns\r\n | \"clear\" // No pattern (transparent)\r\n | \"solid\" // Solid fill\r\n // Stripe patterns\r\n | \"horzStripe\" // Horizontal stripes\r\n | \"vertStripe\" // Vertical stripes\r\n | \"reverseDiagStripe\" // Reverse diagonal stripes (/)\r\n | \"diagStripe\" // Diagonal stripes (\\)\r\n // Cross patterns\r\n | \"horzCross\" // Horizontal cross-hatch\r\n | \"diagCross\" // Diagonal cross-hatch\r\n // Thin stripe patterns\r\n | \"thinHorzStripe\" // Thin horizontal stripes\r\n | \"thinVertStripe\" // Thin vertical stripes\r\n | \"thinReverseDiagStripe\" // Thin reverse diagonal stripes\r\n | \"thinDiagStripe\" // Thin diagonal stripes\r\n // Thin cross patterns\r\n | \"thinHorzCross\" // Thin horizontal cross-hatch\r\n | \"thinDiagCross\" // Thin diagonal cross-hatch\r\n // Percentage fill patterns (5% increments with some extras)\r\n | \"pct5\"\r\n | \"pct10\"\r\n | \"pct12\"\r\n | \"pct15\"\r\n | \"pct20\"\r\n | \"pct25\"\r\n | \"pct30\"\r\n | \"pct35\"\r\n | \"pct37\"\r\n | \"pct40\"\r\n | \"pct45\"\r\n | \"pct50\"\r\n | \"pct55\"\r\n | \"pct60\"\r\n | \"pct62\"\r\n | \"pct65\"\r\n | \"pct70\"\r\n | \"pct75\"\r\n | \"pct80\"\r\n | \"pct85\"\r\n | \"pct87\"\r\n | \"pct90\"\r\n | \"pct95\"\r\n | \"nil\"; // Explicitly clear inherited shading (ECMA-376 §17.18.78)\r\n\r\n/**\r\n * Basic shading patterns (without percentage fills)\r\n * Use this for contexts where percentage patterns are not needed\r\n */\r\nexport type BasicShadingPattern =\r\n | \"clear\"\r\n | \"solid\"\r\n | \"horzStripe\"\r\n | \"vertStripe\"\r\n | \"reverseDiagStripe\"\r\n | \"diagStripe\"\r\n | \"horzCross\"\r\n | \"diagCross\"\r\n | \"thinHorzStripe\"\r\n | \"thinVertStripe\"\r\n | \"thinReverseDiagStripe\"\r\n | \"thinDiagStripe\"\r\n | \"thinHorzCross\"\r\n | \"thinDiagCross\";\r\n\r\n// ============================================================================\r\n// BORDER STYLES\r\n// ============================================================================\r\n\r\n/**\r\n * Basic border styles per ECMA-376 Part 1 Section 17.18.2 (ST_Border)\r\n *\r\n * Consolidated from: Paragraph.ts, TableCell.ts, Table.ts\r\n * This covers the most commonly used border styles.\r\n */\r\nexport type BorderStyle =\r\n | \"none\" // No border\r\n | \"single\" // Single line\r\n | \"double\" // Double line\r\n | \"dashed\" // Dashed line\r\n | \"dotted\" // Dotted line\r\n | \"thick\"; // Thick single line\r\n\r\n/**\r\n * Extended border styles including decorative effects\r\n *\r\n * Consolidated from: Run.ts (TextBorderStyle)\r\n * Includes 3D effects and other decorative styles.\r\n */\r\nexport type ExtendedBorderStyle =\r\n | BorderStyle\r\n | \"wave\" // Wavy line\r\n | \"dashDotStroked\" // Dash-dot stroked\r\n | \"threeDEmboss\" // 3D embossed effect\r\n | \"threeDEngrave\"; // 3D engraved effect\r\n\r\n/**\r\n * Full border style set per ECMA-376\r\n * Includes all possible border values from the spec.\r\n */\r\nexport type FullBorderStyle =\r\n | ExtendedBorderStyle\r\n | \"dotDash\" // Dot-dash pattern\r\n | \"dotDotDash\" // Dot-dot-dash pattern\r\n | \"triple\" // Triple line\r\n | \"thinThickSmallGap\"\r\n | \"thickThinSmallGap\"\r\n | \"thinThickThinSmallGap\"\r\n | \"thinThickMediumGap\"\r\n | \"thickThinMediumGap\"\r\n | \"thinThickThinMediumGap\"\r\n | \"thinThickLargeGap\"\r\n | \"thickThinLargeGap\"\r\n | \"thinThickThinLargeGap\"\r\n | \"dashSmallGap\"\r\n | \"dashDotStroked\"\r\n | \"outset\"\r\n | \"inset\";\r\n\r\n/**\r\n * Generic border definition interface\r\n *\r\n * Consolidated from: Paragraph.ts (BorderDefinition), Run.ts (TextBorder),\r\n * TableCell.ts (CellBorder), Table.ts (TableBorder)\r\n */\r\nexport interface BorderDefinition {\r\n /** Border style */\r\n style?: BorderStyle | ExtendedBorderStyle;\r\n /** Border width in eighths of a point (1-96) */\r\n size?: number;\r\n /** Border color in hex format (without #) */\r\n color?: string;\r\n /** Space between border and content in points (0-31) */\r\n space?: number;\r\n}\r\n\r\n/**\r\n * Four-sided border definitions\r\n */\r\nexport interface FourSidedBorders {\r\n top?: BorderDefinition;\r\n bottom?: BorderDefinition;\r\n left?: BorderDefinition;\r\n right?: BorderDefinition;\r\n}\r\n\r\n/**\r\n * Table border definitions (includes inside borders)\r\n */\r\nexport interface TableBorderDefinitions extends FourSidedBorders {\r\n /** Inside horizontal borders (between rows) */\r\n insideH?: BorderDefinition;\r\n /** Inside vertical borders (between columns) */\r\n insideV?: BorderDefinition;\r\n}\r\n\r\n// ============================================================================\r\n// ALIGNMENT TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Horizontal alignment for general use\r\n *\r\n * Consolidated from: Image.ts, Table.ts (TableHorizontalAlignment)\r\n */\r\nexport type HorizontalAlignment =\r\n | \"left\"\r\n | \"center\"\r\n | \"right\"\r\n | \"inside\" // Toward binding edge\r\n | \"outside\"; // Away from binding edge\r\n\r\n/**\r\n * Vertical alignment for general use\r\n *\r\n * Consolidated from: Image.ts, Table.ts (TableVerticalAlignment)\r\n */\r\nexport type VerticalAlignment =\r\n | \"top\"\r\n | \"center\"\r\n | \"bottom\"\r\n | \"inside\" // Toward top of page in header\r\n | \"outside\"; // Toward bottom of page in footer\r\n\r\n/**\r\n * Vertical alignment for page content (Section-level)\r\n *\r\n * From: Section.ts - includes 'both' for justified vertical alignment\r\n */\r\nexport type PageVerticalAlignment = \"top\" | \"center\" | \"bottom\" | \"both\";\r\n\r\n/**\r\n * Vertical alignment for table cells\r\n *\r\n * From: TableCell.ts (CellVerticalAlignment)\r\n */\r\nexport type CellVerticalAlignment = \"top\" | \"center\" | \"bottom\";\r\n\r\n/**\r\n * Paragraph text alignment\r\n *\r\n * From: Paragraph.ts (ParagraphAlignment)\r\n * Note: 'both' is an alias for 'justify' in some contexts\r\n */\r\nexport type ParagraphAlignment =\r\n | \"left\"\r\n | \"center\"\r\n | \"right\"\r\n | \"justify\"\r\n | \"both\";\r\n\r\n/**\r\n * Table alignment (horizontal positioning)\r\n *\r\n * From: Table.ts (TableAlignment)\r\n */\r\nexport type TableAlignment = \"left\" | \"center\" | \"right\";\r\n\r\n/**\r\n * Row justification/alignment options\r\n *\r\n * From: TableRow.ts (RowJustification)\r\n */\r\nexport type RowJustification = \"left\" | \"center\" | \"right\" | \"start\" | \"end\";\r\n\r\n/**\r\n * Text vertical alignment within line/cell\r\n *\r\n * From: Paragraph.ts (TextAlignment)\r\n */\r\nexport type TextVerticalAlignment =\r\n | \"top\"\r\n | \"center\"\r\n | \"baseline\"\r\n | \"bottom\"\r\n | \"auto\";\r\n\r\n/**\r\n * Tab stop alignment types\r\n *\r\n * From: Paragraph.ts (TabAlignment)\r\n */\r\nexport type TabAlignment =\r\n | \"clear\" // Remove tab stop\r\n | \"left\" // Left-aligned\r\n | \"center\" // Center-aligned\r\n | \"right\" // Right-aligned\r\n | \"decimal\" // Decimal-aligned (for numbers)\r\n | \"bar\" // Bar tab (vertical line)\r\n | \"num\"; // List number alignment\r\n\r\n// ============================================================================\r\n// POSITIONING & ANCHORING\r\n// ============================================================================\r\n\r\n/**\r\n * Position anchor type (what to position relative to)\r\n *\r\n * From: Image.ts (PositionAnchor)\r\n */\r\nexport type PositionAnchor =\r\n | \"page\"\r\n | \"margin\"\r\n | \"column\"\r\n | \"character\"\r\n | \"paragraph\";\r\n\r\n/**\r\n * Horizontal anchor for floating elements\r\n *\r\n * From: Table.ts (TableHorizontalAnchor), Paragraph.ts (FrameProperties.hAnchor)\r\n */\r\nexport type HorizontalAnchor = \"text\" | \"margin\" | \"page\";\r\n\r\n/**\r\n * Vertical anchor for floating elements\r\n *\r\n * From: Table.ts (TableVerticalAnchor), Paragraph.ts (FrameProperties.vAnchor)\r\n */\r\nexport type VerticalAnchor = \"text\" | \"margin\" | \"page\";\r\n\r\n// ============================================================================\r\n// TEXT DIRECTION\r\n// ============================================================================\r\n\r\n/**\r\n * Text direction for paragraphs and cells\r\n *\r\n * Consolidated from: Paragraph.ts, Section.ts\r\n * Per ECMA-376 Part 1 Section 17.18.93 (ST_TextDirection)\r\n */\r\nexport type TextDirection =\r\n | \"lrTb\" // Left-to-right, top-to-bottom (Western default)\r\n | \"tbRl\" // Top-to-bottom, right-to-left (East Asian vertical)\r\n | \"btLr\" // Bottom-to-top, left-to-right\r\n | \"lrTbV\" // Left-to-right, top-to-bottom (vertical variant)\r\n | \"tbRlV\" // Top-to-bottom, right-to-left (vertical variant)\r\n | \"tbLrV\"; // Top-to-bottom, left-to-right (vertical variant)\r\n\r\n/**\r\n * Simplified text direction for sections\r\n *\r\n * From: Section.ts\r\n */\r\nexport type SectionTextDirection = \"ltr\" | \"rtl\" | \"tbRl\" | \"btLr\";\r\n\r\n// ============================================================================\r\n// WIDTH TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Width type specification per ECMA-376\r\n *\r\n * Consolidated from: Table.ts, TableCell.ts\r\n */\r\nexport type WidthType =\r\n | \"auto\" // Automatically determined\r\n | \"dxa\" // Twips (twentieths of a point)\r\n | \"pct\"; // Percentage (in fiftieths of a percent)\r\n\r\n// ============================================================================\r\n// SHADING CONFIGURATION\r\n// ============================================================================\r\n\r\n/**\r\n * Generic shading configuration\r\n *\r\n * Consolidated from: Run.ts (CharacterShading), TableRow.ts (Shading), TableCell.ts (CellShading)\r\n */\r\nexport interface ShadingConfig {\r\n /** Background fill color in hex format (without #), or \"auto\" to inherit from style/parent */\r\n fill?: string;\r\n /** Foreground/pattern color in hex format (without #), or \"auto\" to inherit from style/parent */\r\n color?: string;\r\n /** Shading pattern type (maps to w:val in XML) */\r\n pattern?: ShadingPattern;\r\n /** Theme fill color reference (e.g., \"accent1\") */\r\n themeFill?: string;\r\n /** Theme foreground color reference */\r\n themeColor?: string;\r\n /** Tint on theme fill (hex 00-FF) */\r\n themeFillTint?: string;\r\n /** Shade on theme fill (hex 00-FF) */\r\n themeFillShade?: string;\r\n /** Tint on theme color (hex 00-FF) */\r\n themeTint?: string;\r\n /** Shade on theme color (hex 00-FF) */\r\n themeShade?: string;\r\n}\r\n\r\n// ============================================================================\r\n// TAB STOPS\r\n// ============================================================================\r\n\r\n/**\r\n * Tab stop leader types\r\n *\r\n * From: Paragraph.ts (TabLeader)\r\n */\r\nexport type TabLeader =\r\n | \"none\" // No leader\r\n | \"dot\" // Dots ......\r\n | \"hyphen\" // Hyphens ------\r\n | \"underscore\" // Underscores ______\r\n | \"heavy\" // Heavy line\r\n | \"middleDot\"; // Middle dots\r\n\r\n/**\r\n * Tab stop definition\r\n *\r\n * From: Paragraph.ts (TabStop)\r\n */\r\nexport interface TabStop {\r\n /** Position in twips from left margin */\r\n position: number;\r\n /** Alignment type */\r\n alignment?: TabAlignment;\r\n /** Leader character type */\r\n leader?: TabLeader;\r\n}\r\n\r\n// ============================================================================\r\n// TYPE GUARDS\r\n// ============================================================================\r\n\r\n/**\r\n * Check if a value is a valid ShadingPattern\r\n */\r\nexport function isShadingPattern(value: string): value is ShadingPattern {\r\n const patterns = [\r\n \"clear\",\r\n \"solid\",\r\n \"horzStripe\",\r\n \"vertStripe\",\r\n \"reverseDiagStripe\",\r\n \"diagStripe\",\r\n \"horzCross\",\r\n \"diagCross\",\r\n \"thinHorzStripe\",\r\n \"thinVertStripe\",\r\n \"thinReverseDiagStripe\",\r\n \"thinDiagStripe\",\r\n \"thinHorzCross\",\r\n \"thinDiagCross\",\r\n \"pct5\",\r\n \"pct10\",\r\n \"pct12\",\r\n \"pct15\",\r\n \"pct20\",\r\n \"pct25\",\r\n \"pct30\",\r\n \"pct35\",\r\n \"pct37\",\r\n \"pct40\",\r\n \"pct45\",\r\n \"pct50\",\r\n \"pct55\",\r\n \"pct60\",\r\n \"pct62\",\r\n \"pct65\",\r\n \"pct70\",\r\n \"pct75\",\r\n \"pct80\",\r\n \"pct85\",\r\n \"pct87\",\r\n \"pct90\",\r\n \"pct95\",\r\n \"nil\",\r\n ];\r\n return patterns.includes(value);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid BorderStyle\r\n */\r\nexport function isBorderStyle(value: string): value is BorderStyle {\r\n return [\"none\", \"single\", \"double\", \"dashed\", \"dotted\", \"thick\"].includes(\r\n value\r\n );\r\n}\r\n\r\n/**\r\n * Check if a value is a valid HorizontalAlignment\r\n */\r\nexport function isHorizontalAlignment(\r\n value: string\r\n): value is HorizontalAlignment {\r\n return [\"left\", \"center\", \"right\", \"inside\", \"outside\"].includes(value);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid VerticalAlignment\r\n */\r\nexport function isVerticalAlignment(value: string): value is VerticalAlignment {\r\n return [\"top\", \"center\", \"bottom\", \"inside\", \"outside\"].includes(value);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid ParagraphAlignment\r\n */\r\nexport function isParagraphAlignment(\r\n value: string\r\n): value is ParagraphAlignment {\r\n return [\"left\", \"center\", \"right\", \"justify\", \"both\"].includes(value);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid WidthType\r\n */\r\nexport function isWidthType(value: string): value is WidthType {\r\n return [\"auto\", \"dxa\", \"pct\"].includes(value);\r\n}\r\n\r\n// ============================================================================\r\n// CONSTANTS\r\n// ============================================================================\r\n\r\n/**\r\n * Default border definition\r\n */\r\nexport const DEFAULT_BORDER: BorderDefinition = {\r\n style: \"single\",\r\n size: 4, // 0.5pt (4 eighths)\r\n color: \"000000\",\r\n space: 0,\r\n};\r\n\r\n/**\r\n * No border definition\r\n */\r\nexport const NO_BORDER: BorderDefinition = {\r\n style: \"none\",\r\n size: 0,\r\n color: \"auto\",\r\n space: 0,\r\n};\r\n\r\n// ============================================================================\r\n// SHADING UTILITIES\r\n// ============================================================================\r\n\r\n/**\r\n * Builds XML attributes for a w:shd element from a ShadingConfig.\r\n * Shared across all element types for consistent shading generation.\r\n */\r\nexport function buildShadingAttributes(\r\n shading: ShadingConfig\r\n): Record<string, string> {\r\n const attrs: Record<string, string> = {};\r\n // w:val is REQUIRED per ECMA-376 — default to \"clear\" if no pattern specified\r\n attrs[\"w:val\"] = shading.pattern || \"clear\";\r\n if (shading.fill) attrs[\"w:fill\"] = shading.fill;\r\n if (shading.color) attrs[\"w:color\"] = shading.color;\r\n if (shading.themeFill) attrs[\"w:themeFill\"] = shading.themeFill;\r\n if (shading.themeColor) attrs[\"w:themeColor\"] = shading.themeColor;\r\n if (shading.themeFillTint)\r\n attrs[\"w:themeFillTint\"] = shading.themeFillTint;\r\n if (shading.themeFillShade)\r\n attrs[\"w:themeFillShade\"] = shading.themeFillShade;\r\n if (shading.themeTint) attrs[\"w:themeTint\"] = shading.themeTint;\r\n if (shading.themeShade) attrs[\"w:themeShade\"] = shading.themeShade;\r\n return attrs;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"CommonTypes.js","sourceRoot":"","sources":["../../src/elements/CommonTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * CommonTypes - Consolidated type definitions for docxmlater elements\n *\n * This file consolidates duplicate type definitions that were scattered across multiple\n * element files (Paragraph.ts, Run.ts, Table.ts, TableCell.ts, TableRow.ts, Image.ts, Section.ts).\n *\n * Benefits:\n * - Single source of truth for shared types\n * - Consistent type definitions across all elements\n * - Easier maintenance and updates\n * - Better type safety when passing values between elements\n *\n * @module CommonTypes\n */\n\n// ============================================================================\n// SHADING PATTERNS\n// ============================================================================\n\n/**\n * Shading pattern types per ECMA-376 Part 1 Section 17.18.78 (ST_Shd)\n *\n * Consolidated from: Paragraph.ts, Run.ts, TableRow.ts, TableCell.ts\n * This is the complete set of shading patterns supported by Word.\n */\nexport type ShadingPattern =\n // Solid patterns\n | 'clear' // No pattern (transparent)\n | 'solid' // Solid fill\n // Stripe patterns\n | 'horzStripe' // Horizontal stripes\n | 'vertStripe' // Vertical stripes\n | 'reverseDiagStripe' // Reverse diagonal stripes (/)\n | 'diagStripe' // Diagonal stripes (\\)\n // Cross patterns\n | 'horzCross' // Horizontal cross-hatch\n | 'diagCross' // Diagonal cross-hatch\n // Thin stripe patterns\n | 'thinHorzStripe' // Thin horizontal stripes\n | 'thinVertStripe' // Thin vertical stripes\n | 'thinReverseDiagStripe' // Thin reverse diagonal stripes\n | 'thinDiagStripe' // Thin diagonal stripes\n // Thin cross patterns\n | 'thinHorzCross' // Thin horizontal cross-hatch\n | 'thinDiagCross' // Thin diagonal cross-hatch\n // Percentage fill patterns (5% increments with some extras)\n | 'pct5'\n | 'pct10'\n | 'pct12'\n | 'pct15'\n | 'pct20'\n | 'pct25'\n | 'pct30'\n | 'pct35'\n | 'pct37'\n | 'pct40'\n | 'pct45'\n | 'pct50'\n | 'pct55'\n | 'pct60'\n | 'pct62'\n | 'pct65'\n | 'pct70'\n | 'pct75'\n | 'pct80'\n | 'pct85'\n | 'pct87'\n | 'pct90'\n | 'pct95'\n | 'nil'; // Explicitly clear inherited shading (ECMA-376 §17.18.78)\n\n/**\n * Basic shading patterns (without percentage fills)\n * Use this for contexts where percentage patterns are not needed\n */\nexport type BasicShadingPattern =\n | 'clear'\n | 'solid'\n | 'horzStripe'\n | 'vertStripe'\n | 'reverseDiagStripe'\n | 'diagStripe'\n | 'horzCross'\n | 'diagCross'\n | 'thinHorzStripe'\n | 'thinVertStripe'\n | 'thinReverseDiagStripe'\n | 'thinDiagStripe'\n | 'thinHorzCross'\n | 'thinDiagCross';\n\n// ============================================================================\n// BORDER STYLES\n// ============================================================================\n\n/**\n * Basic border styles per ECMA-376 Part 1 Section 17.18.2 (ST_Border)\n *\n * Consolidated from: Paragraph.ts, TableCell.ts, Table.ts\n * This covers the most commonly used border styles.\n */\nexport type BorderStyle =\n | 'none' // No border\n | 'single' // Single line\n | 'double' // Double line\n | 'dashed' // Dashed line\n | 'dotted' // Dotted line\n | 'thick'; // Thick single line\n\n/**\n * Extended border styles including decorative effects\n *\n * Consolidated from: Run.ts (TextBorderStyle)\n * Includes 3D effects and other decorative styles.\n */\nexport type ExtendedBorderStyle =\n | BorderStyle\n | 'wave' // Wavy line\n | 'dashDotStroked' // Dash-dot stroked\n | 'threeDEmboss' // 3D embossed effect\n | 'threeDEngrave'; // 3D engraved effect\n\n/**\n * Full border style set per ECMA-376\n * Includes all possible border values from the spec.\n */\nexport type FullBorderStyle =\n | ExtendedBorderStyle\n | 'dotDash' // Dot-dash pattern\n | 'dotDotDash' // Dot-dot-dash pattern\n | 'triple' // Triple line\n | 'thinThickSmallGap'\n | 'thickThinSmallGap'\n | 'thinThickThinSmallGap'\n | 'thinThickMediumGap'\n | 'thickThinMediumGap'\n | 'thinThickThinMediumGap'\n | 'thinThickLargeGap'\n | 'thickThinLargeGap'\n | 'thinThickThinLargeGap'\n | 'dashSmallGap'\n | 'dashDotStroked'\n | 'outset'\n | 'inset';\n\n/**\n * Generic border definition interface\n *\n * Consolidated from: Paragraph.ts (BorderDefinition), Run.ts (TextBorder),\n * TableCell.ts (CellBorder), Table.ts (TableBorder)\n */\nexport interface BorderDefinition {\n /** Border style */\n style?: BorderStyle | ExtendedBorderStyle;\n /** Border width in eighths of a point (1-96) */\n size?: number;\n /** Border color in hex format (without #) */\n color?: string;\n /** Space between border and content in points (0-31) */\n space?: number;\n}\n\n/**\n * Four-sided border definitions\n */\nexport interface FourSidedBorders {\n top?: BorderDefinition;\n bottom?: BorderDefinition;\n left?: BorderDefinition;\n right?: BorderDefinition;\n}\n\n/**\n * Table border definitions (includes inside borders)\n */\nexport interface TableBorderDefinitions extends FourSidedBorders {\n /** Inside horizontal borders (between rows) */\n insideH?: BorderDefinition;\n /** Inside vertical borders (between columns) */\n insideV?: BorderDefinition;\n}\n\n// ============================================================================\n// ALIGNMENT TYPES\n// ============================================================================\n\n/**\n * Horizontal alignment for general use\n *\n * Consolidated from: Image.ts, Table.ts (TableHorizontalAlignment)\n */\nexport type HorizontalAlignment =\n | 'left'\n | 'center'\n | 'right'\n | 'inside' // Toward binding edge\n | 'outside'; // Away from binding edge\n\n/**\n * Vertical alignment for general use\n *\n * Consolidated from: Image.ts, Table.ts (TableVerticalAlignment)\n */\nexport type VerticalAlignment =\n | 'top'\n | 'center'\n | 'bottom'\n | 'inside' // Toward top of page in header\n | 'outside'; // Toward bottom of page in footer\n\n/**\n * Vertical alignment for page content (Section-level)\n *\n * From: Section.ts - includes 'both' for justified vertical alignment\n */\nexport type PageVerticalAlignment = 'top' | 'center' | 'bottom' | 'both';\n\n/**\n * Vertical alignment for table cells\n *\n * From: TableCell.ts (CellVerticalAlignment)\n */\nexport type CellVerticalAlignment = 'top' | 'center' | 'bottom';\n\n/**\n * Paragraph text alignment\n *\n * From: Paragraph.ts (ParagraphAlignment)\n * Note: 'both' is an alias for 'justify' in some contexts\n */\nexport type ParagraphAlignment = 'left' | 'center' | 'right' | 'justify' | 'both';\n\n/**\n * Table alignment (horizontal positioning)\n *\n * From: Table.ts (TableAlignment)\n */\nexport type TableAlignment = 'left' | 'center' | 'right';\n\n/**\n * Row justification/alignment options\n *\n * From: TableRow.ts (RowJustification)\n */\nexport type RowJustification = 'left' | 'center' | 'right' | 'start' | 'end';\n\n/**\n * Text vertical alignment within line/cell\n *\n * From: Paragraph.ts (TextAlignment)\n */\nexport type TextVerticalAlignment = 'top' | 'center' | 'baseline' | 'bottom' | 'auto';\n\n/**\n * Tab stop alignment types\n *\n * From: Paragraph.ts (TabAlignment)\n */\nexport type TabAlignment =\n | 'clear' // Remove tab stop\n | 'left' // Left-aligned\n | 'center' // Center-aligned\n | 'right' // Right-aligned\n | 'decimal' // Decimal-aligned (for numbers)\n | 'bar' // Bar tab (vertical line)\n | 'num'; // List number alignment\n\n// ============================================================================\n// POSITIONING & ANCHORING\n// ============================================================================\n\n/**\n * Position anchor type (what to position relative to)\n *\n * From: Image.ts (PositionAnchor)\n */\nexport type PositionAnchor = 'page' | 'margin' | 'column' | 'character' | 'paragraph';\n\n/**\n * Horizontal anchor for floating elements\n *\n * From: Table.ts (TableHorizontalAnchor), Paragraph.ts (FrameProperties.hAnchor)\n */\nexport type HorizontalAnchor = 'text' | 'margin' | 'page';\n\n/**\n * Vertical anchor for floating elements\n *\n * From: Table.ts (TableVerticalAnchor), Paragraph.ts (FrameProperties.vAnchor)\n */\nexport type VerticalAnchor = 'text' | 'margin' | 'page';\n\n// ============================================================================\n// TEXT DIRECTION\n// ============================================================================\n\n/**\n * Text direction for paragraphs and cells\n *\n * Consolidated from: Paragraph.ts, Section.ts\n * Per ECMA-376 Part 1 Section 17.18.93 (ST_TextDirection)\n */\nexport type TextDirection =\n | 'lrTb' // Left-to-right, top-to-bottom (Western default)\n | 'tbRl' // Top-to-bottom, right-to-left (East Asian vertical)\n | 'btLr' // Bottom-to-top, left-to-right\n | 'lrTbV' // Left-to-right, top-to-bottom (vertical variant)\n | 'tbRlV' // Top-to-bottom, right-to-left (vertical variant)\n | 'tbLrV'; // Top-to-bottom, left-to-right (vertical variant)\n\n/**\n * Simplified text direction for sections\n *\n * From: Section.ts\n */\nexport type SectionTextDirection = 'ltr' | 'rtl' | 'tbRl' | 'btLr';\n\n// ============================================================================\n// WIDTH TYPES\n// ============================================================================\n\n/**\n * Width type specification per ECMA-376\n *\n * Consolidated from: Table.ts, TableCell.ts\n */\nexport type WidthType =\n | 'auto' // Automatically determined\n | 'dxa' // Twips (twentieths of a point)\n | 'pct'; // Percentage (in fiftieths of a percent)\n\n// ============================================================================\n// SHADING CONFIGURATION\n// ============================================================================\n\n/**\n * Generic shading configuration\n *\n * Consolidated from: Run.ts (CharacterShading), TableRow.ts (Shading), TableCell.ts (CellShading)\n */\nexport interface ShadingConfig {\n /** Background fill color in hex format (without #), or \"auto\" to inherit from style/parent */\n fill?: string;\n /** Foreground/pattern color in hex format (without #), or \"auto\" to inherit from style/parent */\n color?: string;\n /** Shading pattern type (maps to w:val in XML) */\n pattern?: ShadingPattern;\n /** Theme fill color reference (e.g., \"accent1\") */\n themeFill?: string;\n /** Theme foreground color reference */\n themeColor?: string;\n /** Tint on theme fill (hex 00-FF) */\n themeFillTint?: string;\n /** Shade on theme fill (hex 00-FF) */\n themeFillShade?: string;\n /** Tint on theme color (hex 00-FF) */\n themeTint?: string;\n /** Shade on theme color (hex 00-FF) */\n themeShade?: string;\n}\n\n// ============================================================================\n// TAB STOPS\n// ============================================================================\n\n/**\n * Tab stop leader types\n *\n * From: Paragraph.ts (TabLeader)\n */\nexport type TabLeader =\n | 'none' // No leader\n | 'dot' // Dots ......\n | 'hyphen' // Hyphens ------\n | 'underscore' // Underscores ______\n | 'heavy' // Heavy line\n | 'middleDot'; // Middle dots\n\n/**\n * Tab stop definition\n *\n * From: Paragraph.ts (TabStop)\n */\nexport interface TabStop {\n /** Position in twips from left margin */\n position: number;\n /** Alignment type */\n alignment?: TabAlignment;\n /** Leader character type */\n leader?: TabLeader;\n}\n\n// ============================================================================\n// TYPE GUARDS\n// ============================================================================\n\n/**\n * Check if a value is a valid ShadingPattern\n */\nexport function isShadingPattern(value: string): value is ShadingPattern {\n const patterns = [\n 'clear',\n 'solid',\n 'horzStripe',\n 'vertStripe',\n 'reverseDiagStripe',\n 'diagStripe',\n 'horzCross',\n 'diagCross',\n 'thinHorzStripe',\n 'thinVertStripe',\n 'thinReverseDiagStripe',\n 'thinDiagStripe',\n 'thinHorzCross',\n 'thinDiagCross',\n 'pct5',\n 'pct10',\n 'pct12',\n 'pct15',\n 'pct20',\n 'pct25',\n 'pct30',\n 'pct35',\n 'pct37',\n 'pct40',\n 'pct45',\n 'pct50',\n 'pct55',\n 'pct60',\n 'pct62',\n 'pct65',\n 'pct70',\n 'pct75',\n 'pct80',\n 'pct85',\n 'pct87',\n 'pct90',\n 'pct95',\n 'nil',\n ];\n return patterns.includes(value);\n}\n\n/**\n * Check if a value is a valid BorderStyle\n */\nexport function isBorderStyle(value: string): value is BorderStyle {\n return ['none', 'single', 'double', 'dashed', 'dotted', 'thick'].includes(value);\n}\n\n/**\n * Check if a value is a valid HorizontalAlignment\n */\nexport function isHorizontalAlignment(value: string): value is HorizontalAlignment {\n return ['left', 'center', 'right', 'inside', 'outside'].includes(value);\n}\n\n/**\n * Check if a value is a valid VerticalAlignment\n */\nexport function isVerticalAlignment(value: string): value is VerticalAlignment {\n return ['top', 'center', 'bottom', 'inside', 'outside'].includes(value);\n}\n\n/**\n * Check if a value is a valid ParagraphAlignment\n */\nexport function isParagraphAlignment(value: string): value is ParagraphAlignment {\n return ['left', 'center', 'right', 'justify', 'both'].includes(value);\n}\n\n/**\n * Check if a value is a valid WidthType\n */\nexport function isWidthType(value: string): value is WidthType {\n return ['auto', 'dxa', 'pct'].includes(value);\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\n/**\n * Default border definition\n */\nexport const DEFAULT_BORDER: BorderDefinition = {\n style: 'single',\n size: 4, // 0.5pt (4 eighths)\n color: '000000',\n space: 0,\n};\n\n/**\n * No border definition\n */\nexport const NO_BORDER: BorderDefinition = {\n style: 'none',\n size: 0,\n color: 'auto',\n space: 0,\n};\n\n// ============================================================================\n// SHADING UTILITIES\n// ============================================================================\n\n/**\n * Builds XML attributes for a w:shd element from a ShadingConfig.\n * Shared across all element types for consistent shading generation.\n */\nexport function buildShadingAttributes(shading: ShadingConfig): Record<string, string> {\n const attrs: Record<string, string> = {};\n // w:val is REQUIRED per ECMA-376 — default to \"clear\" if no pattern specified\n attrs['w:val'] = shading.pattern || 'clear';\n if (shading.fill) attrs['w:fill'] = shading.fill;\n if (shading.color) attrs['w:color'] = shading.color;\n if (shading.themeFill) attrs['w:themeFill'] = shading.themeFill;\n if (shading.themeColor) attrs['w:themeColor'] = shading.themeColor;\n if (shading.themeFillTint) attrs['w:themeFillTint'] = shading.themeFillTint;\n if (shading.themeFillShade) attrs['w:themeFillShade'] = shading.themeFillShade;\n if (shading.themeTint) attrs['w:themeTint'] = shading.themeTint;\n if (shading.themeShade) attrs['w:themeShade'] = shading.themeShade;\n return attrs;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomXml.js","sourceRoot":"","sources":["../../src/elements/CustomXml.ts"],"names":[],"mappings":";;;AAcA,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":["/**\
|
|
1
|
+
{"version":3,"file":"CustomXml.js","sourceRoot":"","sources":["../../src/elements/CustomXml.ts"],"names":[],"mappings":";;;AAcA,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":["/**\n * CustomXml - Represents w:customXml block and inline elements\n *\n * Per ECMA-376 Part 1 §17.5.1.6, custom XML elements carry a URI and element\n * name, wrapping block-level or inline content.\n *\n * Stored as raw XML for round-trip fidelity.\n */\n\nimport { XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Block-level custom XML (w:customXml wrapping block content)\n */\nexport class CustomXmlBlock {\n private rawXml: string;\n\n constructor(rawXml: string) {\n this.rawXml = rawXml;\n }\n\n toXML(): XMLElement {\n return {\n name: '__rawXml',\n rawXml: this.rawXml,\n } as XMLElement;\n }\n\n getRawXml(): string {\n return this.rawXml;\n }\n\n getType(): string {\n return 'customXmlBlock';\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Endnote.d.ts","sourceRoot":"","sources":["../../src/elements/Endnote.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK3D,oBAAY,WAAW;IAErB,MAAM,WAAW;IAEjB,SAAS,cAAc;IAEvB,qBAAqB,0BAA0B;IAE/C,kBAAkB,uBAAuB;CAC1C;AAKD,MAAM,WAAW,iBAAiB;IAEhC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAmB;gBAMzB,UAAU,EAAE,iBAAiB;IASzC,KAAK,IAAI,MAAM;IAOf,OAAO,IAAI,WAAW;IAOtB,aAAa,IAAI,MAAM,GAAG,SAAS;IAQnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASjC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAUxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAYzC,aAAa,IAAI,SAAS,EAAE;IAO5B,OAAO,IAAI,MAAM;IAOjB,KAAK,IAAI,UAAU;
|
|
1
|
+
{"version":3,"file":"Endnote.d.ts","sourceRoot":"","sources":["../../src/elements/Endnote.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK3D,oBAAY,WAAW;IAErB,MAAM,WAAW;IAEjB,SAAS,cAAc;IAEvB,qBAAqB,0BAA0B;IAE/C,kBAAkB,uBAAuB;CAC1C;AAKD,MAAM,WAAW,iBAAiB;IAEhC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAmB;gBAMzB,UAAU,EAAE,iBAAiB;IASzC,KAAK,IAAI,MAAM;IAOf,OAAO,IAAI,WAAW;IAOtB,aAAa,IAAI,MAAM,GAAG,SAAS;IAQnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASjC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAUxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IAYzC,aAAa,IAAI,SAAS,EAAE;IAO5B,OAAO,IAAI,MAAM;IAOjB,KAAK,IAAI,UAAU;IA+CnB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAWlD,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB3C,MAAM,CAAC,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAavD,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,SAAiB,GAAG,OAAO;CAQ5E"}
|
package/dist/elements/Endnote.js
CHANGED
|
@@ -49,7 +49,7 @@ class Endnote {
|
|
|
49
49
|
return [...this.paragraphs];
|
|
50
50
|
}
|
|
51
51
|
getText() {
|
|
52
|
-
return this.paragraphs.map(p => p.getText()).join('\n');
|
|
52
|
+
return this.paragraphs.map((p) => p.getText()).join('\n');
|
|
53
53
|
}
|
|
54
54
|
toXML() {
|
|
55
55
|
const attrs = {
|
|
@@ -61,12 +61,12 @@ class Endnote {
|
|
|
61
61
|
const children = [];
|
|
62
62
|
if (this.type === EndnoteType.Separator) {
|
|
63
63
|
children.push(XMLBuilder_1.XMLBuilder.w('p', undefined, [
|
|
64
|
-
XMLBuilder_1.XMLBuilder.w('r', undefined, [XMLBuilder_1.XMLBuilder.wSelf('separator')])
|
|
64
|
+
XMLBuilder_1.XMLBuilder.w('r', undefined, [XMLBuilder_1.XMLBuilder.wSelf('separator')]),
|
|
65
65
|
]));
|
|
66
66
|
}
|
|
67
67
|
else if (this.type === EndnoteType.ContinuationSeparator) {
|
|
68
68
|
children.push(XMLBuilder_1.XMLBuilder.w('p', undefined, [
|
|
69
|
-
XMLBuilder_1.XMLBuilder.w('r', undefined, [XMLBuilder_1.XMLBuilder.wSelf('continuationSeparator')])
|
|
69
|
+
XMLBuilder_1.XMLBuilder.w('r', undefined, [XMLBuilder_1.XMLBuilder.wSelf('continuationSeparator')]),
|
|
70
70
|
]));
|
|
71
71
|
}
|
|
72
72
|
else {
|
|
@@ -87,7 +87,7 @@ class Endnote {
|
|
|
87
87
|
static createSeparator(id) {
|
|
88
88
|
const endnote = new Endnote({
|
|
89
89
|
id,
|
|
90
|
-
type: EndnoteType.Separator
|
|
90
|
+
type: EndnoteType.Separator,
|
|
91
91
|
});
|
|
92
92
|
endnote.createParagraph();
|
|
93
93
|
return endnote;
|
|
@@ -95,13 +95,13 @@ class Endnote {
|
|
|
95
95
|
static createContinuationSeparator(id) {
|
|
96
96
|
return new Endnote({
|
|
97
97
|
id,
|
|
98
|
-
type: EndnoteType.ContinuationSeparator
|
|
98
|
+
type: EndnoteType.ContinuationSeparator,
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
static createContinuationNotice(id, text = 'Continued...') {
|
|
102
102
|
const endnote = new Endnote({
|
|
103
103
|
id,
|
|
104
|
-
type: EndnoteType.ContinuationNotice
|
|
104
|
+
type: EndnoteType.ContinuationNotice,
|
|
105
105
|
});
|
|
106
106
|
endnote.createParagraph(text);
|
|
107
107
|
return endnote;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Endnote.js","sourceRoot":"","sources":["../../src/elements/Endnote.ts"],"names":[],"mappings":";;;AAOA,2CAAwC;AACxC,kDAA2D;AAK3D,IAAY,WASX;AATD,WAAY,WAAW;IAErB,gCAAiB,CAAA;IAEjB,sCAAuB,CAAA;IAEvB,8DAA+C,CAAA;IAE/C,wDAAyC,CAAA;AAC3C,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB;AAiBD,MAAa,OAAO;IACV,EAAE,CAAS;IACX,IAAI,CAAc;IAClB,UAAU,CAAU;IACpB,UAAU,GAAgB,EAAE,CAAC;IAMrC,YAAY,UAA6B;QACvC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAKD,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAKD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAMD,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY,CAAC,SAAoB;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,eAAe,CAAC,IAAa;QAC3B,MAAM,IAAI,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Endnote.js","sourceRoot":"","sources":["../../src/elements/Endnote.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Endnote - Represents an endnote in a Word document\n *\n * Endnotes appear at the end of the document or section and are referenced\n * within the document text via endnote references.\n */\n\nimport { Paragraph } from './Paragraph';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Endnote type\n */\nexport enum EndnoteType {\n /** Normal endnote */\n Normal = 'normal',\n /** Separator between document text and endnotes */\n Separator = 'separator',\n /** Continuation separator for endnotes that continue to next page */\n ContinuationSeparator = 'continuationSeparator',\n /** Continuation notice at bottom of page when endnotes continue */\n ContinuationNotice = 'continuationNotice',\n}\n\n/**\n * Endnote properties\n */\nexport interface EndnoteProperties {\n /** Endnote ID (required, must be unique) */\n id: number;\n /** Type of endnote */\n type?: EndnoteType;\n /** Custom mark/symbol (optional, otherwise uses numbering) */\n customMark?: string;\n}\n\n/**\n * Represents an endnote in a document\n */\nexport class Endnote {\n private id: number;\n private type: EndnoteType;\n private customMark?: string;\n private paragraphs: Paragraph[] = [];\n\n /**\n * Creates a new endnote\n * @param properties Endnote properties\n */\n constructor(properties: EndnoteProperties) {\n this.id = properties.id;\n this.type = properties.type || EndnoteType.Normal;\n this.customMark = properties.customMark;\n }\n\n /**\n * Gets the endnote ID\n */\n getId(): number {\n return this.id;\n }\n\n /**\n * Gets the endnote type\n */\n getType(): EndnoteType {\n return this.type;\n }\n\n /**\n * Gets the custom mark\n */\n getCustomMark(): string | undefined {\n return this.customMark;\n }\n\n /**\n * Sets the custom mark\n * @param mark Custom mark/symbol\n */\n setCustomMark(mark: string): this {\n this.customMark = mark;\n return this;\n }\n\n /**\n * Adds a paragraph to the endnote\n * @param paragraph Paragraph to add\n */\n addParagraph(paragraph: Paragraph): this {\n this.paragraphs.push(paragraph);\n return this;\n }\n\n /**\n * Creates and adds a new paragraph\n * @param text Optional text content\n * @returns The created paragraph\n */\n createParagraph(text?: string): Paragraph {\n const para = new Paragraph();\n if (text) {\n para.addText(text);\n }\n this.paragraphs.push(para);\n return para;\n }\n\n /**\n * Gets all paragraphs in the endnote\n */\n getParagraphs(): Paragraph[] {\n return [...this.paragraphs];\n }\n\n /**\n * Gets the text content of the endnote\n */\n getText(): string {\n return this.paragraphs.map((p) => p.getText()).join('\\n');\n }\n\n /**\n * Generates the XML for this endnote\n */\n toXML(): XMLElement {\n const attrs: Record<string, any> = {\n 'w:id': this.id.toString(),\n };\n\n if (this.type !== EndnoteType.Normal) {\n attrs['w:type'] = this.type;\n }\n\n const children: XMLElement[] = [];\n\n // Separator types require specific child elements per ECMA-376\n if (this.type === EndnoteType.Separator) {\n // <w:p><w:r><w:separator/></w:r></w:p>\n children.push(\n XMLBuilder.w('p', undefined, [\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('separator')]),\n ])\n );\n } else if (this.type === EndnoteType.ContinuationSeparator) {\n // <w:p><w:r><w:continuationSeparator/></w:r></w:p>\n children.push(\n XMLBuilder.w('p', undefined, [\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('continuationSeparator')]),\n ])\n );\n } else {\n // Add paragraphs\n for (const para of this.paragraphs) {\n children.push(para.toXML());\n }\n\n // If no paragraphs, add an empty one (required)\n if (children.length === 0) {\n children.push(XMLBuilder.w('p'));\n }\n }\n\n return XMLBuilder.w('endnote', attrs, children);\n }\n\n /**\n * Creates an endnote from text\n * @param id Endnote ID\n * @param text Text content\n * @returns New endnote instance\n */\n static fromText(id: number, text: string): Endnote {\n const endnote = new Endnote({ id });\n endnote.createParagraph(text);\n return endnote;\n }\n\n /**\n * Creates a separator endnote\n * @param id Endnote ID\n * @returns New separator endnote\n */\n static createSeparator(id: number): Endnote {\n const endnote = new Endnote({\n id,\n type: EndnoteType.Separator,\n });\n // Separator typically has a horizontal line\n endnote.createParagraph();\n // Add separator formatting if needed\n return endnote;\n }\n\n /**\n * Creates a continuation separator endnote\n * @param id Endnote ID\n * @returns New continuation separator endnote\n */\n static createContinuationSeparator(id: number): Endnote {\n return new Endnote({\n id,\n type: EndnoteType.ContinuationSeparator,\n });\n }\n\n /**\n * Creates a continuation notice endnote\n * @param id Endnote ID\n * @param text Notice text (e.g., \"Continued on next page...\")\n * @returns New continuation notice endnote\n */\n static createContinuationNotice(id: number, text = 'Continued...'): Endnote {\n const endnote = new Endnote({\n id,\n type: EndnoteType.ContinuationNotice,\n });\n endnote.createParagraph(text);\n return endnote;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EndnoteManager.d.ts","sourceRoot":"","sources":["../../src/elements/EndnoteManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAe,MAAM,WAAW,CAAC;AAOjD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAAK;IAMnB,OAAO;IASP,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"EndnoteManager.d.ts","sourceRoot":"","sources":["../../src/elements/EndnoteManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAe,MAAM,WAAW,CAAC;AAOjD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAAK;IAMnB,OAAO;IASP,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,gBAAgB;IAYxB,MAAM,CAAC,MAAM,IAAI,cAAc;IAS/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAuBnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAWpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAQ3C,cAAc,IAAI,OAAO,EAAE;IAS3B,yBAAyB,IAAI,OAAO,EAAE;IAQtC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS/B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAWlC,SAAS,IAAI,MAAM;IAOnB,QAAQ,IAAI,MAAM;IAOlB,OAAO,IAAI,OAAO;IAQlB,KAAK,IAAI,IAAI;IAqBb,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAUD,mBAAmB,IAAI,MAAM;IAwB7B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAkBtC"}
|
|
@@ -18,9 +18,9 @@ class EndnoteManager {
|
|
|
18
18
|
}
|
|
19
19
|
isSpecialEndnote(endnote) {
|
|
20
20
|
const type = endnote.getType();
|
|
21
|
-
return type === Endnote_1.EndnoteType.Separator ||
|
|
21
|
+
return (type === Endnote_1.EndnoteType.Separator ||
|
|
22
22
|
type === Endnote_1.EndnoteType.ContinuationSeparator ||
|
|
23
|
-
type === Endnote_1.EndnoteType.ContinuationNotice;
|
|
23
|
+
type === Endnote_1.EndnoteType.ContinuationNotice);
|
|
24
24
|
}
|
|
25
25
|
static create() {
|
|
26
26
|
return new EndnoteManager();
|
|
@@ -46,12 +46,11 @@ class EndnoteManager {
|
|
|
46
46
|
}
|
|
47
47
|
getAllEndnotes() {
|
|
48
48
|
return Array.from(this.endnotes.values())
|
|
49
|
-
.filter(e => !this.isSpecialEndnote(e))
|
|
49
|
+
.filter((e) => !this.isSpecialEndnote(e))
|
|
50
50
|
.sort((a, b) => a.getId() - b.getId());
|
|
51
51
|
}
|
|
52
52
|
getAllEndnotesWithSpecial() {
|
|
53
|
-
return Array.from(this.endnotes.values())
|
|
54
|
-
.sort((a, b) => a.getId() - b.getId());
|
|
53
|
+
return Array.from(this.endnotes.values()).sort((a, b) => a.getId() - b.getId());
|
|
55
54
|
}
|
|
56
55
|
hasEndnote(id) {
|
|
57
56
|
return this.endnotes.has(id);
|
|
@@ -98,9 +97,9 @@ class EndnoteManager {
|
|
|
98
97
|
name: 'w:endnotes',
|
|
99
98
|
attributes: {
|
|
100
99
|
'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
|
|
101
|
-
'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
|
|
100
|
+
'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
|
|
102
101
|
},
|
|
103
|
-
children: endnotes.map(e => e.toXML())
|
|
102
|
+
children: endnotes.map((e) => e.toXML()),
|
|
104
103
|
};
|
|
105
104
|
const builder = new XMLBuilder_1.XMLBuilder();
|
|
106
105
|
builder.element(endnotesElement.name, endnotesElement.attributes, endnotesElement.children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EndnoteManager.js","sourceRoot":"","sources":["../../src/elements/EndnoteManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * EndnoteManager - Manages endnotes in a document\r\n *\r\n * Handles creation, registration, and XML generation for endnotes.\r\n * Maintains unique IDs and proper ordering.\r\n */\r\n\r\nimport { Endnote, EndnoteType } from './Endnote';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\nimport { XMLParser } from '../xml/XMLParser';\r\n\r\n/**\r\n * Manages endnotes in a document\r\n */\r\nexport class EndnoteManager {\r\n private endnotes = new Map<number, Endnote>();\r\n private nextId = 1;\r\n\r\n /**\r\n * Creates a new EndnoteManager\r\n * @private Use static factory method\r\n */\r\n private constructor() {\r\n // Add special endnotes (separators) with negative IDs\r\n this.addSpecialEndnotes();\r\n }\r\n\r\n /**\r\n * Adds special endnotes (separator, continuation)\r\n * These use negative IDs as per OOXML specification\r\n */\r\n private addSpecialEndnotes(): void {\r\n // Separator endnote (ID -1)\r\n const separator = Endnote.createSeparator(-1);\r\n this.endnotes.set(-1, separator);\r\n\r\n // Continuation separator (ID 0)\r\n const continuationSep = Endnote.createContinuationSeparator(0);\r\n this.endnotes.set(0, continuationSep);\r\n }\r\n\r\n /**\r\n * Checks if an endnote is a special/system type (separator, continuationSeparator,\r\n * continuationNotice) that should be preserved across clear() operations.\r\n * Uses type-based detection rather than ID-based, because continuationNotice\r\n * has a positive ID (typically 1) but is still a system endnote.\r\n */\r\n private isSpecialEndnote(endnote: Endnote): boolean {\r\n const type = endnote.getType();\r\n return type === EndnoteType.Separator ||\r\n type === EndnoteType.ContinuationSeparator ||\r\n type === EndnoteType.ContinuationNotice;\r\n }\r\n\r\n /**\r\n * Creates a new EndnoteManager instance\r\n */\r\n static create(): EndnoteManager {\r\n return new EndnoteManager();\r\n }\r\n\r\n /**\r\n * Registers an endnote\r\n * @param endnote Endnote to register\r\n * @returns The registered endnote\r\n */\r\n register(endnote: Endnote): Endnote {\r\n const id = endnote.getId();\r\n\r\n // Ensure ID is not already used (except for special endnotes)\r\n if (id > 0 && this.endnotes.has(id)) {\r\n throw new Error(`Endnote with ID ${id} already exists`);\r\n }\r\n\r\n this.endnotes.set(id, endnote);\r\n\r\n // Update next ID if needed\r\n if (id >= this.nextId) {\r\n this.nextId = id + 1;\r\n }\r\n\r\n return endnote;\r\n }\r\n\r\n /**\r\n * Creates and registers a new endnote\r\n * @param text Endnote text\r\n * @returns The created endnote\r\n */\r\n createEndnote(text: string): Endnote {\r\n const endnote = Endnote.fromText(this.nextId++, text);\r\n this.endnotes.set(endnote.getId(), endnote);\r\n return endnote;\r\n }\r\n\r\n /**\r\n * Gets an endnote by ID\r\n * @param id Endnote ID\r\n * @returns The endnote, or undefined if not found\r\n */\r\n getEndnote(id: number): Endnote | undefined {\r\n return this.endnotes.get(id);\r\n }\r\n\r\n /**\r\n * Gets all user endnotes (excluding special system types: separator,\r\n * continuationSeparator, continuationNotice)\r\n */\r\n getAllEndnotes(): Endnote[] {\r\n return Array.from(this.endnotes.values())\r\n .filter(e => !this.isSpecialEndnote(e))\r\n .sort((a, b) => a.getId() - b.getId());\r\n }\r\n\r\n /**\r\n * Gets all endnotes including special ones\r\n */\r\n getAllEndnotesWithSpecial(): Endnote[] {\r\n return Array.from(this.endnotes.values())\r\n .sort((a, b) => a.getId() - b.getId());\r\n }\r\n\r\n /**\r\n * Checks if an endnote exists\r\n * @param id Endnote ID\r\n */\r\n hasEndnote(id: number): boolean {\r\n return this.endnotes.has(id);\r\n }\r\n\r\n /**\r\n * Removes an endnote\r\n * @param id Endnote ID\r\n * @returns True if removed, false if not found or if it's a special type\r\n */\r\n removeEndnote(id: number): boolean {\r\n const endnote = this.endnotes.get(id);\r\n if (!endnote || this.isSpecialEndnote(endnote)) {\r\n return false;\r\n }\r\n return this.endnotes.delete(id);\r\n }\r\n\r\n /**\r\n * Gets the next available ID\r\n */\r\n getNextId(): number {\r\n return this.nextId;\r\n }\r\n\r\n /**\r\n * Gets the count of endnotes (excluding special ones)\r\n */\r\n getCount(): number {\r\n return this.getAllEndnotes().length;\r\n }\r\n\r\n /**\r\n * Checks if there are any endnotes (excluding special ones)\r\n */\r\n isEmpty(): boolean {\r\n return this.getCount() === 0;\r\n }\r\n\r\n /**\r\n * Clears all user endnotes (preserves special system types: separator,\r\n * continuationSeparator, continuationNotice)\r\n */\r\n clear(): void {\r\n const specialEndnotes = new Map<number, Endnote>();\r\n let maxSpecialId = 0;\r\n\r\n for (const [id, endnote] of this.endnotes) {\r\n if (this.isSpecialEndnote(endnote)) {\r\n specialEndnotes.set(id, endnote);\r\n if (id > maxSpecialId) {\r\n maxSpecialId = id;\r\n }\r\n }\r\n }\r\n\r\n this.endnotes = specialEndnotes;\r\n // Ensure nextId doesn't collide with special endnotes that have positive IDs\r\n this.nextId = Math.max(maxSpecialId + 1, 1);\r\n }\r\n\r\n /**\r\n * Gets statistics about endnotes\r\n */\r\n getStats(): {\r\n total: number;\r\n nextId: number;\r\n } {\r\n return {\r\n total: this.getCount(),\r\n nextId: this.nextId,\r\n };\r\n }\r\n\r\n /**\r\n * Generates the endnotes.xml content\r\n */\r\n generateEndnotesXml(): string {\r\n const endnotes = this.getAllEndnotesWithSpecial();\r\n\r\n // Build endnotes element\r\n const endnotesElement: XMLElement = {\r\n name: 'w:endnotes',\r\n attributes: {\r\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\r\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\r\n },\r\n children: endnotes.map(e => e.toXML())\r\n };\r\n\r\n // Build XML using XMLBuilder\r\n const builder = new XMLBuilder();\r\n builder.element(\r\n endnotesElement.name,\r\n endnotesElement.attributes,\r\n endnotesElement.children\r\n );\r\n return builder.build(true);\r\n }\r\n\r\n /**\r\n * Validates endnotes XML\r\n * @param xml XML string to validate\r\n * @returns True if valid\r\n */\r\n static validate(xml: string): boolean {\r\n // Use XMLParser to extract root element\r\n if (!xml) {\r\n return false;\r\n }\r\n\r\n const endnotesContent = XMLParser.extractBetweenTags(xml, '<w:endnotes', '</w:endnotes>');\r\n if (!endnotesContent) {\r\n return false;\r\n }\r\n\r\n // Check for proper structure - namespace declaration\r\n if (!xml.includes('xmlns:w=')) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"EndnoteManager.js","sourceRoot":"","sources":["../../src/elements/EndnoteManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * EndnoteManager - Manages endnotes in a document\n *\n * Handles creation, registration, and XML generation for endnotes.\n * Maintains unique IDs and proper ordering.\n */\n\nimport { Endnote, EndnoteType } from './Endnote';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { XMLParser } from '../xml/XMLParser';\n\n/**\n * Manages endnotes in a document\n */\nexport class EndnoteManager {\n private endnotes = new Map<number, Endnote>();\n private nextId = 1;\n\n /**\n * Creates a new EndnoteManager\n * @private Use static factory method\n */\n private constructor() {\n // Add special endnotes (separators) with negative IDs\n this.addSpecialEndnotes();\n }\n\n /**\n * Adds special endnotes (separator, continuation)\n * These use negative IDs as per OOXML specification\n */\n private addSpecialEndnotes(): void {\n // Separator endnote (ID -1)\n const separator = Endnote.createSeparator(-1);\n this.endnotes.set(-1, separator);\n\n // Continuation separator (ID 0)\n const continuationSep = Endnote.createContinuationSeparator(0);\n this.endnotes.set(0, continuationSep);\n }\n\n /**\n * Checks if an endnote is a special/system type (separator, continuationSeparator,\n * continuationNotice) that should be preserved across clear() operations.\n * Uses type-based detection rather than ID-based, because continuationNotice\n * has a positive ID (typically 1) but is still a system endnote.\n */\n private isSpecialEndnote(endnote: Endnote): boolean {\n const type = endnote.getType();\n return (\n type === EndnoteType.Separator ||\n type === EndnoteType.ContinuationSeparator ||\n type === EndnoteType.ContinuationNotice\n );\n }\n\n /**\n * Creates a new EndnoteManager instance\n */\n static create(): EndnoteManager {\n return new EndnoteManager();\n }\n\n /**\n * Registers an endnote\n * @param endnote Endnote to register\n * @returns The registered endnote\n */\n register(endnote: Endnote): Endnote {\n const id = endnote.getId();\n\n // Ensure ID is not already used (except for special endnotes)\n if (id > 0 && this.endnotes.has(id)) {\n throw new Error(`Endnote with ID ${id} already exists`);\n }\n\n this.endnotes.set(id, endnote);\n\n // Update next ID if needed\n if (id >= this.nextId) {\n this.nextId = id + 1;\n }\n\n return endnote;\n }\n\n /**\n * Creates and registers a new endnote\n * @param text Endnote text\n * @returns The created endnote\n */\n createEndnote(text: string): Endnote {\n const endnote = Endnote.fromText(this.nextId++, text);\n this.endnotes.set(endnote.getId(), endnote);\n return endnote;\n }\n\n /**\n * Gets an endnote by ID\n * @param id Endnote ID\n * @returns The endnote, or undefined if not found\n */\n getEndnote(id: number): Endnote | undefined {\n return this.endnotes.get(id);\n }\n\n /**\n * Gets all user endnotes (excluding special system types: separator,\n * continuationSeparator, continuationNotice)\n */\n getAllEndnotes(): Endnote[] {\n return Array.from(this.endnotes.values())\n .filter((e) => !this.isSpecialEndnote(e))\n .sort((a, b) => a.getId() - b.getId());\n }\n\n /**\n * Gets all endnotes including special ones\n */\n getAllEndnotesWithSpecial(): Endnote[] {\n return Array.from(this.endnotes.values()).sort((a, b) => a.getId() - b.getId());\n }\n\n /**\n * Checks if an endnote exists\n * @param id Endnote ID\n */\n hasEndnote(id: number): boolean {\n return this.endnotes.has(id);\n }\n\n /**\n * Removes an endnote\n * @param id Endnote ID\n * @returns True if removed, false if not found or if it's a special type\n */\n removeEndnote(id: number): boolean {\n const endnote = this.endnotes.get(id);\n if (!endnote || this.isSpecialEndnote(endnote)) {\n return false;\n }\n return this.endnotes.delete(id);\n }\n\n /**\n * Gets the next available ID\n */\n getNextId(): number {\n return this.nextId;\n }\n\n /**\n * Gets the count of endnotes (excluding special ones)\n */\n getCount(): number {\n return this.getAllEndnotes().length;\n }\n\n /**\n * Checks if there are any endnotes (excluding special ones)\n */\n isEmpty(): boolean {\n return this.getCount() === 0;\n }\n\n /**\n * Clears all user endnotes (preserves special system types: separator,\n * continuationSeparator, continuationNotice)\n */\n clear(): void {\n const specialEndnotes = new Map<number, Endnote>();\n let maxSpecialId = 0;\n\n for (const [id, endnote] of this.endnotes) {\n if (this.isSpecialEndnote(endnote)) {\n specialEndnotes.set(id, endnote);\n if (id > maxSpecialId) {\n maxSpecialId = id;\n }\n }\n }\n\n this.endnotes = specialEndnotes;\n // Ensure nextId doesn't collide with special endnotes that have positive IDs\n this.nextId = Math.max(maxSpecialId + 1, 1);\n }\n\n /**\n * Gets statistics about endnotes\n */\n getStats(): {\n total: number;\n nextId: number;\n } {\n return {\n total: this.getCount(),\n nextId: this.nextId,\n };\n }\n\n /**\n * Generates the endnotes.xml content\n */\n generateEndnotesXml(): string {\n const endnotes = this.getAllEndnotesWithSpecial();\n\n // Build endnotes element\n const endnotesElement: XMLElement = {\n name: 'w:endnotes',\n attributes: {\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n },\n children: endnotes.map((e) => e.toXML()),\n };\n\n // Build XML using XMLBuilder\n const builder = new XMLBuilder();\n builder.element(endnotesElement.name, endnotesElement.attributes, endnotesElement.children);\n return builder.build(true);\n }\n\n /**\n * Validates endnotes XML\n * @param xml XML string to validate\n * @returns True if valid\n */\n static validate(xml: string): boolean {\n // Use XMLParser to extract root element\n if (!xml) {\n return false;\n }\n\n const endnotesContent = XMLParser.extractBetweenTags(xml, '<w:endnotes', '</w:endnotes>');\n if (!endnotesContent) {\n return false;\n }\n\n // Check for proper structure - namespace declaration\n if (!xml.includes('xmlns:w=')) {\n return false;\n }\n\n return true;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/elements/Field.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/elements/Field.ts"],"names":[],"mappings":"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"}
|
package/dist/elements/Field.js
CHANGED
|
@@ -48,8 +48,7 @@ class Field {
|
|
|
48
48
|
return this.formatting;
|
|
49
49
|
}
|
|
50
50
|
isHyperlinkField() {
|
|
51
|
-
return this.type === 'HYPERLINK' ||
|
|
52
|
-
this.instruction.trim().toUpperCase().startsWith('HYPERLINK');
|
|
51
|
+
return (this.type === 'HYPERLINK' || this.instruction.trim().toUpperCase().startsWith('HYPERLINK'));
|
|
53
52
|
}
|
|
54
53
|
setColor(color) {
|
|
55
54
|
if (!this.formatting) {
|
|
@@ -72,10 +71,12 @@ class Field {
|
|
|
72
71
|
attributes: {
|
|
73
72
|
'w:instr': this.instruction,
|
|
74
73
|
},
|
|
75
|
-
children: [
|
|
74
|
+
children: [
|
|
75
|
+
{
|
|
76
76
|
name: 'w:r',
|
|
77
77
|
children: runChildren,
|
|
78
|
-
}
|
|
78
|
+
},
|
|
79
|
+
],
|
|
79
80
|
};
|
|
80
81
|
}
|
|
81
82
|
getPlaceholderText() {
|
|
@@ -176,9 +177,7 @@ class Field {
|
|
|
176
177
|
});
|
|
177
178
|
}
|
|
178
179
|
if (this.formatting.underline) {
|
|
179
|
-
const val = typeof this.formatting.underline === 'string'
|
|
180
|
-
? this.formatting.underline
|
|
181
|
-
: 'single';
|
|
180
|
+
const val = typeof this.formatting.underline === 'string' ? this.formatting.underline : 'single';
|
|
182
181
|
children.push({
|
|
183
182
|
name: 'w:u',
|
|
184
183
|
attributes: { 'w:val': val },
|
|
@@ -510,9 +509,7 @@ class ComplexField {
|
|
|
510
509
|
children.push({ name: 'w:i', selfClosing: true });
|
|
511
510
|
}
|
|
512
511
|
if (formatting.underline) {
|
|
513
|
-
const val = typeof formatting.underline === 'string'
|
|
514
|
-
? formatting.underline
|
|
515
|
-
: 'single';
|
|
512
|
+
const val = typeof formatting.underline === 'string' ? formatting.underline : 'single';
|
|
516
513
|
children.push({
|
|
517
514
|
name: 'w:u',
|
|
518
515
|
attributes: { 'w:val': val },
|
|
@@ -578,32 +575,68 @@ class ComplexField {
|
|
|
578
575
|
}
|
|
579
576
|
}
|
|
580
577
|
if (ffd.calcOnExit !== undefined) {
|
|
581
|
-
ffDataChildren.push({
|
|
578
|
+
ffDataChildren.push({
|
|
579
|
+
name: 'w:calcOnExit',
|
|
580
|
+
attributes: { 'w:val': ffd.calcOnExit ? '1' : '0' },
|
|
581
|
+
selfClosing: true,
|
|
582
|
+
});
|
|
582
583
|
}
|
|
583
584
|
if (ffd.helpText) {
|
|
584
|
-
ffDataChildren.push({
|
|
585
|
+
ffDataChildren.push({
|
|
586
|
+
name: 'w:helpText',
|
|
587
|
+
attributes: { 'w:type': 'text', 'w:val': ffd.helpText },
|
|
588
|
+
selfClosing: true,
|
|
589
|
+
});
|
|
585
590
|
}
|
|
586
591
|
if (ffd.statusText) {
|
|
587
|
-
ffDataChildren.push({
|
|
592
|
+
ffDataChildren.push({
|
|
593
|
+
name: 'w:statusText',
|
|
594
|
+
attributes: { 'w:type': 'text', 'w:val': ffd.statusText },
|
|
595
|
+
selfClosing: true,
|
|
596
|
+
});
|
|
588
597
|
}
|
|
589
598
|
if (ffd.entryMacro) {
|
|
590
|
-
ffDataChildren.push({
|
|
599
|
+
ffDataChildren.push({
|
|
600
|
+
name: 'w:entryMacro',
|
|
601
|
+
attributes: { 'w:val': ffd.entryMacro },
|
|
602
|
+
selfClosing: true,
|
|
603
|
+
});
|
|
591
604
|
}
|
|
592
605
|
if (ffd.exitMacro) {
|
|
593
|
-
ffDataChildren.push({
|
|
606
|
+
ffDataChildren.push({
|
|
607
|
+
name: 'w:exitMacro',
|
|
608
|
+
attributes: { 'w:val': ffd.exitMacro },
|
|
609
|
+
selfClosing: true,
|
|
610
|
+
});
|
|
594
611
|
}
|
|
595
612
|
if (ffd.fieldType) {
|
|
596
613
|
switch (ffd.fieldType.type) {
|
|
597
614
|
case 'textInput': {
|
|
598
615
|
const tiChildren = [];
|
|
599
616
|
if (ffd.fieldType.inputType)
|
|
600
|
-
tiChildren.push({
|
|
617
|
+
tiChildren.push({
|
|
618
|
+
name: 'w:type',
|
|
619
|
+
attributes: { 'w:val': ffd.fieldType.inputType },
|
|
620
|
+
selfClosing: true,
|
|
621
|
+
});
|
|
601
622
|
if (ffd.fieldType.defaultValue)
|
|
602
|
-
tiChildren.push({
|
|
623
|
+
tiChildren.push({
|
|
624
|
+
name: 'w:default',
|
|
625
|
+
attributes: { 'w:val': ffd.fieldType.defaultValue },
|
|
626
|
+
selfClosing: true,
|
|
627
|
+
});
|
|
603
628
|
if (ffd.fieldType.maxLength !== undefined)
|
|
604
|
-
tiChildren.push({
|
|
629
|
+
tiChildren.push({
|
|
630
|
+
name: 'w:maxLength',
|
|
631
|
+
attributes: { 'w:val': String(ffd.fieldType.maxLength) },
|
|
632
|
+
selfClosing: true,
|
|
633
|
+
});
|
|
605
634
|
if (ffd.fieldType.format)
|
|
606
|
-
tiChildren.push({
|
|
635
|
+
tiChildren.push({
|
|
636
|
+
name: 'w:format',
|
|
637
|
+
attributes: { 'w:val': ffd.fieldType.format },
|
|
638
|
+
selfClosing: true,
|
|
639
|
+
});
|
|
607
640
|
ffDataChildren.push({ name: 'w:textInput', children: tiChildren });
|
|
608
641
|
break;
|
|
609
642
|
}
|
|
@@ -613,24 +646,48 @@ class ComplexField {
|
|
|
613
646
|
cbChildren.push({ name: 'w:sizeAuto', selfClosing: true });
|
|
614
647
|
}
|
|
615
648
|
else if (ffd.fieldType.size !== undefined) {
|
|
616
|
-
cbChildren.push({
|
|
649
|
+
cbChildren.push({
|
|
650
|
+
name: 'w:size',
|
|
651
|
+
attributes: { 'w:val': String(ffd.fieldType.size) },
|
|
652
|
+
selfClosing: true,
|
|
653
|
+
});
|
|
617
654
|
}
|
|
618
655
|
if (ffd.fieldType.defaultChecked !== undefined)
|
|
619
|
-
cbChildren.push({
|
|
656
|
+
cbChildren.push({
|
|
657
|
+
name: 'w:default',
|
|
658
|
+
attributes: { 'w:val': ffd.fieldType.defaultChecked ? '1' : '0' },
|
|
659
|
+
selfClosing: true,
|
|
660
|
+
});
|
|
620
661
|
if (ffd.fieldType.checked !== undefined)
|
|
621
|
-
cbChildren.push({
|
|
662
|
+
cbChildren.push({
|
|
663
|
+
name: 'w:checked',
|
|
664
|
+
attributes: { 'w:val': ffd.fieldType.checked ? '1' : '0' },
|
|
665
|
+
selfClosing: true,
|
|
666
|
+
});
|
|
622
667
|
ffDataChildren.push({ name: 'w:checkBox', children: cbChildren });
|
|
623
668
|
break;
|
|
624
669
|
}
|
|
625
670
|
case 'dropDownList': {
|
|
626
671
|
const ddChildren = [];
|
|
627
672
|
if (ffd.fieldType.result !== undefined)
|
|
628
|
-
ddChildren.push({
|
|
673
|
+
ddChildren.push({
|
|
674
|
+
name: 'w:result',
|
|
675
|
+
attributes: { 'w:val': String(ffd.fieldType.result) },
|
|
676
|
+
selfClosing: true,
|
|
677
|
+
});
|
|
629
678
|
if (ffd.fieldType.defaultResult !== undefined)
|
|
630
|
-
ddChildren.push({
|
|
679
|
+
ddChildren.push({
|
|
680
|
+
name: 'w:default',
|
|
681
|
+
attributes: { 'w:val': String(ffd.fieldType.defaultResult) },
|
|
682
|
+
selfClosing: true,
|
|
683
|
+
});
|
|
631
684
|
if (ffd.fieldType.listEntries) {
|
|
632
685
|
for (const entry of ffd.fieldType.listEntries) {
|
|
633
|
-
ddChildren.push({
|
|
686
|
+
ddChildren.push({
|
|
687
|
+
name: 'w:listEntry',
|
|
688
|
+
attributes: { 'w:val': entry },
|
|
689
|
+
selfClosing: true,
|
|
690
|
+
});
|
|
634
691
|
}
|
|
635
692
|
}
|
|
636
693
|
ffDataChildren.push({ name: 'w:ddList', children: ddChildren });
|