docxmlater 10.1.3 → 10.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +759 -754
- package/dist/constants/legacyCompatFlags.js +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +50 -50
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +483 -471
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +9 -9
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +251 -251
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2123 -2155
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +2 -5
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +3 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +9 -6
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +18 -17
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +21 -21
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +56 -56
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +6 -6
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +6 -7
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +82 -25
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js +2 -2
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +6 -6
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +6 -7
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js +2 -2
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -3
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +134 -76
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +238 -106
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +1 -1
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +24 -24
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +181 -188
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js +6 -6
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +4 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +40 -48
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -16
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +256 -238
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +36 -11
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +6 -6
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +99 -104
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +11 -11
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +102 -107
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +10 -10
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +105 -106
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +4 -4
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +13 -6
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +3 -5
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +4 -4
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +54 -49
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +1 -3
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +5 -5
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +119 -125
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +9 -9
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +11 -11
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +219 -247
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +96 -102
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +6 -6
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js +7 -7
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +23 -7
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +6 -6
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.d.ts +2 -2
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js +97 -101
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +1 -1
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
- package/dist/utils/MoveOperationHelper.js +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js +2 -4
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.d.ts.map +1 -1
- package/dist/utils/RevisionWalker.js +4 -12
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.d.ts.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +23 -12
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts +1 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +40 -40
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.js +1 -1
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +10 -2
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +21 -23
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +3 -3
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.d.ts +1 -1
- package/dist/utils/textDiff.js +8 -8
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +24 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.d.ts.map +1 -1
- package/dist/utils/xmlSanitization.js +3 -3
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +5 -5
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +7 -9
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js +3 -3
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +98 -100
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +61 -66
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +1 -3
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +28 -36
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/types.js +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/helper-methods.test.ts +512 -512
- package/src/constants/legacyCompatFlags.ts +138 -138
- package/src/constants/limits.ts +50 -50
- package/src/core/Document.ts +985 -1145
- package/src/core/DocumentContent.ts +461 -467
- package/src/core/DocumentGenerator.ts +1133 -1104
- package/src/core/DocumentIdManager.ts +158 -158
- package/src/core/DocumentParser.ts +2347 -2716
- package/src/core/DocumentValidator.ts +363 -372
- package/src/core/Relationship.ts +367 -367
- package/src/core/RelationshipManager.ts +429 -428
- package/src/elements/AlternateContent.ts +42 -42
- package/src/elements/Bookmark.ts +212 -210
- package/src/elements/BookmarkManager.ts +247 -250
- package/src/elements/Comment.ts +356 -359
- package/src/elements/CommentManager.ts +499 -502
- package/src/elements/CommonTypes.ts +524 -549
- package/src/elements/CustomXml.ts +36 -36
- package/src/elements/Endnote.ts +221 -217
- package/src/elements/EndnoteManager.ts +246 -249
- package/src/elements/Field.ts +1292 -1233
- package/src/elements/FieldHelpers.ts +329 -333
- package/src/elements/FontManager.ts +336 -339
- package/src/elements/Footer.ts +269 -269
- package/src/elements/Footnote.ts +221 -217
- package/src/elements/FootnoteManager.ts +246 -249
- package/src/elements/Header.ts +269 -269
- package/src/elements/HeaderFooterManager.ts +219 -219
- package/src/elements/Hyperlink.ts +1288 -1193
- package/src/elements/Image.ts +1982 -1756
- package/src/elements/ImageManager.ts +437 -432
- package/src/elements/ImageRun.ts +59 -59
- package/src/elements/MathElement.ts +65 -65
- package/src/elements/Paragraph.ts +4347 -4287
- package/src/elements/PreservedElement.ts +53 -53
- package/src/elements/PropertyChangeTypes.ts +458 -442
- package/src/elements/RangeMarker.ts +382 -400
- package/src/elements/Revision.ts +1198 -1217
- package/src/elements/RevisionContent.ts +73 -73
- package/src/elements/RevisionManager.ts +1070 -1070
- package/src/elements/Run.ts +3103 -3073
- package/src/elements/Section.ts +1521 -1421
- package/src/elements/Shape.ts +884 -873
- package/src/elements/StructuredDocumentTag.ts +1176 -1207
- package/src/elements/Table.ts +2468 -2524
- package/src/elements/TableCell.ts +1617 -1621
- package/src/elements/TableGridChange.ts +149 -151
- package/src/elements/TableOfContents.ts +701 -691
- package/src/elements/TableOfContentsElement.ts +89 -89
- package/src/elements/TableRow.ts +960 -929
- package/src/elements/TextBox.ts +766 -768
- package/src/formatting/AbstractNumbering.ts +580 -579
- package/src/formatting/NumberingInstance.ts +295 -299
- package/src/formatting/NumberingLevel.ts +981 -1040
- package/src/formatting/NumberingManager.ts +833 -827
- package/src/formatting/Style.ts +1785 -1879
- package/src/formatting/StylesManager.ts +1090 -1130
- package/src/helpers/CleanupHelper.ts +524 -524
- package/src/images/ImageOptimizer.ts +274 -274
- package/src/index.ts +559 -554
- package/src/managers/DrawingManager.ts +319 -319
- package/src/tracking/DocumentTrackingContext.ts +687 -674
- package/src/tracking/TrackingContext.ts +175 -173
- package/src/types/compatibility-types.ts +49 -49
- package/src/types/formatting.ts +210 -210
- package/src/types/list-types.ts +14 -14
- package/src/types/settings-types.ts +59 -59
- package/src/types/styleConfig.ts +189 -189
- package/src/utils/ChangelogGenerator.ts +1583 -1581
- package/src/utils/CompatibilityUpgrader.ts +235 -237
- package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
- package/src/utils/MoveOperationHelper.ts +233 -238
- package/src/utils/RevisionAwareProcessor.ts +518 -526
- package/src/utils/RevisionWalker.ts +427 -457
- package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
- package/src/utils/ShadingResolver.ts +105 -107
- package/src/utils/acceptRevisions.ts +723 -714
- package/src/utils/cnfStyleDecoder.ts +212 -217
- package/src/utils/corruptionDetection.ts +346 -345
- package/src/utils/dateFormatting.ts +20 -20
- package/src/utils/deepClone.ts +77 -78
- package/src/utils/diagnostics.ts +125 -129
- package/src/utils/errorHandling.ts +80 -80
- package/src/utils/formatting.ts +220 -213
- package/src/utils/list-detection.ts +32 -42
- package/src/utils/logger.ts +412 -404
- package/src/utils/parsingHelpers.ts +190 -190
- package/src/utils/stripTrackedChanges.ts +356 -353
- package/src/utils/textDiff.ts +100 -100
- package/src/utils/units.ts +421 -421
- package/src/utils/validation.ts +553 -542
- package/src/utils/xmlSanitization.ts +179 -182
- package/src/validation/RevisionAutoFixer.ts +541 -542
- package/src/validation/RevisionValidator.ts +470 -460
- package/src/validation/ValidationRules.ts +338 -338
- package/src/validation/index.ts +30 -30
- package/src/xml/XMLBuilder.ts +857 -871
- package/src/xml/XMLParser.ts +877 -919
- package/src/zip/ZipHandler.ts +629 -637
- package/src/zip/ZipReader.ts +295 -299
- package/src/zip/ZipWriter.ts +374 -390
- package/src/zip/types.ts +116 -116
|
@@ -1,219 +1,219 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HeaderFooterManager - Manages headers and footers in a document
|
|
3
|
-
*
|
|
4
|
-
* Tracks all headers and footers, assigns unique IDs, generates filenames,
|
|
5
|
-
* and manages relationships.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { Header } from './Header';
|
|
9
|
-
import { Footer } from './Footer';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Header entry with metadata
|
|
13
|
-
*/
|
|
14
|
-
interface HeaderEntry {
|
|
15
|
-
header: Header;
|
|
16
|
-
filename: string;
|
|
17
|
-
relationshipId: string;
|
|
18
|
-
number: number;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Footer entry with metadata
|
|
23
|
-
*/
|
|
24
|
-
interface FooterEntry {
|
|
25
|
-
footer: Footer;
|
|
26
|
-
filename: string;
|
|
27
|
-
relationshipId: string;
|
|
28
|
-
number: number;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Manages all headers and footers in a document
|
|
33
|
-
*/
|
|
34
|
-
export class HeaderFooterManager {
|
|
35
|
-
private headers: Map<Header, HeaderEntry>;
|
|
36
|
-
private footers: Map<Footer, FooterEntry>;
|
|
37
|
-
private nextHeaderNumber: number;
|
|
38
|
-
private nextFooterNumber: number;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Creates a new header/footer manager
|
|
42
|
-
*/
|
|
43
|
-
constructor() {
|
|
44
|
-
this.headers = new Map();
|
|
45
|
-
this.footers = new Map();
|
|
46
|
-
this.nextHeaderNumber = 1;
|
|
47
|
-
this.nextFooterNumber = 1;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Registers a header with the manager
|
|
52
|
-
* @param header The header to register
|
|
53
|
-
* @param relationshipId The relationship ID for this header
|
|
54
|
-
* @returns The filename assigned to this header
|
|
55
|
-
*/
|
|
56
|
-
registerHeader(header: Header, relationshipId: string): string {
|
|
57
|
-
// Check if already registered
|
|
58
|
-
const existing = this.headers.get(header);
|
|
59
|
-
if (existing) {
|
|
60
|
-
return existing.filename;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Generate filename
|
|
64
|
-
const number = this.nextHeaderNumber++;
|
|
65
|
-
const filename = header.getFilename(number);
|
|
66
|
-
|
|
67
|
-
// Set header ID
|
|
68
|
-
header.setHeaderId(relationshipId);
|
|
69
|
-
|
|
70
|
-
// Store entry
|
|
71
|
-
const entry: HeaderEntry = {
|
|
72
|
-
header,
|
|
73
|
-
filename,
|
|
74
|
-
relationshipId,
|
|
75
|
-
number,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
this.headers.set(header, entry);
|
|
79
|
-
|
|
80
|
-
return filename;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Registers a footer with the manager
|
|
85
|
-
* @param footer The footer to register
|
|
86
|
-
* @param relationshipId The relationship ID for this footer
|
|
87
|
-
* @returns The filename assigned to this footer
|
|
88
|
-
*/
|
|
89
|
-
registerFooter(footer: Footer, relationshipId: string): string {
|
|
90
|
-
// Check if already registered
|
|
91
|
-
const existing = this.footers.get(footer);
|
|
92
|
-
if (existing) {
|
|
93
|
-
return existing.filename;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Generate filename
|
|
97
|
-
const number = this.nextFooterNumber++;
|
|
98
|
-
const filename = footer.getFilename(number);
|
|
99
|
-
|
|
100
|
-
// Set footer ID
|
|
101
|
-
footer.setFooterId(relationshipId);
|
|
102
|
-
|
|
103
|
-
// Store entry
|
|
104
|
-
const entry: FooterEntry = {
|
|
105
|
-
footer,
|
|
106
|
-
filename,
|
|
107
|
-
relationshipId,
|
|
108
|
-
number,
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
this.footers.set(footer, entry);
|
|
112
|
-
|
|
113
|
-
return filename;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Gets the filename for a header
|
|
118
|
-
* @param header The header
|
|
119
|
-
* @returns The filename, or undefined if not registered
|
|
120
|
-
*/
|
|
121
|
-
getHeaderFilename(header: Header): string | undefined {
|
|
122
|
-
return this.headers.get(header)?.filename;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Gets the filename for a footer
|
|
127
|
-
* @param footer The footer
|
|
128
|
-
* @returns The filename, or undefined if not registered
|
|
129
|
-
*/
|
|
130
|
-
getFooterFilename(footer: Footer): string | undefined {
|
|
131
|
-
return this.footers.get(footer)?.filename;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Gets the relationship ID for a header
|
|
136
|
-
* @param header The header
|
|
137
|
-
* @returns The relationship ID, or undefined if not registered
|
|
138
|
-
*/
|
|
139
|
-
getHeaderRelationshipId(header: Header): string | undefined {
|
|
140
|
-
return this.headers.get(header)?.relationshipId;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Gets the relationship ID for a footer
|
|
145
|
-
* @param footer The footer
|
|
146
|
-
* @returns The relationship ID, or undefined if not registered
|
|
147
|
-
*/
|
|
148
|
-
getFooterRelationshipId(footer: Footer): string | undefined {
|
|
149
|
-
return this.footers.get(footer)?.relationshipId;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Gets all registered headers
|
|
154
|
-
* @returns Array of header entries
|
|
155
|
-
*/
|
|
156
|
-
getAllHeaders(): HeaderEntry[] {
|
|
157
|
-
return Array.from(this.headers.values());
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Gets all registered footers
|
|
162
|
-
* @returns Array of footer entries
|
|
163
|
-
*/
|
|
164
|
-
getAllFooters(): FooterEntry[] {
|
|
165
|
-
return Array.from(this.footers.values());
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Gets the number of headers
|
|
170
|
-
* @returns Number of registered headers
|
|
171
|
-
*/
|
|
172
|
-
getHeaderCount(): number {
|
|
173
|
-
return this.headers.size;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Gets the number of footers
|
|
178
|
-
* @returns Number of registered footers
|
|
179
|
-
*/
|
|
180
|
-
getFooterCount(): number {
|
|
181
|
-
return this.footers.size;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Checks if a header is registered
|
|
186
|
-
* @param header The header
|
|
187
|
-
* @returns True if registered
|
|
188
|
-
*/
|
|
189
|
-
hasHeader(header: Header): boolean {
|
|
190
|
-
return this.headers.has(header);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Checks if a footer is registered
|
|
195
|
-
* @param footer The footer
|
|
196
|
-
* @returns True if registered
|
|
197
|
-
*/
|
|
198
|
-
hasFooter(footer: Footer): boolean {
|
|
199
|
-
return this.footers.has(footer);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Clears all headers and footers
|
|
204
|
-
*/
|
|
205
|
-
clear(): this {
|
|
206
|
-
this.headers.clear();
|
|
207
|
-
this.footers.clear();
|
|
208
|
-
this.nextHeaderNumber = 1;
|
|
209
|
-
this.nextFooterNumber = 1;
|
|
210
|
-
return this;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Creates a new header/footer manager
|
|
215
|
-
*/
|
|
216
|
-
static create(): HeaderFooterManager {
|
|
217
|
-
return new HeaderFooterManager();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* HeaderFooterManager - Manages headers and footers in a document
|
|
3
|
+
*
|
|
4
|
+
* Tracks all headers and footers, assigns unique IDs, generates filenames,
|
|
5
|
+
* and manages relationships.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Header } from './Header';
|
|
9
|
+
import { Footer } from './Footer';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Header entry with metadata
|
|
13
|
+
*/
|
|
14
|
+
interface HeaderEntry {
|
|
15
|
+
header: Header;
|
|
16
|
+
filename: string;
|
|
17
|
+
relationshipId: string;
|
|
18
|
+
number: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Footer entry with metadata
|
|
23
|
+
*/
|
|
24
|
+
interface FooterEntry {
|
|
25
|
+
footer: Footer;
|
|
26
|
+
filename: string;
|
|
27
|
+
relationshipId: string;
|
|
28
|
+
number: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Manages all headers and footers in a document
|
|
33
|
+
*/
|
|
34
|
+
export class HeaderFooterManager {
|
|
35
|
+
private headers: Map<Header, HeaderEntry>;
|
|
36
|
+
private footers: Map<Footer, FooterEntry>;
|
|
37
|
+
private nextHeaderNumber: number;
|
|
38
|
+
private nextFooterNumber: number;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new header/footer manager
|
|
42
|
+
*/
|
|
43
|
+
constructor() {
|
|
44
|
+
this.headers = new Map();
|
|
45
|
+
this.footers = new Map();
|
|
46
|
+
this.nextHeaderNumber = 1;
|
|
47
|
+
this.nextFooterNumber = 1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Registers a header with the manager
|
|
52
|
+
* @param header The header to register
|
|
53
|
+
* @param relationshipId The relationship ID for this header
|
|
54
|
+
* @returns The filename assigned to this header
|
|
55
|
+
*/
|
|
56
|
+
registerHeader(header: Header, relationshipId: string): string {
|
|
57
|
+
// Check if already registered
|
|
58
|
+
const existing = this.headers.get(header);
|
|
59
|
+
if (existing) {
|
|
60
|
+
return existing.filename;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Generate filename
|
|
64
|
+
const number = this.nextHeaderNumber++;
|
|
65
|
+
const filename = header.getFilename(number);
|
|
66
|
+
|
|
67
|
+
// Set header ID
|
|
68
|
+
header.setHeaderId(relationshipId);
|
|
69
|
+
|
|
70
|
+
// Store entry
|
|
71
|
+
const entry: HeaderEntry = {
|
|
72
|
+
header,
|
|
73
|
+
filename,
|
|
74
|
+
relationshipId,
|
|
75
|
+
number,
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
this.headers.set(header, entry);
|
|
79
|
+
|
|
80
|
+
return filename;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Registers a footer with the manager
|
|
85
|
+
* @param footer The footer to register
|
|
86
|
+
* @param relationshipId The relationship ID for this footer
|
|
87
|
+
* @returns The filename assigned to this footer
|
|
88
|
+
*/
|
|
89
|
+
registerFooter(footer: Footer, relationshipId: string): string {
|
|
90
|
+
// Check if already registered
|
|
91
|
+
const existing = this.footers.get(footer);
|
|
92
|
+
if (existing) {
|
|
93
|
+
return existing.filename;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Generate filename
|
|
97
|
+
const number = this.nextFooterNumber++;
|
|
98
|
+
const filename = footer.getFilename(number);
|
|
99
|
+
|
|
100
|
+
// Set footer ID
|
|
101
|
+
footer.setFooterId(relationshipId);
|
|
102
|
+
|
|
103
|
+
// Store entry
|
|
104
|
+
const entry: FooterEntry = {
|
|
105
|
+
footer,
|
|
106
|
+
filename,
|
|
107
|
+
relationshipId,
|
|
108
|
+
number,
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
this.footers.set(footer, entry);
|
|
112
|
+
|
|
113
|
+
return filename;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Gets the filename for a header
|
|
118
|
+
* @param header The header
|
|
119
|
+
* @returns The filename, or undefined if not registered
|
|
120
|
+
*/
|
|
121
|
+
getHeaderFilename(header: Header): string | undefined {
|
|
122
|
+
return this.headers.get(header)?.filename;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Gets the filename for a footer
|
|
127
|
+
* @param footer The footer
|
|
128
|
+
* @returns The filename, or undefined if not registered
|
|
129
|
+
*/
|
|
130
|
+
getFooterFilename(footer: Footer): string | undefined {
|
|
131
|
+
return this.footers.get(footer)?.filename;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Gets the relationship ID for a header
|
|
136
|
+
* @param header The header
|
|
137
|
+
* @returns The relationship ID, or undefined if not registered
|
|
138
|
+
*/
|
|
139
|
+
getHeaderRelationshipId(header: Header): string | undefined {
|
|
140
|
+
return this.headers.get(header)?.relationshipId;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Gets the relationship ID for a footer
|
|
145
|
+
* @param footer The footer
|
|
146
|
+
* @returns The relationship ID, or undefined if not registered
|
|
147
|
+
*/
|
|
148
|
+
getFooterRelationshipId(footer: Footer): string | undefined {
|
|
149
|
+
return this.footers.get(footer)?.relationshipId;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Gets all registered headers
|
|
154
|
+
* @returns Array of header entries
|
|
155
|
+
*/
|
|
156
|
+
getAllHeaders(): HeaderEntry[] {
|
|
157
|
+
return Array.from(this.headers.values());
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Gets all registered footers
|
|
162
|
+
* @returns Array of footer entries
|
|
163
|
+
*/
|
|
164
|
+
getAllFooters(): FooterEntry[] {
|
|
165
|
+
return Array.from(this.footers.values());
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Gets the number of headers
|
|
170
|
+
* @returns Number of registered headers
|
|
171
|
+
*/
|
|
172
|
+
getHeaderCount(): number {
|
|
173
|
+
return this.headers.size;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Gets the number of footers
|
|
178
|
+
* @returns Number of registered footers
|
|
179
|
+
*/
|
|
180
|
+
getFooterCount(): number {
|
|
181
|
+
return this.footers.size;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Checks if a header is registered
|
|
186
|
+
* @param header The header
|
|
187
|
+
* @returns True if registered
|
|
188
|
+
*/
|
|
189
|
+
hasHeader(header: Header): boolean {
|
|
190
|
+
return this.headers.has(header);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Checks if a footer is registered
|
|
195
|
+
* @param footer The footer
|
|
196
|
+
* @returns True if registered
|
|
197
|
+
*/
|
|
198
|
+
hasFooter(footer: Footer): boolean {
|
|
199
|
+
return this.footers.has(footer);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Clears all headers and footers
|
|
204
|
+
*/
|
|
205
|
+
clear(): this {
|
|
206
|
+
this.headers.clear();
|
|
207
|
+
this.footers.clear();
|
|
208
|
+
this.nextHeaderNumber = 1;
|
|
209
|
+
this.nextFooterNumber = 1;
|
|
210
|
+
return this;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Creates a new header/footer manager
|
|
215
|
+
*/
|
|
216
|
+
static create(): HeaderFooterManager {
|
|
217
|
+
return new HeaderFooterManager();
|
|
218
|
+
}
|
|
219
|
+
}
|