docxmlater 10.4.1 → 11.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 -3
- package/dist/constants/legacyCompatFlags.d.ts +1 -1
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/core/Document.d.ts +74 -67
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +605 -414
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +11 -10
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +19 -19
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentEvents.d.ts +39 -0
- package/dist/core/DocumentEvents.d.ts.map +1 -0
- package/dist/core/DocumentEvents.js +51 -0
- package/dist/core/DocumentEvents.js.map +1 -0
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +72 -52
- package/dist/core/DocumentGenerator.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 +2056 -1073
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts +3 -3
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +31 -31
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/ElementRegistry.d.ts +22 -0
- package/dist/core/ElementRegistry.d.ts.map +1 -0
- package/dist/core/ElementRegistry.js +27 -0
- package/dist/core/ElementRegistry.js.map +1 -0
- package/dist/core/Relationship.js +4 -4
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +32 -32
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.d.ts +1 -1
- package/dist/elements/AlternateContent.d.ts.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts +6 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +19 -3
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js +7 -7
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts +2 -2
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +4 -4
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts +2 -2
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +9 -9
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +9 -4
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -0
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.d.ts +1 -1
- package/dist/elements/CustomXml.d.ts.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts +2 -2
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +9 -9
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +11 -11
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts +9 -5
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +21 -9
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +10 -10
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/Footer.d.ts +3 -3
- package/dist/elements/Footer.d.ts.map +1 -1
- package/dist/elements/Footer.js +5 -5
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts +2 -2
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +9 -9
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +11 -11
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.d.ts +3 -3
- package/dist/elements/Header.d.ts.map +1 -1
- package/dist/elements/Header.js +5 -5
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.d.ts +2 -2
- package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -5
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +29 -29
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +67 -67
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +4 -4
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.d.ts +3 -3
- package/dist/elements/ImageRun.d.ts.map +1 -1
- package/dist/elements/ImageRun.js +2 -2
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.d.ts +1 -1
- package/dist/elements/MathElement.d.ts.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +34 -19
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +286 -231
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.d.ts +1 -1
- package/dist/elements/PreservedElement.d.ts.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts +2 -2
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts +14 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js +46 -8
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/RegisteredBodyElement.d.ts +15 -0
- package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
- package/dist/elements/RegisteredBodyElement.js +44 -0
- package/dist/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/elements/Revision.d.ts +8 -8
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +12 -12
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.d.ts +3 -3
- package/dist/elements/RevisionContent.d.ts.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts +2 -2
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +2 -2
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -10
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +199 -173
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts +4 -2
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +152 -145
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts +3 -3
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +12 -12
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +3 -3
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +39 -39
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +16 -10
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +118 -89
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +11 -11
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +108 -78
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js +3 -3
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +2 -2
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.d.ts +2 -2
- package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
- package/dist/elements/TableOfContentsElement.js +5 -5
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts +18 -7
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +127 -74
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts +4 -4
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +6 -6
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/esm/constants/legacyCompatFlags.js +97 -0
- package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
- package/dist/esm/constants/limits.js +36 -0
- package/dist/esm/constants/limits.js.map +1 -0
- package/dist/esm/core/Document.js +8498 -0
- package/dist/esm/core/Document.js.map +1 -0
- package/dist/esm/core/DocumentContent.js +190 -0
- package/dist/esm/core/DocumentContent.js.map +1 -0
- package/dist/esm/core/DocumentEvents.js +47 -0
- package/dist/esm/core/DocumentEvents.js.map +1 -0
- package/dist/esm/core/DocumentGenerator.js +764 -0
- package/dist/esm/core/DocumentGenerator.js.map +1 -0
- package/dist/esm/core/DocumentIdManager.js +67 -0
- package/dist/esm/core/DocumentIdManager.js.map +1 -0
- package/dist/esm/core/DocumentParser.js +8760 -0
- package/dist/esm/core/DocumentParser.js.map +1 -0
- package/dist/esm/core/DocumentValidator.js +222 -0
- package/dist/esm/core/DocumentValidator.js.map +1 -0
- package/dist/esm/core/ElementRegistry.js +24 -0
- package/dist/esm/core/ElementRegistry.js.map +1 -0
- package/dist/esm/core/Relationship.js +177 -0
- package/dist/esm/core/Relationship.js.map +1 -0
- package/dist/esm/core/RelationshipManager.js +202 -0
- package/dist/esm/core/RelationshipManager.js.map +1 -0
- package/dist/esm/elements/AlternateContent.js +19 -0
- package/dist/esm/elements/AlternateContent.js.map +1 -0
- package/dist/esm/elements/Bookmark.js +115 -0
- package/dist/esm/elements/Bookmark.js.map +1 -0
- package/dist/esm/elements/BookmarkManager.js +99 -0
- package/dist/esm/elements/BookmarkManager.js.map +1 -0
- package/dist/esm/elements/Comment.js +181 -0
- package/dist/esm/elements/Comment.js.map +1 -0
- package/dist/esm/elements/CommentManager.js +233 -0
- package/dist/esm/elements/CommentManager.js.map +1 -0
- package/dist/esm/elements/CommonTypes.js +106 -0
- package/dist/esm/elements/CommonTypes.js.map +1 -0
- package/dist/esm/elements/CustomXml.js +19 -0
- package/dist/esm/elements/CustomXml.js.map +1 -0
- package/dist/esm/elements/Endnote.js +107 -0
- package/dist/esm/elements/Endnote.js.map +1 -0
- package/dist/esm/elements/EndnoteManager.js +119 -0
- package/dist/esm/elements/EndnoteManager.js.map +1 -0
- package/dist/esm/elements/Field.js +856 -0
- package/dist/esm/elements/Field.js.map +1 -0
- package/dist/esm/elements/FieldHelpers.js +134 -0
- package/dist/esm/elements/FieldHelpers.js.map +1 -0
- package/dist/esm/elements/FontManager.js +158 -0
- package/dist/esm/elements/FontManager.js.map +1 -0
- package/dist/esm/elements/Footer.js +141 -0
- package/dist/esm/elements/Footer.js.map +1 -0
- package/dist/esm/elements/Footnote.js +107 -0
- package/dist/esm/elements/Footnote.js.map +1 -0
- package/dist/esm/elements/FootnoteManager.js +119 -0
- package/dist/esm/elements/FootnoteManager.js.map +1 -0
- package/dist/esm/elements/Header.js +141 -0
- package/dist/esm/elements/Header.js.map +1 -0
- package/dist/esm/elements/HeaderFooterManager.js +87 -0
- package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
- package/dist/esm/elements/Hyperlink.js +586 -0
- package/dist/esm/elements/Hyperlink.js.map +1 -0
- package/dist/esm/elements/Image.js +1288 -0
- package/dist/esm/elements/Image.js.map +1 -0
- package/dist/esm/elements/ImageManager.js +223 -0
- package/dist/esm/elements/ImageManager.js.map +1 -0
- package/dist/esm/elements/ImageRun.js +29 -0
- package/dist/esm/elements/ImageRun.js.map +1 -0
- package/dist/esm/elements/MathElement.js +37 -0
- package/dist/esm/elements/MathElement.js.map +1 -0
- package/dist/esm/elements/Paragraph.js +2308 -0
- package/dist/esm/elements/Paragraph.js.map +1 -0
- package/dist/esm/elements/PreservedElement.js +29 -0
- package/dist/esm/elements/PreservedElement.js.map +1 -0
- package/dist/esm/elements/PropertyChangeTypes.js +53 -0
- package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
- package/dist/esm/elements/RangeMarker.js +219 -0
- package/dist/esm/elements/RangeMarker.js.map +1 -0
- package/dist/esm/elements/RegisteredBodyElement.js +40 -0
- package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/esm/elements/Revision.js +498 -0
- package/dist/esm/elements/Revision.js.map +1 -0
- package/dist/esm/elements/RevisionContent.js +18 -0
- package/dist/esm/elements/RevisionContent.js.map +1 -0
- package/dist/esm/elements/RevisionManager.js +486 -0
- package/dist/esm/elements/RevisionManager.js.map +1 -0
- package/dist/esm/elements/Run.js +1465 -0
- package/dist/esm/elements/Run.js.map +1 -0
- package/dist/esm/elements/Section.js +978 -0
- package/dist/esm/elements/Section.js.map +1 -0
- package/dist/esm/elements/Shape.js +493 -0
- package/dist/esm/elements/Shape.js.map +1 -0
- package/dist/esm/elements/StructuredDocumentTag.js +471 -0
- package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
- package/dist/esm/elements/Table.js +1456 -0
- package/dist/esm/elements/Table.js.map +1 -0
- package/dist/esm/elements/TableCell.js +835 -0
- package/dist/esm/elements/TableCell.js.map +1 -0
- package/dist/esm/elements/TableGridChange.js +52 -0
- package/dist/esm/elements/TableGridChange.js.map +1 -0
- package/dist/esm/elements/TableOfContents.js +389 -0
- package/dist/esm/elements/TableOfContents.js.map +1 -0
- package/dist/esm/elements/TableOfContentsElement.js +29 -0
- package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
- package/dist/esm/elements/TableRow.js +555 -0
- package/dist/esm/elements/TableRow.js.map +1 -0
- package/dist/esm/elements/TextBox.js +459 -0
- package/dist/esm/elements/TextBox.js.map +1 -0
- package/dist/esm/formatting/AbstractNumbering.js +325 -0
- package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
- package/dist/esm/formatting/NumberingInstance.js +150 -0
- package/dist/esm/formatting/NumberingInstance.js.map +1 -0
- package/dist/esm/formatting/NumberingLevel.js +608 -0
- package/dist/esm/formatting/NumberingLevel.js.map +1 -0
- package/dist/esm/formatting/NumberingManager.js +423 -0
- package/dist/esm/formatting/NumberingManager.js.map +1 -0
- package/dist/esm/formatting/Style.js +1151 -0
- package/dist/esm/formatting/Style.js.map +1 -0
- package/dist/esm/formatting/StylesManager.js +557 -0
- package/dist/esm/formatting/StylesManager.js.map +1 -0
- package/dist/esm/helpers/CleanupHelper.js +350 -0
- package/dist/esm/helpers/CleanupHelper.js.map +1 -0
- package/dist/esm/images/ImageOptimizer.js +161 -0
- package/dist/esm/images/ImageOptimizer.js.map +1 -0
- package/dist/esm/index.js +75 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.js +16 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/managers/DrawingManager.js +163 -0
- package/dist/esm/managers/DrawingManager.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/processors/ChangelogGenerator.js +970 -0
- package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
- package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
- package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/MoveOperationHelper.js +57 -0
- package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
- package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
- package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/esm/processors/RevisionWalker.js +278 -0
- package/dist/esm/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
- package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/ShadingResolver.js +66 -0
- package/dist/esm/processors/ShadingResolver.js.map +1 -0
- package/dist/esm/processors/acceptRevisions.js +416 -0
- package/dist/esm/processors/acceptRevisions.js.map +1 -0
- package/dist/esm/processors/cnfStyleDecoder.js +89 -0
- package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/esm/processors/stripTrackedChanges.js +201 -0
- package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
- package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
- package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
- package/dist/esm/tracking/TrackingContext.js +2 -0
- package/dist/esm/tracking/TrackingContext.js.map +1 -0
- package/dist/esm/types/compatibility-types.js +8 -0
- package/dist/esm/types/compatibility-types.js.map +1 -0
- package/dist/esm/types/document-types.js +2 -0
- package/dist/esm/types/document-types.js.map +1 -0
- package/dist/esm/types/formatting.js +2 -0
- package/dist/esm/types/formatting.js.map +1 -0
- package/dist/esm/types/list-types.js +2 -0
- package/dist/esm/types/list-types.js.map +1 -0
- package/dist/esm/types/settings-types.js +2 -0
- package/dist/esm/types/settings-types.js.map +1 -0
- package/dist/esm/types/styleConfig.js +2 -0
- package/dist/esm/types/styleConfig.js.map +1 -0
- package/dist/esm/utils/KeyedRegistry.js +32 -0
- package/dist/esm/utils/KeyedRegistry.js.map +1 -0
- package/dist/esm/utils/corruptionDetection.js +155 -0
- package/dist/esm/utils/corruptionDetection.js.map +1 -0
- package/dist/esm/utils/dateFormatting.js +4 -0
- package/dist/esm/utils/dateFormatting.js.map +1 -0
- package/dist/esm/utils/deepClone.js +40 -0
- package/dist/esm/utils/deepClone.js.map +1 -0
- package/dist/esm/utils/deepEqual.js +47 -0
- package/dist/esm/utils/deepEqual.js.map +1 -0
- package/dist/esm/utils/diagnostics.js +69 -0
- package/dist/esm/utils/diagnostics.js.map +1 -0
- package/dist/esm/utils/errorHandling.js +36 -0
- package/dist/esm/utils/errorHandling.js.map +1 -0
- package/dist/esm/utils/formatting.js +93 -0
- package/dist/esm/utils/formatting.js.map +1 -0
- package/dist/esm/utils/list-detection.js +148 -0
- package/dist/esm/utils/list-detection.js.map +1 -0
- package/dist/esm/utils/logger.js +205 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/parsingHelpers.js +56 -0
- package/dist/esm/utils/parsingHelpers.js.map +1 -0
- package/dist/esm/utils/textDiff.js +42 -0
- package/dist/esm/utils/textDiff.js.map +1 -0
- package/dist/esm/utils/units.js +152 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.js +285 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/esm/utils/xmlSanitization.js +54 -0
- package/dist/esm/utils/xmlSanitization.js.map +1 -0
- package/dist/esm/validation/RevisionAutoFixer.js +340 -0
- package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
- package/dist/esm/validation/RevisionValidator.js +240 -0
- package/dist/esm/validation/RevisionValidator.js.map +1 -0
- package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
- package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/esm/validation/ValidationRules.js +92 -0
- package/dist/esm/validation/ValidationRules.js.map +1 -0
- package/dist/esm/validation/index.js +4 -0
- package/dist/esm/validation/index.js.map +1 -0
- package/dist/esm/xml/XMLBuilder.js +434 -0
- package/dist/esm/xml/XMLBuilder.js.map +1 -0
- package/dist/esm/xml/XMLParser.js +486 -0
- package/dist/esm/xml/XMLParser.js.map +1 -0
- package/dist/esm/zip/ZipHandler.js +298 -0
- package/dist/esm/zip/ZipHandler.js.map +1 -0
- package/dist/esm/zip/ZipReader.js +147 -0
- package/dist/esm/zip/ZipReader.js.map +1 -0
- package/dist/esm/zip/ZipWriter.js +199 -0
- package/dist/esm/zip/ZipWriter.js.map +1 -0
- package/dist/esm/zip/errors.js +43 -0
- package/dist/esm/zip/errors.js.map +1 -0
- package/dist/esm/zip/types.js +31 -0
- package/dist/esm/zip/types.js.map +1 -0
- package/dist/formatting/AbstractNumbering.d.ts +2 -2
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +33 -33
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts +2 -2
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +7 -7
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +11 -2
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +111 -25
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +4 -4
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +28 -28
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +14 -7
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +309 -112
- 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 +52 -52
- 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 +15 -15
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/index.d.ts +81 -90
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +286 -317
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +16 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +42 -0
- package/dist/internal.js.map +1 -0
- package/dist/managers/DrawingManager.d.ts +3 -3
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js +12 -12
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
- package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
- package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
- package/dist/processors/ChangelogGenerator.js.map +1 -0
- package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
- package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
- package/dist/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
- package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
- package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
- package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
- package/dist/processors/MoveOperationHelper.js.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
- package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
- package/dist/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
- package/dist/processors/RevisionWalker.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.js +28 -0
- package/dist/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
- package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
- package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
- package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/processors/ShadingResolver.d.ts +6 -0
- package/dist/processors/ShadingResolver.d.ts.map +1 -0
- package/dist/{utils → processors}/ShadingResolver.js +2 -2
- package/dist/processors/ShadingResolver.js.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
- package/dist/processors/acceptRevisions.d.ts.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.js +24 -4
- package/dist/processors/acceptRevisions.js.map +1 -0
- package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
- package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
- package/dist/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/processors/stripTrackedChanges.d.ts +3 -0
- package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
- package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
- package/dist/processors/stripTrackedChanges.js.map +1 -0
- package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +38 -43
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts +8 -8
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/document-types.d.ts +28 -0
- package/dist/types/document-types.d.ts.map +1 -0
- package/dist/types/document-types.js +3 -0
- package/dist/types/document-types.js.map +1 -0
- package/dist/types/formatting.d.ts +4 -4
- package/dist/types/formatting.d.ts.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/settings-types.d.ts +6 -0
- package/dist/types/settings-types.d.ts.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/utils/KeyedRegistry.d.ts +13 -0
- package/dist/utils/KeyedRegistry.d.ts.map +1 -0
- package/dist/utils/KeyedRegistry.js +36 -0
- package/dist/utils/KeyedRegistry.js.map +1 -0
- package/dist/utils/corruptionDetection.d.ts +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js +4 -4
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/deepEqual.d.ts +2 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +50 -0
- package/dist/utils/deepEqual.js.map +1 -0
- 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.map +1 -1
- package/dist/utils/parsingHelpers.d.ts +1 -1
- package/dist/utils/parsingHelpers.d.ts.map +1 -1
- package/dist/utils/parsingHelpers.js +2 -2
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/validation.js +7 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js +2 -2
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts +4 -4
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +11 -11
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts +5 -4
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +29 -30
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
- package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
- package/dist/validation/ValidationRuleRegistry.js +43 -0
- package/dist/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/validation/index.d.ts +3 -3
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +10 -10
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +6 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +11 -6
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.js +6 -6
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js +8 -8
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +14 -14
- 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 +10 -10
- package/dist/zip/ZipWriter.js.map +1 -1
- package/package.json +20 -4
- package/src/constants/legacyCompatFlags.ts +1 -1
- package/src/core/Document.ts +461 -167
- package/src/core/DocumentContent.ts +14 -11
- package/src/core/DocumentEvents.ts +90 -0
- package/src/core/DocumentGenerator.ts +49 -22
- package/src/core/DocumentParser.ts +2180 -617
- package/src/core/DocumentValidator.ts +7 -7
- package/src/core/ElementRegistry.ts +69 -0
- package/src/core/Relationship.ts +1 -1
- package/src/core/RelationshipManager.ts +4 -4
- package/src/elements/AlternateContent.ts +1 -1
- package/src/elements/Bookmark.ts +52 -4
- package/src/elements/BookmarkManager.ts +2 -2
- package/src/elements/Comment.ts +3 -3
- package/src/elements/CommentManager.ts +4 -4
- package/src/elements/CommonTypes.ts +45 -7
- package/src/elements/CustomXml.ts +1 -1
- package/src/elements/Endnote.ts +2 -2
- package/src/elements/EndnoteManager.ts +3 -3
- package/src/elements/Field.ts +44 -10
- package/src/elements/FieldHelpers.ts +2 -2
- package/src/elements/Footer.ts +4 -4
- package/src/elements/Footnote.ts +2 -2
- package/src/elements/FootnoteManager.ts +3 -3
- package/src/elements/Header.ts +4 -4
- package/src/elements/HeaderFooterManager.ts +2 -2
- package/src/elements/Hyperlink.ts +16 -12
- package/src/elements/Image.ts +3 -3
- package/src/elements/ImageManager.ts +2 -2
- package/src/elements/ImageRun.ts +3 -3
- package/src/elements/MathElement.ts +1 -1
- package/src/elements/Paragraph.ts +221 -88
- package/src/elements/PreservedElement.ts +1 -1
- package/src/elements/PropertyChangeTypes.ts +2 -2
- package/src/elements/RangeMarker.ts +153 -12
- package/src/elements/RegisteredBodyElement.ts +52 -0
- package/src/elements/Revision.ts +14 -14
- package/src/elements/RevisionContent.ts +3 -3
- package/src/elements/RevisionManager.ts +3 -3
- package/src/elements/Run.ts +221 -94
- package/src/elements/Section.ts +136 -69
- package/src/elements/Shape.ts +4 -4
- package/src/elements/StructuredDocumentTag.ts +3 -3
- package/src/elements/Table.ts +91 -27
- package/src/elements/TableCell.ts +62 -34
- package/src/elements/TableGridChange.ts +1 -1
- package/src/elements/TableOfContents.ts +1 -1
- package/src/elements/TableOfContentsElement.ts +2 -2
- package/src/elements/TableRow.ts +192 -48
- package/src/elements/TextBox.ts +5 -5
- package/src/formatting/AbstractNumbering.ts +3 -3
- package/src/formatting/NumberingInstance.ts +2 -2
- package/src/formatting/NumberingLevel.ts +201 -10
- package/src/formatting/NumberingManager.ts +5 -5
- package/src/formatting/Style.ts +382 -86
- package/src/formatting/StylesManager.ts +4 -4
- package/src/helpers/CleanupHelper.ts +6 -6
- package/src/index.ts +118 -127
- package/src/internal.ts +79 -0
- package/src/managers/DrawingManager.ts +3 -3
- package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
- package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
- package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
- package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
- package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
- package/src/{utils → processors}/RevisionWalker.ts +42 -1
- package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
- package/src/{utils → processors}/ShadingResolver.ts +5 -5
- package/src/{utils → processors}/acceptRevisions.ts +77 -9
- package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
- package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
- package/src/tracking/DocumentTrackingContext.ts +12 -14
- package/src/tracking/TrackingContext.ts +8 -8
- package/src/types/document-types.ts +53 -0
- package/src/types/formatting.ts +4 -4
- package/src/types/settings-types.ts +32 -0
- package/src/utils/KeyedRegistry.ts +41 -0
- package/src/utils/corruptionDetection.ts +2 -2
- package/src/utils/deepEqual.ts +58 -0
- package/src/utils/list-detection.ts +2 -2
- package/src/utils/parsingHelpers.ts +11 -3
- package/src/utils/validation.ts +3 -3
- package/src/utils/xmlSanitization.ts +1 -1
- package/src/validation/RevisionAutoFixer.ts +5 -5
- package/src/validation/RevisionValidator.ts +39 -28
- package/src/validation/ValidationRuleRegistry.ts +86 -0
- package/src/validation/index.ts +3 -3
- package/src/xml/XMLBuilder.ts +13 -3
- package/src/xml/XMLParser.ts +2 -2
- package/src/zip/ZipHandler.ts +4 -4
- package/src/zip/ZipReader.ts +3 -3
- package/src/zip/ZipWriter.ts +3 -3
- package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
- package/dist/utils/ChangelogGenerator.js.map +0 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
- package/dist/utils/CompatibilityUpgrader.js.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
- package/dist/utils/MoveOperationHelper.js.map +0 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
- package/dist/utils/RevisionAwareProcessor.js.map +0 -1
- package/dist/utils/RevisionWalker.d.ts.map +0 -1
- package/dist/utils/RevisionWalker.js.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
- package/dist/utils/ShadingResolver.d.ts +0 -6
- package/dist/utils/ShadingResolver.d.ts.map +0 -1
- package/dist/utils/ShadingResolver.js.map +0 -1
- package/dist/utils/acceptRevisions.d.ts.map +0 -1
- package/dist/utils/acceptRevisions.js.map +0 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
- package/dist/utils/cnfStyleDecoder.js.map +0 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -3
- package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
- package/dist/utils/stripTrackedChanges.js.map +0 -1
- package/src/__tests__/helper-methods.test.ts +0 -512
- package/src/constants/CLAUDE.md +0 -28
- package/src/core/CLAUDE.md +0 -113
- package/src/elements/CLAUDE.md +0 -142
- package/src/formatting/CLAUDE.md +0 -78
- package/src/managers/CLAUDE.md +0 -47
- package/src/tracking/CLAUDE.md +0 -30
- package/src/types/CLAUDE.md +0 -39
- package/src/utils/CLAUDE.md +0 -168
- package/src/validation/CLAUDE.md +0 -40
- package/src/xml/CLAUDE.md +0 -65
- package/src/zip/CLAUDE.md +0 -55
- /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
- /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../src/elements/Section.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Section - Represents a document section with page setup properties\n *\n * Sections allow different page setups within a single document (margins, orientation, etc.)\n * Each section can have its own headers, footers, and page numbering.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\nimport { PAGE_SIZES } from '../utils/units.js';\n\n/**\n * Page orientation\n */\nexport type PageOrientation = 'portrait' | 'landscape';\n\n/**\n * Section break type\n */\nexport type SectionType = 'nextPage' | 'continuous' | 'evenPage' | 'oddPage' | 'nextColumn';\n\n/**\n * Page numbering format\n */\n/**\n * Per ECMA-376 Part 1 §17.18.59 (ST_NumberFormat)\n * Comprehensive set of page number formats\n */\nexport type PageNumberFormat =\n | 'decimal'\n | 'lowerRoman'\n | 'upperRoman'\n | 'lowerLetter'\n | 'upperLetter'\n | 'ordinal'\n | 'cardinalText'\n | 'ordinalText'\n | 'hex'\n | 'chicago'\n | 'decimalZero'\n | 'decimalEnclosedCircle'\n | 'decimalEnclosedFullstop'\n | 'decimalEnclosedParen'\n | 'ideographDigital'\n | 'ideographTraditional'\n | 'ideographLegalTraditional'\n | 'ideographEnclosedCircle'\n | 'ideographZodiac'\n | 'ideographZodiacTraditional'\n | 'chineseCounting'\n | 'chineseCountingThousand'\n | 'chineseLegalSimplified'\n | 'japaneseCounting'\n | 'japaneseDigitalTenThousand'\n | 'japaneseLegal'\n | 'koreanCounting'\n | 'koreanDigital'\n | 'koreanDigital2'\n | 'koreanLegal'\n | 'taiwaneseCounting'\n | 'taiwaneseCountingThousand'\n | 'taiwaneseDigital'\n | 'aiueo'\n | 'aiueoFullWidth'\n | 'iroha'\n | 'irohaFullWidth'\n | 'arabicAbjad'\n | 'arabicAlpha'\n | 'hebrew1'\n | 'hebrew2'\n | 'hindiConsonants'\n | 'hindiCounting'\n | 'hindiNumbers'\n | 'hindiVowels'\n | 'thaiCounting'\n | 'thaiLetters'\n | 'thaiNumbers'\n | 'vietnameseCounting'\n | 'russianLower'\n | 'russianUpper'\n | 'numberInDash'\n | 'dollarText'\n | 'bullet'\n | 'bahtText'\n | 'ganada'\n | 'chosung'\n | 'none'\n | string; // Allow any format string for forward compatibility\n\n/**\n * Page size properties\n */\nexport interface PageSize {\n /** Width in twips */\n width: number;\n /** Height in twips */\n height: number;\n /** Orientation */\n orientation?: PageOrientation;\n /** Paper size code per ECMA-376 ST_PaperSize (1=Letter, 9=A4, 5=Legal, etc.) */\n code?: number;\n}\n\n/**\n * Margin properties\n */\nexport interface Margins {\n /** Top margin in twips */\n top: number;\n /** Bottom margin in twips */\n bottom: number;\n /** Left margin in twips */\n left: number;\n /** Right margin in twips */\n right: number;\n /** Header distance from top in twips */\n header?: number;\n /** Footer distance from bottom in twips */\n footer?: number;\n /** Gutter margin in twips */\n gutter?: number;\n}\n\n/**\n * Column properties\n */\nexport interface Columns {\n /** Number of columns */\n count: number;\n /** Space between columns in twips */\n space?: number;\n /** Equal column widths */\n equalWidth?: boolean;\n /** Show column separator line */\n separator?: boolean;\n /** Individual column widths (for unequal columns) in twips */\n columnWidths?: number[];\n /** Individual column spacings (space after each column) in twips — per ECMA-376 CT_Column */\n columnSpaces?: number[];\n}\n\n/**\n * Page numbering properties\n */\nexport interface PageNumbering {\n /** Starting page number */\n start?: number;\n /** Number format */\n format?: PageNumberFormat;\n}\n\n/**\n * Paper source (printer tray) properties\n */\nexport interface PaperSource {\n /** First page tray number */\n first?: number;\n /** Other pages tray number */\n other?: number;\n}\n\n/**\n * Vertical page alignment\n */\nexport type VerticalAlignment = 'top' | 'center' | 'bottom' | 'both';\n\n/**\n * Text direction\n */\nexport type TextDirection = 'ltr' | 'rtl' | 'tbRl' | 'btLr';\n\n/**\n * Document grid type for East Asian typography\n */\nexport type DocumentGridType = 'default' | 'lines' | 'linesAndChars' | 'snapToChars';\n\n/**\n * Document grid properties\n */\nexport interface DocumentGrid {\n /** Grid type */\n type?: DocumentGridType;\n /** Lines per page */\n linePitch?: number;\n /** Characters per line */\n charSpace?: number;\n}\n\n/**\n * Line numbering restart mode\n */\nexport type LineNumberingRestart = 'newPage' | 'newSection' | 'continuous';\n\n/**\n * Line numbering properties\n * Per ECMA-376 Part 1, Section 17.6.8 (w:lnNumType element)\n */\nexport interface LineNumbering {\n /** Display line number every N lines (countBy attribute) */\n countBy?: number;\n /** Starting line number */\n start?: number;\n /** Distance from text margin in twips */\n distance?: number;\n /** When to restart line numbering */\n restart?: LineNumberingRestart;\n}\n\n/**\n * Footnote/endnote position\n * Per ECMA-376 Part 1 §17.11.6 and §17.11.7\n */\nexport type NotePosition = 'pageBottom' | 'beneathText' | 'sectEnd' | 'docEnd';\n\n/**\n * Note numbering restart mode\n */\nexport type NoteNumberRestart = 'continuous' | 'eachSect' | 'eachPage';\n\n/**\n * Chapter separator character for page numbering\n * Per ECMA-376 Part 1 §17.18.5\n */\nexport type ChapterSeparator = 'colon' | 'emDash' | 'enDash' | 'hyphen' | 'period';\n\n/**\n * Footnote/endnote section-level properties\n */\nexport interface NoteProperties {\n /** Note positioning */\n position?: NotePosition;\n /** Number format */\n numberFormat?: PageNumberFormat;\n /** Starting number */\n startNumber?: number;\n /** Restart numbering mode */\n restart?: NoteNumberRestart;\n}\n\n/**\n * Page border definition for a single side\n * Per ECMA-376 Part 1 §17.6.10\n */\nexport interface PageBorderDef {\n /** Border style (single, double, dashed, etc.) */\n style?: string;\n /** Border size in eighths of a point */\n size?: number;\n /** Border color in hex format (without #) */\n color?: string;\n /** Space between border and page edge/text in points */\n space?: number;\n /** Whether to show shadow */\n shadow?: boolean;\n /** Whether to include frame around page */\n frame?: boolean;\n /** Theme color reference */\n themeColor?: string;\n /**\n * Theme tint (2-hex-digit string, ST_UcharHexNumber per §17.18.82) applied\n * to themeColor lookup. CT_TopBorder/CT_BottomBorder extend CT_Border so\n * inherit the full attribute set of §17.18.2.\n */\n themeTint?: string;\n /** Theme shade (2-hex-digit string) applied to themeColor lookup */\n themeShade?: string;\n /** Art border ID (for decorative borders) */\n artId?: number;\n}\n\n/**\n * Page borders configuration\n * Per ECMA-376 Part 1 §17.6.10\n */\nexport interface PageBorders {\n /** Top page border */\n top?: PageBorderDef;\n /** Bottom page border */\n bottom?: PageBorderDef;\n /** Left page border */\n left?: PageBorderDef;\n /** Right page border */\n right?: PageBorderDef;\n /** Whether border is measured from page edge or text edge */\n offsetFrom?: 'page' | 'text';\n /** Display on all pages, first page only, or not first page */\n display?: 'allPages' | 'firstPage' | 'notFirstPage';\n /** Z-ordering relative to text */\n zOrder?: 'front' | 'back';\n}\n\n/**\n * Section properties\n */\nexport interface SectionProperties {\n /** Page size */\n pageSize?: PageSize;\n /** Margins */\n margins?: Margins;\n /** Column layout */\n columns?: Columns;\n /** Section break type */\n type?: SectionType;\n /** Page numbering */\n pageNumbering?: PageNumbering;\n /** Header reference IDs */\n headers?: {\n default?: string; // rId for default header\n first?: string; // rId for first page header\n even?: string; // rId for even page header\n };\n /** Footer reference IDs */\n footers?: {\n default?: string; // rId for default footer\n first?: string; // rId for first page footer\n even?: string; // rId for even page footer\n };\n /** Title page (different first page) */\n titlePage?: boolean;\n /** Vertical page alignment */\n verticalAlignment?: VerticalAlignment;\n /** Paper source (printer tray) */\n paperSource?: PaperSource;\n /** Text direction (LTR/RTL support) */\n textDirection?: TextDirection;\n /** Right-to-left section layout */\n bidi?: boolean;\n /** Gutter on right side (for RTL) */\n rtlGutter?: boolean;\n /** Document grid for snapping text to grid */\n docGrid?: DocumentGrid;\n /** Line numbering configuration */\n lineNumbering?: LineNumbering;\n /** Section-level footnote properties (w:footnotePr) */\n footnotePr?: NoteProperties;\n /** Section-level endnote properties (w:endnotePr) */\n endnotePr?: NoteProperties;\n /** Suppress endnotes in this section (w:noEndnote) */\n noEndnote?: boolean;\n /** Form protection for this section (w:formProt) */\n formProt?: boolean;\n /** Page borders per ECMA-376 Part 1 §17.6.10 */\n pageBorders?: PageBorders;\n /** Printer settings relationship ID (w:printerSettings r:id) */\n printerSettingsId?: string;\n /** Chapter style heading level for page numbering (w:pgNumType w:chapStyle) */\n chapStyle?: number;\n /** Chapter separator for page numbering (w:pgNumType w:chapSep) */\n chapSep?: ChapterSeparator;\n}\n\n/**\n * Represents a document section\n */\n/**\n * Section property change tracking (w:sectPrChange)\n * Per ECMA-376 Part 1 §17.13.5.32\n */\nexport interface SectPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\nexport class Section {\n private properties: SectionProperties;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;\n /** Section property change tracking (w:sectPrChange) */\n private sectPrChange?: SectPrChange;\n\n /**\n * Creates a new section\n * @param properties Section properties\n */\n constructor(properties: SectionProperties = {}) {\n // Spread the full input first so every SectionProperties field is preserved\n // (bidi, rtlGutter, docGrid, lineNumbering, footnotePr, endnotePr, noEndnote,\n // formProt, printerSettingsId, chapStyle, chapSep, etc.), then apply defaults\n // only for the handful of fields that must always have a value.\n // Before this change the constructor enumerated an allow-list and silently\n // dropped every other SectionProperties field, corrupting round-trip fidelity\n // for any source document using those properties.\n this.properties = {\n ...properties,\n pageSize: properties.pageSize || {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n orientation: 'portrait',\n },\n margins: properties.margins || {\n top: 1440, // 1 inch\n bottom: 1440,\n left: 1440,\n right: 1440,\n header: 720, // 0.5 inch\n footer: 720,\n },\n // Default to single column layout\n columns: properties.columns || {\n count: 1,\n },\n // Default to next page section break\n type: properties.type || 'nextPage',\n };\n }\n\n /**\n * Sets the tracking context for automatic change tracking.\n * Called by Document when track changes is enabled.\n * @internal\n */\n _setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {\n this.trackingContext = context;\n }\n\n /**\n * Gets the section property change tracking info\n */\n getSectPrChange(): SectPrChange | undefined {\n return this.sectPrChange;\n }\n\n /**\n * Sets the section property change tracking info\n */\n setSectPrChange(change: SectPrChange | undefined): void {\n this.sectPrChange = change;\n }\n\n /**\n * Clears the section property change tracking\n */\n clearSectPrChange(): void {\n this.sectPrChange = undefined;\n }\n\n /**\n * Gets the section properties\n */\n getProperties(): SectionProperties {\n return { ...this.properties };\n }\n\n // ============================================================================\n // Individual Property Getters\n // ============================================================================\n\n /**\n * Gets the page size settings\n * @returns Page size object with width, height, and orientation, or undefined\n */\n getPageSize(): PageSize | undefined {\n return this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n }\n\n /**\n * Gets the page orientation\n * @returns 'portrait' or 'landscape', or undefined if not set\n */\n getOrientation(): PageOrientation | undefined {\n return this.properties.pageSize?.orientation;\n }\n\n /**\n * Gets the margin settings\n * @returns Margins object or undefined if not set\n */\n getMargins(): Margins | undefined {\n return this.properties.margins ? { ...this.properties.margins } : undefined;\n }\n\n /**\n * Gets the column layout settings\n * @returns Columns object or undefined if not set\n */\n getColumns(): Columns | undefined {\n return this.properties.columns ? { ...this.properties.columns } : undefined;\n }\n\n /**\n * Gets the section type (break type)\n * @returns Section type or undefined if not set\n */\n getSectionType(): SectionType | undefined {\n return this.properties.type;\n }\n\n /**\n * Gets the page numbering settings\n * @returns PageNumbering object or undefined if not set\n */\n getPageNumbering(): PageNumbering | undefined {\n return this.properties.pageNumbering ? { ...this.properties.pageNumbering } : undefined;\n }\n\n /**\n * Gets whether this section has a title page (different first page)\n * @returns true if title page is enabled, false otherwise\n */\n getTitlePage(): boolean {\n return this.properties.titlePage ?? false;\n }\n\n /**\n * Gets header references\n * @returns Object with default, first, and even header relationship IDs, or undefined\n */\n getHeaderReferences(): { default?: string; first?: string; even?: string } | undefined {\n return this.properties.headers ? { ...this.properties.headers } : undefined;\n }\n\n /**\n * Gets a specific header reference\n * @param type Header type (default, first, even)\n * @returns Relationship ID or undefined if not set\n */\n getHeaderReference(type: 'default' | 'first' | 'even'): string | undefined {\n return this.properties.headers?.[type];\n }\n\n /**\n * Gets footer references\n * @returns Object with default, first, and even footer relationship IDs, or undefined\n */\n getFooterReferences(): { default?: string; first?: string; even?: string } | undefined {\n return this.properties.footers ? { ...this.properties.footers } : undefined;\n }\n\n /**\n * Gets a specific footer reference\n * @param type Footer type (default, first, even)\n * @returns Relationship ID or undefined if not set\n */\n getFooterReference(type: 'default' | 'first' | 'even'): string | undefined {\n return this.properties.footers?.[type];\n }\n\n /**\n * Gets the vertical page alignment\n * @returns Vertical alignment or undefined if not set\n */\n getVerticalAlignment(): VerticalAlignment | undefined {\n return this.properties.verticalAlignment;\n }\n\n /**\n * Gets the paper source (printer tray) settings\n * @returns PaperSource object or undefined if not set\n */\n getPaperSource(): PaperSource | undefined {\n return this.properties.paperSource ? { ...this.properties.paperSource } : undefined;\n }\n\n /**\n * Gets whether column separator is enabled\n * @returns true if separator is enabled, false otherwise\n */\n getColumnSeparator(): boolean {\n return this.properties.columns?.separator ?? false;\n }\n\n /**\n * Gets custom column widths\n * @returns Array of column widths in twips, or undefined if not set\n */\n getColumnWidths(): number[] | undefined {\n return this.properties.columns?.columnWidths\n ? [...this.properties.columns.columnWidths]\n : undefined;\n }\n\n /**\n * Gets per-column spacing (space after each column) in twips\n * @returns Array of column spacings, or undefined if not set\n */\n getColumnSpaces(): number[] | undefined {\n return this.properties.columns?.columnSpaces\n ? [...this.properties.columns.columnSpaces]\n : undefined;\n }\n\n /**\n * Gets the text direction\n * @returns Text direction or undefined if not set\n */\n getTextDirection(): TextDirection | undefined {\n return this.properties.textDirection;\n }\n\n /**\n * Gets whether the section is bidirectional (RTL)\n * @returns true if bidi is enabled, false otherwise\n */\n getBidi(): boolean {\n return this.properties.bidi ?? false;\n }\n\n /**\n * Gets whether RTL gutter is enabled (gutter on right side)\n * @returns true if RTL gutter is enabled, false otherwise\n */\n getRtlGutter(): boolean {\n return this.properties.rtlGutter ?? false;\n }\n\n /**\n * Gets the document grid settings\n * @returns DocumentGrid object or undefined if not set\n */\n getDocGrid(): DocumentGrid | undefined {\n return this.properties.docGrid ? { ...this.properties.docGrid } : undefined;\n }\n\n // ============================================================================\n // Setters\n // ============================================================================\n\n /**\n * Sets page size\n * @param width Width in twips\n * @param height Height in twips\n * @param orientation Page orientation\n */\n setPageSize(width: number, height: number, orientation: PageOrientation = 'portrait'): this {\n const prev = this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n this.properties.pageSize = { width, height, orientation };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'pageSize', prev, this.properties.pageSize);\n }\n return this;\n }\n\n /**\n * Sets page orientation\n * @param orientation Page orientation\n */\n setOrientation(orientation: PageOrientation): this {\n const prevOrientation = this.properties.pageSize?.orientation;\n // Capture full pageSize BEFORE mutation for tracking\n const prevPageSize = this.properties.pageSize ? { ...this.properties.pageSize } : undefined;\n if (!this.properties.pageSize) {\n this.properties.pageSize = {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n };\n }\n this.properties.pageSize.orientation = orientation;\n\n // Swap width/height for landscape\n if (\n orientation === 'landscape' &&\n this.properties.pageSize.width < this.properties.pageSize.height\n ) {\n const temp = this.properties.pageSize.width;\n this.properties.pageSize.width = this.properties.pageSize.height;\n this.properties.pageSize.height = temp;\n }\n\n if (this.trackingContext?.isEnabled() && prevOrientation !== orientation) {\n // Track the full pageSize change (not just orientation) since width/height are swapped\n this.trackingContext.trackSectionChange(this, 'pageSize', prevPageSize, {\n ...this.properties.pageSize,\n });\n }\n return this;\n }\n\n /**\n * Sets margins\n * @param margins Margin properties\n */\n setMargins(margins: Margins): this {\n const prev = this.properties.margins ? { ...this.properties.margins } : undefined;\n const existing = this.properties.margins;\n this.properties.margins = {\n top: margins.top,\n bottom: margins.bottom,\n left: margins.left,\n right: margins.right,\n header: margins.header ?? existing?.header ?? 720,\n footer: margins.footer ?? existing?.footer ?? 720,\n gutter: margins.gutter ?? existing?.gutter,\n };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'margins', prev, this.properties.margins);\n }\n return this;\n }\n\n /**\n * Sets column layout\n * @param count Number of columns\n * @param space Space between columns in twips\n */\n setColumns(count: number, space = 720): this {\n const prev = this.properties.columns ? { ...this.properties.columns } : undefined;\n this.properties.columns = {\n count,\n space,\n equalWidth: true,\n };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'columns', prev, this.properties.columns);\n }\n return this;\n }\n\n /**\n * Sets section type\n * @param type Section break type\n */\n setSectionType(type: SectionType): this {\n const prev = this.properties.type;\n this.properties.type = type;\n if (this.trackingContext?.isEnabled() && prev !== type) {\n this.trackingContext.trackSectionChange(this, 'type', prev, type);\n }\n return this;\n }\n\n /**\n * Sets page numbering\n * @param start Starting page number\n * @param format Number format\n */\n setPageNumbering(start?: number, format?: PageNumberFormat): this {\n const prev = this.properties.pageNumbering ? { ...this.properties.pageNumbering } : undefined;\n this.properties.pageNumbering = { start, format };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'pageNumbering',\n prev,\n this.properties.pageNumbering\n );\n }\n return this;\n }\n\n /**\n * Sets title page flag (different first page)\n * @param titlePage Whether this section has a different first page\n */\n setTitlePage(titlePage = true): this {\n const prev = this.properties.titlePage;\n this.properties.titlePage = titlePage;\n if (this.trackingContext?.isEnabled() && prev !== titlePage) {\n this.trackingContext.trackSectionChange(this, 'titlePage', prev, titlePage);\n }\n return this;\n }\n\n /**\n * Sets header reference\n * @param type Header type (default, first, even)\n * @param rId Relationship ID\n */\n setHeaderReference(type: 'default' | 'first' | 'even', rId: string): this {\n const prev = this.properties.headers?.[type];\n if (!this.properties.headers) {\n this.properties.headers = {};\n }\n this.properties.headers[type] = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, `headerReference:${type}`, prev, rId);\n }\n return this;\n }\n\n /**\n * Sets footer reference\n * @param type Footer type (default, first, even)\n * @param rId Relationship ID\n */\n setFooterReference(type: 'default' | 'first' | 'even', rId: string): this {\n const prev = this.properties.footers?.[type];\n if (!this.properties.footers) {\n this.properties.footers = {};\n }\n this.properties.footers[type] = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, `footerReference:${type}`, prev, rId);\n }\n return this;\n }\n\n /**\n * Sets vertical page alignment\n * Controls how content is vertically aligned on the page\n * @param alignment Vertical alignment (top, center, bottom, both=justified)\n */\n setVerticalAlignment(alignment: VerticalAlignment): this {\n const prev = this.properties.verticalAlignment;\n this.properties.verticalAlignment = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackSectionChange(this, 'verticalAlignment', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets paper source (printer tray selection)\n * @param first First page tray number\n * @param other Other pages tray number\n */\n setPaperSource(first?: number, other?: number): this {\n const prev = this.properties.paperSource ? { ...this.properties.paperSource } : undefined;\n this.properties.paperSource = { first, other };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'paperSource',\n prev,\n this.properties.paperSource\n );\n }\n return this;\n }\n\n /**\n * Sets column separator line\n * Shows a vertical line between columns\n * @param separator Whether to show column separator line\n */\n setColumnSeparator(separator = true): this {\n const prev = this.properties.columns?.separator;\n if (!this.properties.columns) {\n this.properties.columns = { count: 1 };\n }\n this.properties.columns.separator = separator;\n if (this.trackingContext?.isEnabled() && prev !== separator) {\n this.trackingContext.trackSectionChange(this, 'columnSeparator', prev, separator);\n }\n return this;\n }\n\n /**\n * Sets custom column widths (for unequal columns)\n * @param widths Array of column widths in twips\n */\n setColumnWidths(widths: number[]): this {\n const prev = this.properties.columns ? { ...this.properties.columns } : undefined;\n if (!this.properties.columns) {\n this.properties.columns = { count: widths.length };\n }\n this.properties.columns.columnWidths = widths;\n this.properties.columns.equalWidth = false;\n this.properties.columns.count = widths.length;\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'columns', prev, {\n ...this.properties.columns,\n });\n }\n return this;\n }\n\n /**\n * Sets text direction for the section\n * @param direction Text direction (ltr=left-to-right, rtl=right-to-left, tbRl=top-to-bottom-right-to-left, btLr=bottom-to-top-left-to-right)\n */\n setTextDirection(direction: TextDirection): this {\n const prev = this.properties.textDirection;\n this.properties.textDirection = direction;\n if (this.trackingContext?.isEnabled() && prev !== direction) {\n this.trackingContext.trackSectionChange(this, 'textDirection', prev, direction);\n }\n return this;\n }\n\n /**\n * Sets line numbering for the section\n * Per ECMA-376 Part 1, Section 17.6.8 (w:lnNumType)\n * @param options Line numbering configuration\n */\n setLineNumbering(options: LineNumbering): this {\n const prev = this.properties.lineNumbering ? { ...this.properties.lineNumbering } : undefined;\n this.properties.lineNumbering = { ...options };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'lineNumbering',\n prev,\n this.properties.lineNumbering\n );\n }\n return this;\n }\n\n /**\n * Gets line numbering configuration\n * @returns Line numbering settings or undefined if not set\n */\n getLineNumbering(): LineNumbering | undefined {\n return this.properties.lineNumbering ? { ...this.properties.lineNumbering } : undefined;\n }\n\n /**\n * Clears line numbering for the section\n */\n clearLineNumbering(): this {\n this.properties.lineNumbering = undefined;\n return this;\n }\n\n /**\n * Sets section-level footnote properties\n * Per ECMA-376 Part 1 §17.11.6\n */\n setFootnoteProperties(props: NoteProperties): this {\n const prev = this.properties.footnotePr ? { ...this.properties.footnotePr } : undefined;\n this.properties.footnotePr = { ...props };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'footnotePr', prev, this.properties.footnotePr);\n }\n return this;\n }\n\n /**\n * Sets section-level endnote properties\n * Per ECMA-376 Part 1 §17.11.7\n */\n setEndnoteProperties(props: NoteProperties): this {\n const prev = this.properties.endnotePr ? { ...this.properties.endnotePr } : undefined;\n this.properties.endnotePr = { ...props };\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(this, 'endnotePr', prev, this.properties.endnotePr);\n }\n return this;\n }\n\n /**\n * Sets whether endnotes are suppressed in this section\n * Per ECMA-376 Part 1 §17.6.14\n */\n setNoEndnote(noEndnote = true): this {\n const prev = this.properties.noEndnote;\n this.properties.noEndnote = noEndnote;\n if (this.trackingContext?.isEnabled() && prev !== noEndnote) {\n this.trackingContext.trackSectionChange(this, 'noEndnote', prev, noEndnote);\n }\n return this;\n }\n\n /**\n * Sets form protection for this section\n * Per ECMA-376 Part 1 §17.6.4\n */\n setFormProtection(formProt = true): this {\n const prev = this.properties.formProt;\n this.properties.formProt = formProt;\n if (this.trackingContext?.isEnabled() && prev !== formProt) {\n this.trackingContext.trackSectionChange(this, 'formProt', prev, formProt);\n }\n return this;\n }\n\n /**\n * Sets printer settings relationship ID\n * Per ECMA-376 Part 1 §17.6.6\n */\n setPrinterSettings(rId: string): this {\n const prev = this.properties.printerSettingsId;\n this.properties.printerSettingsId = rId;\n if (this.trackingContext?.isEnabled() && prev !== rId) {\n this.trackingContext.trackSectionChange(this, 'printerSettings', prev, rId);\n }\n return this;\n }\n\n /**\n * Sets chapter numbering for page numbers\n * Per ECMA-376 Part 1 §17.6.12\n * @param chapStyle - Heading level (1-9) to use for chapter numbering\n * @param chapSep - Separator between chapter and page number\n */\n setChapterNumbering(chapStyle: number, chapSep?: ChapterSeparator): this {\n const prevStyle = this.properties.chapStyle;\n const prevSep = this.properties.chapSep;\n this.properties.chapStyle = chapStyle;\n if (chapSep) this.properties.chapSep = chapSep;\n if (this.trackingContext?.isEnabled()) {\n this.trackingContext.trackSectionChange(\n this,\n 'chapterNumbering',\n { chapStyle: prevStyle, chapSep: prevSep },\n { chapStyle, chapSep: chapSep || prevSep }\n );\n }\n return this;\n }\n\n /**\n * Generates WordprocessingML XML for section properties\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // Header references\n if (this.properties.headers) {\n if (this.properties.headers.first) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'first',\n 'r:id': this.properties.headers.first,\n })\n );\n }\n if (this.properties.headers.even) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'even',\n 'r:id': this.properties.headers.even,\n })\n );\n }\n if (this.properties.headers.default) {\n children.push(\n XMLBuilder.wSelf('headerReference', {\n 'w:type': 'default',\n 'r:id': this.properties.headers.default,\n })\n );\n }\n }\n\n // Footer references\n if (this.properties.footers) {\n if (this.properties.footers.first) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'first',\n 'r:id': this.properties.footers.first,\n })\n );\n }\n if (this.properties.footers.even) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'even',\n 'r:id': this.properties.footers.even,\n })\n );\n }\n if (this.properties.footers.default) {\n children.push(\n XMLBuilder.wSelf('footerReference', {\n 'w:type': 'default',\n 'r:id': this.properties.footers.default,\n })\n );\n }\n }\n\n // CT_SectPr element order per ECMA-376:\n // footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →\n // lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →\n // textDirection → bidi → rtlGutter → docGrid → printerSettings → sectPrChange\n\n // Footnote properties (w:footnotePr)\n if (this.properties.footnotePr) {\n const fnChildren: XMLElement[] = [];\n if (this.properties.footnotePr.position) {\n fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': this.properties.footnotePr.position }));\n }\n if (this.properties.footnotePr.numberFormat) {\n fnChildren.push(\n XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.footnotePr.numberFormat })\n );\n }\n if (this.properties.footnotePr.startNumber !== undefined) {\n fnChildren.push(\n XMLBuilder.wSelf('numStart', {\n 'w:val': this.properties.footnotePr.startNumber.toString(),\n })\n );\n }\n if (this.properties.footnotePr.restart) {\n fnChildren.push(\n XMLBuilder.wSelf('numRestart', { 'w:val': this.properties.footnotePr.restart })\n );\n }\n if (fnChildren.length > 0) {\n children.push(XMLBuilder.w('footnotePr', undefined, fnChildren));\n }\n }\n\n // Endnote properties (w:endnotePr)\n if (this.properties.endnotePr) {\n const enChildren: XMLElement[] = [];\n if (this.properties.endnotePr.position) {\n enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': this.properties.endnotePr.position }));\n }\n if (this.properties.endnotePr.numberFormat) {\n enChildren.push(\n XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.endnotePr.numberFormat })\n );\n }\n if (this.properties.endnotePr.startNumber !== undefined) {\n enChildren.push(\n XMLBuilder.wSelf('numStart', {\n 'w:val': this.properties.endnotePr.startNumber.toString(),\n })\n );\n }\n if (this.properties.endnotePr.restart) {\n enChildren.push(\n XMLBuilder.wSelf('numRestart', { 'w:val': this.properties.endnotePr.restart })\n );\n }\n if (enChildren.length > 0) {\n children.push(XMLBuilder.w('endnotePr', undefined, enChildren));\n }\n }\n\n // Section type\n if (this.properties.type) {\n children.push(XMLBuilder.wSelf('type', { 'w:val': this.properties.type }));\n }\n\n // Page size\n if (this.properties.pageSize) {\n const attrs: Record<string, string> = {\n 'w:w': this.properties.pageSize.width.toString(),\n 'w:h': this.properties.pageSize.height.toString(),\n };\n if (this.properties.pageSize.orientation === 'landscape') {\n attrs['w:orient'] = 'landscape';\n }\n if (this.properties.pageSize.code !== undefined) {\n attrs['w:code'] = this.properties.pageSize.code.toString();\n }\n children.push(XMLBuilder.wSelf('pgSz', attrs));\n }\n\n // Margins — CT_PageMar §17.6.11 declares ALL seven attributes\n // (top/right/bottom/left/header/footer/gutter) as `use=\"required\"`.\n // Emit every one so output is spec-compliant for strict validators\n // (the Open XML SDK validator is lenient here but third-party / XSD\n // tooling is not). header/footer default to 720 twips (0.5\"), and\n // gutter to 0 (no gutter — the usual value for non-book-bound docs).\n if (this.properties.margins) {\n const attrs: Record<string, string> = {\n 'w:top': this.properties.margins.top.toString(),\n 'w:right': this.properties.margins.right.toString(),\n 'w:bottom': this.properties.margins.bottom.toString(),\n 'w:left': this.properties.margins.left.toString(),\n 'w:header': (this.properties.margins.header ?? 720).toString(),\n 'w:footer': (this.properties.margins.footer ?? 720).toString(),\n 'w:gutter': (this.properties.margins.gutter ?? 0).toString(),\n };\n children.push(XMLBuilder.wSelf('pgMar', attrs));\n }\n\n // Paper source\n if (this.properties.paperSource) {\n const attrs: Record<string, string> = {};\n if (this.properties.paperSource.first !== undefined) {\n attrs['w:first'] = this.properties.paperSource.first.toString();\n }\n if (this.properties.paperSource.other !== undefined) {\n attrs['w:other'] = this.properties.paperSource.other.toString();\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('paperSrc', attrs));\n }\n }\n\n // Page borders per ECMA-376 Part 1 §17.6.10\n if (this.properties.pageBorders) {\n const pgBorders = this.properties.pageBorders;\n const pgBordersAttrs: Record<string, string> = {};\n if (pgBorders.offsetFrom) pgBordersAttrs['w:offsetFrom'] = pgBorders.offsetFrom;\n if (pgBorders.display) pgBordersAttrs['w:display'] = pgBorders.display;\n if (pgBorders.zOrder) pgBordersAttrs['w:zOrder'] = pgBorders.zOrder;\n\n const borderChildren: XMLElement[] = [];\n const buildBorder = (side: string, def: PageBorderDef) => {\n // CT_PageBorder §17.6.2 extends CT_Border (§17.18.2) — w:val is\n // REQUIRED. Default to \"nil\" when consumer set only size/color.\n const bAttrs: Record<string, string | number> = { 'w:val': def.style ?? 'nil' };\n // ECMA-376 Part 1 §17.18.2: sz valid range 2-96 (eighths of a point)\n if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));\n if (def.color) bAttrs['w:color'] = def.color;\n // ECMA-376 Part 1 §17.18.88: space valid range 0-31680 (points)\n if (def.space !== undefined) bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));\n // shadow / frame are CT_OnOff — use `!== undefined` so explicit false\n // (w:shadow=\"0\") round-trips without being dropped.\n if (def.shadow !== undefined) bAttrs['w:shadow'] = def.shadow ? '1' : '0';\n if (def.frame !== undefined) bAttrs['w:frame'] = def.frame ? '1' : '0';\n if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;\n if (def.themeTint) bAttrs['w:themeTint'] = def.themeTint;\n if (def.themeShade) bAttrs['w:themeShade'] = def.themeShade;\n if (def.artId !== undefined) bAttrs['w:id'] = def.artId;\n borderChildren.push(XMLBuilder.wSelf(side, bAttrs));\n };\n\n if (pgBorders.top) buildBorder('top', pgBorders.top);\n if (pgBorders.left) buildBorder('left', pgBorders.left);\n if (pgBorders.bottom) buildBorder('bottom', pgBorders.bottom);\n if (pgBorders.right) buildBorder('right', pgBorders.right);\n\n children.push(XMLBuilder.w('pgBorders', pgBordersAttrs, borderChildren));\n }\n\n // Line numbering (w:lnNumType)\n if (this.properties.lineNumbering) {\n const attrs: Record<string, string> = {};\n if (this.properties.lineNumbering.countBy !== undefined) {\n attrs['w:countBy'] = this.properties.lineNumbering.countBy.toString();\n }\n if (this.properties.lineNumbering.start !== undefined) {\n attrs['w:start'] = this.properties.lineNumbering.start.toString();\n }\n if (this.properties.lineNumbering.distance !== undefined) {\n attrs['w:distance'] = this.properties.lineNumbering.distance.toString();\n }\n if (this.properties.lineNumbering.restart) {\n attrs['w:restart'] = this.properties.lineNumbering.restart;\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('lnNumType', attrs));\n }\n }\n\n // Page numbering\n if (this.properties.pageNumbering || this.properties.chapStyle !== undefined) {\n const attrs: Record<string, string> = {};\n if (this.properties.pageNumbering?.start !== undefined) {\n attrs['w:start'] = this.properties.pageNumbering.start.toString();\n }\n if (this.properties.pageNumbering?.format) {\n attrs['w:fmt'] = this.properties.pageNumbering.format;\n }\n if (this.properties.chapStyle !== undefined) {\n attrs['w:chapStyle'] = this.properties.chapStyle.toString();\n }\n if (this.properties.chapSep) {\n attrs['w:chapSep'] = this.properties.chapSep;\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('pgNumType', attrs));\n }\n }\n\n // Columns\n if (this.properties.columns) {\n const attrs: Record<string, string> = {\n 'w:num': this.properties.columns.count.toString(),\n };\n if (this.properties.columns.space !== undefined) {\n attrs['w:space'] = this.properties.columns.space.toString();\n }\n if (this.properties.columns.equalWidth !== undefined) {\n attrs['w:equalWidth'] = this.properties.columns.equalWidth ? '1' : '0';\n }\n if (this.properties.columns.separator !== undefined) {\n attrs['w:sep'] = this.properties.columns.separator ? '1' : '0';\n }\n\n const colChildren: XMLElement[] = [];\n if (this.properties.columns.columnWidths) {\n const widths = this.properties.columns.columnWidths;\n const spaces = this.properties.columns.columnSpaces;\n for (let i = 0; i < widths.length; i++) {\n const colAttrs: Record<string, string | number> = {\n 'w:w': widths[i]!.toString(),\n };\n const spaceVal = spaces?.[i];\n if (spaceVal !== undefined) {\n colAttrs['w:space'] = spaceVal.toString();\n }\n colChildren.push(XMLBuilder.wSelf('col', colAttrs));\n }\n }\n\n children.push(\n colChildren.length > 0\n ? XMLBuilder.w('cols', attrs, colChildren)\n : XMLBuilder.wSelf('cols', attrs)\n );\n }\n\n // Form protection (w:formProt) — CT_OnOff per §17.6.9. Preserve the\n // explicit-false distinction on round-trip (parser already does so).\n if (this.properties.formProt !== undefined) {\n children.push(\n this.properties.formProt\n ? XMLBuilder.wSelf('formProt')\n : XMLBuilder.wSelf('formProt', { 'w:val': '0' })\n );\n }\n\n // Vertical alignment\n if (this.properties.verticalAlignment) {\n children.push(XMLBuilder.wSelf('vAlign', { 'w:val': this.properties.verticalAlignment }));\n }\n\n // Suppress endnotes (w:noEndnote) — CT_OnOff per §17.11.14.\n if (this.properties.noEndnote !== undefined) {\n children.push(\n this.properties.noEndnote\n ? XMLBuilder.wSelf('noEndnote')\n : XMLBuilder.wSelf('noEndnote', { 'w:val': '0' })\n );\n }\n\n // Title page (w:titlePg) — CT_OnOff per §17.10.6.\n if (this.properties.titlePage !== undefined) {\n children.push(\n this.properties.titlePage\n ? XMLBuilder.wSelf('titlePg', { 'w:val': '1' })\n : XMLBuilder.wSelf('titlePg', { 'w:val': '0' })\n );\n }\n\n // Text direction (map to valid ST_TextDirection values per ECMA-376 §17.18.93)\n if (this.properties.textDirection) {\n const textDirMap: Record<string, string> = {\n ltr: 'lrTb',\n rtl: 'tbRl',\n tbRl: 'tbRl',\n btLr: 'btLr',\n lrTb: 'lrTb',\n lrTbV: 'lrTbV',\n tbRlV: 'tbRlV',\n tbLrV: 'tbLrV',\n };\n const val = textDirMap[this.properties.textDirection] || this.properties.textDirection;\n children.push(XMLBuilder.wSelf('textDirection', { 'w:val': val }));\n }\n\n // Bidirectional section (RTL) — CT_OnOff per §17.6.3.\n if (this.properties.bidi !== undefined) {\n children.push(\n this.properties.bidi ? XMLBuilder.wSelf('bidi') : XMLBuilder.wSelf('bidi', { 'w:val': '0' })\n );\n }\n\n // RTL gutter — CT_OnOff per §17.6.16.\n if (this.properties.rtlGutter !== undefined) {\n children.push(\n this.properties.rtlGutter\n ? XMLBuilder.wSelf('rtlGutter')\n : XMLBuilder.wSelf('rtlGutter', { 'w:val': '0' })\n );\n }\n\n // Document grid\n if (this.properties.docGrid) {\n const attrs: Record<string, string> = {};\n if (this.properties.docGrid.type) {\n attrs['w:type'] = this.properties.docGrid.type;\n }\n if (this.properties.docGrid.linePitch !== undefined) {\n attrs['w:linePitch'] = this.properties.docGrid.linePitch.toString();\n }\n if (this.properties.docGrid.charSpace !== undefined) {\n attrs['w:charSpace'] = this.properties.docGrid.charSpace.toString();\n }\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf('docGrid', attrs));\n }\n }\n\n // Printer settings (w:printerSettings)\n if (this.properties.printerSettingsId) {\n children.push(\n XMLBuilder.wSelf('printerSettings', {\n 'r:id': this.properties.printerSettingsId,\n })\n );\n }\n\n // Add section property change (w:sectPrChange) per ECMA-376 Part 1 §17.13.5.32\n // Must be last child of w:sectPr\n if (this.sectPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.sectPrChange.id,\n 'w:author': this.sectPrChange.author,\n 'w:date': this.sectPrChange.date,\n };\n const prevChildren: XMLElement[] = [];\n const prev = this.sectPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_SectPrBase (ECMA-376 §17.6.18):\n // footnotePr → endnotePr → type → pgSz → pgMar → paperSrc → pgBorders →\n // lnNumType → pgNumType → cols → formProt → vAlign → noEndnote → titlePg →\n // textDirection → bidi → rtlGutter → docGrid\n if (prev.footnotePr) {\n const fnChildren: XMLElement[] = [];\n if (prev.footnotePr.position) {\n fnChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.footnotePr.position }));\n }\n if (prev.footnotePr.numberFormat) {\n fnChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.footnotePr.numberFormat }));\n }\n if (prev.footnotePr.startNumber !== undefined) {\n fnChildren.push(\n XMLBuilder.wSelf('numStart', { 'w:val': prev.footnotePr.startNumber.toString() })\n );\n }\n if (prev.footnotePr.restart) {\n fnChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.footnotePr.restart }));\n }\n if (fnChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('footnotePr', undefined, fnChildren));\n }\n }\n if (prev.endnotePr) {\n const enChildren: XMLElement[] = [];\n if (prev.endnotePr.position) {\n enChildren.push(XMLBuilder.wSelf('pos', { 'w:val': prev.endnotePr.position }));\n }\n if (prev.endnotePr.numberFormat) {\n enChildren.push(XMLBuilder.wSelf('numFmt', { 'w:val': prev.endnotePr.numberFormat }));\n }\n if (prev.endnotePr.startNumber !== undefined) {\n enChildren.push(\n XMLBuilder.wSelf('numStart', { 'w:val': prev.endnotePr.startNumber.toString() })\n );\n }\n if (prev.endnotePr.restart) {\n enChildren.push(XMLBuilder.wSelf('numRestart', { 'w:val': prev.endnotePr.restart }));\n }\n if (enChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('endnotePr', undefined, enChildren));\n }\n }\n if (prev.type) {\n prevChildren.push(XMLBuilder.wSelf('type', { 'w:val': prev.type }));\n }\n if (prev.pageSize) {\n const pgSzAttrs: Record<string, string> = {\n 'w:w': prev.pageSize.width?.toString() || '12240',\n 'w:h': prev.pageSize.height?.toString() || '15840',\n };\n if (prev.pageSize.orientation === 'landscape') {\n pgSzAttrs['w:orient'] = 'landscape';\n }\n if (prev.pageSize.code !== undefined) {\n pgSzAttrs['w:code'] = prev.pageSize.code.toString();\n }\n prevChildren.push(XMLBuilder.wSelf('pgSz', pgSzAttrs));\n }\n if (prev.margins) {\n // CT_PageMar §17.6.11 requires all 7 attributes. Supply defaults\n // (top/right/bottom/left → 1440 twips = 1\" following Word's default,\n // header/footer → 720, gutter → 0) for any missing from the\n // sectPrChange previous-properties snapshot so the emitted\n // previous-state is still schema-compliant.\n const pgMarAttrs: Record<string, string> = {\n 'w:top': (prev.margins.top ?? 1440).toString(),\n 'w:right': (prev.margins.right ?? 1440).toString(),\n 'w:bottom': (prev.margins.bottom ?? 1440).toString(),\n 'w:left': (prev.margins.left ?? 1440).toString(),\n 'w:header': (prev.margins.header ?? 720).toString(),\n 'w:footer': (prev.margins.footer ?? 720).toString(),\n 'w:gutter': (prev.margins.gutter ?? 0).toString(),\n };\n prevChildren.push(XMLBuilder.wSelf('pgMar', pgMarAttrs));\n }\n if (prev.paperSource) {\n const psAttrs: Record<string, string> = {};\n if (prev.paperSource.first !== undefined) {\n psAttrs['w:first'] = prev.paperSource.first.toString();\n }\n if (prev.paperSource.other !== undefined) {\n psAttrs['w:other'] = prev.paperSource.other.toString();\n }\n if (Object.keys(psAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('paperSrc', psAttrs));\n }\n }\n if (prev.pageBorders) {\n const pgb = prev.pageBorders;\n const pgbAttrs: Record<string, string> = {};\n if (pgb.offsetFrom) pgbAttrs['w:offsetFrom'] = pgb.offsetFrom;\n if (pgb.display) pgbAttrs['w:display'] = pgb.display;\n if (pgb.zOrder) pgbAttrs['w:zOrder'] = pgb.zOrder;\n const borderChildren: XMLElement[] = [];\n const buildPrevBorder = (side: string, def: PageBorderDef) => {\n // CT_PageBorder §17.6.2: w:val required. Default to \"nil\".\n // Full CT_Border attribute set preserved for sectPrChange history.\n const bAttrs: Record<string, string | number> = { 'w:val': def.style ?? 'nil' };\n if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));\n if (def.color) bAttrs['w:color'] = def.color;\n if (def.space !== undefined)\n bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));\n if (def.shadow !== undefined) bAttrs['w:shadow'] = def.shadow ? '1' : '0';\n if (def.frame !== undefined) bAttrs['w:frame'] = def.frame ? '1' : '0';\n if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;\n if (def.themeTint) bAttrs['w:themeTint'] = def.themeTint;\n if (def.themeShade) bAttrs['w:themeShade'] = def.themeShade;\n if (def.artId !== undefined) bAttrs['w:id'] = def.artId;\n borderChildren.push(XMLBuilder.wSelf(side, bAttrs));\n };\n if (pgb.top) buildPrevBorder('top', pgb.top);\n if (pgb.left) buildPrevBorder('left', pgb.left);\n if (pgb.bottom) buildPrevBorder('bottom', pgb.bottom);\n if (pgb.right) buildPrevBorder('right', pgb.right);\n if (borderChildren.length > 0) {\n prevChildren.push(XMLBuilder.w('pgBorders', pgbAttrs, borderChildren));\n }\n }\n if (prev.lineNumbering) {\n const lnAttrs: Record<string, string> = {};\n if (prev.lineNumbering.countBy !== undefined)\n lnAttrs['w:countBy'] = prev.lineNumbering.countBy.toString();\n if (prev.lineNumbering.start !== undefined)\n lnAttrs['w:start'] = prev.lineNumbering.start.toString();\n if (prev.lineNumbering.restart) lnAttrs['w:restart'] = prev.lineNumbering.restart;\n if (prev.lineNumbering.distance !== undefined)\n lnAttrs['w:distance'] = prev.lineNumbering.distance.toString();\n if (Object.keys(lnAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('lnNumType', lnAttrs));\n }\n }\n if (prev.pageNumbering || prev.chapStyle !== undefined || prev.chapSep) {\n // CT_PageNumber §17.6.12 has four attributes: fmt / start /\n // chapStyle / chapSep. chapStyle/chapSep live on the root of\n // SectionProperties (not inside pageNumbering) — mirror the\n // main-sectPr emitter at line ~1215.\n const pnAttrs: Record<string, string> = {};\n if (prev.pageNumbering?.start !== undefined)\n pnAttrs['w:start'] = prev.pageNumbering.start.toString();\n if (prev.pageNumbering?.format) pnAttrs['w:fmt'] = prev.pageNumbering.format;\n if (prev.chapStyle !== undefined) pnAttrs['w:chapStyle'] = prev.chapStyle.toString();\n if (prev.chapSep) pnAttrs['w:chapSep'] = prev.chapSep;\n if (Object.keys(pnAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('pgNumType', pnAttrs));\n }\n }\n if (prev.columns) {\n const colAttrs: Record<string, string> = {\n 'w:num': prev.columns.count?.toString() || '1',\n };\n if (prev.columns.space !== undefined) colAttrs['w:space'] = prev.columns.space.toString();\n if (prev.columns.equalWidth !== undefined) {\n colAttrs['w:equalWidth'] = prev.columns.equalWidth ? '1' : '0';\n }\n if (prev.columns.separator !== undefined) {\n colAttrs['w:sep'] = prev.columns.separator ? '1' : '0';\n }\n const colChildren: XMLElement[] = [];\n if (prev.columns.columnWidths) {\n const widths = prev.columns.columnWidths;\n const spaces = prev.columns.columnSpaces;\n for (let i = 0; i < widths.length; i++) {\n const cAttrs: Record<string, string | number> = {\n 'w:w': widths[i]!.toString(),\n };\n const spaceVal = spaces?.[i];\n if (spaceVal !== undefined) {\n cAttrs['w:space'] = spaceVal.toString();\n }\n colChildren.push(XMLBuilder.wSelf('col', cAttrs));\n }\n }\n prevChildren.push(\n colChildren.length > 0\n ? XMLBuilder.w('cols', colAttrs, colChildren)\n : XMLBuilder.wSelf('cols', colAttrs)\n );\n }\n // Section-level CT_OnOff flags (formProt §17.6.9 / noEndnote\n // §17.11.14 / titlePg §17.10.6 / bidi §17.6.1 / rtlGutter\n // §17.6.16). The main emitter already preserves the explicit-\n // false distinction via `!== undefined` (see §1286 formProt),\n // but the sectPrChange emitter used a truthy gate — so a\n // tracked change capturing a \"previous state = false\" (e.g.,\n // form protection was OFF before the revision that turned it\n // ON) silently dropped the `<w:formProt w:val=\"0\"/>` marker on\n // save. Parity-fix: guard on presence and emit w:val=\"0\" for\n // explicit false.\n if (prev.formProt !== undefined) {\n prevChildren.push(\n prev.formProt\n ? XMLBuilder.wSelf('formProt')\n : XMLBuilder.wSelf('formProt', { 'w:val': '0' })\n );\n }\n if (prev.verticalAlignment) {\n prevChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));\n }\n if (prev.noEndnote !== undefined) {\n prevChildren.push(\n prev.noEndnote\n ? XMLBuilder.wSelf('noEndnote')\n : XMLBuilder.wSelf('noEndnote', { 'w:val': '0' })\n );\n }\n if (prev.titlePage !== undefined) {\n prevChildren.push(XMLBuilder.wSelf('titlePg', { 'w:val': prev.titlePage ? '1' : '0' }));\n }\n if (prev.textDirection) {\n const tdMap: Record<string, string> = {\n ltr: 'lrTb',\n rtl: 'tbRl',\n tbRl: 'tbRl',\n btLr: 'btLr',\n lrTb: 'lrTb',\n lrTbV: 'lrTbV',\n tbRlV: 'tbRlV',\n tbLrV: 'tbLrV',\n };\n prevChildren.push(\n XMLBuilder.wSelf('textDirection', {\n 'w:val': tdMap[prev.textDirection] || prev.textDirection,\n })\n );\n }\n if (prev.bidi !== undefined) {\n prevChildren.push(\n prev.bidi ? XMLBuilder.wSelf('bidi') : XMLBuilder.wSelf('bidi', { 'w:val': '0' })\n );\n }\n if (prev.rtlGutter !== undefined) {\n prevChildren.push(\n prev.rtlGutter\n ? XMLBuilder.wSelf('rtlGutter')\n : XMLBuilder.wSelf('rtlGutter', { 'w:val': '0' })\n );\n }\n if (prev.docGrid) {\n const dgAttrs: Record<string, string> = {};\n if (prev.docGrid.type) dgAttrs['w:type'] = prev.docGrid.type;\n if (prev.docGrid.linePitch !== undefined)\n dgAttrs['w:linePitch'] = prev.docGrid.linePitch.toString();\n if (prev.docGrid.charSpace !== undefined)\n dgAttrs['w:charSpace'] = prev.docGrid.charSpace.toString();\n if (Object.keys(dgAttrs).length > 0) {\n prevChildren.push(XMLBuilder.wSelf('docGrid', dgAttrs));\n }\n }\n }\n const prevSectPr = XMLBuilder.w('sectPr', undefined, prevChildren);\n children.push(XMLBuilder.w('sectPrChange', changeAttrs, [prevSectPr]));\n }\n\n return XMLBuilder.w('sectPr', undefined, children);\n }\n\n /**\n * Creates a deep clone of this section\n * @returns New Section instance with copied properties\n */\n clone(): Section {\n // Deep clone all nested objects\n const clonedProperties: SectionProperties = {};\n\n if (this.properties.pageSize) {\n clonedProperties.pageSize = { ...this.properties.pageSize };\n }\n\n if (this.properties.margins) {\n clonedProperties.margins = { ...this.properties.margins };\n }\n\n if (this.properties.columns) {\n clonedProperties.columns = {\n ...this.properties.columns,\n columnWidths: this.properties.columns.columnWidths\n ? [...this.properties.columns.columnWidths]\n : undefined,\n columnSpaces: this.properties.columns.columnSpaces\n ? [...this.properties.columns.columnSpaces]\n : undefined,\n };\n }\n\n if (this.properties.pageNumbering) {\n clonedProperties.pageNumbering = { ...this.properties.pageNumbering };\n }\n\n if (this.properties.headers) {\n clonedProperties.headers = { ...this.properties.headers };\n }\n\n if (this.properties.footers) {\n clonedProperties.footers = { ...this.properties.footers };\n }\n\n if (this.properties.paperSource) {\n clonedProperties.paperSource = { ...this.properties.paperSource };\n }\n\n if (this.properties.docGrid) {\n clonedProperties.docGrid = { ...this.properties.docGrid };\n }\n\n if (this.properties.lineNumbering) {\n clonedProperties.lineNumbering = { ...this.properties.lineNumbering };\n }\n\n // Copy primitive properties\n clonedProperties.type = this.properties.type;\n clonedProperties.titlePage = this.properties.titlePage;\n clonedProperties.verticalAlignment = this.properties.verticalAlignment;\n clonedProperties.textDirection = this.properties.textDirection;\n clonedProperties.bidi = this.properties.bidi;\n clonedProperties.rtlGutter = this.properties.rtlGutter;\n\n return new Section(clonedProperties);\n }\n\n /**\n * Creates a section with default properties\n */\n static create(properties?: SectionProperties): Section {\n return new Section(properties);\n }\n\n /**\n * Creates a letter-sized section (8.5\" x 11\")\n */\n static createLetter(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.LETTER.width,\n height: PAGE_SIZES.LETTER.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates an A4-sized section (21cm x 29.7cm)\n */\n static createA4(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.A4.width,\n height: PAGE_SIZES.A4.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a legal-sized section (8.5\" x 14\")\n */\n static createLegal(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.LEGAL.width,\n height: PAGE_SIZES.LEGAL.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a tabloid-sized section (11\" x 17\")\n */\n static createTabloid(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.TABLOID.width,\n height: PAGE_SIZES.TABLOID.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates an A3-sized section (29.7cm x 42cm)\n */\n static createA3(): Section {\n return new Section({\n pageSize: {\n width: PAGE_SIZES.A3.width,\n height: PAGE_SIZES.A3.height,\n orientation: 'portrait',\n },\n });\n }\n\n /**\n * Creates a landscape section\n *\n * @param pageSize - Page size name (default: 'letter')\n * @returns Section with swapped width/height and landscape orientation\n *\n * @example\n * ```typescript\n * const landscape = Section.createLandscape('a4');\n * const legalLandscape = Section.createLandscape('legal');\n * ```\n */\n static createLandscape(\n pageSize: 'letter' | 'a4' | 'legal' | 'tabloid' | 'a3' = 'letter'\n ): Section {\n const sizeMap: Record<string, { width: number; height: number }> = {\n letter: PAGE_SIZES.LETTER,\n a4: PAGE_SIZES.A4,\n legal: PAGE_SIZES.LEGAL,\n tabloid: PAGE_SIZES.TABLOID,\n a3: PAGE_SIZES.A3,\n };\n const size = sizeMap[pageSize] ?? PAGE_SIZES.LETTER;\n return new Section({\n pageSize: {\n width: size.height, // Swap for landscape\n height: size.width,\n orientation: 'landscape',\n },\n });\n }\n}\n"]}
|