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
package/src/elements/Section.ts
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Each section can have its own headers, footers, and page numbering.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
|
|
9
|
-
import { PAGE_SIZES } from '../utils/units';
|
|
8
|
+
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
|
|
9
|
+
import { PAGE_SIZES } from '../utils/units.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Page orientation
|
|
@@ -255,6 +255,14 @@ export interface PageBorderDef {
|
|
|
255
255
|
frame?: boolean;
|
|
256
256
|
/** Theme color reference */
|
|
257
257
|
themeColor?: string;
|
|
258
|
+
/**
|
|
259
|
+
* Theme tint (2-hex-digit string, ST_UcharHexNumber per §17.18.82) applied
|
|
260
|
+
* to themeColor lookup. CT_TopBorder/CT_BottomBorder extend CT_Border so
|
|
261
|
+
* inherit the full attribute set of §17.18.2.
|
|
262
|
+
*/
|
|
263
|
+
themeTint?: string;
|
|
264
|
+
/** Theme shade (2-hex-digit string) applied to themeColor lookup */
|
|
265
|
+
themeShade?: string;
|
|
258
266
|
/** Art border ID (for decorative borders) */
|
|
259
267
|
artId?: number;
|
|
260
268
|
}
|
|
@@ -357,7 +365,7 @@ export interface SectPrChange {
|
|
|
357
365
|
export class Section {
|
|
358
366
|
private properties: SectionProperties;
|
|
359
367
|
/** Tracking context for automatic change tracking */
|
|
360
|
-
private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
|
|
368
|
+
private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
|
|
361
369
|
/** Section property change tracking (w:sectPrChange) */
|
|
362
370
|
private sectPrChange?: SectPrChange;
|
|
363
371
|
|
|
@@ -366,8 +374,15 @@ export class Section {
|
|
|
366
374
|
* @param properties Section properties
|
|
367
375
|
*/
|
|
368
376
|
constructor(properties: SectionProperties = {}) {
|
|
369
|
-
//
|
|
377
|
+
// Spread the full input first so every SectionProperties field is preserved
|
|
378
|
+
// (bidi, rtlGutter, docGrid, lineNumbering, footnotePr, endnotePr, noEndnote,
|
|
379
|
+
// formProt, printerSettingsId, chapStyle, chapSep, etc.), then apply defaults
|
|
380
|
+
// only for the handful of fields that must always have a value.
|
|
381
|
+
// Before this change the constructor enumerated an allow-list and silently
|
|
382
|
+
// dropped every other SectionProperties field, corrupting round-trip fidelity
|
|
383
|
+
// for any source document using those properties.
|
|
370
384
|
this.properties = {
|
|
385
|
+
...properties,
|
|
371
386
|
pageSize: properties.pageSize || {
|
|
372
387
|
width: PAGE_SIZES.LETTER.width,
|
|
373
388
|
height: PAGE_SIZES.LETTER.height,
|
|
@@ -387,15 +402,6 @@ export class Section {
|
|
|
387
402
|
},
|
|
388
403
|
// Default to next page section break
|
|
389
404
|
type: properties.type || 'nextPage',
|
|
390
|
-
pageNumbering: properties.pageNumbering,
|
|
391
|
-
headers: properties.headers,
|
|
392
|
-
footers: properties.footers,
|
|
393
|
-
titlePage: properties.titlePage,
|
|
394
|
-
// Phase 4.5 - New properties
|
|
395
|
-
verticalAlignment: properties.verticalAlignment,
|
|
396
|
-
paperSource: properties.paperSource,
|
|
397
|
-
textDirection: properties.textDirection,
|
|
398
|
-
pageBorders: properties.pageBorders,
|
|
399
405
|
};
|
|
400
406
|
}
|
|
401
407
|
|
|
@@ -404,7 +410,7 @@ export class Section {
|
|
|
404
410
|
* Called by Document when track changes is enabled.
|
|
405
411
|
* @internal
|
|
406
412
|
*/
|
|
407
|
-
_setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
|
|
413
|
+
_setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
|
|
408
414
|
this.trackingContext = context;
|
|
409
415
|
}
|
|
410
416
|
|
|
@@ -1127,19 +1133,22 @@ export class Section {
|
|
|
1127
1133
|
children.push(XMLBuilder.wSelf('pgSz', attrs));
|
|
1128
1134
|
}
|
|
1129
1135
|
|
|
1130
|
-
// Margins
|
|
1136
|
+
// Margins — CT_PageMar §17.6.11 declares ALL seven attributes
|
|
1137
|
+
// (top/right/bottom/left/header/footer/gutter) as `use="required"`.
|
|
1138
|
+
// Emit every one so output is spec-compliant for strict validators
|
|
1139
|
+
// (the Open XML SDK validator is lenient here but third-party / XSD
|
|
1140
|
+
// tooling is not). header/footer default to 720 twips (0.5"), and
|
|
1141
|
+
// gutter to 0 (no gutter — the usual value for non-book-bound docs).
|
|
1131
1142
|
if (this.properties.margins) {
|
|
1132
1143
|
const attrs: Record<string, string> = {
|
|
1133
1144
|
'w:top': this.properties.margins.top.toString(),
|
|
1134
1145
|
'w:right': this.properties.margins.right.toString(),
|
|
1135
1146
|
'w:bottom': this.properties.margins.bottom.toString(),
|
|
1136
1147
|
'w:left': this.properties.margins.left.toString(),
|
|
1148
|
+
'w:header': (this.properties.margins.header ?? 720).toString(),
|
|
1149
|
+
'w:footer': (this.properties.margins.footer ?? 720).toString(),
|
|
1150
|
+
'w:gutter': (this.properties.margins.gutter ?? 0).toString(),
|
|
1137
1151
|
};
|
|
1138
|
-
attrs['w:header'] = (this.properties.margins.header ?? 720).toString();
|
|
1139
|
-
attrs['w:footer'] = (this.properties.margins.footer ?? 720).toString();
|
|
1140
|
-
if (this.properties.margins.gutter !== undefined) {
|
|
1141
|
-
attrs['w:gutter'] = this.properties.margins.gutter.toString();
|
|
1142
|
-
}
|
|
1143
1152
|
children.push(XMLBuilder.wSelf('pgMar', attrs));
|
|
1144
1153
|
}
|
|
1145
1154
|
|
|
@@ -1167,16 +1176,21 @@ export class Section {
|
|
|
1167
1176
|
|
|
1168
1177
|
const borderChildren: XMLElement[] = [];
|
|
1169
1178
|
const buildBorder = (side: string, def: PageBorderDef) => {
|
|
1170
|
-
|
|
1171
|
-
|
|
1179
|
+
// CT_PageBorder §17.6.2 extends CT_Border (§17.18.2) — w:val is
|
|
1180
|
+
// REQUIRED. Default to "nil" when consumer set only size/color.
|
|
1181
|
+
const bAttrs: Record<string, string | number> = { 'w:val': def.style ?? 'nil' };
|
|
1172
1182
|
// ECMA-376 Part 1 §17.18.2: sz valid range 2-96 (eighths of a point)
|
|
1173
1183
|
if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));
|
|
1174
1184
|
if (def.color) bAttrs['w:color'] = def.color;
|
|
1175
1185
|
// ECMA-376 Part 1 §17.18.88: space valid range 0-31680 (points)
|
|
1176
1186
|
if (def.space !== undefined) bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));
|
|
1177
|
-
|
|
1178
|
-
|
|
1187
|
+
// shadow / frame are CT_OnOff — use `!== undefined` so explicit false
|
|
1188
|
+
// (w:shadow="0") round-trips without being dropped.
|
|
1189
|
+
if (def.shadow !== undefined) bAttrs['w:shadow'] = def.shadow ? '1' : '0';
|
|
1190
|
+
if (def.frame !== undefined) bAttrs['w:frame'] = def.frame ? '1' : '0';
|
|
1179
1191
|
if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;
|
|
1192
|
+
if (def.themeTint) bAttrs['w:themeTint'] = def.themeTint;
|
|
1193
|
+
if (def.themeShade) bAttrs['w:themeShade'] = def.themeShade;
|
|
1180
1194
|
if (def.artId !== undefined) bAttrs['w:id'] = def.artId;
|
|
1181
1195
|
borderChildren.push(XMLBuilder.wSelf(side, bAttrs));
|
|
1182
1196
|
};
|
|
@@ -1267,9 +1281,14 @@ export class Section {
|
|
|
1267
1281
|
);
|
|
1268
1282
|
}
|
|
1269
1283
|
|
|
1270
|
-
// Form protection (w:formProt)
|
|
1271
|
-
|
|
1272
|
-
|
|
1284
|
+
// Form protection (w:formProt) — CT_OnOff per §17.6.9. Preserve the
|
|
1285
|
+
// explicit-false distinction on round-trip (parser already does so).
|
|
1286
|
+
if (this.properties.formProt !== undefined) {
|
|
1287
|
+
children.push(
|
|
1288
|
+
this.properties.formProt
|
|
1289
|
+
? XMLBuilder.wSelf('formProt')
|
|
1290
|
+
: XMLBuilder.wSelf('formProt', { 'w:val': '0' })
|
|
1291
|
+
);
|
|
1273
1292
|
}
|
|
1274
1293
|
|
|
1275
1294
|
// Vertical alignment
|
|
@@ -1277,14 +1296,22 @@ export class Section {
|
|
|
1277
1296
|
children.push(XMLBuilder.wSelf('vAlign', { 'w:val': this.properties.verticalAlignment }));
|
|
1278
1297
|
}
|
|
1279
1298
|
|
|
1280
|
-
// Suppress endnotes (w:noEndnote)
|
|
1281
|
-
if (this.properties.noEndnote) {
|
|
1282
|
-
children.push(
|
|
1299
|
+
// Suppress endnotes (w:noEndnote) — CT_OnOff per §17.11.14.
|
|
1300
|
+
if (this.properties.noEndnote !== undefined) {
|
|
1301
|
+
children.push(
|
|
1302
|
+
this.properties.noEndnote
|
|
1303
|
+
? XMLBuilder.wSelf('noEndnote')
|
|
1304
|
+
: XMLBuilder.wSelf('noEndnote', { 'w:val': '0' })
|
|
1305
|
+
);
|
|
1283
1306
|
}
|
|
1284
1307
|
|
|
1285
|
-
// Title page
|
|
1286
|
-
if (this.properties.titlePage) {
|
|
1287
|
-
children.push(
|
|
1308
|
+
// Title page (w:titlePg) — CT_OnOff per §17.10.6.
|
|
1309
|
+
if (this.properties.titlePage !== undefined) {
|
|
1310
|
+
children.push(
|
|
1311
|
+
this.properties.titlePage
|
|
1312
|
+
? XMLBuilder.wSelf('titlePg', { 'w:val': '1' })
|
|
1313
|
+
: XMLBuilder.wSelf('titlePg', { 'w:val': '0' })
|
|
1314
|
+
);
|
|
1288
1315
|
}
|
|
1289
1316
|
|
|
1290
1317
|
// Text direction (map to valid ST_TextDirection values per ECMA-376 §17.18.93)
|
|
@@ -1303,14 +1330,20 @@ export class Section {
|
|
|
1303
1330
|
children.push(XMLBuilder.wSelf('textDirection', { 'w:val': val }));
|
|
1304
1331
|
}
|
|
1305
1332
|
|
|
1306
|
-
// Bidirectional section (RTL)
|
|
1307
|
-
if (this.properties.bidi) {
|
|
1308
|
-
children.push(
|
|
1333
|
+
// Bidirectional section (RTL) — CT_OnOff per §17.6.3.
|
|
1334
|
+
if (this.properties.bidi !== undefined) {
|
|
1335
|
+
children.push(
|
|
1336
|
+
this.properties.bidi ? XMLBuilder.wSelf('bidi') : XMLBuilder.wSelf('bidi', { 'w:val': '0' })
|
|
1337
|
+
);
|
|
1309
1338
|
}
|
|
1310
1339
|
|
|
1311
|
-
// RTL gutter
|
|
1312
|
-
if (this.properties.rtlGutter) {
|
|
1313
|
-
children.push(
|
|
1340
|
+
// RTL gutter — CT_OnOff per §17.6.16.
|
|
1341
|
+
if (this.properties.rtlGutter !== undefined) {
|
|
1342
|
+
children.push(
|
|
1343
|
+
this.properties.rtlGutter
|
|
1344
|
+
? XMLBuilder.wSelf('rtlGutter')
|
|
1345
|
+
: XMLBuilder.wSelf('rtlGutter', { 'w:val': '0' })
|
|
1346
|
+
);
|
|
1314
1347
|
}
|
|
1315
1348
|
|
|
1316
1349
|
// Document grid
|
|
@@ -1411,19 +1444,20 @@ export class Section {
|
|
|
1411
1444
|
prevChildren.push(XMLBuilder.wSelf('pgSz', pgSzAttrs));
|
|
1412
1445
|
}
|
|
1413
1446
|
if (prev.margins) {
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1447
|
+
// CT_PageMar §17.6.11 requires all 7 attributes. Supply defaults
|
|
1448
|
+
// (top/right/bottom/left → 1440 twips = 1" following Word's default,
|
|
1449
|
+
// header/footer → 720, gutter → 0) for any missing from the
|
|
1450
|
+
// sectPrChange previous-properties snapshot so the emitted
|
|
1451
|
+
// previous-state is still schema-compliant.
|
|
1452
|
+
const pgMarAttrs: Record<string, string> = {
|
|
1453
|
+
'w:top': (prev.margins.top ?? 1440).toString(),
|
|
1454
|
+
'w:right': (prev.margins.right ?? 1440).toString(),
|
|
1455
|
+
'w:bottom': (prev.margins.bottom ?? 1440).toString(),
|
|
1456
|
+
'w:left': (prev.margins.left ?? 1440).toString(),
|
|
1457
|
+
'w:header': (prev.margins.header ?? 720).toString(),
|
|
1458
|
+
'w:footer': (prev.margins.footer ?? 720).toString(),
|
|
1459
|
+
'w:gutter': (prev.margins.gutter ?? 0).toString(),
|
|
1460
|
+
};
|
|
1427
1461
|
prevChildren.push(XMLBuilder.wSelf('pgMar', pgMarAttrs));
|
|
1428
1462
|
}
|
|
1429
1463
|
if (prev.paperSource) {
|
|
@@ -1446,15 +1480,18 @@ export class Section {
|
|
|
1446
1480
|
if (pgb.zOrder) pgbAttrs['w:zOrder'] = pgb.zOrder;
|
|
1447
1481
|
const borderChildren: XMLElement[] = [];
|
|
1448
1482
|
const buildPrevBorder = (side: string, def: PageBorderDef) => {
|
|
1449
|
-
|
|
1450
|
-
|
|
1483
|
+
// CT_PageBorder §17.6.2: w:val required. Default to "nil".
|
|
1484
|
+
// Full CT_Border attribute set preserved for sectPrChange history.
|
|
1485
|
+
const bAttrs: Record<string, string | number> = { 'w:val': def.style ?? 'nil' };
|
|
1451
1486
|
if (def.size !== undefined) bAttrs['w:sz'] = Math.max(2, Math.min(96, def.size));
|
|
1452
1487
|
if (def.color) bAttrs['w:color'] = def.color;
|
|
1453
1488
|
if (def.space !== undefined)
|
|
1454
1489
|
bAttrs['w:space'] = Math.max(0, Math.min(31680, def.space));
|
|
1455
|
-
if (def.shadow) bAttrs['w:shadow'] = '1';
|
|
1456
|
-
if (def.frame) bAttrs['w:frame'] = '1';
|
|
1490
|
+
if (def.shadow !== undefined) bAttrs['w:shadow'] = def.shadow ? '1' : '0';
|
|
1491
|
+
if (def.frame !== undefined) bAttrs['w:frame'] = def.frame ? '1' : '0';
|
|
1457
1492
|
if (def.themeColor) bAttrs['w:themeColor'] = def.themeColor;
|
|
1493
|
+
if (def.themeTint) bAttrs['w:themeTint'] = def.themeTint;
|
|
1494
|
+
if (def.themeShade) bAttrs['w:themeShade'] = def.themeShade;
|
|
1458
1495
|
if (def.artId !== undefined) bAttrs['w:id'] = def.artId;
|
|
1459
1496
|
borderChildren.push(XMLBuilder.wSelf(side, bAttrs));
|
|
1460
1497
|
};
|
|
@@ -1479,11 +1516,17 @@ export class Section {
|
|
|
1479
1516
|
prevChildren.push(XMLBuilder.wSelf('lnNumType', lnAttrs));
|
|
1480
1517
|
}
|
|
1481
1518
|
}
|
|
1482
|
-
if (prev.pageNumbering) {
|
|
1519
|
+
if (prev.pageNumbering || prev.chapStyle !== undefined || prev.chapSep) {
|
|
1520
|
+
// CT_PageNumber §17.6.12 has four attributes: fmt / start /
|
|
1521
|
+
// chapStyle / chapSep. chapStyle/chapSep live on the root of
|
|
1522
|
+
// SectionProperties (not inside pageNumbering) — mirror the
|
|
1523
|
+
// main-sectPr emitter at line ~1215.
|
|
1483
1524
|
const pnAttrs: Record<string, string> = {};
|
|
1484
|
-
if (prev.pageNumbering
|
|
1525
|
+
if (prev.pageNumbering?.start !== undefined)
|
|
1485
1526
|
pnAttrs['w:start'] = prev.pageNumbering.start.toString();
|
|
1486
|
-
if (prev.pageNumbering
|
|
1527
|
+
if (prev.pageNumbering?.format) pnAttrs['w:fmt'] = prev.pageNumbering.format;
|
|
1528
|
+
if (prev.chapStyle !== undefined) pnAttrs['w:chapStyle'] = prev.chapStyle.toString();
|
|
1529
|
+
if (prev.chapSep) pnAttrs['w:chapSep'] = prev.chapSep;
|
|
1487
1530
|
if (Object.keys(pnAttrs).length > 0) {
|
|
1488
1531
|
prevChildren.push(XMLBuilder.wSelf('pgNumType', pnAttrs));
|
|
1489
1532
|
}
|
|
@@ -1520,17 +1563,35 @@ export class Section {
|
|
|
1520
1563
|
: XMLBuilder.wSelf('cols', colAttrs)
|
|
1521
1564
|
);
|
|
1522
1565
|
}
|
|
1523
|
-
|
|
1524
|
-
|
|
1566
|
+
// Section-level CT_OnOff flags (formProt §17.6.9 / noEndnote
|
|
1567
|
+
// §17.11.14 / titlePg §17.10.6 / bidi §17.6.1 / rtlGutter
|
|
1568
|
+
// §17.6.16). The main emitter already preserves the explicit-
|
|
1569
|
+
// false distinction via `!== undefined` (see §1286 formProt),
|
|
1570
|
+
// but the sectPrChange emitter used a truthy gate — so a
|
|
1571
|
+
// tracked change capturing a "previous state = false" (e.g.,
|
|
1572
|
+
// form protection was OFF before the revision that turned it
|
|
1573
|
+
// ON) silently dropped the `<w:formProt w:val="0"/>` marker on
|
|
1574
|
+
// save. Parity-fix: guard on presence and emit w:val="0" for
|
|
1575
|
+
// explicit false.
|
|
1576
|
+
if (prev.formProt !== undefined) {
|
|
1577
|
+
prevChildren.push(
|
|
1578
|
+
prev.formProt
|
|
1579
|
+
? XMLBuilder.wSelf('formProt')
|
|
1580
|
+
: XMLBuilder.wSelf('formProt', { 'w:val': '0' })
|
|
1581
|
+
);
|
|
1525
1582
|
}
|
|
1526
1583
|
if (prev.verticalAlignment) {
|
|
1527
1584
|
prevChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));
|
|
1528
1585
|
}
|
|
1529
|
-
if (prev.noEndnote) {
|
|
1530
|
-
prevChildren.push(
|
|
1586
|
+
if (prev.noEndnote !== undefined) {
|
|
1587
|
+
prevChildren.push(
|
|
1588
|
+
prev.noEndnote
|
|
1589
|
+
? XMLBuilder.wSelf('noEndnote')
|
|
1590
|
+
: XMLBuilder.wSelf('noEndnote', { 'w:val': '0' })
|
|
1591
|
+
);
|
|
1531
1592
|
}
|
|
1532
|
-
if (prev.titlePage) {
|
|
1533
|
-
prevChildren.push(XMLBuilder.wSelf('titlePg'));
|
|
1593
|
+
if (prev.titlePage !== undefined) {
|
|
1594
|
+
prevChildren.push(XMLBuilder.wSelf('titlePg', { 'w:val': prev.titlePage ? '1' : '0' }));
|
|
1534
1595
|
}
|
|
1535
1596
|
if (prev.textDirection) {
|
|
1536
1597
|
const tdMap: Record<string, string> = {
|
|
@@ -1549,11 +1610,17 @@ export class Section {
|
|
|
1549
1610
|
})
|
|
1550
1611
|
);
|
|
1551
1612
|
}
|
|
1552
|
-
if (prev.bidi) {
|
|
1553
|
-
prevChildren.push(
|
|
1613
|
+
if (prev.bidi !== undefined) {
|
|
1614
|
+
prevChildren.push(
|
|
1615
|
+
prev.bidi ? XMLBuilder.wSelf('bidi') : XMLBuilder.wSelf('bidi', { 'w:val': '0' })
|
|
1616
|
+
);
|
|
1554
1617
|
}
|
|
1555
|
-
if (prev.rtlGutter) {
|
|
1556
|
-
prevChildren.push(
|
|
1618
|
+
if (prev.rtlGutter !== undefined) {
|
|
1619
|
+
prevChildren.push(
|
|
1620
|
+
prev.rtlGutter
|
|
1621
|
+
? XMLBuilder.wSelf('rtlGutter')
|
|
1622
|
+
: XMLBuilder.wSelf('rtlGutter', { 'w:val': '0' })
|
|
1623
|
+
);
|
|
1557
1624
|
}
|
|
1558
1625
|
if (prev.docGrid) {
|
|
1559
1626
|
const dgAttrs: Record<string, string> = {};
|
package/src/elements/Shape.ts
CHANGED
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
* shapes in Word documents use the wps:wsp element structure.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
|
|
12
|
-
import { pointsToHalfPoints } from '../utils/units';
|
|
13
|
-
import { RunFormatting } from './Run';
|
|
11
|
+
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
|
|
12
|
+
import { pointsToHalfPoints } from '../utils/units.js';
|
|
13
|
+
import { RunFormatting } from './Run.js';
|
|
14
14
|
import {
|
|
15
15
|
ImagePosition,
|
|
16
16
|
ImageAnchor,
|
|
17
17
|
PositionAnchor,
|
|
18
18
|
HorizontalAlignment,
|
|
19
19
|
VerticalAlignment,
|
|
20
|
-
} from './Image';
|
|
20
|
+
} from './Image.js';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Preset shape types available in DrawingML
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* tables, or other block-level elements.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
|
|
10
|
-
import { Paragraph } from './Paragraph';
|
|
11
|
-
import { Table } from './Table';
|
|
9
|
+
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
|
|
10
|
+
import { Paragraph } from './Paragraph.js';
|
|
11
|
+
import { Table } from './Table.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Type of content lock for SDT
|
package/src/elements/Table.ts
CHANGED
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
* Table - Represents a table in a document
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Paragraph } from './Paragraph';
|
|
6
|
-
import { TableRow, RowFormatting } from './TableRow';
|
|
7
|
-
import { TableCell, CellFormatting } from './TableCell';
|
|
8
|
-
import { Revision } from './Revision';
|
|
9
|
-
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
|
|
10
|
-
import { deepClone } from '../utils/deepClone';
|
|
11
|
-
import { TableGridChange } from './TableGridChange';
|
|
5
|
+
import { Paragraph } from './Paragraph.js';
|
|
6
|
+
import { TableRow, RowFormatting } from './TableRow.js';
|
|
7
|
+
import { TableCell, CellFormatting } from './TableCell.js';
|
|
8
|
+
import { Revision } from './Revision.js';
|
|
9
|
+
import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
|
|
10
|
+
import { deepClone } from '../utils/deepClone.js';
|
|
11
|
+
import { TableGridChange } from './TableGridChange.js';
|
|
12
12
|
import {
|
|
13
13
|
TableAlignment as CommonTableAlignment,
|
|
14
|
-
|
|
14
|
+
FullBorderStyle,
|
|
15
15
|
HorizontalAnchor,
|
|
16
16
|
VerticalAnchor,
|
|
17
17
|
HorizontalAlignment,
|
|
18
18
|
VerticalAlignment,
|
|
19
19
|
ShadingConfig,
|
|
20
20
|
buildShadingAttributes,
|
|
21
|
-
} from './CommonTypes';
|
|
21
|
+
} from './CommonTypes.js';
|
|
22
22
|
|
|
23
23
|
// ============================================================================
|
|
24
24
|
// RE-EXPORTED TYPES (for backward compatibility)
|
|
@@ -37,13 +37,28 @@ export type TableLayout = 'auto' | 'autofit' | 'fixed';
|
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Table border definition (same as cell borders)
|
|
40
|
+
* Table border per ECMA-376 §17.4.66 (tblBorders) / §17.4.66 / etc.
|
|
41
|
+
* `style` accepts the full ST_Border enumeration (§17.18.2) — table
|
|
42
|
+
* borders support the 25+ multi-line / dot-dash / inset / outset
|
|
43
|
+
* variants, not just the narrow 6-value BorderStyle subset.
|
|
44
|
+
*
|
|
40
45
|
* @see CommonTypes.BorderDefinition
|
|
41
46
|
*/
|
|
42
47
|
export interface TableBorder {
|
|
43
|
-
style?:
|
|
48
|
+
style?: FullBorderStyle;
|
|
44
49
|
size?: number;
|
|
45
50
|
space?: number; // Border spacing (padding) in points
|
|
46
51
|
color?: string;
|
|
52
|
+
/** Theme color reference (ST_ThemeColor per §17.18.97) */
|
|
53
|
+
themeColor?: string;
|
|
54
|
+
/** Theme tint (2-hex-digit string) */
|
|
55
|
+
themeTint?: string;
|
|
56
|
+
/** Theme shade (2-hex-digit string) */
|
|
57
|
+
themeShade?: string;
|
|
58
|
+
/** Border casts a shadow (CT_OnOff attribute on CT_Border §17.18.2) */
|
|
59
|
+
shadow?: boolean;
|
|
60
|
+
/** Border is part of a frame around the content (CT_OnOff) */
|
|
61
|
+
frame?: boolean;
|
|
47
62
|
}
|
|
48
63
|
|
|
49
64
|
/**
|
|
@@ -142,11 +157,19 @@ export interface TableCellMargins {
|
|
|
142
157
|
/**
|
|
143
158
|
* Builds tblLook attributes including extended attributes (firstRow, lastRow, etc.)
|
|
144
159
|
* Per ECMA-376 Part 1 §17.4.57, Word expects both w:val and the extended boolean attributes.
|
|
160
|
+
*
|
|
161
|
+
* CT_TblLook's `w:val` is `ST_ShortHexNumber` (XSD `hexBinary`, 2 bytes → 4
|
|
162
|
+
* hex digits). Normalise upstream inputs to 4 uppercase hex digits so we
|
|
163
|
+
* never emit invalid forms like `w:val="620"` (pre-existing upstream
|
|
164
|
+
* issue: XMLParser coerces purely-numeric hex strings like "0620" to the
|
|
165
|
+
* number 620, which would otherwise flow through unpadded).
|
|
145
166
|
*/
|
|
146
|
-
function buildTblLookAttributes(hex: string): Record<string, string> {
|
|
147
|
-
const
|
|
167
|
+
function buildTblLookAttributes(hex: string | number): Record<string, string> {
|
|
168
|
+
const raw = typeof hex === 'number' ? hex.toString(16) : String(hex ?? '');
|
|
169
|
+
const normalized = raw.toUpperCase().padStart(4, '0');
|
|
170
|
+
const value = parseInt(normalized, 16) || 0;
|
|
148
171
|
return {
|
|
149
|
-
'w:val':
|
|
172
|
+
'w:val': normalized,
|
|
150
173
|
'w:firstRow': (value & 0x0020) !== 0 ? '1' : '0',
|
|
151
174
|
'w:lastRow': (value & 0x0040) !== 0 ? '1' : '0',
|
|
152
175
|
'w:firstColumn': (value & 0x0080) !== 0 ? '1' : '0',
|
|
@@ -222,9 +245,9 @@ export class Table {
|
|
|
222
245
|
private rows: TableRow[] = [];
|
|
223
246
|
private formatting: TableFormatting;
|
|
224
247
|
/** StylesManager reference for conditional formatting resolution */
|
|
225
|
-
private _stylesManager?: import('../formatting/StylesManager').StylesManager;
|
|
248
|
+
private _stylesManager?: import('../formatting/StylesManager.js').StylesManager;
|
|
226
249
|
/** Tracking context for automatic change tracking */
|
|
227
|
-
private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
|
|
250
|
+
private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
|
|
228
251
|
/** Table property change tracking (w:tblPrChange) */
|
|
229
252
|
private tblPrChange?: TblPrChange;
|
|
230
253
|
/** Table grid change tracking (w:tblGridChange) per ECMA-376 §17.13.5.35 */
|
|
@@ -260,7 +283,7 @@ export class Table {
|
|
|
260
283
|
* Called by Document when track changes is enabled.
|
|
261
284
|
* @internal
|
|
262
285
|
*/
|
|
263
|
-
_setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
|
|
286
|
+
_setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
|
|
264
287
|
this.trackingContext = context;
|
|
265
288
|
}
|
|
266
289
|
|
|
@@ -1585,7 +1608,7 @@ export class Table {
|
|
|
1585
1608
|
* Propagates to all paragraphs in all cells.
|
|
1586
1609
|
* @internal
|
|
1587
1610
|
*/
|
|
1588
|
-
_setStylesManager(manager: import('../formatting/StylesManager').StylesManager): void {
|
|
1611
|
+
_setStylesManager(manager: import('../formatting/StylesManager.js').StylesManager): void {
|
|
1589
1612
|
this._stylesManager = manager;
|
|
1590
1613
|
// Propagate to all paragraphs in all cells
|
|
1591
1614
|
for (const row of this.rows) {
|
|
@@ -1601,7 +1624,7 @@ export class Table {
|
|
|
1601
1624
|
* Gets the StylesManager reference for conditional formatting resolution.
|
|
1602
1625
|
* @internal
|
|
1603
1626
|
*/
|
|
1604
|
-
_getStylesManager(): import('../formatting/StylesManager').StylesManager | undefined {
|
|
1627
|
+
_getStylesManager(): import('../formatting/StylesManager.js').StylesManager | undefined {
|
|
1605
1628
|
return this._stylesManager;
|
|
1606
1629
|
}
|
|
1607
1630
|
|
|
@@ -1652,9 +1675,15 @@ export class Table {
|
|
|
1652
1675
|
);
|
|
1653
1676
|
}
|
|
1654
1677
|
|
|
1655
|
-
// 4. bidiVisual
|
|
1656
|
-
|
|
1657
|
-
|
|
1678
|
+
// 4. bidiVisual — OnOffOnlyType (not CT_OnOff); w:val is restricted to "on"/"off"
|
|
1679
|
+
// by ST_OnOffOnly. Emit "off" for explicit false so the override-of-style
|
|
1680
|
+
// distinction between "inherited" (absent) and "explicitly off" survives.
|
|
1681
|
+
if (this.formatting.bidiVisual !== undefined) {
|
|
1682
|
+
if (this.formatting.bidiVisual) {
|
|
1683
|
+
tblPrChildren.push(XMLBuilder.wSelf('bidiVisual'));
|
|
1684
|
+
} else {
|
|
1685
|
+
tblPrChildren.push(XMLBuilder.wSelf('bidiVisual', { 'w:val': 'off' }));
|
|
1686
|
+
}
|
|
1658
1687
|
}
|
|
1659
1688
|
|
|
1660
1689
|
// 5-6. tblStyleRowBandSize / tblStyleColBandSize
|
|
@@ -1841,9 +1870,13 @@ export class Table {
|
|
|
1841
1870
|
if (prev.overlap) {
|
|
1842
1871
|
prevTblPrChildren.push(XMLBuilder.wSelf('tblOverlap', { 'w:val': prev.overlap }));
|
|
1843
1872
|
}
|
|
1844
|
-
// 4. bidiVisual
|
|
1845
|
-
if (prev.bidiVisual) {
|
|
1846
|
-
|
|
1873
|
+
// 4. bidiVisual — OnOffOnlyType; preserve explicit false inside tblPrChange
|
|
1874
|
+
if (prev.bidiVisual !== undefined) {
|
|
1875
|
+
if (prev.bidiVisual) {
|
|
1876
|
+
prevTblPrChildren.push(XMLBuilder.wSelf('bidiVisual'));
|
|
1877
|
+
} else {
|
|
1878
|
+
prevTblPrChildren.push(XMLBuilder.wSelf('bidiVisual', { 'w:val': 'off' }));
|
|
1879
|
+
}
|
|
1847
1880
|
}
|
|
1848
1881
|
// 5. tblStyleRowBandSize
|
|
1849
1882
|
if (prev.tblStyleRowBandSize !== undefined) {
|
|
@@ -1884,17 +1917,32 @@ export class Table {
|
|
|
1884
1917
|
XMLBuilder.wSelf('tblInd', { 'w:w': prev.indent, 'w:type': prev.indentType || 'dxa' })
|
|
1885
1918
|
);
|
|
1886
1919
|
}
|
|
1887
|
-
// 11. tblBorders
|
|
1920
|
+
// 11. tblBorders — CT_Border §17.18.2 requires w:val; default "nil".
|
|
1921
|
+
// Full attribute set (themeColor/themeTint/themeShade/shadow/frame)
|
|
1922
|
+
// preserved so tblPrChange tracked history matches modern Word output.
|
|
1888
1923
|
if (prev.borders) {
|
|
1889
1924
|
const borderChildren: XMLElement[] = [];
|
|
1890
1925
|
const bNames = ['top', 'left', 'bottom', 'right', 'insideH', 'insideV'] as const;
|
|
1891
1926
|
for (const name of bNames) {
|
|
1892
1927
|
const b = prev.borders[name];
|
|
1893
1928
|
if (b) {
|
|
1894
|
-
const bAttrs: Record<string, string | number> = {};
|
|
1895
|
-
if (b.style) bAttrs['w:val'] = b.style;
|
|
1929
|
+
const bAttrs: Record<string, string | number> = { 'w:val': b.style ?? 'nil' };
|
|
1896
1930
|
if (b.size !== undefined) bAttrs['w:sz'] = b.size;
|
|
1897
1931
|
if (b.color) bAttrs['w:color'] = b.color;
|
|
1932
|
+
const bx = b as {
|
|
1933
|
+
space?: number;
|
|
1934
|
+
themeColor?: string;
|
|
1935
|
+
themeTint?: string;
|
|
1936
|
+
themeShade?: string;
|
|
1937
|
+
shadow?: boolean;
|
|
1938
|
+
frame?: boolean;
|
|
1939
|
+
};
|
|
1940
|
+
if (bx.space !== undefined) bAttrs['w:space'] = bx.space;
|
|
1941
|
+
if (bx.themeColor) bAttrs['w:themeColor'] = bx.themeColor;
|
|
1942
|
+
if (bx.themeTint) bAttrs['w:themeTint'] = bx.themeTint;
|
|
1943
|
+
if (bx.themeShade) bAttrs['w:themeShade'] = bx.themeShade;
|
|
1944
|
+
if (bx.shadow !== undefined) bAttrs['w:shadow'] = bx.shadow ? '1' : '0';
|
|
1945
|
+
if (bx.frame !== undefined) bAttrs['w:frame'] = bx.frame ? '1' : '0';
|
|
1898
1946
|
borderChildren.push(XMLBuilder.wSelf(name, bAttrs));
|
|
1899
1947
|
}
|
|
1900
1948
|
}
|
|
@@ -2045,6 +2093,22 @@ export class Table {
|
|
|
2045
2093
|
return false;
|
|
2046
2094
|
}
|
|
2047
2095
|
|
|
2096
|
+
/**
|
|
2097
|
+
* Internal: removes a row without triggering tracking-context side effects.
|
|
2098
|
+
* Used by the revision acceptor when resolving tracked row deletions —
|
|
2099
|
+
* accepting a pre-existing tracked deletion must NOT create a new
|
|
2100
|
+
* revision, so the usual `removeRow()` path (which wraps content in
|
|
2101
|
+
* `w:del`) is unsuitable. Bypasses the "at least one row" guard because
|
|
2102
|
+
* the caller is responsible for any empty-table cleanup.
|
|
2103
|
+
*
|
|
2104
|
+
* @internal
|
|
2105
|
+
*/
|
|
2106
|
+
_removeRowAtIndex(index: number): boolean {
|
|
2107
|
+
if (index < 0 || index >= this.rows.length) return false;
|
|
2108
|
+
this.rows.splice(index, 1);
|
|
2109
|
+
return true;
|
|
2110
|
+
}
|
|
2111
|
+
|
|
2048
2112
|
/**
|
|
2049
2113
|
* Inserts a row at a specific position
|
|
2050
2114
|
*
|